From 3c93b92b02c33ecb8567d2f0a5a8539a223b0308 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?No=C3=AFc=20Crouzet?= <noic.crouzet@irit.fr>
Date: Fri, 29 Nov 2024 10:36:43 +0100
Subject: [PATCH] Removed all but XDMA, updated to newer linux kernels

---
 QDMA/linux-kernel/COPYING => COPYING          |    0
 XDMA/linux-kernel/LICENSE => LICENSE          |    0
 QDMA/DPDK/RELEASE                             |  195 -
 QDMA/DPDK/docs/README.txt                     |  557 --
 QDMA/DPDK/drivers/net/qdma/meson.build        |   79 -
 QDMA/DPDK/drivers/net/qdma/qdma.h             |  500 -
 .../eqdma_cpm5_access/eqdma_cpm5_access.c     | 6879 --------------
 .../eqdma_cpm5_access/eqdma_cpm5_access.h     |  360 -
 .../eqdma_cpm5_access/eqdma_cpm5_reg.h        | 1300 ---
 .../eqdma_cpm5_access/eqdma_cpm5_reg_dump.c   | 4025 ---------
 .../eqdma_soft_access/eqdma_soft_access.c     | 6833 --------------
 .../eqdma_soft_access/eqdma_soft_access.h     |  361 -
 .../eqdma_soft_access/eqdma_soft_reg.h        | 1540 ----
 .../eqdma_soft_access/eqdma_soft_reg_dump.c   | 5338 -----------
 .../net/qdma/qdma_access/qdma_access_common.c | 1530 ----
 .../net/qdma/qdma_access/qdma_access_common.h |  942 --
 .../net/qdma/qdma_access/qdma_access_errors.h |   89 -
 .../net/qdma/qdma_access/qdma_access_export.h |  278 -
 .../qdma/qdma_access/qdma_access_version.h    |   53 -
 .../qdma_cpm4_access/qdma_cpm4_access.c       | 6071 -------------
 .../qdma_cpm4_access/qdma_cpm4_access.h       |  300 -
 .../qdma_cpm4_access/qdma_cpm4_reg.h          | 2062 -----
 .../qdma_cpm4_access/qdma_cpm4_reg_dump.c     | 8029 -----------------
 .../drivers/net/qdma/qdma_access/qdma_list.c  |   78 -
 .../drivers/net/qdma/qdma_access/qdma_list.h  |  142 -
 .../net/qdma/qdma_access/qdma_mbox_protocol.c | 2156 -----
 .../net/qdma/qdma_access/qdma_mbox_protocol.h |  711 --
 .../net/qdma/qdma_access/qdma_platform.h      |  193 -
 .../net/qdma/qdma_access/qdma_reg_dump.h      |   99 -
 .../net/qdma/qdma_access/qdma_resource_mgmt.c |  811 --
 .../net/qdma/qdma_access/qdma_resource_mgmt.h |  230 -
 .../qdma_soft_access/qdma_soft_access.c       | 6255 -------------
 .../qdma_soft_access/qdma_soft_access.h       |  310 -
 .../qdma_soft_access/qdma_soft_reg.h          |  599 --
 QDMA/DPDK/drivers/net/qdma/qdma_common.c      |  657 --
 QDMA/DPDK/drivers/net/qdma/qdma_devops.c      | 1984 ----
 QDMA/DPDK/drivers/net/qdma/qdma_devops.h      |  515 --
 QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.c |  316 -
 QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.h |  118 -
 QDMA/DPDK/drivers/net/qdma/qdma_ethdev.c      |  976 --
 QDMA/DPDK/drivers/net/qdma/qdma_log.h         |   47 -
 QDMA/DPDK/drivers/net/qdma/qdma_mbox.c        |  424 -
 QDMA/DPDK/drivers/net/qdma/qdma_mbox.h        |   75 -
 QDMA/DPDK/drivers/net/qdma/qdma_platform.c    |  264 -
 .../DPDK/drivers/net/qdma/qdma_platform_env.h |   61 -
 QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c        | 1464 ---
 QDMA/DPDK/drivers/net/qdma/qdma_rxtx.h        |   51 -
 .../DPDK/drivers/net/qdma/qdma_rxtx_vec_sse.c |  851 --
 QDMA/DPDK/drivers/net/qdma/qdma_user.c        |  295 -
 QDMA/DPDK/drivers/net/qdma/qdma_user.h        |  253 -
 QDMA/DPDK/drivers/net/qdma/qdma_vf_ethdev.c   | 1265 ---
 QDMA/DPDK/drivers/net/qdma/qdma_xdebug.c      | 1468 ---
 QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.c     | 1821 ----
 QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.h     |  888 --
 QDMA/DPDK/drivers/net/qdma/version.h          |   52 -
 QDMA/DPDK/drivers/net/qdma/version.map        |  166 -
 QDMA/DPDK/examples/qdma_testapp/Makefile      |   97 -
 QDMA/DPDK/examples/qdma_testapp/commands.c    | 1526 ----
 QDMA/DPDK/examples/qdma_testapp/commands.h    |   38 -
 .../examples/qdma_testapp/parse_obj_list.c    |  197 -
 .../examples/qdma_testapp/parse_obj_list.h    |  147 -
 QDMA/DPDK/examples/qdma_testapp/pcierw.c      |   56 -
 QDMA/DPDK/examples/qdma_testapp/pcierw.h      |   43 -
 QDMA/DPDK/examples/qdma_testapp/qdma_regs.h   |  231 -
 QDMA/DPDK/examples/qdma_testapp/testapp.c     | 1118 ---
 QDMA/DPDK/examples/qdma_testapp/testapp.h     |  108 -
 ...MA-xdebug-to-proc-info-of-dpdk-22.11.patch |  362 -
 ....0-Patch-to-add-Jumbo-packet-support.patch |  320 -
 ....1-Patch-to-add-Jumbo-packet-support.patch |  466 -
 QDMA/DPDK/tools/README.txt                    |   45 -
 QDMA/linux-kernel/LICENSE                     |   30 -
 QDMA/linux-kernel/Makefile                    |  184 -
 QDMA/linux-kernel/RELEASE                     |  208 -
 QDMA/linux-kernel/apps/Makefile               |  122 -
 QDMA/linux-kernel/apps/dma-ctl/Makefile       |   38 -
 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c    | 1259 ---
 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h    |   20 -
 QDMA/linux-kernel/apps/dma-ctl/main.c         |  208 -
 QDMA/linux-kernel/apps/dma-ctl/version.h      |   19 -
 .../apps/dma-from-device/Makefile             |   27 -
 .../apps/dma-from-device/dma_from_device.c    |  236 -
 .../apps/dma-from-device/version.h            |   19 -
 QDMA/linux-kernel/apps/dma-latency/Makefile   |   39 -
 QDMA/linux-kernel/apps/dma-latency/Readme.txt |   38 -
 QDMA/linux-kernel/apps/dma-latency/dmalat.c   | 1133 ---
 .../dma-latency/sample_dma_latency_config.txt |   28 -
 QDMA/linux-kernel/apps/dma-latency/version.h  |   19 -
 QDMA/linux-kernel/apps/dma-perf/Makefile      |   39 -
 QDMA/linux-kernel/apps/dma-perf/dmaperf.c     | 2275 -----
 .../apps/dma-perf/dmaperf_config/st-bi.zip    |  Bin 112903 -> 0 bytes
 .../dmaperf_config/st-c2h-pfetch1.zip         |  Bin 111916 -> 0 bytes
 .../apps/dma-perf/dmaperf_config/st-h2c.zip   |  Bin 105919 -> 0 bytes
 QDMA/linux-kernel/apps/dma-perf/version.h     |   19 -
 QDMA/linux-kernel/apps/dma-to-device/Makefile |   39 -
 .../apps/dma-to-device/dma_to_device.c        |  265 -
 .../linux-kernel/apps/dma-to-device/version.h |   19 -
 QDMA/linux-kernel/apps/dma-utils/Makefile     |   26 -
 .../apps/dma-utils/dma_xfer_utils.c           |  214 -
 QDMA/linux-kernel/apps/dma-utils/dmactl.c     |  884 --
 .../apps/dma-utils/dmactl_internal.h          |   23 -
 QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c |  461 -
 QDMA/linux-kernel/apps/dma-utils/dmautils.c   |   45 -
 QDMA/linux-kernel/apps/dma-utils/dmautils.h   |  619 --
 QDMA/linux-kernel/apps/dma-utils/dmaxfer.c    | 1118 ---
 QDMA/linux-kernel/apps/dma-utils/dmaxfer.h    |   46 -
 QDMA/linux-kernel/apps/dma-utils/version.h    |   19 -
 QDMA/linux-kernel/apps/dma-xfer/Makefile      |   39 -
 QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c     | 1266 ---
 .../apps/dma-xfer/sample_qdma_xfer_config.txt |   30 -
 QDMA/linux-kernel/apps/dma-xfer/version.h     |   18 -
 QDMA/linux-kernel/apps/include/qdma_nl.h      |  480 -
 .../apps/include/qdma_user_reg_dump.h         |   54 -
 QDMA/linux-kernel/apps/include/xdev_regs.h    |  238 -
 QDMA/linux-kernel/bsd_license.txt             |   12 -
 QDMA/linux-kernel/docs/README                 |  323 -
 QDMA/linux-kernel/docs/dma-ctl.8.gz           |  Bin 2403 -> 0 bytes
 QDMA/linux-kernel/driver/Makefile             |  272 -
 QDMA/linux-kernel/driver/include/qdma_nl.h    |  488 -
 .../driver/include/qdma_user_reg_dump.h       |   61 -
 QDMA/linux-kernel/driver/include/xdev_regs.h  |  246 -
 QDMA/linux-kernel/driver/libqdma/Makefile     |   66 -
 .../driver/libqdma/libqdma_config.c           |  639 --
 .../driver/libqdma/libqdma_config.h           |  264 -
 .../driver/libqdma/libqdma_export.c           | 2818 ------
 .../driver/libqdma/libqdma_export.h           | 1698 ----
 .../eqdma_cpm5_access/eqdma_cpm5_access.c     | 6863 --------------
 .../eqdma_cpm5_access/eqdma_cpm5_access.h     |  344 -
 .../eqdma_cpm5_access/eqdma_cpm5_reg.h        | 1284 ---
 .../eqdma_cpm5_access/eqdma_cpm5_reg_dump.c   | 4009 --------
 .../eqdma_soft_access/eqdma_soft_access.c     | 6817 --------------
 .../eqdma_soft_access/eqdma_soft_access.h     |  345 -
 .../eqdma_soft_access/eqdma_soft_reg.h        | 1524 ----
 .../eqdma_soft_access/eqdma_soft_reg_dump.c   | 5322 -----------
 .../libqdma/qdma_access/qdma_access_common.c  | 1514 ----
 .../libqdma/qdma_access/qdma_access_common.h  |  926 --
 .../libqdma/qdma_access/qdma_access_errors.h  |   73 -
 .../libqdma/qdma_access/qdma_access_export.h  |  262 -
 .../libqdma/qdma_access/qdma_access_version.h |   37 -
 .../qdma_cpm4_access/qdma_cpm4_access.c       | 6055 -------------
 .../qdma_cpm4_access/qdma_cpm4_access.h       |  284 -
 .../qdma_cpm4_access/qdma_cpm4_reg.h          | 2046 -----
 .../qdma_cpm4_access/qdma_cpm4_reg_dump.c     | 8013 ----------------
 .../driver/libqdma/qdma_access/qdma_list.c    |   62 -
 .../driver/libqdma/qdma_access/qdma_list.h    |  126 -
 .../libqdma/qdma_access/qdma_mbox_protocol.c  | 2140 -----
 .../libqdma/qdma_access/qdma_mbox_protocol.h  |  695 --
 .../libqdma/qdma_access/qdma_platform.h       |  177 -
 .../libqdma/qdma_access/qdma_reg_dump.h       |   83 -
 .../libqdma/qdma_access/qdma_resource_mgmt.c  |  795 --
 .../libqdma/qdma_access/qdma_resource_mgmt.h  |  214 -
 .../qdma_soft_access/qdma_soft_access.c       | 6239 -------------
 .../qdma_soft_access/qdma_soft_access.h       |  294 -
 .../qdma_soft_access/qdma_soft_reg.h          |  583 --
 .../linux-kernel/driver/libqdma/qdma_compat.h |  107 -
 .../driver/libqdma/qdma_context.c             |  952 --
 .../driver/libqdma/qdma_context.h             |  159 -
 .../driver/libqdma/qdma_debugfs.c             |   74 -
 .../driver/libqdma/qdma_debugfs.h             |   51 -
 .../driver/libqdma/qdma_debugfs_dev.c         | 1009 ---
 .../driver/libqdma/qdma_debugfs_dev.h         |   29 -
 .../driver/libqdma/qdma_debugfs_queue.c       |  964 --
 .../driver/libqdma/qdma_debugfs_queue.h       |   33 -
 QDMA/linux-kernel/driver/libqdma/qdma_descq.c | 2139 -----
 QDMA/linux-kernel/driver/libqdma/qdma_descq.h |  613 --
 .../linux-kernel/driver/libqdma/qdma_device.c |  635 --
 .../linux-kernel/driver/libqdma/qdma_device.h |  266 -
 QDMA/linux-kernel/driver/libqdma/qdma_intr.c  | 1024 ---
 QDMA/linux-kernel/driver/libqdma/qdma_intr.h  |  259 -
 .../driver/libqdma/qdma_license.h             |   22 -
 QDMA/linux-kernel/driver/libqdma/qdma_mbox.c  |  594 --
 QDMA/linux-kernel/driver/libqdma/qdma_mbox.h  |  163 -
 .../driver/libqdma/qdma_platform.c            |  145 -
 .../driver/libqdma/qdma_platform_env.h        |   33 -
 QDMA/linux-kernel/driver/libqdma/qdma_regs.c  |  610 --
 QDMA/linux-kernel/driver/libqdma/qdma_regs.h  |  185 -
 QDMA/linux-kernel/driver/libqdma/qdma_sriov.c |  279 -
 .../linux-kernel/driver/libqdma/qdma_st_c2h.c | 1286 ---
 .../linux-kernel/driver/libqdma/qdma_st_c2h.h |  227 -
 .../linux-kernel/driver/libqdma/qdma_thread.c |  236 -
 .../linux-kernel/driver/libqdma/qdma_thread.h |   76 -
 .../linux-kernel/driver/libqdma/qdma_ul_ext.h |   99 -
 QDMA/linux-kernel/driver/libqdma/thread.c     |  194 -
 QDMA/linux-kernel/driver/libqdma/thread.h     |  146 -
 QDMA/linux-kernel/driver/libqdma/version.h    |   40 -
 QDMA/linux-kernel/driver/libqdma/xdev.c       | 1535 ----
 QDMA/linux-kernel/driver/libqdma/xdev.h       |  622 --
 .../driver/make_rules/common_flags.mk         |   28 -
 .../driver/make_rules/distro_check.mk         |  132 -
 .../driver/make_rules/kernel_check.mk         |  351 -
 QDMA/linux-kernel/driver/src/Makefile         |  147 -
 QDMA/linux-kernel/driver/src/cdev.c           |  819 --
 QDMA/linux-kernel/driver/src/cdev.h           |  183 -
 QDMA/linux-kernel/driver/src/nl.c             | 2902 ------
 QDMA/linux-kernel/driver/src/nl.h             |   49 -
 QDMA/linux-kernel/driver/src/pci_ids.h        |  477 -
 QDMA/linux-kernel/driver/src/qdma_mod.c       | 1927 ----
 QDMA/linux-kernel/driver/src/qdma_mod.h       |  238 -
 QDMA/linux-kernel/driver/src/version.h        |   47 -
 QDMA/linux-kernel/license.txt                 |   14 -
 .../scripts/datafile_16bit_pattern.bin        |  Bin 262144 -> 0 bytes
 .../license-for-datafile_16bit_pattern.txt    |   19 -
 .../scripts/qdma_generate_conf_file.sh        |  121 -
 .../scripts/qdma_run_test_mm_vf.sh            |  162 -
 QDMA/linux-kernel/scripts/qdma_run_test_pf.sh |  508 --
 .../scripts/qdma_run_test_st_vf.sh            |  229 -
 QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh |  102 -
 QDMA/windows/QDMA.sln                         |   69 -
 QDMA/windows/README.md                        |  266 -
 QDMA/windows/RELEASE                          |   76 -
 .../apps/common/include/device_file.hpp       |  293 -
 QDMA/windows/apps/dma-arw/datafile256K.bin    |  Bin 262144 -> 0 bytes
 QDMA/windows/apps/dma-arw/datafile4K.bin      |  Bin 4096 -> 0 bytes
 QDMA/windows/apps/dma-arw/dma_arw.cpp         |  723 --
 QDMA/windows/apps/dma-arw/dma_arw.hpp         |  315 -
 QDMA/windows/apps/dma-arw/dma_arw.vcxproj     |  146 -
 .../apps/dma-arw/dma_arw.vcxproj.filters      |   30 -
 .../windows/apps/dma-arw/dma_arw.vcxproj.user |    4 -
 QDMA/windows/apps/dma-arw/version.h           |   26 -
 QDMA/windows/apps/dma-ctl/dmactl.cpp          | 1440 ---
 QDMA/windows/apps/dma-ctl/dmactl.vcxproj      |  146 -
 .../apps/dma-ctl/dmactl.vcxproj.filters       |   30 -
 QDMA/windows/apps/dma-ctl/dmactl.vcxproj.user |    4 -
 QDMA/windows/apps/dma-ctl/version.h           |   26 -
 QDMA/windows/apps/dma-rw/datafile256K.bin     |  Bin 262144 -> 0 bytes
 QDMA/windows/apps/dma-rw/datafile4K.bin       |  Bin 4096 -> 0 bytes
 QDMA/windows/apps/dma-rw/dma_rw.cpp           |  543 --
 QDMA/windows/apps/dma-rw/dma_rw.hpp           |  296 -
 QDMA/windows/apps/dma-rw/dma_rw.vcxproj       |  146 -
 .../apps/dma-rw/dma_rw.vcxproj.filters        |   30 -
 QDMA/windows/apps/dma-rw/dma_rw.vcxproj.user  |    4 -
 QDMA/windows/apps/dma-rw/version.h            |   26 -
 .../windows/sys/drv/include/qdma_driver_api.h |  434 -
 QDMA/windows/sys/drv/qdma.inf                 |  325 -
 QDMA/windows/sys/drv/qdma_generic.vcxproj     |  213 -
 .../sys/drv/qdma_generic.vcxproj.filters      |   73 -
 .../windows/sys/drv/qdma_generic.vcxproj.user |   36 -
 QDMA/windows/sys/drv/resource/Resource.aps    |  Bin 2984 -> 0 bytes
 QDMA/windows/sys/drv/resource/Resource.rc     |  Bin 2038 -> 0 bytes
 QDMA/windows/sys/drv/source/device.cpp        |  248 -
 QDMA/windows/sys/drv/source/device.h          |   65 -
 QDMA/windows/sys/drv/source/driver.cpp        |   98 -
 QDMA/windows/sys/drv/source/driver.h          |   32 -
 QDMA/windows/sys/drv/source/io_queue.cpp      | 1441 ---
 QDMA/windows/sys/drv/source/io_queue.h        |   52 -
 QDMA/windows/sys/drv/source/trace.h           |   89 -
 QDMA/windows/sys/drv/source/windows_common.h  |   29 -
 .../sys/libqdma/include/qdma_exports.h        |  940 --
 QDMA/windows/sys/libqdma/include/xversion.hpp |   75 -
 QDMA/windows/sys/libqdma/libqdma.vcxproj      |  229 -
 .../sys/libqdma/libqdma.vcxproj.filters       |  129 -
 QDMA/windows/sys/libqdma/libqdma.vcxproj.user |   36 -
 .../windows/sys/libqdma/source/interrupts.cpp |  947 --
 .../windows/sys/libqdma/source/interrupts.hpp |  107 -
 QDMA/windows/sys/libqdma/source/qdma.cpp      | 4235 ---------
 QDMA/windows/sys/libqdma/source/qdma.h        |  616 --
 .../eqdma_soft_access/eqdma_soft_access.c     | 5868 ------------
 .../eqdma_soft_access/eqdma_soft_access.h     |  306 -
 .../eqdma_soft_access/eqdma_soft_reg.h        | 1226 ---
 .../eqdma_soft_access/eqdma_soft_reg_dump.c   | 3938 --------
 .../source/qdma_access/qdma_access_common.c   | 1284 ---
 .../source/qdma_access/qdma_access_common.h   |  902 --
 .../source/qdma_access/qdma_access_errors.h   |   72 -
 .../source/qdma_access/qdma_access_export.h   |  255 -
 .../source/qdma_access/qdma_access_version.h  |   36 -
 .../libqdma/source/qdma_access/qdma_list.c    |   61 -
 .../libqdma/source/qdma_access/qdma_list.h    |  125 -
 .../source/qdma_access/qdma_platform.h        |  168 -
 .../source/qdma_access/qdma_reg_dump.h        |   82 -
 .../source/qdma_access/qdma_resource_mgmt.c   |  794 --
 .../source/qdma_access/qdma_resource_mgmt.h   |  213 -
 .../qdma_s80_hard_access.c                    | 5894 ------------
 .../qdma_s80_hard_access.h                    |  278 -
 .../qdma_s80_hard_access/qdma_s80_hard_reg.h  | 2045 -----
 .../qdma_s80_hard_reg_dump.c                  | 8013 ----------------
 .../qdma_soft_access/qdma_soft_access.c       | 6151 -------------
 .../qdma_soft_access/qdma_soft_access.h       |  292 -
 .../qdma_soft_access/qdma_soft_reg.h          |  582 --
 QDMA/windows/sys/libqdma/source/qdma_config.h |   20 -
 .../windows/sys/libqdma/source/qdma_license.h |   18 -
 .../sys/libqdma/source/qdma_platform.cpp      |  180 -
 .../sys/libqdma/source/qdma_platform_env.h    |   43 -
 .../windows/sys/libqdma/source/qdma_reg_ext.h |  171 -
 QDMA/windows/sys/libqdma/source/thread.cpp    |  341 -
 QDMA/windows/sys/libqdma/source/thread.h      |   86 -
 QDMA/windows/sys/libqdma/source/trace.h       |   94 -
 QDMA/windows/sys/libqdma/source/xpcie.cpp     |  376 -
 QDMA/windows/sys/libqdma/source/xpcie.hpp     |   76 -
 README.md                                     |   33 -
 XDMA/linux-kernel/RELEASE => RELEASE          |    0
 XDMA/linux-kernel/COPYING                     |  340 -
 XVSEC/linux-kernel/COPYING                    |  340 -
 XVSEC/linux-kernel/LICENSE                    |   30 -
 XVSEC/linux-kernel/Makefile                   |   99 -
 XVSEC/linux-kernel/README                     |    1 -
 XVSEC/linux-kernel/RELEASE                    |   81 -
 XVSEC/linux-kernel/docs/README                |  662 --
 XVSEC/linux-kernel/drv/Makefile               |   39 -
 XVSEC/linux-kernel/drv/version.h              |   40 -
 XVSEC/linux-kernel/drv/xvsec_cdev.c           |  133 -
 XVSEC/linux-kernel/drv/xvsec_cdev.h           |   79 -
 XVSEC/linux-kernel/drv/xvsec_drv.c            |  570 --
 XVSEC/linux-kernel/drv/xvsec_drv.h            |  155 -
 XVSEC/linux-kernel/drv/xvsec_drv_int.h        |  117 -
 .../drv/xvsec_mcap/us/xvsec_mcap_us.c         | 1190 ---
 .../drv/xvsec_mcap/us/xvsec_mcap_us.h         |  158 -
 .../drv/xvsec_mcap/versal/xvsec_mcap_versal.c | 1144 ---
 .../drv/xvsec_mcap/versal/xvsec_mcap_versal.h |  170 -
 .../linux-kernel/drv/xvsec_mcap/xvsec_mcap.c  |  873 --
 .../linux-kernel/drv/xvsec_mcap/xvsec_mcap.h  |  537 --
 XVSEC/linux-kernel/drv/xvsec_util.c           |  172 -
 XVSEC/linux-kernel/drv/xvsec_util.h           |   45 -
 XVSEC/linux-kernel/libxvsec/Makefile          |   24 -
 XVSEC/linux-kernel/libxvsec/version.h         |   36 -
 XVSEC/linux-kernel/libxvsec/xvsec.c           |  388 -
 XVSEC/linux-kernel/libxvsec/xvsec.h           |  877 --
 XVSEC/linux-kernel/libxvsec/xvsec_int.h       |   43 -
 XVSEC/linux-kernel/libxvsec/xvsec_mcap.c      |  887 --
 XVSEC/linux-kernel/tools/Makefile             |   20 -
 XVSEC/linux-kernel/tools/main.c               |  473 -
 XVSEC/linux-kernel/tools/main.h               |  164 -
 XVSEC/linux-kernel/tools/mcap_ops.c           |  753 --
 XVSEC/linux-kernel/tools/mcap_ops.h           |   51 -
 XVSEC/linux-kernel/tools/version.h            |   36 -
 XVSEC/linux-kernel/tools/xvsec_parser.c       |  965 --
 XVSEC/linux-kernel/tools/xvsec_parser.h       |   56 -
 docs/source/includeme.rst                     |    1 -
 .../include => include}/libxdma_api.h         |    0
 index.html                                    |   30 -
 XDMA/linux-kernel/readme.txt => readme.txt    |    0
 .../tests => tests}/data/datafile0_4K.bin     |  Bin
 .../tests => tests}/data/datafile1_4K.bin     |  Bin
 .../tests => tests}/data/datafile2_4K.bin     |  Bin
 .../tests => tests}/data/datafile3_4K.bin     |  Bin
 .../tests => tests}/data/datafile_256K.bin    |  Bin
 .../tests => tests}/data/datafile_32M.bin     |  Bin
 .../tests => tests}/data/datafile_8K.bin      |  Bin
 .../tests => tests}/dma_memory_mapped_test.sh |    0
 .../tests => tests}/dma_streaming_test.sh     |    0
 .../tests => tests}/load_driver.sh            |    0
 .../tests => tests}/perform_hwcount.sh        |    0
 .../linux-kernel/tests => tests}/run_test.sh  |    0
 .../scripts_mm/fio_parse_result.sh            |    0
 .../tests => tests}/scripts_mm/fio_test.sh    |    0
 .../tests => tests}/scripts_mm/io.sh          |    0
 .../tests => tests}/scripts_mm/io_sweep.sh    |    0
 .../tests => tests}/scripts_mm/libtest.sh     |    0
 .../tests => tests}/scripts_mm/unaligned.sh   |    0
 .../tests => tests}/scripts_mm/xdma_mm.sh     |    0
 {XDMA/linux-kernel/tools => tools}/Makefile   |    0
 .../tools => tools}/dma_from_device.c         |    0
 .../tools => tools}/dma_to_device.c           |    0
 .../linux-kernel/tools => tools}/dma_utils.c  |    0
 .../tools => tools}/performance.c             |    0
 {XDMA/linux-kernel/tools => tools}/reg_rw.c   |    0
 .../tools => tools}/test_chrdev.c             |    0
 {XDMA/linux-kernel/xdma => xdma}/Makefile     |    0
 .../linux-kernel/xdma => xdma}/cdev_bypass.c  |    0
 {XDMA/linux-kernel/xdma => xdma}/cdev_ctrl.c  |    4 +
 {XDMA/linux-kernel/xdma => xdma}/cdev_ctrl.h  |    0
 .../linux-kernel/xdma => xdma}/cdev_events.c  |    0
 {XDMA/linux-kernel/xdma => xdma}/cdev_sgdma.c |   10 +-
 {XDMA/linux-kernel/xdma => xdma}/cdev_sgdma.h |    0
 {XDMA/linux-kernel/xdma => xdma}/cdev_xvc.c   |    0
 {XDMA/linux-kernel/xdma => xdma}/cdev_xvc.h   |    0
 {XDMA/linux-kernel/xdma => xdma}/libxdma.c    |    0
 {XDMA/linux-kernel/xdma => xdma}/libxdma.h    |    0
 {XDMA/linux-kernel/xdma => xdma}/version.h    |    0
 {XDMA/linux-kernel/xdma => xdma}/xdma_cdev.c  |    4 +
 {XDMA/linux-kernel/xdma => xdma}/xdma_cdev.h  |    0
 {XDMA/linux-kernel/xdma => xdma}/xdma_mod.c   |    0
 {XDMA/linux-kernel/xdma => xdma}/xdma_mod.h   |    0
 .../linux-kernel/xdma => xdma}/xdma_thread.c  |    0
 .../linux-kernel/xdma => xdma}/xdma_thread.h  |    0
 373 files changed, 17 insertions(+), 243698 deletions(-)
 rename QDMA/linux-kernel/COPYING => COPYING (100%)
 mode change 100755 => 100644
 rename XDMA/linux-kernel/LICENSE => LICENSE (100%)
 delete mode 100755 QDMA/DPDK/RELEASE
 delete mode 100755 QDMA/DPDK/docs/README.txt
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/meson.build
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_errors.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_export.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_version.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_platform.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_reg_dump.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_common.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_devops.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_devops.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_ethdev.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_log.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_mbox.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_mbox.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_platform.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_platform_env.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_rxtx.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_rxtx_vec_sse.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_user.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_user.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_vf_ethdev.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/qdma_xdebug.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.c
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/version.h
 delete mode 100755 QDMA/DPDK/drivers/net/qdma/version.map
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/Makefile
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/commands.c
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/commands.h
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/parse_obj_list.c
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/parse_obj_list.h
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/pcierw.c
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/pcierw.h
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/qdma_regs.h
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/testapp.c
 delete mode 100755 QDMA/DPDK/examples/qdma_testapp/testapp.h
 delete mode 100755 QDMA/DPDK/tools/0001-Add-QDMA-xdebug-to-proc-info-of-dpdk-22.11.patch
 delete mode 100755 QDMA/DPDK/tools/0001-PKTGEN-20.12.0-Patch-to-add-Jumbo-packet-support.patch
 delete mode 100755 QDMA/DPDK/tools/0001-PKTGEN-22.04.1-Patch-to-add-Jumbo-packet-support.patch
 delete mode 100755 QDMA/DPDK/tools/README.txt
 delete mode 100755 QDMA/linux-kernel/LICENSE
 delete mode 100755 QDMA/linux-kernel/Makefile
 delete mode 100755 QDMA/linux-kernel/RELEASE
 delete mode 100755 QDMA/linux-kernel/apps/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-ctl/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-ctl/main.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-ctl/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-from-device/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-from-device/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-latency/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-latency/Readme.txt
 delete mode 100755 QDMA/linux-kernel/apps/dma-latency/dmalat.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt
 delete mode 100755 QDMA/linux-kernel/apps/dma-latency/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-perf/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-perf/dmaperf.c
 delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-bi.zip
 delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-c2h-pfetch1.zip
 delete mode 100644 QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-h2c.zip
 delete mode 100755 QDMA/linux-kernel/apps/dma-perf/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-to-device/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-to-device/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmactl.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmautils.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmautils.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmaxfer.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/dmaxfer.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-utils/version.h
 delete mode 100755 QDMA/linux-kernel/apps/dma-xfer/Makefile
 delete mode 100755 QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c
 delete mode 100755 QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt
 delete mode 100755 QDMA/linux-kernel/apps/dma-xfer/version.h
 delete mode 100755 QDMA/linux-kernel/apps/include/qdma_nl.h
 delete mode 100755 QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h
 delete mode 100755 QDMA/linux-kernel/apps/include/xdev_regs.h
 delete mode 100755 QDMA/linux-kernel/bsd_license.txt
 delete mode 100755 QDMA/linux-kernel/docs/README
 delete mode 100755 QDMA/linux-kernel/docs/dma-ctl.8.gz
 delete mode 100755 QDMA/linux-kernel/driver/Makefile
 delete mode 100755 QDMA/linux-kernel/driver/include/qdma_nl.h
 delete mode 100755 QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h
 delete mode 100755 QDMA/linux-kernel/driver/include/xdev_regs.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/Makefile
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/libqdma_config.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/libqdma_config.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/libqdma_export.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/libqdma_export.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_compat.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_context.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_context.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_descq.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_descq.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_device.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_device.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_intr.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_intr.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_license.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_mbox.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_mbox.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_platform.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_regs.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_regs.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_sriov.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_thread.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_thread.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/thread.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/thread.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/version.h
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/xdev.c
 delete mode 100755 QDMA/linux-kernel/driver/libqdma/xdev.h
 delete mode 100755 QDMA/linux-kernel/driver/make_rules/common_flags.mk
 delete mode 100755 QDMA/linux-kernel/driver/make_rules/distro_check.mk
 delete mode 100755 QDMA/linux-kernel/driver/make_rules/kernel_check.mk
 delete mode 100755 QDMA/linux-kernel/driver/src/Makefile
 delete mode 100755 QDMA/linux-kernel/driver/src/cdev.c
 delete mode 100755 QDMA/linux-kernel/driver/src/cdev.h
 delete mode 100755 QDMA/linux-kernel/driver/src/nl.c
 delete mode 100755 QDMA/linux-kernel/driver/src/nl.h
 delete mode 100755 QDMA/linux-kernel/driver/src/pci_ids.h
 delete mode 100755 QDMA/linux-kernel/driver/src/qdma_mod.c
 delete mode 100755 QDMA/linux-kernel/driver/src/qdma_mod.h
 delete mode 100755 QDMA/linux-kernel/driver/src/version.h
 delete mode 100755 QDMA/linux-kernel/license.txt
 delete mode 100755 QDMA/linux-kernel/scripts/datafile_16bit_pattern.bin
 delete mode 100755 QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt
 delete mode 100755 QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh
 delete mode 100755 QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh
 delete mode 100755 QDMA/linux-kernel/scripts/qdma_run_test_pf.sh
 delete mode 100755 QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh
 delete mode 100755 QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh
 delete mode 100644 QDMA/windows/QDMA.sln
 delete mode 100644 QDMA/windows/README.md
 delete mode 100644 QDMA/windows/RELEASE
 delete mode 100644 QDMA/windows/apps/common/include/device_file.hpp
 delete mode 100644 QDMA/windows/apps/dma-arw/datafile256K.bin
 delete mode 100644 QDMA/windows/apps/dma-arw/datafile4K.bin
 delete mode 100644 QDMA/windows/apps/dma-arw/dma_arw.cpp
 delete mode 100644 QDMA/windows/apps/dma-arw/dma_arw.hpp
 delete mode 100644 QDMA/windows/apps/dma-arw/dma_arw.vcxproj
 delete mode 100644 QDMA/windows/apps/dma-arw/dma_arw.vcxproj.filters
 delete mode 100644 QDMA/windows/apps/dma-arw/dma_arw.vcxproj.user
 delete mode 100644 QDMA/windows/apps/dma-arw/version.h
 delete mode 100644 QDMA/windows/apps/dma-ctl/dmactl.cpp
 delete mode 100644 QDMA/windows/apps/dma-ctl/dmactl.vcxproj
 delete mode 100644 QDMA/windows/apps/dma-ctl/dmactl.vcxproj.filters
 delete mode 100644 QDMA/windows/apps/dma-ctl/dmactl.vcxproj.user
 delete mode 100644 QDMA/windows/apps/dma-ctl/version.h
 delete mode 100644 QDMA/windows/apps/dma-rw/datafile256K.bin
 delete mode 100644 QDMA/windows/apps/dma-rw/datafile4K.bin
 delete mode 100644 QDMA/windows/apps/dma-rw/dma_rw.cpp
 delete mode 100644 QDMA/windows/apps/dma-rw/dma_rw.hpp
 delete mode 100644 QDMA/windows/apps/dma-rw/dma_rw.vcxproj
 delete mode 100644 QDMA/windows/apps/dma-rw/dma_rw.vcxproj.filters
 delete mode 100644 QDMA/windows/apps/dma-rw/dma_rw.vcxproj.user
 delete mode 100644 QDMA/windows/apps/dma-rw/version.h
 delete mode 100644 QDMA/windows/sys/drv/include/qdma_driver_api.h
 delete mode 100644 QDMA/windows/sys/drv/qdma.inf
 delete mode 100644 QDMA/windows/sys/drv/qdma_generic.vcxproj
 delete mode 100644 QDMA/windows/sys/drv/qdma_generic.vcxproj.filters
 delete mode 100644 QDMA/windows/sys/drv/qdma_generic.vcxproj.user
 delete mode 100644 QDMA/windows/sys/drv/resource/Resource.aps
 delete mode 100644 QDMA/windows/sys/drv/resource/Resource.rc
 delete mode 100644 QDMA/windows/sys/drv/source/device.cpp
 delete mode 100644 QDMA/windows/sys/drv/source/device.h
 delete mode 100644 QDMA/windows/sys/drv/source/driver.cpp
 delete mode 100644 QDMA/windows/sys/drv/source/driver.h
 delete mode 100644 QDMA/windows/sys/drv/source/io_queue.cpp
 delete mode 100644 QDMA/windows/sys/drv/source/io_queue.h
 delete mode 100644 QDMA/windows/sys/drv/source/trace.h
 delete mode 100644 QDMA/windows/sys/drv/source/windows_common.h
 delete mode 100644 QDMA/windows/sys/libqdma/include/qdma_exports.h
 delete mode 100644 QDMA/windows/sys/libqdma/include/xversion.hpp
 delete mode 100644 QDMA/windows/sys/libqdma/libqdma.vcxproj
 delete mode 100644 QDMA/windows/sys/libqdma/libqdma.vcxproj.filters
 delete mode 100644 QDMA/windows/sys/libqdma/libqdma.vcxproj.user
 delete mode 100644 QDMA/windows/sys/libqdma/source/interrupts.cpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/interrupts.hpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma.cpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_errors.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_export.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_version.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_platform.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_reg_dump.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.c
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_reg.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_config.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_license.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_platform.cpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_platform_env.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/qdma_reg_ext.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/thread.cpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/thread.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/trace.h
 delete mode 100644 QDMA/windows/sys/libqdma/source/xpcie.cpp
 delete mode 100644 QDMA/windows/sys/libqdma/source/xpcie.hpp
 delete mode 100644 README.md
 rename XDMA/linux-kernel/RELEASE => RELEASE (100%)
 delete mode 100644 XDMA/linux-kernel/COPYING
 delete mode 100644 XVSEC/linux-kernel/COPYING
 delete mode 100644 XVSEC/linux-kernel/LICENSE
 delete mode 100644 XVSEC/linux-kernel/Makefile
 delete mode 100644 XVSEC/linux-kernel/README
 delete mode 100644 XVSEC/linux-kernel/RELEASE
 delete mode 100644 XVSEC/linux-kernel/docs/README
 delete mode 100644 XVSEC/linux-kernel/drv/Makefile
 delete mode 100644 XVSEC/linux-kernel/drv/version.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_cdev.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_cdev.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_drv.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_drv.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_drv_int.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.h
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_util.c
 delete mode 100644 XVSEC/linux-kernel/drv/xvsec_util.h
 delete mode 100644 XVSEC/linux-kernel/libxvsec/Makefile
 delete mode 100644 XVSEC/linux-kernel/libxvsec/version.h
 delete mode 100644 XVSEC/linux-kernel/libxvsec/xvsec.c
 delete mode 100644 XVSEC/linux-kernel/libxvsec/xvsec.h
 delete mode 100644 XVSEC/linux-kernel/libxvsec/xvsec_int.h
 delete mode 100644 XVSEC/linux-kernel/libxvsec/xvsec_mcap.c
 delete mode 100644 XVSEC/linux-kernel/tools/Makefile
 delete mode 100644 XVSEC/linux-kernel/tools/main.c
 delete mode 100644 XVSEC/linux-kernel/tools/main.h
 delete mode 100644 XVSEC/linux-kernel/tools/mcap_ops.c
 delete mode 100644 XVSEC/linux-kernel/tools/mcap_ops.h
 delete mode 100644 XVSEC/linux-kernel/tools/version.h
 delete mode 100644 XVSEC/linux-kernel/tools/xvsec_parser.c
 delete mode 100644 XVSEC/linux-kernel/tools/xvsec_parser.h
 delete mode 100644 docs/source/includeme.rst
 rename {XDMA/linux-kernel/include => include}/libxdma_api.h (100%)
 delete mode 100644 index.html
 rename XDMA/linux-kernel/readme.txt => readme.txt (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile0_4K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile1_4K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile2_4K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile3_4K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile_256K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile_32M.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/data/datafile_8K.bin (100%)
 rename {XDMA/linux-kernel/tests => tests}/dma_memory_mapped_test.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/dma_streaming_test.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/load_driver.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/perform_hwcount.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/run_test.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/fio_parse_result.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/fio_test.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/io.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/io_sweep.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/libtest.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/unaligned.sh (100%)
 rename {XDMA/linux-kernel/tests => tests}/scripts_mm/xdma_mm.sh (100%)
 rename {XDMA/linux-kernel/tools => tools}/Makefile (100%)
 rename {XDMA/linux-kernel/tools => tools}/dma_from_device.c (100%)
 rename {XDMA/linux-kernel/tools => tools}/dma_to_device.c (100%)
 rename {XDMA/linux-kernel/tools => tools}/dma_utils.c (100%)
 rename {XDMA/linux-kernel/tools => tools}/performance.c (100%)
 rename {XDMA/linux-kernel/tools => tools}/reg_rw.c (100%)
 rename {XDMA/linux-kernel/tools => tools}/test_chrdev.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/Makefile (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_bypass.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_ctrl.c (98%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_ctrl.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_events.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_sgdma.c (98%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_sgdma.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_xvc.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/cdev_xvc.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/libxdma.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/libxdma.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/version.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_cdev.c (99%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_cdev.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_mod.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_mod.h (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_thread.c (100%)
 rename {XDMA/linux-kernel/xdma => xdma}/xdma_thread.h (100%)

diff --git a/QDMA/linux-kernel/COPYING b/COPYING
old mode 100755
new mode 100644
similarity index 100%
rename from QDMA/linux-kernel/COPYING
rename to COPYING
diff --git a/XDMA/linux-kernel/LICENSE b/LICENSE
similarity index 100%
rename from XDMA/linux-kernel/LICENSE
rename to LICENSE
diff --git a/QDMA/DPDK/RELEASE b/QDMA/DPDK/RELEASE
deleted file mode 100755
index 806779b..0000000
--- a/QDMA/DPDK/RELEASE
+++ /dev/null
@@ -1,195 +0,0 @@
-RELEASE: 2023.2.1
-=================
-
-This release is based on DPDK v20.11, v21.11 and v22.11 and
-contains QDMA poll mode driver and QDMA test application.
-
-This release is validated for
-	- On VCU1525 for QDMA5.0 2022.1 example design
-	- On VCU1525 for QDMA4.0 2020.2 example design
-	- On VCU1525 for QDMA3.1 2019.2 example design
-	- On XCVP1202 for CPM5 2022.1 example design
-	- On XCVC1902 for CPM4 2022.1 example design
-
-This release includes patch files for dpdk-pktgen v20.12.0 and v22.04.1 that extends
-dpdk-pktgen application to handle packets with packet sizes more than 1518 bytes
-and it disables the packet size classification logic in dpdk-pktgen to remove
-application overhead in performance measurement.This patch is used for
-performance testing with dpdk-pktgen application.
-
-The driver is validated against dpdk-pktgen and testpmd applications for API compliance.
-
-SUPPORTED FEATURES:
-===================
-2018.2 Features
----------------
-- Support for both the AXI4 Memory Mapped(MM) and AXI4 Streaming(ST) Interfaces
-- 2048 Queue Sets
-	- 2048 H2C Descriptor Rings
-	- 2048 C2H Descriptor Rings
-	- 2048 C2H Completion Rings
-- Supports Polling Mode
-- Supports SR-IOV with 4 Physical Functions(PF) and 252 Virtual Functions(VF)
-- Allows Only Privileged/Physical functions to program the contexts and registers
-- Mailbox Support
-- Supports Descriptor Prefetch
-- ST H2C to C2H and C2H to H2C loopback support
-- Zero-byte transfer support
-
-2018.3 Features
----------------
-- Descriptor (8, 16, 32, 64 bytes) bypass support
-- Support for Completion queue descriptors of 64 bytes size
-- Support flexible BAR mapping for QDMA configuration register space
-- Support disabling overflow check in completion ring
-- Indirect programming of FMAP registers
-- Version for SW and HW
-
-2019.1 Features
----------------
-- Support DPDK v18.11 LTS
-- Interrupt support for Mailbox events
-- Support Completions in Memory mapped mode
-- Interoperability between Linux driver (as PF/VF) and DPDK driver (as PF/VF)
-- Error monitoring and error logging
-- Driver restructuring to partition QDMA access code such that it can be used across different drivers
-- Device configuration through additional driver APIs
-
-2019.2 Features
----------------
-- Support reset of a VF device (via rte_eth_dev_reset() API)
-- Support PF device removal when its VF device is active
-- Split user logic related data path handling code to qdma_user.c and qdma_user.h
-- Bug Fixes
-	- Correct the PF and VF function ID used in the driver in accordance with HW
-	- Fix dma_from_device command in qdma_testapp application that requests more data from user logic than specified
-	- Fix memory offset calculation in dma_from_device and dma_to_device command in qdma_testapp application for MM mode
-
-2020.1 Updates
---------------
-- Support DPDK v19.11 LTS
-- Support QDMA4.0 context and register changes
-- Common driver to support QDMA3.1 and QDMA4.0 designs
-- Updated and validated the example design with marker changes for QDMA4.0 and without marker changes for QDMA3.1
-- Added support for more than 256 functions 
-- Support multiple bus numbers on single card
-- CPU resource optimization in Tx and Rx data path
-
-2020.1 Patch Updates
---------------------
-- Resolved HW errors observed with QDMA4.0 MM only design
-- Verified QDMA DPDK software with IOVA=VA mode by enabling hugepage allocation matching support in DPDK
-  (i.e. by specifying the --match-allocations command-line switch to the EAL).
-
-2020.2 Updates
---------------
-- Added support for detailed register dump
-- Added support for post processing HW error messages
-- Added support for Debug mode and Internal only mode
-- Resolved the issue related to mbuf packet length
-- Fixed VF FMAP programming of qmax issue by setting qmax to the actual user configured total queue number
-
-2020.2.1 Updates
-----------------
-- Migrated qdma dpdk driver to use DPDK framework v20.11
-
-2022.1 Updates
---------------
-CPM5
-	- FMAP context dump
-	- Debug register dump for ST and MM Errors
-	- Dual Instance support
-
-2022.1.1 Patch Updates
-----------------------
-- Added VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.
-
-2022.1.2 Patch Updates
-----------------------
-- Added support for QDMA5.0 which has some performance optimization changes compared to QDMA4.0
-
-2022.1.3 Patch Updates
-----------------------
-- Added PF/VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.
-
-2023.1.0 Updates
-----------------
-- Added support for DPDK framework v21.11 and v22.11 and retained the backward compatibility for v20.11
-- Enabled 128 bit SIMD vectorization for Intel and AMD platforms by default for qdma Receive and Transmit APIs
-- Added IO memory barriers for H2C/C2H producer index and completion ring consumer index updates
-
-2023.1.1 Updates
-----------------
-- Optimized the driver code and HW register settings for performance improvements
-
-2023.1.2 Updates
-----------------
-- Optimized dpdk PMD and HW register settings for CPM5 performance improvements
-
-2023.2.0 Updates
-----------------
-- Added driver support for CPM4 design.
-- Added support for Tx and Rx queue statistics to enhance debugging capabilities
-- Added support for latency measurements in Tx and Rx data path to enhance debugging capabilities
-
-2023.2.1 Updates
-----------------
-- Added support for latency measurements in Tx and Rx data path for VF
-
-KNOWN ISSUE:
-============
-- CPM4:
-	- HW pdi limitation
-		- VF functionality with vfio-pci on host is not verified
-		- VF functionality on VM is not verified
-		- Forwarding performance numbers are not reaching 100Gbps and capping at 98.8Gbps
-
-- CPM5:
-	- Smaller packet forwarding performance optimizations are in progress and report will be updated in subsequent releases
-
-- All Designs
-	- Function Level Reset(FLR) of PF device when VFs are attached to this PF results in mailbox communication failure
-
-
-DRIVER LIMITATIONS:
-===================
-- CPM5 Only
-	- VF functionality is verified with 240 VF's as per CPM5 HW limitation
-
-- All Designs
-	- Big endian systems are not supported
-	- For optimal QDMA streaming performance, packet buffers of the descriptor ring should be aligned to at least 256 bytes.
-
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
diff --git a/QDMA/DPDK/docs/README.txt b/QDMA/DPDK/docs/README.txt
deleted file mode 100755
index a4ff05e..0000000
--- a/QDMA/DPDK/docs/README.txt
+++ /dev/null
@@ -1,557 +0,0 @@
-###############################################################################
-
-                 Xilinx QDMA Software README
-
-###############################################################################
-
-_____________________________________________________________________________
-Contents
-
-1.   Setup: Download and modifications
-2    Setup: Host system
-3.   Setup: Build Commands
-4.   Compile Test application
-5.   Running the DPDK software test application
-_____________________________________________________________________________
-
-
-Note: This DPDK driver and applciation were tested on Ubuntu 18.04 machine.
-
-
-1.) Setup: Download and modifications
-
-The reference driver code requires DPDK version 22.11.
-Follow the steps below to download the proper version of DPDK and apply
-driver code and test application supplied in the GitHub.
-
-Extract the DPDK driver software database from the Xilinx GitHub to the server where VCU1525
-is installed. Henceforth, this area is referred as <dpdk_sw_database>.
-
-Create a directory for the DPDK download on the server where the VCU1525
-is installed and move to this directory.
-
- $ mkdir <server_dir>/<dpdk_test_area>
- $ cd <server_dir>/<dpdk_test_area>
- $ git clone http://dpdk.org/git/dpdk-stable
- $ cd dpdk-stable
- $ git checkout v22.11
- $ git clone git://dpdk.org/dpdk-kmods
- $ cp -r <dpdk_sw_database>/drivers/net/qdma ./drivers/net/
- $ cp -r <dpdk_sw_database>/examples/qdma_testapp ./examples/
-
-	Additionally, make below changes to the DPDK 22.11 tree to build QDMA driver,
-	support 4K queues and populate Xilinx devices for binding.
-
-		i. Add QDMA driver
-			a. To support 4K queues and 256 PCIe functions, update below configurations	in ./config/rte_config.h
-				CONFIG_RTE_MAX_MEMZONE=40960
-				CONFIG_RTE_MAX_ETHPORTS=256
-				CONFIG_RTE_MAX_QUEUES_PER_PORT=4096
-
-			b. Add below lines to ./config/meson.build in DPDK 22.11 tree
-				# Set maximum Ethernet ports to 256
-				dpdk_conf.set('RTE_MAX_ETHPORTS', 256)
-
-				# Set maximum VFIO Groups to 256
-				dpdk_conf.set('RTE_MAX_VFIO_GROUPS', 256)
-
-			c. Add below lines to ./config/rte_config.h to enable driver debug logs
-				#define RTE_LIBRTE_QDMA_DEBUG_DRIVER 1
-
-			d. Add below line to ./drivers/net/meson.build, where PMDs are added to drivers list
-				'qdma',
-
-			e. To add Xilinx devices for device binding, add below lines to	./usertools/dpdk-devbind.py after cavium_pkx class, where PCI base class for devices are listed.
-				xilinx_qdma_pf = {'Class':  '05', 'Vendor': '10ee', 'Device': '9011,9111,9211,9311,9014,9114,9214,9314,9018,9118,9218,9318,901f,911f,921f,931f,9021,9121,9221,9321,9024,9124,9224,9324,9028,9128,9228,9328,902f,912f,922f,932f,9031,9131,9231,9331,9034,9134,9234,9334,9038,9138,9238,9338,903f,913f,923f,933f,9041,9141,9241,9341,9044,9144,9244,9344,9048,9148,9248,9348,b011,b111,b211,b311,b014,b114,b214,b314,b018,b118,b218,b318,b01f,b11f,b21f,b31f,b021,b121,b221,b321,b024,b124,b224,b324,b028,b128,b228,b328,b02f,b12f,b22f,b32f,b031,b131,b231,b331,b034,b134,b234,b334,b038,b138,b238,b338,b03f,b13f,b23f,b33f,b041,b141,b241,b341,b044,b144,b244,b344,b048,b148,b248,b348',
-				'SVendor': None, 'SDevice': None}
-				xilinx_qdma_vf = {'Class':  '05', 'Vendor': '10ee', 'Device': 'a011,a111,a211,a311,a014,a114,a214,a314,a018,a118,a218,a318,a01f,a11f,a21f,a31f,a021,a121,a221,a321,a024,a124,a224,a324,a028,a128,a228,a328,a02f,a12f,a22f,a32f,a031,a131,a231,a331,a034,a134,a234,a334,a038,a138,a238,a338,a03f,a13f,a23f,a33f,a041,a141,a241,a341,a044,a144,a244,a344,a048,a148,a248,a348,c011,c111,c211,c311,c014,c114,c214,c314,c018,c118,c218,c318,c01f,c11f,c21f,c31f,c021,c121,c221,c321,c024,c124,c224,c324,c028,c128,c228,c328,c02f,c12f,c22f,c32f,c031,c131,c231,c331,c034,c134,c234,c334,c038,c138,c238,c338,c03f,c13f,c23f,c33f,c041,c141,c241,c341,c044,c144,c244,c344,c048,c148,c248,c348',
-				'SVendor': None, 'SDevice': None}
-
-			d. Update entries in network devices class in ./usertools/dpdk-devbind.py to add Xilinx devices
-				network_devices = [network_class, cavium_pkx, xilinx_qdma_pf, xilinx_qdma_vf],
-
-2.) Setup: Host system
-
-DPDK requires that hugepages are setup on the server.
-The following modifications must be made to the /boot/grub/grub.cfg on the host system
-
-	i. Add hugepages for DPDK
-		- Add following parameter to /etc/default/grub file
-			GRUB_CMDLINE_LINUX="default_hugepagesz=1GB hugepagesz=1G hugepages=20"
-
-		This example adds 20 1GB hugepages, which are required to support 2048 queues, with descriptor ring of 1024 entries and each descriptor buffer length of 4KB. The number of hugepages required should be changed if the above configuration (queues, ring size, buffer size) changes.
-
-	ii. Enable IOMMU for VM testing
-		- Update /etc/default/grub file as below.
-			GRUB_CMDLINE_LINUX="default_hugepagesz=1GB hugepagesz=1G hugepages=20 iommu=pt intel_iommu=on"
-
-	iii. Execute the following command to modify the /boot/grub/grub.cfg with the configuration set in the above steps and permanently add them to the kernel command line.
-		update-grub
-
-	iv. Reboot host system after making the above modifications.
-
-3.) Setup: Build Commands
-
-	i. Compile DPDK & QDMA driver
-		a. Execute the following to compile and install the driver.
-			cd <server_dir>/<dpdk_test_area>/dpdk-stable
-			meson build
-			cd build
-			ninja
-			ninja install
-			ldconfig
-			
-		- The following should appear when ninja completes
-			Linking target app/test/dpdk-test.
-
-		- Verify that librte_net_qdma.a is installed in ./build/drivers directory.
-
-	ii. Execute the following to compile the igb_uio kernel driver.
-			cd <server_dir>/<dpdk_test_area>/dpdk-stable/dpdk-kmods/linux/igb_uio
-			make
-
-	Important Note for VF 4K queue support for CPM5 design only
-    -----------------------------------------------------------
-
-    To enable VF 4K queue driver support for CPM5 design, QDMA DPDK driver need
-    to compile by enabling the EQDMA_CPM5_VF_GT_256Q_SUPPORTED macro
-
-				cd <server_dir>/<dpdk_test_area>/dpdk-stable
-				meson build -DEQDMA_CPM5_VF_GT_256Q_SUPPORTED=1
-				cd build
-				ninja
-				ninja install
-				ldconfig
-
-4.) Compile Test application
-
-	i. Change to root user and compile the application
-		sudo su
-		cd examples/qdma_testapp
-		make RTE_SDK=`pwd`/../.. RTE_TARGET=build
-
-	- The following should appear when make completes
-			ln -sf qdma_testapp-shared build/qdma_testapp
-
-	ii. Additionally, for memory mapped mode, BRAM size can be configured with make command.
-	Default BRAM size is set to 512KB in the driver makefile.
-
-
-5.) Running the DPDK software test application
-
-The below steps describe the step by step procedure to run the DPDK QDMA test
-application and to interact with the QDMA PCIe device.
-
-	i. Navigate to examples/qdma_testapp directory.
-		cd <server_dir>/<dpdk_test_area>/dpdk-stable/examples/qdma_testapp
-
-	ii. Run the 'lspci' command on the console and verify that the PFs are detected as shown below. Here, '81' is the PCIe bus number on which Xilinx QDMA device is installed.
-		# lspci | grep Xilinx
-		81:00.0 Memory controller: Xilinx Corporation Device 903f
-		81:00.1 Memory controller: Xilinx Corporation Device 913f
-		81:00.2 Memory controller: Xilinx Corporation Device 923f
-		81:00.3 Memory controller: Xilinx Corporation Device 933f
-
-	iii. Execute the following commands required for running the DPDK application
-		# mkdir /mnt/huge
-		# mount -t hugetlbfs nodev /mnt/huge
-		# modprobe uio
-		# insmod <server_dir>/<dpdk_test_area>/dpdk-stable/dpdk-kmods/linux/igb_uio/igb_uio.ko
-
-	iv. Bind PF ports to the igb_uio module as shown below
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:00.0
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:00.1
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:00.2
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:00.3
-
-	v. The execution of steps iii and iv creates a max_vfs file entry in /sys/bus/pci/devices/0000:<bus>:<device>.<function>.
-
-	vi. Enable VFs for each PF by writing the number of VFs to enable to this file as shown below.
-		This example creates 1 VF for each PF.
-			# echo 1 > /sys/bus/pci/devices/0000\:81\:00.0/max_vfs
-			# echo 1 > /sys/bus/pci/devices/0000\:81\:00.1/max_vfs
-			# echo 1 > /sys/bus/pci/devices/0000\:81\:00.2/max_vfs
-			# echo 1 > /sys/bus/pci/devices/0000\:81\:00.3/max_vfs
-
-	vii. Run the lspci command on the console and verify that the VFs are listed in the output as shown below
-		# lspci | grep Xilinx
-		81:00.0 Memory controller: Xilinx Corporation Device 903f
-		81:00.1 Memory controller: Xilinx Corporation Device 913f
-		81:00.2 Memory controller: Xilinx Corporation Device 923f
-		81:00.3 Memory controller: Xilinx Corporation Device 933f
-		81:00.4 Memory controller: Xilinx Corporation Device a03f
-		81:08.4 Memory controller: Xilinx Corporation Device a13f
-		81:10.0 Memory controller: Xilinx Corporation Device a23f
-		81:17.4 Memory controller: Xilinx Corporation Device a33f
-
-	viii. Execute the following commands to bind the VF ports to igb_uio module
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:00.4
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:08.4
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:10.0
-		# ../../usertools/dpdk-devbind.py -b igb_uio 81:17.4
-
-	ix. Run the qdma_testapp using the following command
-		#./build/qdma_testapp -c 0xf -n 4
-			- '-c' represents processor mask
-			- '-n' represents number of memory channels
-
-CLI support in qdma_testapp
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Sample log of the qdma_testapp execution is given below.
-After running the qdma_testapp, command line prompt appears on the console as shown below.
-
-::
-
-	#./build/qdma_testapp -c 0xf -n 4
-	QDMA testapp rte eal init...
-	EAL: Detected 8 lcore(s)
-	EAL: Probing VFIO support...
-	EAL: PCI device 0000:81:00.0 on NUMA socket -1
-	EAL: probe driver: 10ee:903f net_qdma
-	EAL: PCI device 0000:81:00.1 on NUMA socket -1
-	EAL: probe driver: 10ee:913f net_qdma
-	EAL: PCI device 0000:81:00.2 on NUMA socket -1
-	EAL: probe driver: 10ee:923f net_qdma
-	EAL: PCI device 0000:81:00.3 on NUMA socket -1
-	EAL: probe driver: 10ee:933f net_qdma
-	EAL: PCI device 0000:81:00.4 on NUMA socket -1
-	EAL: probe driver: 10ee:a03f net_qdma
-	EAL: PCI device 0000:81:08.4 on NUMA socket -1
-	EAL: probe driver: 10ee:a13f net_qdma
-	EAL: PCI device 0000:81:10.0 on NUMA socket -1
-	EAL: probe driver: 10ee:a23f net_qdma
-	EAL: PCI device 0000:81:17.4 on NUMA socket -1
-	EAL: probe driver: 10ee:a33f net_qdma
-	Ethernet Device Count: 8
-	Logical Core Count: 4
-	xilinx-app>
-
-Commands supported by the qdma_testapp CLI
-++++++++++++++++++++++++++++++++++++++++++
-
-1. port_init
-
-	This command assigns queues to the port, sets up required resources for the queues, and prepares queues for data processing.
-	Format for this commad is:
-
-		port_init <port-id> <num-queues> <num-st-queues> <ring-depth> <pkt-buff-size>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	num-queues represents the total number of queues to be assigned to the port
-
-	num-st-queues represents the total number of queues to be configured in streaming mode.
-	This implies that the (num-queues - num-st-queues) number of queues has to be configured in memory mapped mode.
-
-	ring-depth represents the number of entries in C2H and H2C descriptor rings of each queue of the port
-
-	pkt-buff-size represents the size of the data that a single C2H or H2C descriptor can support
-
-	Example usage:
-
-		port_init 1 32 16 1024 4096
-
-	This example initializes Port 1 with first 16 queues in streaming mode and remaining 16 queues in memory mapped mode.
-	Number of C2H and H2C descriptor ring depth is set to 1024 and data buffer of 4KB supported by each descriptor.
-
-2. port_close
-
-	This command frees up all the allocated resources and removes the queues associated with the port.
-	Format for this commad is:
-
-		port_close <port-id>
-
-	**port-id** represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	Example usage:
-
-	::
-
-		port_close 0
-
-	This example closes the port 0. Port 0 can again be re-initialized with `port_init` command after `port_close` command.
-
-3. port_reset
-
-	This command resets the DPDK port. This command is supported for VF port only.
-	This command closes the port and re-initializes it with the values provided in this command.
-	Format for this commad is:
-
-		port_reset <port-id> <num-queues> <num-st-queues> <ring-depth> <pkt-buff-size>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	num-queues represents the total number of queues to be assigned to the port
-
-	num-st-queues represents the total number of queues to be configured in streaming mode.
-	This implies that the (num-queues - num-st-queues) number of queues has to be configured in memory mapped mode.
-
-	ring-depth represents the number of entries in C2H and H2C descriptor rings of each queue of the port
-
-	pkt-buff-size represents the size of the data that a single C2H or H2C descriptor can support
-
-	Example usage:
-
-		port_reset 4 32 16 1024 4096
-
-	This example command resets the port 4 and re-initializes it with first 16 queues in streaming mode and
-	remaining 16 queues in memory mapped mode. Number of C2H and H2C descriptor ring depth is set to 1024
-	and data buffer of 4KB supported by each descriptor.
-
-4. port_remove
-
-	This command frees up all the resources allocated for the port and removes the port from application use.
-	User will need to restart the application to use the port again.
-	Format for this commad is:
-
-		port_remove <port-id>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	Example usage:
-
-		port_remove 4
-
-	This example removes the port 4. Restart the application to use port 4 again.
-
-5. dma_to_device
-
-	This command is used to DMA the data from host to card.
-	Format for this commad is:
-
-		dma_to_device <port-id> <num-queues> <input-filename> <dst-addr> <size> <iterations>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	num-queues represents the total number of queues to use for transmitting the data
-
-	input-filename represents the path to a valid binary data file, contents of which needs to be DMA'ed
-
-	dst-addr represents the destination address (offset) in the card to where DMA should be done in memory mapped mode.
-	This field is ignored for streaming mode queues.
-
-	size represents the amount of data in bytes that needs to be transmitted to the card from the given input file.
-	Data will be segmented across queues such that the total data transferred to the card is `size` amount
-
-	iterations represents the number of loops to repeat the same DMA transfer
-
-	Example usage:
-
-		dma_to_device 0 2048 mm_datafile_1MB.bin 0 524288 0
-
-	This example segments the (524288) bytes from the mm_datafile_1MB.bin file equally to 2048 queues
-	and transmits the segmented data on each queue starting at destination BRAM offset 0 for 1st queue,
-	offset (1*524288)/2048 for 2nd queue, and so on.
-
-6. dma_from_device
-
-	This command is used to DMA the data from card to host.
-	Format for this commad is:
-
-		dma_from_device <port-id> <num-queues> <output-filename> <src-addr> <size> <iterations>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	num-queues represents the total number of queues to use to receive the data
-
-	output-filename represents the path to output file to dump the received data
-
-	src-addr represents the source address (offset) in the card from where DMA should be done in memory mapped mode.
-	This field is ignored for streaming mode queues.
-
-	size represents the amount of data in bytes that needs to be received from the card.
-	Data will be segmented across queues such that the total data transferred from the card is `size` amount
-
-	iterations represents the number of loops to repeat the same DMA transfer
-
-	Example usage:
-
-		dma_from_device 0 2048 port0_qcount2048_size524288.bin 0 524288 0
-
-	This example receives 524288 bytes from 2048 queues and writes to port0_qcount2048_size524288.bin file.
-	1st queue receives (524288/2048) bytes of data from BRAM offset 0,
-	2nd queue receives (524288/2048) bytes of data from BRAM offset (1*524288)/2048, and so on.
-
-7. reg_read
-
-	This command is used to read the specified register.
-	Format for this commad is:
-
-		reg_read <port-id> <bar-num> <address>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	bar-num represents the PCIe BAR where the register is located
-
-	address represents offset of the register in the PCIe BAR `bar-num`
-
-8. reg_write
-
-	This command is used to write a 32-bit value to the specified register.
-	Format for this commad is:
-
-		reg_write <port-id> <bar-num> <address> <value>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	bar-num represents the PCIe BAR where the register is located
-
-	address represents offset of the register in the PCIe BAR `bar-num`
-
-	value represents the value to be written at the register offset `address`
-
-9. reg_dump
-
-	This command dumps important QDMA registers values of the given port on console.
-	Format for this commad is:
-
-		reg_dump <port-id>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-10. reg_info_read
-
-	This command reads the field info for the specified number of registers of the given port on console.
-	Format for this commad is:
-
-		reg_info_read <port-id> <reg-addr> <num-regs>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	reg-addr represents offset of the register in the PCIe BAR bar-num
-
-	rum-regs represents number of registers to read
-
-11. queue_dump
-
-	This command dumps the queue context of the specified queue number of the given port.
-	Format for this commad is:
-
-		queue_dump <port-id> <queue-id>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	queue-id represents the queue number relative to the port, whose context information needs to be logged
-
-12. desc_dump
-
-	This command dumps the descriptors of the C2H and H2C rings of the specified queue number of the given port.
-	Format for this commad is:
-
-		desc_dump <port-id> <queue-id>
-
-	port-id represents a logical numbering for PCIe functions in the order they are bind to igb_uio driver.
-	The first PCIe function that is bound has port id as 0.
-
-	queue-id represents the queue number relative to the port, whose C2H and H2C ring descriptors needs to be dumped
-
-13. load_cmds
-
-	This command executes the list of CLI commands from the given file.
-	Format for this commad is:
-
-		load_cmds <file_name>
-
-	file_name represents path to a valid file containing list of above described CLI commands to be executed in sequence.
-
-14. help
-
-	This command dumps the help menu with supported commands and their format.
-	Format for this commad is:
-
-		help
-
-15. ctrl+d
-
-	The keyboard keys Ctrl and D when pressed together quits the application.
-
-Instructions on how to use proc-info test for driver debugging:
-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
-1. Apply the below patch on top of the code changes mentioned in the dpdk driver documentation page and build the dpdk source code.
-	patch -p1 < 0001-Add-QDMA-xdebug-to-proc-info-of-dpdk-22.11.patch
-
-2. Run the testpmd application as primary application on one linux terminal
-	./build/app/dpdk-testpmd -l 1-17 -n 4 -a 65:00.0,desc_prefetch=1,cmpt_desc_len=16 --log-level=3 -- --burst=256 -i --nb-cores=1 --rxq=1 --txq=1 --forward-mode=io --rxd=2048 --txd=2048 --mbcache=512 --mbuf-size=4096
-
-3. Run the proc info as secondary application on another linux terminal as mentioned below with diferent port combinations.
-One port:
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 -g
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --qdevice
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --qinfo
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --qstats_clr
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --qstats
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --desc-dump tx
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --desc-dump rx
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --desc-dump cmpt
-	./build/app/dpdk-proc-info -a 81:00.0 --log-level=7 -- -p 1 -q 0 --stats
-Two ports:
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 -g
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --qdevice
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --qinfo
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --qstats_clr
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --qstats
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --desc-dump tx
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --desc-dump rx
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --desc-dump cmpt
-	./build/app/dpdk-proc-info -a 81:00.0, -a 81:00.1, --log-level=7 -- -p 3 -q 0 --stats
-4. Available commands for proc info are mentioned below.
-		-m to display DPDK memory zones, segments and TAILQ information
-		-g to display DPDK QDMA PMD global CSR info
-		-p PORTMASK: hexadecimal bitmask of ports to retrieve stats for
-		--stats: to display port statistics, enabled by default
-		--qdevice: to display QDMA device structure
-		--qinfo: to display QDMA queue context and queue structures
-		--qstats: to display QDMA Tx and Rx queue stats
-		--qstats_clr: to clear QDMA Tx and Rx queue stats
-		--desc-dump {rx | tx | cmpt}: to dump QDMA queue descriptors
-		--xstats: to display extended port statistics, disabled by default
-		--metrics: to display derived metrics of the ports, disabled by
-
-
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
diff --git a/QDMA/DPDK/drivers/net/qdma/meson.build b/QDMA/DPDK/drivers/net/qdma/meson.build
deleted file mode 100755
index 0a04d4d..0000000
--- a/QDMA/DPDK/drivers/net/qdma/meson.build
+++ /dev/null
@@ -1,79 +0,0 @@
-#   BSD LICENSE
-#
-#   Copyright (c) 2021-2022 Xilinx, Inc. All rights reserved.
-#   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-#
-#   Redistribution and use in source and binary forms, with or without
-#   modification, are permitted provided that the following conditions
-#   are met:
-#
-#     * Redistributions of source code must retain the above copyright
-#       notice, this list of conditions and the following disclaimer.
-#     * 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.
-#     * Neither the name of the copyright holder nor the names of its
-#       contributors may be used to endorse or promote products derived
-#       from this software without specific prior written permission.
-#
-#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#   "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 COPYRIGHT
-#   OWNER OR CONTRIBUTORS 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.
-
-cflags += ['-DRTE_LIBRTE_QDMA_PMD']
-cflags += ['-DDMA_BRAM_SIZE=524288']
-cflags += ['-DTHROUGHPUT_MEASUREMENT']
-
-# Use QDMA_DPDK_22_11 compiler flag for DPDK v22.11
-# Use QDMA_DPDK_21_11 compiler flag for DPDK v21.11
-# Use QDMA_DPDK_20_11 compiler flag for DPDK v20.11
-cflags += ['-DQDMA_DPDK_22_11']
-
-includes += include_directories('.')
-includes += include_directories('qdma_access')
-includes += include_directories('qdma_access/qdma_soft_access')
-includes += include_directories('qdma_access/eqdma_soft_access')
-includes += include_directories('qdma_access/qdma_cpm4_access')
-includes += include_directories('qdma_access/eqdma_cpm5_access')
-
-headers += files('rte_pmd_qdma.h')
-
-deps += ['mempool_ring']
-
-sources = files(
-	'qdma_ethdev.c',
-	'qdma_vf_ethdev.c',
-	'qdma_devops.c',
-	'qdma_common.c',
-	'qdma_rxtx.c',
-	'qdma_xdebug.c',
-	'qdma_user.c',
-	'qdma_access/eqdma_soft_access/eqdma_soft_access.c',
-	'qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c',
-	'qdma_access/qdma_cpm4_access/qdma_cpm4_access.c',
-	'qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c',
-	'qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c',
-	'qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c',
-	'qdma_access/qdma_soft_access/qdma_soft_access.c',
-	'qdma_access/qdma_list.c',
-	'qdma_access/qdma_resource_mgmt.c',
-	'qdma_access/qdma_mbox_protocol.c',
-	'qdma_access/qdma_access_common.c',
-	'qdma_mbox.c',
-	'qdma_platform.c',
-	'rte_pmd_qdma.c',
-	'qdma_dpdk_compat.c'
-)
-
-if arch_subdir == 'x86'
-    sources += files('qdma_rxtx_vec_sse.c')
-endif
\ No newline at end of file
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma.h b/QDMA/DPDK/drivers/net/qdma/qdma.h
deleted file mode 100755
index b699069..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma.h
+++ /dev/null
@@ -1,500 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_H__
-#define __QDMA_H__
-
-#include <stdbool.h>
-#include <rte_dev.h>
-#include <rte_ethdev.h>
-#include <rte_spinlock.h>
-#include <rte_log.h>
-#include <rte_cycles.h>
-#include <rte_byteorder.h>
-#include <rte_memzone.h>
-#include <linux/pci.h>
-#include "qdma_user.h"
-#include "qdma_resource_mgmt.h"
-#include "qdma_mbox.h"
-#include "rte_pmd_qdma.h"
-#include "qdma_log.h"
-#include "qdma_dpdk_compat.h"
-
-#define QDMA_NUM_BARS          (6)
-#define DEFAULT_PF_CONFIG_BAR  (0)
-#define DEFAULT_VF_CONFIG_BAR  (0)
-#define BAR_ID_INVALID         (-1)
-
-#define QDMA_FUNC_ID_INVALID    0xFFFF
-
-#define DEFAULT_QUEUE_BASE	(0)
-
-#define QDMA_MAX_BURST_SIZE (128)
-#define QDMA_MIN_RXBUFF_SIZE	(256)
-
-/* Descriptor Rings aligned to 4KB boundaries - only supported value */
-#define QDMA_ALIGN	(4096)
-
-#define DEFAULT_TIMER_CNT_TRIG_MODE_TIMER	(5)
-#define DEFAULT_TIMER_CNT_TRIG_MODE_COUNT_TIMER	(30)
-
-#define MIN_RX_PIDX_UPDATE_THRESHOLD (1)
-#define MIN_TX_PIDX_UPDATE_THRESHOLD (1)
-#define DEFAULT_MM_CMPT_CNT_THRESHOLD	(2)
-#define QDMA_TXQ_PIDX_UPDATE_INTERVAL	(1000) //100 uSec
-
-/** Delays **/
-#define MAILBOX_PF_MSG_DELAY		(20)
-#define MAILBOX_VF_MSG_DELAY		(10)
-#define MAILBOX_PROG_POLL_COUNT		(1250)
-
-#define WB_TIMEOUT			(100000)
-#define RESET_TIMEOUT		(60000)
-#define SHUTDOWN_TIMEOUT	(60000)
-
-#define QDMA_MAX_BUFLEN     (2048 * 10)
-
-#ifdef spin_lock_init
-#undef spin_lock_init
-#endif
-#define spin_lock_init(sl) rte_spinlock_init(sl)
-
-/** Completion Context config */
-#define CMPT_DEFAULT_COLOR_BIT           (1)
-#define CMPT_CNTXT_DESC_SIZE_8B          (0)
-#define CMPT_CNTXT_DESC_SIZE_16B         (1)
-#define CMPT_CNTXT_DESC_SIZE_32B         (2)
-#define CMPT_CNTXT_DESC_SIZE_64B         (3)
-
-/** SOFTWARE DESC CONTEXT */
-#define SW_DESC_CNTXT_8B_BYPASS_DMA	    (0)
-#define SW_DESC_CNTXT_16B_BYPASS_DMA	    (1)
-#define SW_DESC_CNTXT_32B_BYPASS_DMA	    (2)
-#define SW_DESC_CNTXT_64B_BYPASS_DMA	    (3)
-
-#define SW_DESC_CNTXT_C2H_STREAM_DMA        (0)
-#define SW_DESC_CNTXT_H2C_STREAM_DMA        (1)
-#define SW_DESC_CNTXT_MEMORY_MAP_DMA        (2)
-
-#define DEFAULT_QDMA_CMPT_DESC_LEN (RTE_PMD_QDMA_CMPT_DESC_LEN_8B)
-
-#define LATENCY_MAX_QUEUES 4
-#define LATENCY_CNT 20
-
-#ifdef LATENCY_MEASUREMENT
-extern const struct rte_memzone *txq_lat_buf_mz;
-extern const struct rte_memzone *rxq_lat_buf_mz;
-extern double (*h2c_pidx_to_hw_cidx_lat)[LATENCY_CNT];
-extern double (*c2h_pidx_to_cmpt_pidx_lat)[LATENCY_CNT];
-#endif
-
-enum dma_data_direction {
-	DMA_BIDIRECTIONAL = 0,
-	DMA_TO_DEVICE = 1,
-	DMA_FROM_DEVICE = 2,
-	DMA_NONE = 3,
-};
-
-enum reset_state_t {
-	RESET_STATE_IDLE,
-	RESET_STATE_RECV_PF_RESET_REQ,
-	RESET_STATE_RECV_PF_RESET_DONE,
-	RESET_STATE_INVALID
-};
-
-/** MM Write-back status structure **/
-struct __attribute__ ((packed)) wb_status
-{
-	volatile uint16_t	pidx; /** in C2H WB **/
-	volatile uint16_t	cidx; /** Consumer-index **/
-	uint32_t	rsvd2; /** Reserved. **/
-};
-
-struct qdma_pkt_stats {
-	uint64_t pkts;
-	uint64_t bytes;
-};
-
-struct qdma_pkt_lat {
-	double prev;
-	double curr;
-};
-
-struct qdma_txq_stats {
-	uint16_t pidx;
-	uint16_t wrb_cidx;
-	uint16_t txq_tail;
-	uint16_t in_use_desc;
-	uint16_t nb_pkts;
-	uint16_t lat_cnt;
-	uint32_t ring_wrap_cnt;
-	uint32_t txq_full_cnt;
-#ifdef LATENCY_MEASUREMENT
-	uint32_t wrb_cidx_cnt_no_change;
-	uint32_t wrb_cidx_cnt_lt_8;
-	uint32_t wrb_cidx_cnt_8_to_32;
-	uint32_t wrb_cidx_cnt_32_to_64;
-	uint32_t wrb_cidx_cnt_gt_64;
-	struct qdma_pkt_lat pkt_lat;
-#endif
-};
-
-struct qdma_rxq_stats {
-	uint16_t pidx;
-	uint16_t wrb_pidx;
-	uint16_t wrb_cidx;
-	uint16_t rxq_cmpt_tail;
-	uint16_t pending_desc;
-	uint16_t lat_cnt;
-	uint32_t ring_wrap_cnt;
-	uint32_t mbuf_avail_cnt;
-	uint32_t mbuf_in_use_cnt;
-#ifdef LATENCY_MEASUREMENT
-	struct qdma_pkt_lat pkt_lat;
-#endif
-};
-
-/*
- * Structure associated with each CMPT queue.
- */
-struct qdma_cmpt_queue {
-	struct qdma_ul_cmpt_ring *cmpt_ring;
-	struct wb_status    *wb_status;
-	struct qdma_q_cmpt_cidx_reg_info cmpt_cidx_info;
-	struct rte_eth_dev	*dev;
-
-	uint16_t	cmpt_desc_len;
-	uint16_t	nb_cmpt_desc;
-	uint32_t	queue_id; /**< CMPT queue index. */
-
-	uint8_t		status:1;
-	uint8_t		st_mode:1; /**< dma-mode: MM or ST */
-	uint8_t		dis_overflow_check:1;
-	uint8_t		func_id;
-	uint16_t	port_id; /**< Device port identifier. */
-	int8_t		ringszidx;
-	int8_t		threshidx;
-	int8_t		timeridx;
-	int8_t		triggermode;
-	/* completion descriptor memzone */
-	const struct rte_memzone *cmpt_mz;
-};
-
-/**
- * Structure associated with each RX queue.
- */
-struct qdma_rx_queue {
-	/* Move more accessed elementes into first cacheline */
-	struct rte_mempool	*mb_pool; /**< mbuf pool to populate RX ring. */
-	void			*rx_ring; /**< RX ring virtual address */
-	union qdma_ul_st_cmpt_ring	*cmpt_ring;
-	struct wb_status	*wb_status;
-	struct rte_mbuf		**sw_ring; /**< address of RX software ring. */
-	enum rte_pmd_qdma_bypass_desc_len	bypass_desc_sz:7;
-
-	uint16_t		rx_tail;
-	uint16_t		cmpt_desc_len;
-	uint16_t		rx_buff_size;
-	uint16_t		nb_rx_desc; /**< number of RX descriptors. */
-	uint16_t		nb_rx_cmpt_desc;
-	uint32_t		queue_id; /**< RX queue index. */
-	uint64_t		mbuf_initializer; /**< value to init mbufs */
-
-	struct qdma_q_pidx_reg_info	q_pidx_info;
-	struct qdma_q_cmpt_cidx_reg_info cmpt_cidx_info;
-	struct qdma_pkt_stats	stats;
-	struct qdma_rxq_stats   qstats;
-
-	struct rte_eth_dev	*dev;
-
-	uint16_t		port_id; /**< Device port identifier. */
-	uint8_t			status:1;
-	uint8_t			err:1;
-	uint8_t			st_mode:1; /**< dma-mode: MM or ST */
-	uint8_t			dump_immediate_data:1;
-	uint8_t			rx_deferred_start:1;
-	uint8_t			en_prefetch:1;
-	uint8_t			en_bypass:1;
-	uint8_t			en_bypass_prefetch:1;
-	uint8_t			dis_overflow_check:1;
-
-	union qdma_ul_st_cmpt_ring cmpt_data[QDMA_MAX_BURST_SIZE];
-
-	uint8_t			func_id; /**< RX queue index. */
-	uint64_t		ep_addr;
-
-	int8_t			ringszidx;
-	int8_t			cmpt_ringszidx;
-	int8_t			buffszidx;
-	int8_t			threshidx;
-	int8_t			timeridx;
-	int8_t			triggermode;
-
-	const struct rte_memzone *rx_mz;
-	/* C2H stream mode, completion descriptor result */
-	const struct rte_memzone *rx_cmpt_mz;
-
-#ifdef QDMA_LATENCY_OPTIMIZED
-	/**< pend_pkt_moving_avg: average rate of packets received */
-	unsigned int pend_pkt_moving_avg;
-	/**< pend_pkt_avg_thr_hi: higher average threshold */
-	unsigned int pend_pkt_avg_thr_hi;
-	/**< pend_pkt_avg_thr_lo: lower average threshold */
-	unsigned int pend_pkt_avg_thr_lo;
-	/**< sorted_c2h_cntr_idx: sorted c2h counter index */
-	int8_t sorted_c2h_cntr_idx;
-	/**< c2h_cntr_monitor_cnt: c2h counter stagnant monitor count */
-	unsigned char c2h_cntr_monitor_cnt;
-#endif //QDMA_LATENCY_OPTIMIZED
-};
-
-/**
- * Structure associated with each TX queue.
- */
-struct qdma_tx_queue {
-	/* Move more accessed elementes into first cacheline */
-	enum rte_pmd_qdma_bypass_desc_len		bypass_desc_sz:7;
-	uint16_t			tx_fl_tail;
-	void				*tx_ring; /* TX ring virtual address*/
-	struct qdma_q_pidx_reg_info	q_pidx_info;
-
-	struct wb_status		*wb_status;
-	struct rte_mbuf			**sw_ring;/* SW ring virtual address*/
-	uint16_t			tx_desc_pend;
-	uint16_t			nb_tx_desc; /* No of TX descriptors.*/
-	rte_spinlock_t			pidx_update_lock;
-	uint64_t			offloads; /* Tx offloads */
-
-	struct rte_eth_dev		*dev;
-
-	uint8_t				st_mode:1;/* dma-mode: MM or ST */
-	uint8_t				tx_deferred_start:1;
-	uint8_t				en_bypass:1;
-	uint8_t				status:1;
-	uint16_t			port_id; /* Device port identifier. */
-	uint8_t				func_id; /* RX queue index. */
-	int8_t				ringszidx;
-
-	struct qdma_pkt_stats stats;
-	struct qdma_txq_stats qstats;
-
-	uint64_t			ep_addr;
-	uint32_t			queue_id; /* TX queue index. */
-	uint32_t			num_queues; /* TX queue index. */
-	const struct rte_memzone	*tx_mz;
-};
-
-struct qdma_vf_info {
-	uint16_t	func_id;
-};
-
-struct queue_info {
-	uint32_t	queue_mode:1;
-	uint32_t	rx_bypass_mode:2;
-	uint32_t	tx_bypass_mode:1;
-	uint32_t	cmpt_desc_sz:7;
-	uint8_t		immediate_data_state:1;
-	uint8_t		dis_cmpt_ovf_chk:1;
-	uint8_t		en_prefetch:1;
-	enum rte_pmd_qdma_bypass_desc_len rx_bypass_desc_sz:7;
-	enum rte_pmd_qdma_bypass_desc_len tx_bypass_desc_sz:7;
-	uint8_t		timer_count;
-	int8_t		trigger_mode;
-};
-
-struct qdma_pci_dev {
-	void *bar_addr[QDMA_NUM_BARS]; /* memory mapped I/O addr for BARs */
-	int config_bar_idx;
-	int user_bar_idx;
-	int bypass_bar_idx;
-
-	/* Driver Attributes */
-	uint32_t qsets_en;  /* no. of queue pairs enabled */
-	uint32_t queue_base;
-	uint16_t func_id;  /* Function id */
-
-	/* DMA identifier used by the resource manager
-	 * for the DMA instances used by this driver
-	 */
-	uint32_t dma_device_index;
-
-	/* Device capabilities */
-	struct qdma_dev_attributes dev_cap;
-
-	uint8_t cmpt_desc_len;
-	uint8_t c2h_bypass_mode;
-	uint8_t h2c_bypass_mode;
-#ifdef TANDEM_BOOT_SUPPORTED
-	uint8_t en_st_mode;
-#endif
-	uint8_t trigger_mode;
-	uint8_t timer_count;
-
-	uint8_t dev_configured:1;
-	uint8_t is_vf:1;
-	uint8_t is_master:1;
-	uint8_t en_desc_prefetch:1;
-
-	/* Reset state */
-	uint8_t reset_in_progress;
-	enum reset_state_t reset_state;
-
-	/* Hardware version info*/
-	uint32_t vivado_rel:4;
-	uint32_t rtl_version:4;
-	uint32_t device_type:4;
-	uint32_t ip_type:4;
-
-	struct queue_info *q_info;
-	struct qdma_dev_mbox mbox;
-	uint8_t init_q_range;
-
-	uint32_t g_ring_sz[QDMA_NUM_RING_SIZES];
-	uint32_t g_c2h_cnt_th[QDMA_NUM_C2H_COUNTERS];
-	uint32_t g_c2h_buf_sz[QDMA_NUM_C2H_BUFFER_SIZES];
-	uint32_t g_c2h_timer_cnt[QDMA_NUM_C2H_TIMERS];
-#ifdef QDMA_LATENCY_OPTIMIZED
-	uint32_t sorted_idx_c2h_cnt_th[QDMA_NUM_C2H_COUNTERS];
-#endif //QDMA_LATENCY_OPTIMIZED
-	void	**cmpt_queues;
-	/*Pointer to QDMA access layer function pointers*/
-	struct qdma_hw_access *hw_access;
-
-	struct qdma_vf_info *vfinfo;
-	uint8_t vf_online_count;
-
-	int16_t tx_qid_statid_map[RTE_ETHDEV_QUEUE_STAT_CNTRS];
-	int16_t rx_qid_statid_map[RTE_ETHDEV_QUEUE_STAT_CNTRS];
-
-	uint8_t rx_vec_allowed:1;
-	uint8_t tx_vec_allowed:1;
-};
-
-void qdma_dev_ops_init(struct rte_eth_dev *dev);
-uint32_t qdma_read_reg(uint64_t reg_addr);
-void qdma_write_reg(uint64_t reg_addr, uint32_t val);
-void qdma_txq_pidx_update(void *arg);
-int qdma_pf_csr_read(struct rte_eth_dev *dev);
-int qdma_vf_csr_read(struct rte_eth_dev *dev);
-
-uint8_t qmda_get_desc_sz_idx(enum rte_pmd_qdma_bypass_desc_len);
-int qdma_vf_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t qid);
-int qdma_vf_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t qid);
-int qdma_vf_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t qid);
-int qdma_vf_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t qid);
-
-int qdma_init_rx_queue(struct qdma_rx_queue *rxq);
-void qdma_reset_tx_queue(struct qdma_tx_queue *txq);
-void qdma_reset_rx_queue(struct qdma_rx_queue *rxq);
-
-void qdma_clr_rx_queue_ctxts(struct rte_eth_dev *dev, uint32_t qid,
-				uint32_t mode);
-void qdma_inv_rx_queue_ctxts(struct rte_eth_dev *dev, uint32_t qid,
-				uint32_t mode);
-void qdma_clr_tx_queue_ctxts(struct rte_eth_dev *dev, uint32_t qid,
-				uint32_t mode);
-void qdma_inv_tx_queue_ctxts(struct rte_eth_dev *dev, uint32_t qid,
-				uint32_t mode);
-int qdma_identify_bars(struct rte_eth_dev *dev);
-int qdma_get_hw_version(struct rte_eth_dev *dev);
-
-/* implemented in rxtx.c */
-uint16_t qdma_recv_pkts_st(struct qdma_rx_queue *rxq, struct rte_mbuf **rx_pkts,
-				uint16_t nb_pkts);
-uint16_t qdma_recv_pkts_mm(struct qdma_rx_queue *rxq, struct rte_mbuf **rx_pkts,
-				uint16_t nb_pkts);
-uint16_t qdma_xmit_pkts_st(struct qdma_tx_queue *txq, struct rte_mbuf **tx_pkts,
-				uint16_t nb_pkts);
-uint16_t qdma_xmit_pkts_mm(struct qdma_tx_queue *txq, struct rte_mbuf **tx_pkts,
-				uint16_t nb_pkts);
-
-#ifdef TEST_64B_DESC_BYPASS
-uint16_t qdma_xmit_64B_desc_bypass(struct qdma_tx_queue *txq,
-				struct rte_mbuf **tx_pkts, uint16_t nb_pkts);
-#endif
-
-uint32_t qdma_pci_read_reg(struct rte_eth_dev *dev, uint32_t bar, uint32_t reg);
-void qdma_pci_write_reg(struct rte_eth_dev *dev, uint32_t bar,
-				uint32_t reg, uint32_t val);
-
-int index_of_array(uint32_t *arr, uint32_t n, uint32_t element);
-
-int qdma_check_kvargs(struct rte_devargs *devargs,
-			struct qdma_pci_dev *qdma_dev);
-
-static inline const
-struct rte_memzone *qdma_zone_reserve(struct rte_eth_dev *dev,
-					const char *ring_name,
-					uint32_t queue_id,
-					uint32_t ring_size,
-					int socket_id)
-{
-	char z_name[RTE_MEMZONE_NAMESIZE];
-	snprintf(z_name, sizeof(z_name), "%s%s%d_%u",
-			dev->device->driver->name, ring_name,
-			dev->data->port_id, queue_id);
-	return rte_memzone_reserve_aligned(z_name, (uint64_t)ring_size,
-						socket_id, 0, QDMA_ALIGN);
-}
-
-bool is_qdma_supported(struct rte_eth_dev *dev);
-bool is_vf_device_supported(struct rte_eth_dev *dev);
-bool is_pf_device_supported(struct rte_eth_dev *dev);
-
-void qdma_check_errors(void *arg);
-
-struct rte_mbuf *prepare_segmented_packet(struct qdma_rx_queue *rxq,
-		uint16_t pkt_length, uint16_t *tail);
-int reclaim_tx_mbuf(struct qdma_tx_queue *txq,
-		uint16_t cidx, uint16_t free_cnt);
-int qdma_ul_extract_st_cmpt_info(void *ul_cmpt_entry, void *cmpt_info);
-
-/* Transmit API for Streaming mode */
-uint16_t qdma_xmit_pkts_vec(void *tx_queue,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts);
-uint16_t qdma_xmit_pkts_st_vec(struct qdma_tx_queue *txq,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts);
-
-/* Receive API for Streaming mode */
-uint16_t qdma_recv_pkts_vec(void *rx_queue,
-		struct rte_mbuf **rx_pkts, uint16_t nb_pkts);
-uint16_t qdma_recv_pkts_st_vec(struct qdma_rx_queue *rxq,
-		struct rte_mbuf **rx_pkts, uint16_t nb_pkts);
-
-void __rte_cold qdma_set_tx_function(struct rte_eth_dev *dev);
-void __rte_cold qdma_set_rx_function(struct rte_eth_dev *dev);
-
-int qdma_tx_qstats_clear(struct rte_eth_dev *dev, uint16_t queue);
-int qdma_rx_qstats_clear(struct rte_eth_dev *dev, uint16_t queue);
-
-#endif /* ifndef __QDMA_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
deleted file mode 100755
index 11f9cca..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
+++ /dev/null
@@ -1,6879 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "eqdma_cpm5_access.h"
-#include "eqdma_cpm5_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_cpm5_access.tmh"
-#endif
-
-#define UNUSED(x) (void)(x)
-
-/** EQDMA Context array size */
-#define EQDMA_CPM5_FMAP_NUM_WORDS                 2
-#define EQDMA_CPM5_SW_CONTEXT_NUM_WORDS           8
-#define EQDMA_CPM5_HW_CONTEXT_NUM_WORDS           2
-#define EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS       2
-#define EQDMA_CPM5_CR_CONTEXT_NUM_WORDS           1
-#define EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS         6
-#define EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS     4
-
-#define EQDMA_CPM5_VF_USER_BAR_ID                 2
-
-#define EQDMA_CPM5_REG_GROUP_1_START_ADDR	0x000
-#define EQDMA_CPM5_REG_GROUP_2_START_ADDR	0x804
-#define EQDMA_CPM5_REG_GROUP_3_START_ADDR	0xB00
-#define EQDMA_CPM5_REG_GROUP_4_START_ADDR	0x5014
-
-#define EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS 11
-#define EQDMA_CPM5_GLBL_TRQ_ERR_ALL_MASK		0XB3
-#define EQDMA_CPM5_GLBL_DSC_ERR_ALL_MASK		0X1F9037E
-#define EQDMA_CPM5_C2H_ERR_ALL_MASK				0X3F6DF
-#define EQDMA_CPM5_C2H_FATAL_ERR_ALL_MASK		0X1FDF1B
-#define EQDMA_CPM5_H2C_ERR_ALL_MASK				0X3F
-#define EQDMA_CPM5_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_CPM5_DBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_CPM5_MM_C2H_ERR_ALL_MASK			0X70000003
-#define EQDMA_CPM5_MM_H2C0_ERR_ALL_MASK		    0X3041013E
-
-/* H2C Throttle settings */
-#define EQDMA_CPM5_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA_CPM5_THROT_EN_DATA               1
-#define EQDMA_CPM5_THROT_EN_REQ                0
-#define EQDMA_CPM5_H2C_THROT_REQ_THRESH        0xC0
-
-
-/** Auxillary Bitmasks for fields spanning multiple words */
-#define EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK              GENMASK(21, 12)
-#define EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK              GENMASK(11, 0)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK    GENMASK_ULL(63, 53)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK    GENMASK_ULL(52, 21)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK    GENMASK_ULL(20, 0)
-#define EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-#define EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-
-#define EQDMA_CPM5_OFFSET_GLBL2_PF_BARLITE_EXT		0x10C
-
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT		0x104
-#define QDMA_GLBL2_PF3_BAR_MAP_MASK				GENMASK(23, 18)
-#define QDMA_GLBL2_PF2_BAR_MAP_MASK				GENMASK(17, 12)
-#define QDMA_GLBL2_PF1_BAR_MAP_MASK				GENMASK(11, 6)
-#define QDMA_GLBL2_PF0_BAR_MAP_MASK				GENMASK(5, 0)
-
-#define EQDMA_CPM5_GLBL2_DBG_MODE_EN_MASK			BIT(4)
-#define EQDMA_CPM5_GLBL2_DESC_ENG_MODE_MASK			GENMASK(3, 2)
-#define EQDMA_CPM5_GLBL2_FLR_PRESENT_MASK			BIT(1)
-#define EQDMA_CPM5_GLBL2_MAILBOX_EN_MASK			BIT(0)
-
-#define EQDMA_CPM5_DEFAULT_C2H_INTR_TIMER_TICK     50
-#define PREFETCH_QUEUE_COUNT_STEP                   4
-#define EQDMA_CPM5_DEFAULT_CMPT_COAL_MAX_BUF_SZ    0x3F
-
-/* TODO: This is work around and this needs to be auto generated from ODS */
-/** EQDMA_CPM5_IND_REG_SEL_FMAP */
-#define EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK         GENMASK(12, 0)
-#define EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK             GENMASK(11, 0)
-
-static void eqdma_cpm5_hw_st_h2c_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_st_c2h_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_desc_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_trq_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_ram_sbe_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_ram_dbe_err_process(void *dev_hndl);
-static void eqdma_cpm5_mm_h2c0_err_process(void *dev_hndl);
-static void eqdma_cpm5_mm_c2h0_err_process(void *dev_hndl);
-
-static struct eqdma_cpm5_hw_err_info
-	eqdma_cpm5_err_info[EQDMA_CPM5_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		EQDMA_CPM5_DSC_ERR_POISON,
-		"Poison error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_BCNT,
-		"Unexpected Byte count in completion error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_BCNT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_ADDR,
-		"Address mismatch error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_TAG,
-		"Unexpected tag error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_FLR,
-		"FLR error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DMA,
-		"DMA engine error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_PORT_ID,
-		"Port ID Error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PORT_ID_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_ALL,
-		"All Descriptor errors",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_VF_ACCESS,
-		"VF attempted to access Global register space or Function map",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_TCP_CSR_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_QSPC_UNMAPPED,
-		"Access targeted unmapped register via queue space pathway",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_TCP_QSPC_TIMEOUT,
-		"Timeout on request to dma internal queue space register",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_ALL,
-		"All TRQ errors",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_SH_CMPT_DSC,
-		"A Shared CMPT queue has encountered a descriptor error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_AVL_RING_DSC,
-		"Available ring fetch returns descriptor with error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_UNC,
-		"multi-bit ecc error on c2h packet header",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_COR,
-		"single-bit ecc error on c2h packet header",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_WRB_PORT_ID_ERR,
-		"Port ID error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_HDR_ECC_UNC,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-		"A non-EOP descriptor received",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_PAR,
-		"Internal data parity error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		EQDMA_CPM5_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Even RAM single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM 1 single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_ALL,
-		"All SBE Errors.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		EQDMA_CPM5_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-{
-		EQDMA_CPM5_SBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slavle FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_ALL,
-		"All SBE errors",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		EQDMA_CPM5_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_ALL,
-		"All DBE errors",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		EQDMA_CPM5_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slave FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_ALL,
-		"All DBE errors",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		EQDMA_CPM5_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-
-	/* MM C2H Engine 0 errors */
-	{
-		EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-		"MM C2H0 WR SLV Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_RD_SLR_ERR,
-		"MM C2H0 RD SLV Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_WR_FLR_ERR,
-		"MM C2H0 WR FLR Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_UR_ERR,
-		"MM C2H0 Unsupported Request Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_WR_UC_RAM_ERR,
-		"MM C2H0 Write Uncorrectable RAM Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_ERR_ALL,
-		"All MM C2H Errors",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		EQDMA_CPM5_MM_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	/* MM H2C Engine 0 Errors */
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR,
-		"MM H2C0 Read cmpt header pison Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_UR_CA_ERR,
-		"MM H2C0 Read cmpt unsupported request Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_BYTE_ERR,
-		"MM H2C0 Read cmpt hdr byte cnt Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_PARAM_ERR,
-		"MM H2C0 Read cmpt hdr param mismatch Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_ADR_ERR,
-		"MM H2C0 Read cmpt hdr address mismatch Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_FLR_ERR,
-		"MM H2C0 Read flr Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_DAT_POISON_ERR,
-		"MM H2C0 Read data poison Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_RQ_DIS_ERR,
-		"MM H2C0 Read request disable Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_WR_DEC_ERR,
-		"MM H2C0 Write desc Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_WR_SLV_ERR,
-		"MM H2C0 Write slv Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_ERR_ALL,
-		"All MM H2C Errors",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		EQDMA_CPM5_MM_H2C0_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-};
-
-
-static int32_t
-all_eqdma_cpm5_hw_errs[EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	EQDMA_CPM5_DSC_ERR_ALL,
-	EQDMA_CPM5_TRQ_ERR_ALL,
-	EQDMA_CPM5_ST_C2H_ERR_ALL,
-	EQDMA_CPM5_ST_FATAL_ERR_ALL,
-	EQDMA_CPM5_ST_H2C_ERR_ALL,
-	EQDMA_CPM5_SBE_1_ERR_ALL,
-	EQDMA_CPM5_SBE_ERR_ALL,
-	EQDMA_CPM5_DBE_1_ERR_ALL,
-	EQDMA_CPM5_DBE_ERR_ALL,
-	EQDMA_CPM5_MM_C2H_ERR_ALL,
-	EQDMA_CPM5_MM_H2C0_ERR_ALL
-};
-
-static struct qctx_entry eqdma_cpm5_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Interrupt with VF", 0},
-	{"Pack descriptor output interface", 0},
-	{"Irq Bypass", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Addr High (L)[37:6]", 0},
-	{"Base Addr High(H)[63:38]", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Insterrupt with VF", 0},
-	{"c2h Direction", 0},
-	{"Base Addr Low[5:2]", 0},
-	{"Shared Completion Queue", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Variable Descriptor", 0},
-	{"Number of descriptors prefetched", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-	{"Function Id", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static int eqdma_cpm5_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_cpm5_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_cpm5_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int eqdma_cpm5_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t eqdma_cpm5_get_config_num_regs(void)
-{
-	return eqdma_cpm5_config_num_regs_get();
-}
-
-struct xreg_info *eqdma_cpm5_get_config_regs(void)
-{
-	return eqdma_cpm5_config_regs_get();
-}
-
-uint32_t eqdma_cpm5_reg_dump_buf_len(void)
-{
-	uint32_t length = (eqdma_cpm5_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int eqdma_cpm5_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int len = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-			sizeof(eqdma_cpm5_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(eqdma_cpm5_sw_ctxt_entries) /
-				sizeof(eqdma_cpm5_sw_ctxt_entries[0])) + 1)
-				* REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_hw_ctxt_entries) /
-			sizeof(eqdma_cpm5_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_credit_ctxt_entries) /
-			sizeof(eqdma_cpm5_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_fmap_ctxt_entries) /
-			sizeof(eqdma_cpm5_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-				sizeof(eqdma_cpm5_cmpt_ctxt_entries[0])) +
-						1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries)
-				/
-				sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries[0]
-					)) + 1) * REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return 0;
-}
-
-static uint32_t eqdma_cpm5_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(eqdma_cpm5_ind_intr_ctxt_entries) /
-			sizeof(eqdma_cpm5_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * eqdma_cpm5_set_perf_opt() - Helper function to set the
- *				cpm5 perf optimizations.
- *
- */
-static void eqdma_cpm5_set_perf_opt(void *dev_hndl)
-{
-	uint32_t reg_val = 0;
-	uint32_t pftch_cache_depth = 0;
-	uint32_t pftch_qcnt = 0;
-	uint32_t pftch_evnt_qcnt_th = 0;
-	uint32_t crdt_coal_fifo_th = 0;
-	uint32_t crdt_coal_crdt_th = 0;
-
-	/* C2H interrupt timer tick */
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_INT_TIMER_TICK_ADDR,
-		EQDMA_CPM5_DEFAULT_C2H_INTR_TIMER_TICK);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR    0xBE0
- * #define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK     GENMASK(23, 16)
- * #define C2H_PFCH_CACHE_DEPTH_MASK               GENMASK(7, 0)
- */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR);
-	pftch_cache_depth = FIELD_GET(C2H_PFCH_CACHE_DEPTH_MASK, reg_val);
-
-/*
- * #define EQDMA_CPM5_GLBL_DSC_CFG_ADDR      0x250
- * #define GLBL_DSC_CFG_RSVD_1_MASK          GENMASK(31, 10)
- * #define GLBL_DSC_CFG_UNC_OVR_COR_MASK     BIT(9)
- * #define GLBL_DSC_CFG_CTXT_FER_DIS_MASK    BIT(8)
- * #define GLBL_DSC_CFG_RSVD_2_MASK          GENMASK(7, 6)
- * #define GLBL_DSC_CFG_MAXFETCH_MASK        GENMASK(5, 3)
- * #define GLBL_DSC_CFG_WB_ACC_INT_MASK      GENMASK(2, 0)
- */
-#define GLBL_DSC_CFG_RSVD_1_DFLT        0
-#define GLBL_DSC_CFG_UNC_OVR_COR_DFLT   0
-#define GLBL_DSC_CFG_CTXT_FER_DIS_DFLT  0
-#define GLBL_DSC_CFG_RSVD_2_DFLT        0
-/* =IF(Internal mode, 2,5) */
-#define GLBL_DSC_CFG_MAXFETCH           2
-#define GLBL_DSC_CFG_WB_ACC_INT         5
-	reg_val =
-		FIELD_SET(GLBL_DSC_CFG_RSVD_1_MASK, GLBL_DSC_CFG_RSVD_1_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_UNC_OVR_COR_MASK,
-					GLBL_DSC_CFG_UNC_OVR_COR_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_CTXT_FER_DIS_MASK,
-					GLBL_DSC_CFG_CTXT_FER_DIS_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_RSVD_2_MASK, GLBL_DSC_CFG_RSVD_2_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-					GLBL_DSC_CFG_MAXFETCH) |
-		FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					GLBL_DSC_CFG_WB_ACC_INT);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-		__func__, EQDMA_CPM5_GLBL_DSC_CFG_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR               0x4C
- * #define CFG_BLK_MISC_CTL_RSVD_1_MASK                   GENMASK(31, 24)
- * #define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK               BIT(23)
- * #define CFG_BLK_MISC_CTL_RSVD_2_MASK                   BIT(22)
- * #define CFG_BLK_MISC_CTL_AXI_WBK_MASK                  BIT(21)
- * #define CFG_BLK_MISC_CTL_AXI_DSC_MASK                  BIT(20)
- * #define CFG_BLK_MISC_CTL_NUM_TAG_MASK                  GENMASK(19, 8)
- * #define CFG_BLK_MISC_CTL_RSVD_3_MASK                   GENMASK(7, 5)
- * #define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK   GENMASK(4, 0)
- */
-#define CFG_BLK_MISC_CTL_RSVD_1_DFLT             0
-#define CFG_BLK_MISC_CTL_RSVD_2_DFLT             0
-#define CFG_BLK_MISC_CTL_AXI_WBK_DFLT            0
-#define CFG_BLK_MISC_CTL_AXI_DSC_DFLT            0
-/* IF(10bit tag enabled, 512,256) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT            1
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT            512
-#else
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT            0
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT            256
-#endif
-#define CFG_BLK_MISC_CTL_RSVD_3_DFLT             0
-#define EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL   31
-	reg_val =
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_1_MASK,
-					CFG_BLK_MISC_CTL_RSVD_1_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_10B_TAG_EN_MASK,
-					CFG_BLK_MISC_CTL_10B_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_2_MASK,
-					CFG_BLK_MISC_CTL_RSVD_2_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_WBK_MASK,
-					CFG_BLK_MISC_CTL_AXI_WBK_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_DSC_MASK,
-					CFG_BLK_MISC_CTL_AXI_DSC_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_NUM_TAG_MASK,
-					CFG_BLK_MISC_CTL_NUM_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_3_MASK,
-					CFG_BLK_MISC_CTL_RSVD_3_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK,
-					EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_ADDR        0xB08
- * #define C2H_PFCH_CFG_EVTFL_TH_MASK          GENMASK(31, 16)
- * #define C2H_PFCH_CFG_FL_TH_MASK             GENMASK(15, 0)
- */
-#define EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH         256
-#define C2H_PFCH_CFG_FL_TH_DFLT                256
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_EVTFL_TH_MASK,
-					EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH) |
-		FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-					C2H_PFCH_CFG_FL_TH_DFLT);
-
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR       0xA80
- * #define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK      GENMASK(31, 16)
- * #define C2H_PFCH_CFG_1_QCNT_MASK             GENMASK(15, 0)
- */
-	pftch_qcnt = pftch_cache_depth - PREFETCH_QUEUE_COUNT_STEP;
-	pftch_evnt_qcnt_th = pftch_qcnt - PREFETCH_QUEUE_COUNT_STEP;
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK, pftch_evnt_qcnt_th) |
-		FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK, pftch_qcnt);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR          0xA84
- * #define C2H_PFCH_CFG_2_FENCE_MASK               BIT(31)
- * #define C2H_PFCH_CFG_2_RSVD_MASK                GENMASK(30, 29)
- * #define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK    BIT(28)
- * #define C2H_PFCH_CFG_2_LL_SZ_TH_MASK            GENMASK(27, 12)
- * #define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK        GENMASK(11, 6)
- * #define C2H_PFCH_CFG_2_NUM_MASK                 GENMASK(5, 0)
- */
-#define C2H_PFCH_CFG_2_FENCE_EN                1
-#define C2H_PFCH_CFG_2_RSVD_DFLT               0
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT   0
-#define C2H_PFCH_CFG_2_LL_SZ_TH_DFLT           1024
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM            15
-#define C2H_PFCH_CFG_2_NUM_PFCH_DFLT           16
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK,
-				C2H_PFCH_CFG_2_FENCE_EN) |
-		FIELD_SET(C2H_PFCH_CFG_2_RSVD_MASK,
-				C2H_PFCH_CFG_2_RSVD_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK,
-				C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_LL_SZ_TH_MASK,
-				C2H_PFCH_CFG_2_LL_SZ_TH_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK,
-				C2H_PFCH_CFG_2_VAR_DESC_NUM) |
-		FIELD_SET(C2H_PFCH_CFG_2_NUM_MASK,
-				C2H_PFCH_CFG_2_NUM_PFCH_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR, reg_val);
-
-/* Registers Not Applicable for CPM5
- * #define EQDMA_PFCH_CFG_3_ADDR           0x147C
- * #define EQDMA_PFCH_CFG_4_ADDR           0x1484
- */
-
-/*
- * #define EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR     0x1400
- * #define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK         GENMASK(31, 18)
- * #define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK    GENMASK(17, 10)
- * #define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK       GENMASK(9, 0)4
- */
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT            0
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT       16
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH               16
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_TIMER_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR     0x1404
- * #define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK         GENMASK(31, 24)
- * #define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK        GENMASK(23, 16)
- * #define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK      GENMASK(15, 11)
- * #define C2H_CRDT_COAL_CFG_2_NT_TH_MASK          GENMASK(10, 0)
- */
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT            0
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT         0
-#define C2H_CRDT_COAL_CFG_2_CRDT_CNT_TH_DFLT       156
-	crdt_coal_fifo_th = pftch_cache_depth - 8;
-	crdt_coal_crdt_th = C2H_CRDT_COAL_CFG_2_CRDT_CNT_TH_DFLT;
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK,
-				crdt_coal_fifo_th) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RESERVED1_MASK,
-				C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_NT_TH_MASK,
-				crdt_coal_crdt_th);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR      0xE24
- * #define H2C_REQ_THROT_PCIE_EN_REQ_MASK          BIT(31)
- * #define H2C_REQ_THROT_PCIE_MASK                 GENMASK(30, 19)
- * #define H2C_REQ_THROT_PCIE_EN_DATA_MASK         BIT(18)
- * #define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK     GENMASK(17, 0)
- */
-#define H2C_REQ_THROT_PCIE_EN_REQ    1
-/* IF(10bit tag enabled, 512-64, 192) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define H2C_REQ_THROT_PCIE_REQ_TH    448
-#else
-#define H2C_REQ_THROT_PCIE_REQ_TH    192
-#endif
-#define H2C_REQ_THROT_PCIE_EN_DATA   1
-#define H2C_REQ_THROT_PCIE_DATA_TH   57344
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-					H2C_REQ_THROT_PCIE_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-					H2C_REQ_THROT_PCIE_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-					H2C_REQ_THROT_PCIE_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-					H2C_REQ_THROT_PCIE_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR    0xE2C
- * #define H2C_REQ_THROT_AXIMM_EN_REQ_MASK        BIT(31)
- * #define H2C_REQ_THROT_AXIMM_MASK               GENMASK(30, 19)
- * #define H2C_REQ_THROT_AXIMM_EN_DATA_MASK       BIT(18)
- * #define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK   GENMASK(17, 0)
- */
-#define H2C_REQ_THROT_AXIMM_EN_REQ      0
-/* IF(10bit tag en=1, 512-64, 192) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define H2C_REQ_THROT_AXIMM_REQ_TH      448
-#else
-#define H2C_REQ_THROT_AXIMM_REQ_TH      192
-#endif
-#define H2C_REQ_THROT_AXIMM_EN_DATA     0
-#define H2C_REQ_THROT_AXIMM_DATA_TH     65536
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_REQ_MASK,
-				H2C_REQ_THROT_AXIMM_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_MASK,
-				H2C_REQ_THROT_AXIMM_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_DATA_MASK,
-				H2C_REQ_THROT_AXIMM_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK,
-				H2C_REQ_THROT_AXIMM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-
-#define EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR    0x12EC
-#define H2C_MM_DATA_THROTTLE_RSVD_1_MASK        GENMASK(31, 17)
-#define H2C_MM_DATA_THROTTLE_DAT_EN_MASK        BIT(16)
-#define H2C_MM_DATA_THROTTLE_DAT_MASK           GENMASK(15, 0)
-#define H2C_MM_DATA_THROTTLE_RSVD_1_DFLT        0
-#define H2C_MM_DATA_TH_EN                       1
-#define H2C_MM_DATA_TH                          57344
-	reg_val =
-		FIELD_SET(H2C_MM_DATA_THROTTLE_RSVD_1_MASK,
-					H2C_MM_DATA_THROTTLE_RSVD_1_DFLT) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_EN_MASK, H2C_MM_DATA_TH_EN) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_MASK, H2C_MM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-		__func__, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-}
-
-/*
- * eqdma_cpm5_indirect_reg_invalidate() - helper function to invalidate
- * indirect context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = EQDMA_CPM5_IND_CTXT_DATA_ADDR;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = EQDMA_CPM5_IND_CTXT_DATA_ADDR;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-		 index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_fill_sw_ctxt() - Helper function to fill sw context into
- * structure
- *
- */
-static void eqdma_cpm5_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->pidx;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_arm;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->fnc_id;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->qen;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->frcd_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbi_chk;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbi_intvl_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->at;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->fetch_max;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->rngsz_idx;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->desc_sz;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->bypass;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->mm_chn;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbk_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->port_id;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_no_last;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->err;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->err_wb_sent;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_req;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->mrkr_dis;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->is_mm;
-	eqdma_cpm5_sw_ctxt_entries[i++].value =
-		sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	eqdma_cpm5_sw_ctxt_entries[i++].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->vec;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->intr_aggr;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->dis_intr_on_vf;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->pack_byp_out;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_byp;
-
-}
-
-/*
- * eqdma_cpm5_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void eqdma_cpm5_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt
-		*cmpt_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_stat_desc;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_int;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->trig_mode;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->fnc_id;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->counter_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->in_st;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->color;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ringsz_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->desc_sz;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->pidx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->cidx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->valid;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->err;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->user_trig_pend;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_running;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->full_upd;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ovf_chk_dis;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->at;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->vec;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->int_aggr;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dis_intr_on_vf;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dir_c2h;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->sh_cmpt;
-}
-
-/*
- * eqdma_cpm5_fill_hw_ctxt() - Helper function to fill HW context into
- * structure
- *
- */
-static void eqdma_cpm5_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->cidx;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->crd_use;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->dsc_pend;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->idl_stp_b;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->evt_pnd;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * eqdma_cpm5_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_credit_ctxt(struct qdma_descq_credit_ctxt
-		*cr_ctxt)
-{
-	eqdma_cpm5_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * eqdma_cpm5_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt
-		*pfetch_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bypass;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->bufsz_idx;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->port_id;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->var_desc;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->num_pftch;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->err;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch_en;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->sw_crdt;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->valid;
-}
-
-/*
- * eqdma_cpm5_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	eqdma_cpm5_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	eqdma_cpm5_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * eqdma_cpm5_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_intr_ctxt(struct qdma_indirect_intr_ctxt
-		*intr_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->valid;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->vec;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->int_st;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->color;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->page_size;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->pidx;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->at;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->func_id;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_set_default_global_csr() - function to set the global CSR
- * register to default values. The value can be modified later by using the
- *  set/get csr functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				0, QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR,
-				reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				0, QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* C2h Completion Coalesce Configuration */
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-				DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-				DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK,
-				EQDMA_CPM5_DEFAULT_CMPT_COAL_MAX_BUF_SZ);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_WRB_COAL_CFG_ADDR,
-				reg_val);
-	}
-
-	eqdma_cpm5_set_perf_opt(dev_hndl);
-	return QDMA_SUCCESS;
-}
-
-/*
- * dump_eqdma_cpm5_context() - Helper function to dump queue context into
- * string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_cpm5_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		eqdma_cpm5_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		eqdma_cpm5_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_cpm5_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_cpm5_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		eqdma_cpm5_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_cpm5_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_cpm5_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			eqdma_cpm5_fill_pfetch_ctxt(
-					&queue_context->pfetch_ctxt);
-			eqdma_cpm5_fill_cmpt_ctxt(
-					&queue_context->cmpt_ctxt);
-		}
-	}
-
-	eqdma_cpm5_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__, rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(eqdma_cpm5_sw_ctxt_entries) /
-				sizeof((eqdma_cpm5_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[i].name,
-				eqdma_cpm5_sw_ctxt_entries[i].value,
-				eqdma_cpm5_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(eqdma_cpm5_hw_ctxt_entries) /
-				sizeof((eqdma_cpm5_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_hw_ctxt_entries[i].name,
-				eqdma_cpm5_hw_ctxt_entries[i].value,
-				eqdma_cpm5_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(eqdma_cpm5_credit_ctxt_entries) /
-			sizeof((eqdma_cpm5_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_credit_ctxt_entries[i].name,
-				eqdma_cpm5_credit_ctxt_entries[i].value,
-				eqdma_cpm5_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-				sizeof((eqdma_cpm5_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[i].name,
-				eqdma_cpm5_cmpt_ctxt_entries[i].value,
-				eqdma_cpm5_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries) /
-			sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].name,
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].value,
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(eqdma_cpm5_fmap_ctxt_entries) /
-		sizeof(eqdma_cpm5_fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_cpm5_fmap_ctxt_entries[i].name,
-			eqdma_cpm5_fmap_ctxt_entries[i].value,
-			eqdma_cpm5_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * dump_eqdma_cpm5_intr_context() - Helper function to dump interrupt
- * context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_cpm5_intr_context(struct qdma_indirect_intr_ctxt
-		*intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	eqdma_cpm5_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(eqdma_cpm5_ind_intr_ctxt_entries) /
-			sizeof((eqdma_cpm5_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_cpm5_ind_intr_ctxt_entries[i].name,
-			eqdma_cpm5_ind_intr_ctxt_entries[i].value,
-			eqdma_cpm5_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_version() - Function to get the eqdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_CPM5_OFFSET_VF_VERSION :
-			EQDMA_CPM5_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[EQDMA_CPM5_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	virtio_desc_base_l = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_m = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_h = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-		ctxt->virtio_dsc_base);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_FNC_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-				  ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->intr_aggr) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				ctxt->virtio_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				ctxt->pack_byp_out) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK, ctxt->irq_byp) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				virtio_desc_base_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				virtio_desc_base_m);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				virtio_desc_base_h);
-
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[EQDMA_CPM5_SW_CONTEXT_NUM_WORDS] = {0};
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-				sw_ctxt[0]));
-	ctxt->fnc_id = FIELD_GET(SW_IND_CTXT_DATA_W0_FNC_MASK, sw_ctxt[0]);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(SW_IND_CTXT_DATA_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		(uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK,
-				sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-				sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-				sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-				sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-				sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-				sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(SW_IND_CTXT_DATA_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr = (uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK,
-			sw_ctxt[4]));
-	ctxt->dis_intr_on_vf =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				sw_ctxt[4]));
-	ctxt->virtio_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				sw_ctxt[4]));
-	ctxt->pack_byp_out =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				sw_ctxt[4]));
-	ctxt->irq_byp =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK,
-				sw_ctxt[4]));
-	ctxt->host_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK,
-				sw_ctxt[4]));
-	pasid_l = FIELD_GET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, sw_ctxt[4]);
-
-	pasid_h = FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, sw_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK,
-			sw_ctxt[5]);
-	virtio_desc_base_l =
-		FIELD_GET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				sw_ctxt[5]);
-	virtio_desc_base_m =
-		FIELD_GET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				sw_ctxt[6]);
-
-	virtio_desc_base_h =
-		FIELD_GET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				sw_ctxt[6]);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	ctxt->virtio_dsc_base =
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-					(uint64_t)virtio_desc_base_l) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-					(uint64_t)virtio_desc_base_m) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-					(uint64_t)virtio_desc_base_h);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_sw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_sw_context_write(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_sw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_write() - create prefetch context and program
- * it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK,
-				ctxt->num_pftch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				ctxt->var_desc) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-			pfetch_ctxt[0]);
-	ctxt->num_pftch = (uint16_t) FIELD_GET(
-			PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->var_desc = (uint8_t)
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_pfetch_context_read(dev_hndl, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_pfetch_context_write(dev_hndl, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_pfetch_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_write() - create completion context and program
- * it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr4_high_l, baddr4_high_h,
-			baddr4_low, pidx_l, pidx_h, pasid_l, pasid_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr4_high_l =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-			ctxt->bs_addr);
-	baddr4_high_h =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-			ctxt->bs_addr);
-	baddr4_low =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK,
-				ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK,
-				ctxt->pasid);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK, ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK, baddr4_high_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK, baddr4_high_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, ctxt->full_upd) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->int_aggr) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VIO_MASK, ctxt->vio) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK, ctxt->dir_c2h) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-				ctxt->pasid_en) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK,
-				baddr4_low) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK, ctxt->vio_eop) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK, ctxt->sh_cmpt);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr4_high_l, baddr4_high_h, baddr4_low,
-			pidx_l, pidx_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id = FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, cmpt_ctxt[0]);
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr4_high_l = FIELD_GET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK,
-			cmpt_ctxt[1]);
-
-	baddr4_high_h = FIELD_GET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK,
-			cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(CMPL_CTXT_DATA_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(CMPL_CTXT_DATA_W4_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, cmpt_ctxt[4]));
-	ctxt->dis_intr_on_vf = (uint8_t)
-		FIELD_GET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				cmpt_ctxt[4]);
-	ctxt->vio = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_VIO_MASK,
-			cmpt_ctxt[4]);
-	ctxt->dir_c2h = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK,
-			cmpt_ctxt[4]);
-	ctxt->host_id = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_HOST_ID_MASK,
-			cmpt_ctxt[4]);
-	pasid_l = FIELD_GET(CMPL_CTXT_DATA_W4_PASID_L_MASK, cmpt_ctxt[4]);
-
-	pasid_h = (uint32_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_H_MASK,
-			cmpt_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-			cmpt_ctxt[5]);
-	baddr4_low = (uint8_t)FIELD_GET(
-			CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK, cmpt_ctxt[5]);
-	ctxt->vio_eop = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK,
-			cmpt_ctxt[5]);
-	ctxt->sh_cmpt = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK,
-			cmpt_ctxt[5]);
-
-	ctxt->bs_addr =
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				(uint64_t)baddr4_high_l) |
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				(uint64_t)baddr4_high_h) |
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-				(uint64_t)baddr4_low);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK,
-				(uint64_t)pasid_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[EQDMA_CPM5_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-					hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-					hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_EVT_PND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_hw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_hw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[EQDMA_CPM5_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_credit_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_credit_context_clear(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_credit_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[EQDMA_CPM5_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK,
-		config->qmax);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[EQDMA_CPM5_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, func_id,
-			EQDMA_CPM5_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK,
-					fmap[0]);
-	config->qmax = FIELD_GET(EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK,
-					fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_fmap_context_read(dev_hndl,
-			func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_fmap_context_write(dev_hndl,
-			func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_fmap_context_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_write() - create indirect interrupt
- * context and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt
-		*ctxt)
-{
-	uint32_t intr_ctxt[EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK,
-				ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK,
-				ctxt->pasid);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(INTR_CTXT_DATA_W2_AT_MASK, ctxt->at) |
-		FIELD_SET(INTR_CTXT_DATA_W2_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PASID_L_MASK, pasid_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_H_MASK, pasid_h) |
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(INTR_CTXT_DATA_W3_FUNC_MASK, ctxt->func_id);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_read() - read indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, ring_index,
-			EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_AT_MASK, intr_ctxt[2]));
-	ctxt->host_id = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_HOST_ID_MASK,
-			intr_ctxt[2]));
-	pasid_l = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_PASID_L_MASK,
-			intr_ctxt[2]));
-
-	pasid_h = FIELD_GET(INTR_CTXT_DATA_W3_PASID_H_MASK, intr_ctxt[3]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(INTR_CTXT_DATA_W3_PASID_EN_MASK,
-			intr_ctxt[3]);
-
-	ctxt->func_id = (uint16_t)FIELD_GET(INTR_CTXT_DATA_W3_FUNC_MASK,
-			intr_ctxt[3]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_clear() - clear indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_invalidate() - invalidate indirect
- * interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel,
-			ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_ctx_conf() - configure indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_indirect_intr_context_read(dev_hndl,
-				ring_index, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_indirect_intr_context_write(dev_hndl,
-				ring_index, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_config_regs() - Function to get qdma config register
- * dump in a buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < eqdma_cpm5_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = eqdma_cpm5_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s", reg_info[i].name);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @context:	Queue Context
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_cpm5_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_intr_context() - Function to get qdma interrupt context
- * dump in a buffer
- *
- * @dev_hndl:   device handle
- * @intr_ctx:	Interrupt Context
- * @ring_index: Ring index
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = eqdma_cpm5_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_cpm5_intr_context(intr_ctx, ring_index, buf,
-			buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_dump_queue_context() - Function to read and dump the
- *  queue context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = eqdma_cpm5_sw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_cpm5_hw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_cpm5_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = eqdma_cpm5_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = eqdma_cpm5_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = eqdma_cpm5_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_eqdma_cpm5_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_user_bar() - Function to get the AXI Master
- * Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite bar number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	/* TODO: In future, user bar is identified using RR */
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	UNUSED(func_id);
-	UNUSED(is_vf);
-
-	*user_bar = 2;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ram_sbe_err_process() - Function to dump SBE error
- * debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_SBE_STS_A_ADDR, 1, NULL, 0);
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR, 1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ram_dbe_err_process() - Function to dump DBE error
- * debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_DBE_STS_A_ADDR, 1, NULL, 0);
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR, 1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_desc_err_process() - Function to dump Descriptor
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG0_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG1_ADDR,
-		EQDMA_CPM5_GLBL_DSC_DBG_DAT0_ADDR,
-		EQDMA_CPM5_GLBL_DSC_DBG_DAT1_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG2_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_trq_err_process() - Function to dump Target Access
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_err_dump_ctxt_info() - Dump the imp ctxt fields on HW error
- *
- * @dev_hndl: device handle
- * @first_err_qid: First Error QID
- * @en_st: ST Mode or MM Mode enabled
- * @c2h: C2H or H2C Mode
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_err_dump_ctxt_info(void *dev_hndl,
-		uint32_t first_err_qid_reg,
-		uint8_t en_st, uint8_t c2h)
-{
-	uint16_t first_err_qid	= 0;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-
-	first_err_qid = qdma_reg_read(dev_hndl, first_err_qid_reg);
-
-	eqdma_cpm5_sw_context_read(dev_hndl, c2h, first_err_qid, &sw_ctxt);
-	eqdma_cpm5_hw_context_read(dev_hndl, c2h, first_err_qid, &hw_ctxt);
-	eqdma_cpm5_fill_sw_ctxt(&sw_ctxt);
-	eqdma_cpm5_fill_hw_ctxt(&hw_ctxt);
-
-	if (sw_ctxt.pidx != hw_ctxt.cidx) {
-		qdma_log_info("\n%40s\n", "SW Context:");
-		/** SW Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[0].name,
-				eqdma_cpm5_sw_ctxt_entries[0].value,
-				eqdma_cpm5_sw_ctxt_entries[0].value);
-		qdma_log_info("\n%40s\n", "HW Context:");
-		/*** HW Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_hw_ctxt_entries[0].name,
-				eqdma_cpm5_hw_ctxt_entries[0].value,
-				eqdma_cpm5_hw_ctxt_entries[0].value);
-	}
-
-	if (sw_ctxt.err != 0) {
-		/*** SW Context: ERR ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[17].name,
-				eqdma_cpm5_sw_ctxt_entries[17].value,
-				eqdma_cpm5_sw_ctxt_entries[17].value);
-	}
-
-	/*** SW Context: ERR WB SENT***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[18].name,
-				eqdma_cpm5_sw_ctxt_entries[18].value,
-				eqdma_cpm5_sw_ctxt_entries[18].value);
-
-	/*** SW Context: IRQ REQ***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[19].name,
-				eqdma_cpm5_sw_ctxt_entries[19].value,
-				eqdma_cpm5_sw_ctxt_entries[19].value);
-
-	if (en_st && c2h) {
-		eqdma_cpm5_cmpt_context_read(dev_hndl,
-				first_err_qid, &cmpt_ctxt);
-		eqdma_cpm5_fill_cmpt_ctxt(&cmpt_ctxt);
-
-		qdma_log_info("\n%40s\n", "CMPT Context:");
-
-		/*** CMPT Context: int_st ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[6].name,
-				eqdma_cpm5_cmpt_ctxt_entries[6].value,
-				eqdma_cpm5_cmpt_ctxt_entries[6].value);
-
-		/** CMPT Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[12].name,
-				eqdma_cpm5_cmpt_ctxt_entries[12].value,
-				eqdma_cpm5_cmpt_ctxt_entries[12].value);
-		/*** CMPT Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[13].name,
-				eqdma_cpm5_cmpt_ctxt_entries[13].value,
-				eqdma_cpm5_cmpt_ctxt_entries[13].value);
-
-		if (cmpt_ctxt.err != 0) {
-			/*** CMPT Context: ERR ***/
-			qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[15].name,
-				eqdma_cpm5_cmpt_ctxt_entries[15].value,
-				eqdma_cpm5_cmpt_ctxt_entries[15].value);
-		}
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_st_h2c_err_process() - Function to dump MM H2C Error
- * information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG0_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG1_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG2_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG3_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR, 1, 1);
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_st_c2h_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR,
-		EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR, 1, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_c2h0_err_process() - Function to dump MM C2H
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_mm_c2h0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_c2h_err_reg_list[] = {
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		EQDMA_CPM5_C2H_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ADDR,
-		EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR,
-		EQDMA_CPM5_C2H_MM_DBG_ADDR
-	};
-	int mm_c2h_err_num_regs = sizeof(mm_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_c2h_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, mm_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_h2c0_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_mm_h2c0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_h2c_err_reg_list[] = {
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		EQDMA_CPM5_H2C_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ADDR,
-		EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR,
-		EQDMA_CPM5_H2C_MM_DBG_ADDR
-	};
-	int mm_h2c_err_num_regs = sizeof(mm_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_h2c_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, mm_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_get_error_name() - Function to get the error in string
- * format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *eqdma_cpm5_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= EQDMA_CPM5_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__,
-				(enum eqdma_cpm5_error_idx)err_idx);
-		return NULL;
-	}
-
-	return eqdma_cpm5_err_info[(enum
-			eqdma_cpm5_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[
-		EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		EQDMA_CPM5_DSC_ERR_POISON,
-		EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-		EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-		EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-		EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-		EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-		EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-		EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-		EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL_ERR_STAT_ADDR);
-
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, EQDMA_CPM5_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) &&
-			(bit == EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH ||
-			bit == EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH ||
-			bit == EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				eqdma_cpm5_err_info[bit].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-				eqdma_cpm5_err_info[bit].stat_reg_addr,
-				err_stat);
-
-			eqdma_cpm5_err_info[
-				bit].eqdma_cpm5_hw_err_process(dev_hndl);
-			for (idx = bit; idx < all_eqdma_cpm5_hw_errs[i];
-					idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				eqdma_cpm5_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-					__func__,
-					eqdma_cpm5_hw_get_error_name(idx));
-			}
-			qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[bit].stat_reg_addr,
-				err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_ERR_STAT_ADDR,
-			glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > EQDMA_CPM5_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__,
-				(enum eqdma_cpm5_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == EQDMA_CPM5_ERRS_ALL) {
-		for (i = 0; i < EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS;
-				i++) {
-
-			idx = all_eqdma_cpm5_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == EQDMA_CPM5_ST_C2H_ERR_ALL ||
-					idx == EQDMA_CPM5_ST_FATAL_ERR_ALL
-					|| idx == EQDMA_CPM5_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = eqdma_cpm5_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[idx].mask_reg_addr,
-				reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_CPM5_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				eqdma_cpm5_err_info[idx].global_err_mask,
-				1);
-			qdma_reg_write(dev_hndl,
-					EQDMA_CPM5_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH
-					&& err_idx <=
-					EQDMA_CPM5_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				eqdma_cpm5_err_info[err_idx].mask_reg_addr);
-		reg_val |=
-			FIELD_SET(
-				eqdma_cpm5_err_info[err_idx].leaf_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[err_idx].mask_reg_addr,
-				reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET
-			(eqdma_cpm5_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_ERR_MASK_ADDR,
-				reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_device_attributes() - Function to get the qdma device
- * attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	dev_info->num_pfs = FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val);
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs =
-			FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK, reg_val);
-
-	/* There are 12 bits assigned in EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR
-	 * to represent the num_qs. For CPM5, max queues can be 4096 which needs
-	 * 13 bits(0x1000). Adding a hack in driver to represent 4096 queues
-	 * when HW sets the num_qs to 0xFFF
-	 */
-	if (dev_info->num_qs == 0xFFF)
-		dev_info->num_qs++;
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en = FIELD_GET(EQDMA_CPM5_GLBL2_MAILBOX_EN_MASK,
-		reg_val);
-	dev_info->flr_present = FIELD_GET(EQDMA_CPM5_GLBL2_FLR_PRESENT_MASK,
-		reg_val);
-	dev_info->mm_cmpt_en  = 0;
-	dev_info->debug_mode = FIELD_GET(EQDMA_CPM5_GLBL2_DBG_MODE_EN_MASK,
-		reg_val);
-	dev_info->desc_eng_mode =
-		FIELD_GET(EQDMA_CPM5_GLBL2_DESC_ENG_MODE_MASK,
-		reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK, reg_val)) ? 1 : 0;
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this.
-	 * Hard coding it to 2 for CPM5
-	 */
-	dev_info->mm_channel_max = 2;
-
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_init_ctxt_memory() - function to initialize the context
- * memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-#ifdef TANDEM_BOOT_SUPPORTED
-		for (; sel <=  QDMA_CTXT_SEL_CR_H2C; sel++) {
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#else
-		for (; sel <=  QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** TODO: Check for Tandem boot **/
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#endif
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		eqdma_cpm5_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * eqdma_cpm5_init_st_ctxt() - Initialize the ST context
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_init_st_ctxt(void *dev_hndl)
-{
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_CMPT;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-
-}
-#endif
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-
-	reg_info = eqdma_cpm5_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[reg_count].is_debug_reg == 1)
-			continue;
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-	struct xreg_info *eqdma_cpm5_config_regs =
-		eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &eqdma_cpm5_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_ring_sizes() - function to set the global ring
- * size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR,
-			index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_ring_sizes() - function to get the global rng_sz
- * array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR,
-			index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_timer_count(void *dev_hndl, uint8_t
-		index, uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_timer_count(void *dev_hndl,
-		uint8_t index, uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_counter_threshold() - function to set the
- * counter threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_counter_threshold(void *dev_hndl,
-		uint8_t index, uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_counter_threshold() - function to get the counter
- * threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_counter_threshold(void *dev_hndl, uint8_t
-		index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				index, count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_buffer_sizes() - function to set the buffer
- * sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_buffer_sizes(void *dev_hndl, uint8_t
-		index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_buffer_sizes(void *dev_hndl, uint8_t
-		index, uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_global_csr_conf(void *dev_hndl, uint8_t index,
-				uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_cpm5_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_cpm5_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_cpm5_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_cpm5_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_cpm5_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_cpm5_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_cpm5_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_cpm5_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_write() -  function to set
- * the writeback interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR,
-				reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_read() -  function to get the
- * writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_global_writeback_interval_read(dev_hndl,
-				wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_global_writeback_interval_write(dev_hndl,
-				*wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_mm_channel_conf(void *dev_hndl, uint8_t channel,
-		uint8_t is_c2h, uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  EQDMA_CPM5_C2H_MM_CTL_ADDR :
-			EQDMA_CPM5_H2C_MM_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en)
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_cpm5_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = eqdma_cpm5_config_num_regs_get();
-	struct xreg_info *config_regs  = eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-			/* If Debug Mode not enabled and the current register
-			 * is debug register, skip reading it.
-			 */
-			if (dev_cap.debug_mode == 0 &&
-					config_regs[j].is_debug_reg == 1)
-				continue;
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
deleted file mode 100755
index 8c14e04..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __EQDMA_CPM5_SOFT_ACCESS_H_
-#define __EQDMA_CPM5_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum eqdma_cpm5_error_idx - qdma errors
- */
-enum eqdma_cpm5_error_idx {
-	/* Descriptor errors */
-	EQDMA_CPM5_DSC_ERR_POISON,
-	EQDMA_CPM5_DSC_ERR_UR_CA,
-	EQDMA_CPM5_DSC_ERR_BCNT,
-	EQDMA_CPM5_DSC_ERR_PARAM,
-	EQDMA_CPM5_DSC_ERR_ADDR,
-	EQDMA_CPM5_DSC_ERR_TAG,
-	EQDMA_CPM5_DSC_ERR_FLR,
-	EQDMA_CPM5_DSC_ERR_TIMEOUT,
-	EQDMA_CPM5_DSC_ERR_DAT_POISON,
-	EQDMA_CPM5_DSC_ERR_FLR_CANCEL,
-	EQDMA_CPM5_DSC_ERR_DMA,
-	EQDMA_CPM5_DSC_ERR_DSC,
-	EQDMA_CPM5_DSC_ERR_RQ_CANCEL,
-	EQDMA_CPM5_DSC_ERR_DBE,
-	EQDMA_CPM5_DSC_ERR_SBE,
-	EQDMA_CPM5_DSC_ERR_PORT_ID,
-	EQDMA_CPM5_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-	EQDMA_CPM5_TRQ_ERR_VF_ACCESS,
-	EQDMA_CPM5_TRQ_ERR_TCP_CSR_TIMEOUT,
-	EQDMA_CPM5_TRQ_ERR_QSPC_UNMAPPED,
-	EQDMA_CPM5_TRQ_ERR_QID_RANGE,
-	EQDMA_CPM5_TRQ_ERR_TCP_QSPC_TIMEOUT,
-	EQDMA_CPM5_TRQ_ERR_ALL,
-
-	/* ST C2H Errors */
-	EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_LEN_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_SH_CMPT_DSC,
-	EQDMA_CPM5_ST_C2H_ERR_QID_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_DESC_RSP_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_MSI_INT_FAIL,
-	EQDMA_CPM5_ST_C2H_ERR_ERR_DESC_CNT,
-	EQDMA_CPM5_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_QFULL_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_CIDX_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_PRTY_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_AVL_RING_DSC,
-	EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_UNC,
-	EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_COR,
-	EQDMA_CPM5_ST_C2H_ERR_WRB_PORT_ID_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_LEN_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_QID_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_WPL_DATA_PAR,
-	EQDMA_CPM5_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_HDR_ECC_UNC,
-	EQDMA_CPM5_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-	EQDMA_CPM5_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-	EQDMA_CPM5_ST_H2C_ERR_NO_DMA_DSC,
-	EQDMA_CPM5_ST_H2C_ERR_SBE,
-	EQDMA_CPM5_ST_H2C_ERR_DBE,
-	EQDMA_CPM5_ST_H2C_ERR_PAR,
-	EQDMA_CPM5_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_CPM5_SBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_CPM5_SBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_CPM5_SBE_1_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C1_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C2_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C3_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H0_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H1_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H2_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H3_DAT,
-	EQDMA_CPM5_SBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_FUNC_MAP,
-	EQDMA_CPM5_SBE_ERR_DSC_HW_CTXT,
-	EQDMA_CPM5_SBE_ERR_DSC_CRD_RCV,
-	EQDMA_CPM5_SBE_ERR_DSC_SW_CTXT,
-	EQDMA_CPM5_SBE_ERR_DSC_CPLI,
-	EQDMA_CPM5_SBE_ERR_DSC_CPLD,
-	EQDMA_CPM5_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_QID_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_CPM5_SBE_ERR_INT_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_WRB_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_PFCH_LL_RAM,
-	EQDMA_CPM5_SBE_ERR_PEND_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_CPM5_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_CPM5_DBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_CPM5_DBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_CPM5_DBE_1_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C1_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C2_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C3_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H0_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H1_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H2_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H3_DAT,
-	EQDMA_CPM5_DBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_FUNC_MAP,
-	EQDMA_CPM5_DBE_ERR_DSC_HW_CTXT,
-	EQDMA_CPM5_DBE_ERR_DSC_CRD_RCV,
-	EQDMA_CPM5_DBE_ERR_DSC_SW_CTXT,
-	EQDMA_CPM5_DBE_ERR_DSC_CPLI,
-	EQDMA_CPM5_DBE_ERR_DSC_CPLD,
-	EQDMA_CPM5_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_QID_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_CPM5_DBE_ERR_INT_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_WRB_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_PFCH_LL_RAM,
-	EQDMA_CPM5_DBE_ERR_PEND_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_CPM5_DBE_ERR_ALL,
-
-	/* MM C2H Errors */
-	EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-	EQDMA_CPM5_MM_C2H_RD_SLR_ERR,
-	EQDMA_CPM5_MM_C2H_WR_FLR_ERR,
-	EQDMA_CPM5_MM_C2H_UR_ERR,
-	EQDMA_CPM5_MM_C2H_WR_UC_RAM_ERR,
-	EQDMA_CPM5_MM_C2H_ERR_ALL,
-
-	/* MM H2C Engine0 Errors */
-	EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_UR_CA_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_BYTE_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_PARAM_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_ADR_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_FLR_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_DAT_POISON_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_RQ_DIS_ERR,
-	EQDMA_CPM5_MM_H2C0_WR_DEC_ERR,
-	EQDMA_CPM5_MM_H2C0_WR_SLV_ERR,
-	EQDMA_CPM5_MM_H2C0_ERR_ALL,
-
-	EQDMA_CPM5_ERRS_ALL
-};
-
-struct eqdma_cpm5_hw_err_info {
-	enum eqdma_cpm5_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*eqdma_cpm5_hw_err_process)(void *dev_hndl);
-};
-
-#ifdef EQDMA_CPM5_VF_GT_256Q_SUPPORTED
-#define EQDMA_CPM5_OFFSET_VF_VERSION          0x21014
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_VF        0x21000
-#else
-#define EQDMA_CPM5_OFFSET_VF_VERSION           0x5014
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_VF         0x5000
-#endif
-
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_PF         0x42400
-#define EQDMA_CPM5_OFFSET_VF_USER_BAR          0x5018
-
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK         GENMASK_ULL(63, 38)
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK         GENMASK_ULL(37, 6)
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK            GENMASK_ULL(5, 2)
-
-int eqdma_cpm5_init_ctxt_memory(void *dev_hndl);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-int eqdma_cpm5_init_st_ctxt(void *dev_hndl);
-#endif
-
-int eqdma_cpm5_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int eqdma_cpm5_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_sw_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_prefetch_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-			struct qdma_indirect_intr_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-uint32_t eqdma_cpm5_reg_dump_buf_len(void);
-
-int eqdma_cpm5_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int eqdma_cpm5_hw_error_process(void *dev_hndl);
-const char *eqdma_cpm5_hw_get_error_name(uint32_t err_idx);
-int eqdma_cpm5_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int eqdma_cpm5_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int eqdma_cpm5_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int eqdma_cpm5_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int eqdma_cpm5_set_default_global_csr(void *dev_hndl);
-
-int eqdma_cpm5_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_mm_channel_conf(void *dev_hndl, uint8_t channel,
-			uint8_t is_c2h, uint8_t enable);
-
-int eqdma_cpm5_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t eqdma_cpm5_get_config_num_regs(void);
-
-struct xreg_info *eqdma_cpm5_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __EQDMA_CPM5_SOFT_ACCESS_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
deleted file mode 100755
index 1099ede..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
+++ /dev/null
@@ -1,1300 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __EQDMA_CPM5_REG_H
-#define __EQDMA_CPM5_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t eqdma_cpm5_config_num_regs_get(void);
-struct xreg_info *eqdma_cpm5_config_regs_get(void);
-#define EQDMA_CPM5_CFG_BLK_IDENTIFIER_ADDR                 0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define EQDMA_CPM5_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR          0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK                GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR     0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK           GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK         GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_SYSTEM_ID_ADDR                  0x10
-#define CFG_BLK_SYSTEM_ID_RSVD_1_MASK                      GENMASK(31, 17)
-#define CFG_BLK_SYSTEM_ID_INST_TYPE_MASK                   BIT(16)
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define EQDMA_CPM5_CFG_BLK_MSIX_ENABLE_ADDR                0x014
-#define CFG_BLK_MSIX_ENABLE_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_PCIE_DATA_WIDTH_ADDR                0x18
-#define CFG_PCIE_DATA_WIDTH_RSVD_1_MASK                    GENMASK(31, 3)
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_PCIE_CTL_ADDR                       0x1C
-#define CFG_PCIE_CTL_RSVD_1_MASK                           GENMASK(31, 18)
-#define CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK                   GENMASK(17, 16)
-#define CFG_PCIE_CTL_RSVD_2_MASK                           GENMASK(15, 2)
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define EQDMA_CPM5_CFG_BLK_MSI_ENABLE_ADDR                 0x20
-#define CFG_BLK_MSI_ENABLE_MASK                           GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_AXI_USER_MAX_PLD_SIZE_ADDR          0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR     0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR                   0x4C
-#define CFG_BLK_MISC_CTL_RSVD_1_MASK                       GENMASK(31, 24)
-#define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK                   BIT(23)
-#define CFG_BLK_MISC_CTL_RSVD_2_MASK                       BIT(22)
-#define CFG_BLK_MISC_CTL_AXI_WBK_MASK                      BIT(21)
-#define CFG_BLK_MISC_CTL_AXI_DSC_MASK                      BIT(20)
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RSVD_3_MASK                       GENMASK(7, 5)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define EQDMA_CPM5_CFG_PL_CRED_CTL_ADDR                    0x68
-#define CFG_PL_CRED_CTL_RSVD_1_MASK                        GENMASK(31, 5)
-#define CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK                 BIT(4)
-#define CFG_PL_CRED_CTL_RSVD_2_MASK                        GENMASK(3, 1)
-#define CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK                BIT(0)
-#define EQDMA_CPM5_CFG_BLK_SCRATCH_ADDR                    0x80
-#define CFG_BLK_SCRATCH_MASK                              GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_GIC_ADDR                            0xA0
-#define CFG_GIC_RSVD_1_MASK                                GENMASK(31, 1)
-#define CFG_GIC_GIC_IRQ_MASK                               BIT(0)
-#define EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR                    0xE0
-#define RAM_SBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR                    0xE4
-#define RAM_SBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR                    0xE8
-#define RAM_DBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR                    0xEC
-#define RAM_DBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_CPM5_RAM_SBE_MSK_A_ADDR                      0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_SBE_STS_A_ADDR                      0xF4
-#define RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_SBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_SBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_SBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_SBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_SBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_SBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_CPM5_RAM_DBE_MSK_A_ADDR                      0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_DBE_STS_A_ADDR                      0xFC
-#define RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_DBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_DBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_DBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_DBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_DBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_DBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_CPM5_GLBL2_IDENTIFIER_ADDR                   0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_INST_ADDR                 0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_MDMA_ADDR                 0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_STRM_ADDR                 0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR                  0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_PASID_CAP_ADDR            0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL2_SYSTEM_ID_ADDR                    0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL2_MISC_CAP_ADDR                     0x134
-#define GLBL2_MISC_CAP_MASK                               GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL2_DBG_PCIE_RQ0_ADDR                 0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 9)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(8, 2)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(1, 0)
-#define EQDMA_CPM5_GLBL2_DBG_PCIE_RQ1_ADDR                 0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 21)
-#define GLBL2_PCIE_RQ1_TAG_FL_MASK                     GENMASK(20, 19)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(18)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(17)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(16)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(15)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(14, 12)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK                BIT(8)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(7)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(6)
-#define GLBL2_PCIE_RQ1_RREQ0_RDY_MASK                  BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RDY_MASK                  BIT(2)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(1)
-#define GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK              BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_WR0_ADDR                0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_WR1_ADDR                0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_RD0_ADDR                0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(16)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(15, 13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_RD1_ADDR                0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_CPM5_GLBL2_DBG_FAB0_ADDR                     0x1D0
-#define GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK            BIT(31)
-#define GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK            BIT(30)
-#define GLBL2_FAB0_H2C_SEG_IN_VLD_MASK                 BIT(29)
-#define GLBL2_FAB0_H2C_SEG_IN_RDY_MASK                 BIT(28)
-#define GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK                GENMASK(27, 24)
-#define GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK                BIT(23)
-#define GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK              GENMASK(22, 16)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK             BIT(15)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK            BIT(14)
-#define GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK              GENMASK(13, 10)
-#define GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK              BIT(9)
-#define GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK              BIT(8)
-#define GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK              BIT(7)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK         BIT(6)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK         BIT(5)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK        BIT(4)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK       BIT(3)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK              BIT(2)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK             BIT(1)
-#define GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK            BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_FAB1_ADDR                     0x1D4
-#define GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK              GENMASK(31, 25)
-#define GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK           GENMASK(24, 18)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK             BIT(17)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK            BIT(16)
-#define GLBL2_FAB1_RSVD_1_MASK                         GENMASK(15, 13)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK          BIT(12)
-#define GLBL2_FAB1_RSVD_2_MASK                         GENMASK(11, 9)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK         BIT(8)
-#define GLBL2_FAB1_RSVD_3_MASK                         GENMASK(7, 5)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK          BIT(4)
-#define GLBL2_FAB1_RSVD_4_MASK                         GENMASK(3, 1)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK         BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_SEL_ADDR                0x1F4
-#define GLBL2_MATCH_SEL_RSV_MASK                       GENMASK(31, 18)
-#define GLBL2_MATCH_SEL_CSR_SEL_MASK                   GENMASK(17, 13)
-#define GLBL2_MATCH_SEL_CSR_EN_MASK                    BIT(12)
-#define GLBL2_MATCH_SEL_ROTATE1_MASK                   GENMASK(11, 10)
-#define GLBL2_MATCH_SEL_ROTATE0_MASK                   GENMASK(9, 8)
-#define GLBL2_MATCH_SEL_SEL_MASK                       GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_MSK_ADDR                0x1F8
-#define GLBL2_MATCH_MSK_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_PAT_ADDR                0x1FC
-#define GLBL2_MATCH_PAT_PATTERN_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR                      0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_2_ADDR                      0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_3_ADDR                      0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_4_ADDR                      0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_5_ADDR                      0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_6_ADDR                      0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_7_ADDR                      0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_8_ADDR                      0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_9_ADDR                      0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_A_ADDR                      0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_B_ADDR                      0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_C_ADDR                      0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_D_ADDR                      0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_E_ADDR                      0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_F_ADDR                      0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_10_ADDR                     0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_ERR_STAT_ADDR                      0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 18)
-#define GLBL_ERR_STAT_ERR_FAB_MASK                         BIT(17)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(16)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(15)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                GENMASK(14, 9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define EQDMA_CPM5_GLBL_ERR_MASK_ADDR                      0x24C
-#define GLBL_ERR_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_DSC_CFG_ADDR                       0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR                   0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 26)
-#define GLBL_DSC_ERR_STS_PORT_ID_MASK                      BIT(25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(8)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(6)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(5)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(4)
-#define GLBL_DSC_ERR_STS_BCNT_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(1)
-#define EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR                   0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG0_ADDR                  0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(30)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(29, 13)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG1_ADDR                  0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_ERR_LOG1_CIDX_MASK                        GENMASK(27, 12)
-#define GLBL_DSC_ERR_LOG1_RSVD_2_MASK                      GENMASK(11, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR                   0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 8)
-#define GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK             BIT(7)
-#define GLBL_TRQ_ERR_STS_RSVD_2_MASK                       BIT(6)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(5)
-#define GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK                BIT(4)
-#define GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK              BIT(3)
-#define GLBL_TRQ_ERR_STS_RSVD_3_MASK                       BIT(2)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(1)
-#define GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR                   0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_LOG_ADDR                   0x26C
-#define GLBL_TRQ_ERR_LOG_SRC_MASK                          BIT(31)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(30, 27)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(26, 17)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(16, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_DAT0_ADDR                  0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_DAT1_ADDR                  0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_CTL_ADDR                   0x278
-#define GLBL_DSC_CTL_RSVD_1_MASK                       GENMASK(31, 3)
-#define GLBL_DSC_CTL_SELECT_MASK                       GENMASK(2, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG2_ADDR                  0x27c
-#define GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK                    GENMASK(31, 16)
-#define GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_GLBL_INTERRUPT_CFG_ADDR            0x2c4
-#define GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK     BIT(1)
-#define GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK          BIT(0)
-#define EQDMA_CPM5_GLBL_VCH_HOST_PROFILE_ADDR              0x2c8
-#define GLBL_VCH_HOST_PROFILE_RSVD_1_MASK                  GENMASK(31, 28)
-#define GLBL_VCH_HOST_PROFILE_2C_MM_MASK                   GENMASK(27, 24)
-#define GLBL_VCH_HOST_PROFILE_2C_ST_MASK                   GENMASK(23, 20)
-#define GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK                 GENMASK(19, 16)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK             GENMASK(15, 12)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK            GENMASK(11, 8)
-#define GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK                GENMASK(7, 4)
-#define GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK             GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL_BRIDGE_HOST_PROFILE_ADDR           0x308
-#define GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK               GENMASK(31, 4)
-#define GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK                GENMASK(3, 0)
-#define EQDMA_CPM5_AXIMM_IRQ_DEST_ADDR_ADDR                0x30c
-#define AXIMM_IRQ_DEST_ADDR_ADDR_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_FAB_ERR_LOG_ADDR                        0x314
-#define FAB_ERR_LOG_RSVD_1_MASK                            GENMASK(31, 7)
-#define FAB_ERR_LOG_SRC_MASK                               GENMASK(6, 0)
-#define EQDMA_CPM5_IND_CTXT_DATA_ADDR                      0x804
-#define IND_CTXT_DATA_DATA_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_IND_CTXT_MASK_ADDR                      0x824
-#define IND_CTXT_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_IND_CTXT_CMD_ADDR                       0x844
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 20)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(19, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SEL_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define EQDMA_CPM5_C2H_TIMER_CNT_ADDR                      0xA00
-#define C2H_TIMER_CNT_RSVD_1_MASK                          GENMASK(31, 16)
-#define C2H_TIMER_CNT_MASK                                GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CNT_TH_ADDR                         0xA40
-#define C2H_CNT_TH_RSVD_1_MASK                             GENMASK(31, 16)
-#define C2H_CNT_TH_THESHOLD_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR       0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1_MASK           GENMASK(31, 18)
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR       0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1_MASK           GENMASK(31, 18)
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR     0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1_MASK         GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_ADDR              0xA94
-#define C2H_STAT_AXIS_PKG_CMP_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ACCEPTED_ADDR         0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_CMP_ADDR              0xA9C
-#define C2H_STAT_DESC_RSP_CMP_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WRQ_OUT_ADDR                   0xAA0
-#define C2H_STAT_WRQ_OUT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WPL_REN_ACCEPTED_ADDR          0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_TOTAL_WRQ_LEN_ADDR             0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_RSVD_1_MASK                 GENMASK(31, 18)
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_TOTAL_WPL_LEN_ADDR             0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_RSVD_1_MASK                 GENMASK(31, 18)
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_BUF_SZ_ADDR                         0xAB0
-#define C2H_BUF_SZ_IZE_MASK                                GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_ERR_STAT_ADDR                       0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 21)
-#define C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK                  BIT(20)
-#define C2H_ERR_STAT_HDR_PAR_ERR_MASK                      BIT(19)
-#define C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK                  BIT(18)
-#define C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK                  BIT(17)
-#define C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK                 BIT(16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK                  BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define EQDMA_CPM5_C2H_ERR_MASK_ADDR                       0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR                 0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 21)
-#define C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK            BIT(20)
-#define C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK     BIT(19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK         BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_RESERVED2_MASK                  BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RESERVED1_MASK                  BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR                 0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_ENABLE_ADDR               0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL_ERR_INT_ADDR                       0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_ERR_INT_HOST_ID_MASK                          GENMASK(29, 26)
-#define GLBL_ERR_INT_DIS_INTR_ON_VF_MASK                   BIT(25)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(24)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(23)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(22, 12)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_ADDR                       0xB08
-#define C2H_PFCH_CFG_EVTFL_TH_MASK                         GENMASK(31, 16)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR                     0xA80
-#define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK                    GENMASK(31, 16)
-#define C2H_PFCH_CFG_1_QCNT_MASK                           GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR                     0xA84
-#define C2H_PFCH_CFG_2_FENCE_MASK                          BIT(31)
-#define C2H_PFCH_CFG_2_RSVD_MASK                           GENMASK(30, 29)
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK               BIT(28)
-#define C2H_PFCH_CFG_2_LL_SZ_TH_MASK                       GENMASK(27, 12)
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK                   GENMASK(11, 6)
-#define C2H_PFCH_CFG_2_NUM_MASK                            GENMASK(5, 0)
-#define EQDMA_CPM5_C2H_INT_TIMER_TICK_ADDR                 0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR    0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1_MASK        GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR     0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1_MASK         GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_REQ_ADDR                  0xB18
-#define C2H_STAT_DESC_REQ_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_0_ADDR             0xB1C
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK      BIT(31)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK      BIT(30)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK      GENMASK(29, 27)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK      GENMASK(26, 24)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK        BIT(23)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK        BIT(22)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK       BIT(21)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK       GENMASK(20, 9)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK        BIT(8)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_1_ADDR             0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_2_ADDR             0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_3_ADDR             0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_ERR_CTXT_ADDR              0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR                  0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_RSVD_MASK                        GENMASK(15, 13)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_IN_ADDR                    0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_OUT_ADDR                   0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_DRP_ADDR                   0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_STAT_DESC_OUT_ADDR             0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_DSC_CRDT_SENT_ADDR             0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_FCH_DSC_RCVD_ADDR              0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_BYP_DSC_RCVD_ADDR              0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define EQDMA_CPM5_C2H_WRB_COAL_CFG_ADDR                   0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define EQDMA_CPM5_C2H_INTR_H2C_REQ_ADDR                   0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_MM_REQ_ADDR                0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_ERR_INT_REQ_ADDR               0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_REQ_ADDR                0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR   0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR  0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR 0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR 0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_MSIX_ACK_ADDR           0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR          0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_NO_MSIX_ADDR            0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR         0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WR_CMP_ADDR                    0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_4_ADDR             0xB88
-#define C2H_STAT_DMA_ENG_4_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_5_ADDR             0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK         BIT(29)
-#define C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK        GENMASK(28, 24)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK       GENMASK(23, 22)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK  GENMASK(21, 6)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK BIT(2)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK BIT(1)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK BIT(0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_QID_ADDR                   0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(15)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(14, 12)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_ADDR                       0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_INT_DBG_ADDR                        0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define EQDMA_CPM5_C2H_STAT_IMM_ACCEPTED_ADDR              0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_MARKER_ACCEPTED_ADDR           0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR      0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_PLD_FIFO_CRDT_CNT_ADDR              0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_DYN_REQ_ADDR                   0xBAC
-#define C2H_INTR_DYN_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_DYN_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_DYN_MISC_ADDR                  0xBB0
-#define C2H_INTR_DYN_MISC_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_INTR_DYN_MISC_CNT_MASK                         GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_LEN_MISMATCH_ADDR              0xBB4
-#define C2H_DROP_LEN_MISMATCH_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_LEN_MISMATCH_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_DESC_RSP_LEN_ADDR              0xBB8
-#define C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_DESC_RSP_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_QID_FIFO_LEN_ADDR              0xBBC
-#define C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_QID_FIFO_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_PLD_CNT_ADDR                   0xBC0
-#define C2H_DROP_PLD_CNT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_0_ADDR                  0xBC4
-#define C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_0_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_1_ADDR                  0xBC8
-#define C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_1_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_2_ADDR                  0xBCC
-#define C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_2_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_3_ADDR                  0xBD0
-#define C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_3_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_4_ADDR                  0xBD4
-#define C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_4_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_5_ADDR                  0xBD8
-#define C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_5_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_6_ADDR                  0xBDC
-#define C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_6_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR               0xBE0
-#define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK                GENMASK(23, 16)
-#define C2H_PFCH_CACHE_DEPTH_MASK                         GENMASK(7, 0)
-#define EQDMA_CPM5_C2H_WRB_COAL_BUF_DEPTH_ADDR             0xBE4
-#define C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK                 GENMASK(31, 8)
-#define C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK                 GENMASK(7, 0)
-#define EQDMA_CPM5_C2H_PFCH_CRDT_ADDR                      0xBE8
-#define C2H_PFCH_CRDT_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_PFCH_CRDT_RSVD_2_MASK                          BIT(0)
-#define EQDMA_CPM5_C2H_STAT_HAS_CMPT_ACCEPTED_ADDR         0xBEC
-#define C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_HAS_PLD_ACCEPTED_ADDR          0xBF0
-#define C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_PLD_PKT_ID_ADDR                     0xBF4
-#define C2H_PLD_PKT_ID_CMPT_WAIT_MASK                      GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_DATA_MASK                           GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PLD_PKT_ID_1_ADDR                   0xBF8
-#define C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK                    GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_1_DATA_MASK                         GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_DROP_PLD_CNT_1_ADDR                 0xBFC
-#define C2H_DROP_PLD_CNT_1_RSVD_1_MASK                     GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_1_CNT_MASK                        GENMASK(17, 0)
-#define EQDMA_CPM5_H2C_ERR_STAT_ADDR                       0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 6)
-#define H2C_ERR_STAT_PAR_ERR_MASK                          BIT(5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define EQDMA_CPM5_H2C_ERR_MASK_ADDR                       0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR                  0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 13)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_H2C_DBG_REG0_ADDR                       0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG1_ADDR                       0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG2_ADDR                       0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG3_ADDR                       0xE18
-#define H2C_REG3_RSVD_1_MASK                           BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define EQDMA_CPM5_H2C_DBG_REG4_ADDR                       0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_FATAL_ERR_EN_ADDR                   0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR                 0xE24
-#define H2C_REQ_THROT_PCIE_EN_REQ_MASK                     BIT(31)
-#define H2C_REQ_THROT_PCIE_MASK                           GENMASK(30, 19)
-#define H2C_REQ_THROT_PCIE_EN_DATA_MASK                    BIT(18)
-#define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_H2C_ALN_DBG_REG0_ADDR                   0xE28
-#define H2C_ALN_REG0_NUM_PKT_SENT_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR                0xE2C
-#define H2C_REQ_THROT_AXIMM_EN_REQ_MASK                    BIT(31)
-#define H2C_REQ_THROT_AXIMM_MASK                          GENMASK(30, 19)
-#define H2C_REQ_THROT_AXIMM_EN_DATA_MASK                   BIT(18)
-#define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK               GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_MM_CTL_ADDR                         0x1004
-#define C2H_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define C2H_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define C2H_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define C2H_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_CPM5_C2H_MM_STATUS_ADDR                      0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_CPM5_C2H_MM_CMPL_DESC_CNT_ADDR               0x1048
-#define C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR        0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK         BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK         GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define EQDMA_CPM5_C2H_MM_ERR_CODE_ADDR                    0x1058
-#define C2H_MM_ERR_CODE_RESERVED1_MASK                     GENMASK(31, 28)
-#define C2H_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define C2H_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define C2H_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR                    0x105C
-#define C2H_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define C2H_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CTL_ADDR                0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR         0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR         0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_DATA_CNT0_ADDR          0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_DATA_CNT1_ADDR          0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_MM_DBG_ADDR                         0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_CPM5_H2C_MM_CTL_ADDR                         0x1204
-#define H2C_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define H2C_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define H2C_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define H2C_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_CPM5_H2C_MM_STATUS_ADDR                      0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_CPM5_H2C_MM_CMPL_DESC_CNT_ADDR               0x1248
-#define H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR        0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK         GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK         GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK         GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK         GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK         GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK         BIT(0)
-#define EQDMA_CPM5_H2C_MM_ERR_CODE_ADDR                    0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 28)
-#define H2C_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define H2C_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define H2C_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR                    0x125C
-#define H2C_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define H2C_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CTL_ADDR                0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR         0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR         0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_DATA_CNT0_ADDR          0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_DATA_CNT1_ADDR          0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_CPM5_H2C_MM_DBG_ADDR                         0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR                0x1400
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK               GENMASK(17, 10)
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK                  GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR                0x1404
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK                    GENMASK(31, 24)
-#define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK                   GENMASK(23, 16)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK                 GENMASK(15, 11)
-#define C2H_CRDT_COAL_CFG_2_NT_TH_MASK                     GENMASK(10, 0)
-#define EQDMA_CPM5_C2H_PFCH_BYP_QID_ADDR                   0x1408
-#define C2H_PFCH_BYP_QID_RSVD_1_MASK                       GENMASK(31, 12)
-#define C2H_PFCH_BYP_QID_MASK                             GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_PFCH_BYP_TAG_ADDR                   0x140C
-#define C2H_PFCH_BYP_TAG_RSVD_1_MASK                       GENMASK(31, 20)
-#define C2H_PFCH_BYP_TAG_BYP_QID_MASK                      GENMASK(19, 8)
-#define C2H_PFCH_BYP_TAG_RSVD_2_MASK                       BIT(7)
-#define C2H_PFCH_BYP_TAG_MASK                             GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_WATER_MARK_ADDR                     0x1500
-#define C2H_WATER_MARK_HIGH_WM_MASK                        GENMASK(31, 16)
-#define C2H_WATER_MARK_LOW_WM_MASK                         GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_NOTIFY_EMPTY_ADDR                   0x1800
-#define C2H_NOTIFY_EMPTY_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_NOTIFY_EMPTY_NOE_MASK                          GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_1_ADDR     0x1804
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_1_ADDR     0x1808
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_ADDR   0x180C
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_1_ADDR            0x1810
-#define C2H_STAT_AXIS_PKG_CMP_1_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_2_ADDR     0x1814
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_ST_PLD_FIFO_DEPTH_ADDR              0x1818
-#define C2H_ST_PLD_FIFO_DEPTH_MASK                        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK        GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK        GENMASK(31, 11)
-#define SW_IND_CTXT_DATA_W5_PASID_EN_MASK                 BIT(10)
-#define SW_IND_CTXT_DATA_W5_PASID_H_MASK                  GENMASK(9, 0)
-#define SW_IND_CTXT_DATA_W4_PASID_L_MASK                  GENMASK(31, 20)
-#define SW_IND_CTXT_DATA_W4_HOST_ID_MASK                  GENMASK(19, 16)
-#define SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK                  BIT(15)
-#define SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK             BIT(14)
-#define SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK                BIT(13)
-#define SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK           BIT(12)
-#define SW_IND_CTXT_DATA_W4_INT_AGGR_MASK                 BIT(11)
-#define SW_IND_CTXT_DATA_W4_VEC_MASK                      GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(11, 9)
-#define SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK                GENMASK(8, 5)
-#define SW_IND_CTXT_DATA_W1_AT_MASK                       BIT(4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 29)
-#define SW_IND_CTXT_DATA_W0_FNC_MASK                      GENMASK(28, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   BIT(15)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                GENMASK(14, 11)
-#define HW_IND_CTXT_DATA_W1_EVT_PND_MASK                  BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_2_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 22)
-#define PREFETCH_CTXT_DATA_W0_PFCH_NEED_MASK              GENMASK(21, 16)
-#define PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK               GENMASK(15, 10)
-#define PREFETCH_CTXT_DATA_W0_VIRTIO_MASK                 BIT(9)
-#define PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK               BIT(8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK             GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W6_RSVD_1_H_MASK                   GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W5_RSVD_1_L_MASK                   GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W5_PORT_ID_MASK                    GENMASK(22, 20)
-#define CMPL_CTXT_DATA_W5_SH_CMPT_MASK                    BIT(19)
-#define CMPL_CTXT_DATA_W5_VIO_EOP_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK                 GENMASK(17, 14)
-#define CMPL_CTXT_DATA_W5_PASID_EN_MASK                   BIT(13)
-#define CMPL_CTXT_DATA_W5_PASID_H_MASK                    GENMASK(12, 0)
-#define CMPL_CTXT_DATA_W4_PASID_L_MASK                    GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W4_HOST_ID_MASK                    GENMASK(22, 19)
-#define CMPL_CTXT_DATA_W4_DIR_C2H_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W4_VIO_MASK                        BIT(17)
-#define CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK             BIT(16)
-#define CMPL_CTXT_DATA_W4_INT_AGGR_MASK                   BIT(15)
-#define CMPL_CTXT_DATA_W4_VEC_MASK                        GENMASK(14, 4)
-#define CMPL_CTXT_DATA_W4_AT_MASK                         BIT(3)
-#define CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK                BIT(2)
-#define CMPL_CTXT_DATA_W4_FULL_UPD_MASK                   BIT(1)
-#define CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK              BIT(0)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(31)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(30, 29)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(28)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(27, 12)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(11, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(27, 26)
-#define CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK              GENMASK(25, 0)
-#define CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK              GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_QSIZE_IX_MASK                   GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(27)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W0_TIMER_IX_MASK                   GENMASK(24, 21)
-#define CMPL_CTXT_DATA_W0_CNTER_IX_MASK                   GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(16, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W3_FUNC_MASK                       GENMASK(29, 18)
-#define INTR_CTXT_DATA_W3_RSVD_MASK                       GENMASK(17, 14)
-#define INTR_CTXT_DATA_W3_PASID_EN_MASK                   BIT(13)
-#define INTR_CTXT_DATA_W3_PASID_H_MASK                    GENMASK(12, 0)
-#define INTR_CTXT_DATA_W2_PASID_L_MASK                    GENMASK(31, 23)
-#define INTR_CTXT_DATA_W2_HOST_ID_MASK                    GENMASK(22, 19)
-#define INTR_CTXT_DATA_W2_AT_MASK                         BIT(18)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(17, 6)
-#define INTR_CTXT_DATA_W2_PAGE_SIZE_MASK                  GENMASK(5, 3)
-#define INTR_CTXT_DATA_W2_BADDR_4K_H_MASK                 GENMASK(2, 0)
-#define INTR_CTXT_DATA_W1_BADDR_4K_M_MASK                 GENMASK(31, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 15)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(14)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(13)
-#define INTR_CTXT_DATA_W0_RSVD1_MASK                      BIT(12)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(11, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-#define HOSTID_TABLE_W6_SMID_MASK                          GENMASK(9, 0)
-#define HOSTID_TABLE_W5_H2C_MM_AWPROT_MASK                 GENMASK(27, 26)
-#define HOSTID_TABLE_W5_H2C_MM_AWCACHE_MASK                GENMASK(25, 22)
-#define HOSTID_TABLE_W5_H2C_MM_AWSTEERING_MASK             GENMASK(20, 18)
-#define HOSTID_TABLE_W5_DSC_AWPROT_MASK                    GENMASK(17, 16)
-#define HOSTID_TABLE_W5_DSC_AWCACHE_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W5_DSC_AWSTEERING_MASK                GENMASK(11, 8)
-#define HOSTID_TABLE_W5_INT_MSG_AWPROT_MASK                GENMASK(7, 6)
-#define HOSTID_TABLE_W5_INT_MSG_AWCACHE_MASK               GENMASK(5, 2)
-#define HOSTID_TABLE_W5_INT_MSG_AWSTEERING_H_MASK          GENMASK(0, 0)
-#define HOSTID_TABLE_W4_INT_MSG_AWSTEERING_L_MASK          GENMASK(31, 30)
-#define HOSTID_TABLE_W4_INT_AGGR_AWPROT_MASK               GENMASK(29, 28)
-#define HOSTID_TABLE_W4_INT_AGGR_AWCACHE_MASK              GENMASK(27, 24)
-#define HOSTID_TABLE_W4_INT_AGGR_AWSTEERING_MASK           GENMASK(22, 20)
-#define HOSTID_TABLE_W4_CMPT_AWPROT_MASK                   GENMASK(19, 18)
-#define HOSTID_TABLE_W4_CMPT_AWCACHE_MASK                  GENMASK(17, 14)
-#define HOSTID_TABLE_W4_CMPT_AWSTEERING_MASK               GENMASK(12, 10)
-#define HOSTID_TABLE_W4_C2H_PLD_AWPROT_MASK                GENMASK(9, 8)
-#define HOSTID_TABLE_W4_C2H_PLD_AWCACHE_MASK               GENMASK(7, 4)
-#define HOSTID_TABLE_W4_C2H_PLD_AWSTEERING_MASK            GENMASK(2, 0)
-#define HOSTID_TABLE_W3_C2H_MM_ARPROT_MASK                 GENMASK(7, 6)
-#define HOSTID_TABLE_W3_C2H_MM_ARCACHE_MASK                GENMASK(5, 2)
-#define HOSTID_TABLE_W3_C2H_MM_ARSTEERING_H_MASK           GENMASK(0, 0)
-#define HOSTID_TABLE_W2_C2H_MM_ARSTEERING_L_MASK           GENMASK(31, 30)
-#define HOSTID_TABLE_W2_H2C_MM_ARPROT_MASK                 GENMASK(29, 28)
-#define HOSTID_TABLE_W2_H2C_MM_ARCACHE_MASK                GENMASK(27, 24)
-#define HOSTID_TABLE_W2_H2C_MM_ARSTEERING_MASK             GENMASK(22, 20)
-#define HOSTID_TABLE_W2_H2C_ST_ARPROT_MASK                 GENMASK(19, 18)
-#define HOSTID_TABLE_W2_H2C_ST_ARCACHE_MASK                GENMASK(17, 14)
-#define HOSTID_TABLE_W2_H2C_ST_ARSTEERING_MASK             GENMASK(12, 10)
-#define HOSTID_TABLE_W2_DSC_ARPOT_MASK                     GENMASK(9, 8)
-#define HOSTID_TABLE_W2_DSC_ARCACHE_MASK                   GENMASK(7, 4)
-#define HOSTID_TABLE_W2_DSC_ARSTEERING_MASK                GENMASK(2, 0)
-#define HOSTID_TABLE_W0_VCH_H2C_MM_MASK                    GENMASK(27, 24)
-#define HOSTID_TABLE_W0_VCH_H2C_ST_MASK                    GENMASK(23, 20)
-#define HOSTID_TABLE_W0_VCH_DSC_MASK                       GENMASK(19, 16)
-#define HOSTID_TABLE_W0_VCH_INT_MSG_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W0_VCH_INT_AGGR_MASK                  GENMASK(11, 8)
-#define HOSTID_TABLE_W0_VCH_CMPT_MASK                      GENMASK(7, 4)
-#define HOSTID_TABLE_W0_VCH_H2C_PLD_MASK                   GENMASK(3, 0)
-#define CTXT_SELC_FNC_STS_W0_MSIX_MASK                GENMASK(3, 3)
-#define CTXT_SELC_FNC_STS_W0_MSIX_ENABLE_MASK              GENMASK(2, 2)
-#define CTXT_SELC_FNC_STS_W0_MEM_SPACE_ENABLE_MASK         GENMASK(1, 1)
-#define CTXT_SELC_FNC_STS_W0_BUS_MASTER_ENABLE_MASK        GENMASK(0, 0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
deleted file mode 100755
index af9a175..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
+++ /dev/null
@@ -1,4025 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "eqdma_cpm5_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_cpm5_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID_RSVD_1",
-		CFG_BLK_SYSTEM_ID_RSVD_1_MASK},
-	{"CFG_BLK_SYSTEM_ID_INST_TYPE",
-		CFG_BLK_SYSTEM_ID_INST_TYPE_MASK},
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msix_enable_field_info[] = {
-	{"CFG_BLK_MSIX_ENABLE",
-		CFG_BLK_MSIX_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_RSVD_1",
-		CFG_PCIE_DATA_WIDTH_RSVD_1_MASK},
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RSVD_1",
-		CFG_PCIE_CTL_RSVD_1_MASK},
-	{"CFG_PCIE_CTL_MGMT_AXIL_CTRL",
-		CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK},
-	{"CFG_PCIE_CTL_RSVD_2",
-		CFG_PCIE_CTL_RSVD_2_MASK},
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE",
-		CFG_BLK_MSI_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_RSVD_1",
-		CFG_BLK_MISC_CTL_RSVD_1_MASK},
-	{"CFG_BLK_MISC_CTL_10B_TAG_EN",
-		CFG_BLK_MISC_CTL_10B_TAG_EN_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_2",
-		CFG_BLK_MISC_CTL_RSVD_2_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_WBK",
-		CFG_BLK_MISC_CTL_AXI_WBK_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_DSC",
-		CFG_BLK_MISC_CTL_AXI_DSC_MASK},
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_3",
-		CFG_BLK_MISC_CTL_RSVD_3_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pl_cred_ctl_field_info[] = {
-	{"CFG_PL_CRED_CTL_RSVD_1",
-		CFG_PL_CRED_CTL_RSVD_1_MASK},
-	{"CFG_PL_CRED_CTL_SLAVE_CRD_RLS",
-		CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK},
-	{"CFG_PL_CRED_CTL_RSVD_2",
-		CFG_PL_CRED_CTL_RSVD_2_MASK},
-	{"CFG_PL_CRED_CTL_MASTER_CRD_RST",
-		CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_field_info[] = {
-	{"CFG_BLK_SCRATCH",
-		CFG_BLK_SCRATCH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_gic_field_info[] = {
-	{"CFG_GIC_RSVD_1",
-		CFG_GIC_RSVD_1_MASK},
-	{"CFG_GIC_GIC_IRQ",
-		CFG_GIC_GIC_IRQ_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_1_a_field_info[] = {
-	{"RAM_SBE_MSK_1_A",
-		RAM_SBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_1_a_field_info[] = {
-	{"RAM_SBE_STS_1_A_RSVD",
-		RAM_SBE_STS_1_A_RSVD_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_SBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_SBE_STS_1_A_TAG_ODD_RAM",
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_1_a_field_info[] = {
-	{"RAM_DBE_MSK_1_A",
-		RAM_DBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_1_a_field_info[] = {
-	{"RAM_DBE_STS_1_A_RSVD",
-		RAM_DBE_STS_1_A_RSVD_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_DBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_DBE_STS_1_A_TAG_ODD_RAM",
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_SBE_STS_A_PEND_FIFO_RAM",
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H3_DAT",
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H2_DAT",
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H1_DAT",
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C3_DAT",
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C2_DAT",
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C1_DAT",
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_DBE_STS_A_PEND_FIFO_RAM",
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H3_DAT",
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H2_DAT",
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H1_DAT",
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C3_DAT",
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C2_DAT",
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C1_DAT",
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP",
-		GLBL2_MISC_CAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_TAG_FL",
-		GLBL2_PCIE_RQ1_TAG_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RDY",
-		GLBL2_PCIE_RQ1_RREQ0_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RDY",
-		GLBL2_PCIE_RQ1_RREQ1_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_STRADDLE",
-		GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab0_field_info[] = {
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_VLD",
-		GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_RDY",
-		GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_VLD",
-		GLBL2_FAB0_H2C_SEG_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_RDY",
-		GLBL2_FAB0_H2C_SEG_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_VLD",
-		GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_RDY",
-		GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_H2C_MST_CRDT_STAT",
-		GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_FULL",
-		GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_VLD",
-		GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_RDY",
-		GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_VLD",
-		GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_RDY",
-		GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_FULL",
-		GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY",
-		GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY",
-		GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab1_field_info[] = {
-	{"GLBL2_FAB1_BYP_OUT_CRDT_STAT",
-		GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_TM_DSC_STS_CRDT_STAT",
-		GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_1",
-		GLBL2_FAB1_RSVD_1_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_2",
-		GLBL2_FAB1_RSVD_2_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_3",
-		GLBL2_FAB1_RSVD_3_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_4",
-		GLBL2_FAB1_RSVD_4_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_sel_field_info[] = {
-	{"GLBL2_MATCH_SEL_RSV",
-		GLBL2_MATCH_SEL_RSV_MASK},
-	{"GLBL2_MATCH_SEL_CSR_SEL",
-		GLBL2_MATCH_SEL_CSR_SEL_MASK},
-	{"GLBL2_MATCH_SEL_CSR_EN",
-		GLBL2_MATCH_SEL_CSR_EN_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE1",
-		GLBL2_MATCH_SEL_ROTATE1_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE0",
-		GLBL2_MATCH_SEL_ROTATE0_MASK},
-	{"GLBL2_MATCH_SEL_SEL",
-		GLBL2_MATCH_SEL_SEL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_msk_field_info[] = {
-	{"GLBL2_MATCH_MSK",
-		GLBL2_MATCH_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_pat_field_info[] = {
-	{"GLBL2_MATCH_PAT_PATTERN",
-		GLBL2_MATCH_PAT_PATTERN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_FAB",
-		GLBL_ERR_STAT_ERR_FAB_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_PORT_ID",
-		GLBL_DSC_ERR_STS_PORT_ID_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_BCNT",
-		GLBL_DSC_ERR_STS_BCNT_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_CIDX",
-		GLBL_DSC_ERR_LOG1_CIDX_MASK},
-	{"GLBL_DSC_ERR_LOG1_RSVD_2",
-		GLBL_DSC_ERR_LOG1_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_2",
-		GLBL_TRQ_ERR_STS_RSVD_2_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_QSPC_UNMAPPED",
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_3",
-		GLBL_TRQ_ERR_STS_RSVD_3_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_CSR_UNMAPPED",
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_SRC",
-		GLBL_TRQ_ERR_LOG_SRC_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_ctl_field_info[] = {
-	{"GLBL_DSC_CTL_RSVD_1",
-		GLBL_DSC_CTL_RSVD_1_MASK},
-	{"GLBL_DSC_CTL_SELECT",
-		GLBL_DSC_CTL_SELECT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log2_field_info[] = {
-	{"GLBL_DSC_ERR_LOG2_OLD_PIDX",
-		GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK},
-	{"GLBL_DSC_ERR_LOG2_NEW_PIDX",
-		GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_glbl_interrupt_cfg_field_info[] = {
-	{"GLBL_GLBL_INTERRUPT_CFG_RSVD_1",
-		GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING",
-		GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR",
-		GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_vch_host_profile_field_info[] = {
-	{"GLBL_VCH_HOST_PROFILE_RSVD_1",
-		GLBL_VCH_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_MM",
-		GLBL_VCH_HOST_PROFILE_2C_MM_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_ST",
-		GLBL_VCH_HOST_PROFILE_2C_ST_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_DSC",
-		GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_MSG",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_CMPT",
-		GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD",
-		GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl_bridge_host_profile_field_info[] = {
-	{"GLBL_BRIDGE_HOST_PROFILE_RSVD_1",
-		GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_BRIDGE_HOST_PROFILE_BDGID",
-		GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK},
-};
-
-
-static struct regfield_info
-	aximm_irq_dest_addr_field_info[] = {
-	{"AXIMM_IRQ_DEST_ADDR_ADDR",
-		AXIMM_IRQ_DEST_ADDR_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	fab_err_log_field_info[] = {
-	{"FAB_ERR_LOG_RSVD_1",
-		FAB_ERR_LOG_RSVD_1_MASK},
-	{"FAB_ERR_LOG_SRC",
-		FAB_ERR_LOG_SRC_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_field_info[] = {
-	{"IND_CTXT_DATA_DATA",
-		IND_CTXT_DATA_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_mask_field_info[] = {
-	{"IND_CTXT",
-		IND_CTXT_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SEL",
-		IND_CTXT_CMD_SEL_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_field_info[] = {
-	{"C2H_TIMER_CNT_RSVD_1",
-		C2H_TIMER_CNT_RSVD_1_MASK},
-	{"C2H_TIMER_CNT",
-		C2H_TIMER_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_field_info[] = {
-	{"C2H_CNT_TH_RSVD_1",
-		C2H_CNT_TH_RSVD_1_MASK},
-	{"C2H_CNT_TH_THESHOLD_CNT",
-		C2H_CNT_TH_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_RSVD_1",
-		C2H_STAT_AXIS_PKG_CMP_RSVD_1_MASK},
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_RSVD_1",
-		C2H_STAT_DESC_RSP_CMP_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT_RSVD_1",
-		C2H_STAT_WRQ_OUT_RSVD_1_MASK},
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED_RSVD_1",
-		C2H_STAT_WPL_REN_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN_RSVD_1",
-		C2H_STAT_TOTAL_WRQ_LEN_RSVD_1_MASK},
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN_RSVD_1",
-		C2H_STAT_TOTAL_WPL_LEN_RSVD_1_MASK},
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_field_info[] = {
-	{"C2H_BUF_SZ_IZE",
-		C2H_BUF_SZ_IZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PORT_ID_ERR",
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_PAR_ERR",
-		C2H_ERR_STAT_HDR_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_COR_ERR",
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_ERR_STAT_AVL_RING_DSC_ERR",
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_SH_CMPT_DSC_ERR",
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED2",
-		C2H_FATAL_ERR_STAT_RESERVED2_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED1",
-		C2H_FATAL_ERR_STAT_RESERVED1_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_HOST_ID",
-		GLBL_ERR_INT_HOST_ID_MASK},
-	{"GLBL_ERR_INT_DIS_INTR_ON_VF",
-		GLBL_ERR_INT_DIS_INTR_ON_VF_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVTFL_TH",
-		C2H_PFCH_CFG_EVTFL_TH_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_1_field_info[] = {
-	{"C2H_PFCH_CFG_1_EVT_QCNT_TH",
-		C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_1_QCNT",
-		C2H_PFCH_CFG_1_QCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_2_field_info[] = {
-	{"C2H_PFCH_CFG_2_FENCE",
-		C2H_PFCH_CFG_2_FENCE_MASK},
-	{"C2H_PFCH_CFG_2_RSVD",
-		C2H_PFCH_CFG_2_RSVD_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NO_DROP",
-		C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK},
-	{"C2H_PFCH_CFG_2_LL_SZ_TH",
-		C2H_PFCH_CFG_2_LL_SZ_TH_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NUM",
-		C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK},
-	{"C2H_PFCH_CFG_2_NUM",
-		C2H_PFCH_CFG_2_NUM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ_RSVD_1",
-		C2H_STAT_DESC_REQ_RSVD_1_MASK},
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_VLD",
-		C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_TYPE",
-		C2H_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"C2H_FIRST_ERR_QID_RSVD",
-		C2H_FIRST_ERR_QID_RSVD_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_RSVD_1",
-		C2H_STAT_DMA_ENG_4_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_VLD",
-		C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ",
-		C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_req_field_info[] = {
-	{"C2H_INTR_DYN_REQ_RSVD_1",
-		C2H_INTR_DYN_REQ_RSVD_1_MASK},
-	{"C2H_INTR_DYN_REQ_CNT",
-		C2H_INTR_DYN_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_misc_field_info[] = {
-	{"C2H_INTR_DYN_MISC_RSVD_1",
-		C2H_INTR_DYN_MISC_RSVD_1_MASK},
-	{"C2H_INTR_DYN_MISC_CNT",
-		C2H_INTR_DYN_MISC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_len_mismatch_field_info[] = {
-	{"C2H_DROP_LEN_MISMATCH_RSVD_1",
-		C2H_DROP_LEN_MISMATCH_RSVD_1_MASK},
-	{"C2H_DROP_LEN_MISMATCH_CNT",
-		C2H_DROP_LEN_MISMATCH_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_desc_rsp_len_field_info[] = {
-	{"C2H_DROP_DESC_RSP_LEN_RSVD_1",
-		C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK},
-	{"C2H_DROP_DESC_RSP_LEN_CNT",
-		C2H_DROP_DESC_RSP_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_qid_fifo_len_field_info[] = {
-	{"C2H_DROP_QID_FIFO_LEN_RSVD_1",
-		C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK},
-	{"C2H_DROP_QID_FIFO_LEN_CNT",
-		C2H_DROP_QID_FIFO_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_field_info[] = {
-	{"C2H_DROP_PLD_CNT_RSVD_1",
-		C2H_DROP_PLD_CNT_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_CNT",
-		C2H_DROP_PLD_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_0_field_info[] = {
-	{"C2H_CMPT_FORMAT_0_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_0_COLOR_LOC",
-		C2H_CMPT_FORMAT_0_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_1_field_info[] = {
-	{"C2H_CMPT_FORMAT_1_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_1_COLOR_LOC",
-		C2H_CMPT_FORMAT_1_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_2_field_info[] = {
-	{"C2H_CMPT_FORMAT_2_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_2_COLOR_LOC",
-		C2H_CMPT_FORMAT_2_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_3_field_info[] = {
-	{"C2H_CMPT_FORMAT_3_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_3_COLOR_LOC",
-		C2H_CMPT_FORMAT_3_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_4_field_info[] = {
-	{"C2H_CMPT_FORMAT_4_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_4_COLOR_LOC",
-		C2H_CMPT_FORMAT_4_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_5_field_info[] = {
-	{"C2H_CMPT_FORMAT_5_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_5_COLOR_LOC",
-		C2H_CMPT_FORMAT_5_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_6_field_info[] = {
-	{"C2H_CMPT_FORMAT_6_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_6_COLOR_LOC",
-		C2H_CMPT_FORMAT_6_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cache_depth_field_info[] = {
-	{"C2H_PFCH_CACHE_DEPTH_MAX_STBUF",
-		C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK},
-	{"C2H_PFCH_CACHE_DEPTH",
-		C2H_PFCH_CACHE_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_buf_depth_field_info[] = {
-	{"C2H_WRB_COAL_BUF_DEPTH_RSVD_1",
-		C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK},
-	{"C2H_WRB_COAL_BUF_DEPTH_BUFFER",
-		C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_crdt_field_info[] = {
-	{"C2H_PFCH_CRDT_RSVD_1",
-		C2H_PFCH_CRDT_RSVD_1_MASK},
-	{"C2H_PFCH_CRDT_RSVD_2",
-		C2H_PFCH_CRDT_RSVD_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_cmpt_accepted_field_info[] = {
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_CNT",
-		C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_pld_accepted_field_info[] = {
-	{"C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_PLD_ACCEPTED_CNT",
-		C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_field_info[] = {
-	{"C2H_PLD_PKT_ID_CMPT_WAIT",
-		C2H_PLD_PKT_ID_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_DATA",
-		C2H_PLD_PKT_ID_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_1_field_info[] = {
-	{"C2H_PLD_PKT_ID_1_CMPT_WAIT",
-		C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_1_DATA",
-		C2H_PLD_PKT_ID_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_1_field_info[] = {
-	{"C2H_DROP_PLD_CNT_1_RSVD_1",
-		C2H_DROP_PLD_CNT_1_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_1_CNT",
-		C2H_DROP_PLD_CNT_1_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_PAR_ERR",
-		H2C_ERR_STAT_PAR_ERR_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3_RSVD_1",
-		H2C_REG3_RSVD_1_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_pcie_field_info[] = {
-	{"H2C_REQ_THROT_PCIE_EN_REQ",
-		H2C_REQ_THROT_PCIE_EN_REQ_MASK},
-	{"H2C_REQ_THROT_PCIE",
-		H2C_REQ_THROT_PCIE_MASK},
-	{"H2C_REQ_THROT_PCIE_EN_DATA",
-		H2C_REQ_THROT_PCIE_EN_DATA_MASK},
-	{"H2C_REQ_THROT_PCIE_DATA_THRESH",
-		H2C_REQ_THROT_PCIE_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	h2c_aln_dbg_reg0_field_info[] = {
-	{"H2C_ALN_REG0_NUM_PKT_SENT",
-		H2C_ALN_REG0_NUM_PKT_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_aximm_field_info[] = {
-	{"H2C_REQ_THROT_AXIMM_EN_REQ",
-		H2C_REQ_THROT_AXIMM_EN_REQ_MASK},
-	{"H2C_REQ_THROT_AXIMM",
-		H2C_REQ_THROT_AXIMM_MASK},
-	{"H2C_REQ_THROT_AXIMM_EN_DATA",
-		H2C_REQ_THROT_AXIMM_EN_DATA_MASK},
-	{"H2C_REQ_THROT_AXIMM_DATA_THRESH",
-		H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_ctl_field_info[] = {
-	{"C2H_MM_CTL_RESERVED1",
-		C2H_MM_CTL_RESERVED1_MASK},
-	{"C2H_MM_CTL_ERRC_EN",
-		C2H_MM_CTL_ERRC_EN_MASK},
-	{"C2H_MM_CTL_RESERVED0",
-		C2H_MM_CTL_RESERVED0_MASK},
-	{"C2H_MM_CTL_RUN",
-		C2H_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_cmpl_desc_cnt_field_info[] = {
-	{"C2H_MM_CMPL_DESC_CNT_C2H_CO",
-		C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED1",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED0",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RESERVED1",
-		C2H_MM_ERR_CODE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_CIDX",
-		C2H_MM_ERR_CODE_CIDX_MASK},
-	{"C2H_MM_ERR_CODE_RESERVED0",
-		C2H_MM_ERR_CODE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_SUB_TYPE",
-		C2H_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_VALID",
-		C2H_MM_ERR_INFO_VALID_MASK},
-	{"C2H_MM_ERR_INFO_SEL",
-		C2H_MM_ERR_INFO_SEL_MASK},
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_ctl_field_info[] = {
-	{"H2C_MM_CTL_RESERVED1",
-		H2C_MM_CTL_RESERVED1_MASK},
-	{"H2C_MM_CTL_ERRC_EN",
-		H2C_MM_CTL_ERRC_EN_MASK},
-	{"H2C_MM_CTL_RESERVED0",
-		H2C_MM_CTL_RESERVED0_MASK},
-	{"H2C_MM_CTL_RUN",
-		H2C_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_cmpl_desc_cnt_field_info[] = {
-	{"H2C_MM_CMPL_DESC_CNT_H2C_CO",
-		H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED5",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED4",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED3",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED2",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED1",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED0",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_CIDX",
-		H2C_MM_ERR_CODE_CIDX_MASK},
-	{"H2C_MM_ERR_CODE_RESERVED0",
-		H2C_MM_ERR_CODE_RESERVED0_MASK},
-	{"H2C_MM_ERR_CODE_SUB_TYPE",
-		H2C_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_VALID",
-		H2C_MM_ERR_INFO_VALID_MASK},
-	{"H2C_MM_ERR_INFO_SEL",
-		H2C_MM_ERR_INFO_SEL_MASK},
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_1_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_1_RSVD_1",
-		C2H_CRDT_COAL_CFG_1_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH",
-		C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_1_TIMER_TH",
-		C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_2_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_2_RSVD_1",
-		C2H_CRDT_COAL_CFG_2_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_FIFO_TH",
-		C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_2_RESERVED1",
-		C2H_CRDT_COAL_CFG_2_RESERVED1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_NT_TH",
-		C2H_CRDT_COAL_CFG_2_NT_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_qid_field_info[] = {
-	{"C2H_PFCH_BYP_QID_RSVD_1",
-		C2H_PFCH_BYP_QID_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_QID",
-		C2H_PFCH_BYP_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_tag_field_info[] = {
-	{"C2H_PFCH_BYP_TAG_RSVD_1",
-		C2H_PFCH_BYP_TAG_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_TAG_BYP_QID",
-		C2H_PFCH_BYP_TAG_BYP_QID_MASK},
-	{"C2H_PFCH_BYP_TAG_RSVD_2",
-		C2H_PFCH_BYP_TAG_RSVD_2_MASK},
-	{"C2H_PFCH_BYP_TAG",
-		C2H_PFCH_BYP_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_water_mark_field_info[] = {
-	{"C2H_WATER_MARK_HIGH_WM",
-		C2H_WATER_MARK_HIGH_WM_MASK},
-	{"C2H_WATER_MARK_LOW_WM",
-		C2H_WATER_MARK_LOW_WM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_notify_empty_field_info[] = {
-	{"C2H_NOTIFY_EMPTY_RSVD_1",
-		C2H_NOTIFY_EMPTY_RSVD_1_MASK},
-	{"C2H_NOTIFY_EMPTY_NOE",
-		C2H_NOTIFY_EMPTY_NOE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_1_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_1",
-		C2H_STAT_AXIS_PKG_CMP_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_2_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_st_pld_fifo_depth_field_info[] = {
-	{"C2H_ST_PLD_FIFO_DEPTH",
-		C2H_ST_PLD_FIFO_DEPTH_MASK},
-};
-
-static struct xreg_info eqdma_cpm5_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSIX_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msix_enable_field_info),
-	cfg_blk_msix_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x20,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_PL_CRED_CTL", 0x68,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pl_cred_ctl_field_info),
-	cfg_pl_cred_ctl_field_info
-},
-{"CFG_BLK_SCRATCH", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_field_info),
-	cfg_blk_scratch_field_info
-},
-{"CFG_GIC", 0xa0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_gic_field_info),
-	cfg_gic_field_info
-},
-{"RAM_SBE_MSK_1_A", 0xe0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_1_a_field_info),
-	ram_sbe_msk_1_a_field_info
-},
-{"RAM_SBE_STS_1_A", 0xe4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_1_a_field_info),
-	ram_sbe_sts_1_a_field_info
-},
-{"RAM_DBE_MSK_1_A", 0xe8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_1_a_field_info),
-	ram_dbe_msk_1_a_field_info
-},
-{"RAM_DBE_STS_1_A", 0xec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_1_a_field_info),
-	ram_dbe_sts_1_a_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL2_DBG_FAB0", 0x1d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab0_field_info),
-	glbl2_dbg_fab0_field_info
-},
-{"GLBL2_DBG_FAB1", 0x1d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab1_field_info),
-	glbl2_dbg_fab1_field_info
-},
-{"GLBL2_DBG_MATCH_SEL", 0x1f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_sel_field_info),
-	glbl2_dbg_match_sel_field_info
-},
-{"GLBL2_DBG_MATCH_MSK", 0x1f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_msk_field_info),
-	glbl2_dbg_match_msk_field_info
-},
-{"GLBL2_DBG_MATCH_PAT", 0x1fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_pat_field_info),
-	glbl2_dbg_match_pat_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"GLBL_DSC_DBG_CTL", 0x278,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_ctl_field_info),
-	glbl_dsc_dbg_ctl_field_info
-},
-{"GLBL_DSC_ERR_LOG2", 0x27c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log2_field_info),
-	glbl_dsc_err_log2_field_info
-},
-{"GLBL_GLBL_INTERRUPT_CFG", 0x2c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_glbl_interrupt_cfg_field_info),
-	glbl_glbl_interrupt_cfg_field_info
-},
-{"GLBL_VCH_HOST_PROFILE", 0x2c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_vch_host_profile_field_info),
-	glbl_vch_host_profile_field_info
-},
-{"GLBL_BRIDGE_HOST_PROFILE", 0x308,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_bridge_host_profile_field_info),
-	glbl_bridge_host_profile_field_info
-},
-{"AXIMM_IRQ_DEST_ADDR", 0x30c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(aximm_irq_dest_addr_field_info),
-	aximm_irq_dest_addr_field_info
-},
-{"FAB_ERR_LOG", 0x314,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(fab_err_log_field_info),
-	fab_err_log_field_info
-},
-{"IND_CTXT_DATA", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_field_info),
-	ind_ctxt_data_field_info
-},
-{"IND_CTXT_MASK", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_mask_field_info),
-	ind_ctxt_mask_field_info
-},
-{"IND_CTXT_CMD", 0x844,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_field_info),
-	c2h_timer_cnt_field_info
-},
-{"C2H_CNT_TH", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_field_info),
-	c2h_cnt_th_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_field_info),
-	c2h_buf_sz_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_PFCH_CFG_1", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_1_field_info),
-	c2h_pfch_cfg_1_field_info
-},
-{"C2H_PFCH_CFG_2", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_2_field_info),
-	c2h_pfch_cfg_2_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"C2H_INTR_DYN_REQ", 0xbac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_req_field_info),
-	c2h_intr_dyn_req_field_info
-},
-{"C2H_INTR_DYN_MISC", 0xbb0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_misc_field_info),
-	c2h_intr_dyn_misc_field_info
-},
-{"C2H_DROP_LEN_MISMATCH", 0xbb4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_len_mismatch_field_info),
-	c2h_drop_len_mismatch_field_info
-},
-{"C2H_DROP_DESC_RSP_LEN", 0xbb8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_desc_rsp_len_field_info),
-	c2h_drop_desc_rsp_len_field_info
-},
-{"C2H_DROP_QID_FIFO_LEN", 0xbbc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_qid_fifo_len_field_info),
-	c2h_drop_qid_fifo_len_field_info
-},
-{"C2H_DROP_PLD_CNT", 0xbc0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_field_info),
-	c2h_drop_pld_cnt_field_info
-},
-{"C2H_CMPT_FORMAT_0", 0xbc4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_0_field_info),
-	c2h_cmpt_format_0_field_info
-},
-{"C2H_CMPT_FORMAT_1", 0xbc8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_1_field_info),
-	c2h_cmpt_format_1_field_info
-},
-{"C2H_CMPT_FORMAT_2", 0xbcc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_2_field_info),
-	c2h_cmpt_format_2_field_info
-},
-{"C2H_CMPT_FORMAT_3", 0xbd0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_3_field_info),
-	c2h_cmpt_format_3_field_info
-},
-{"C2H_CMPT_FORMAT_4", 0xbd4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_4_field_info),
-	c2h_cmpt_format_4_field_info
-},
-{"C2H_CMPT_FORMAT_5", 0xbd8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_5_field_info),
-	c2h_cmpt_format_5_field_info
-},
-{"C2H_CMPT_FORMAT_6", 0xbdc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_6_field_info),
-	c2h_cmpt_format_6_field_info
-},
-{"C2H_PFCH_CACHE_DEPTH", 0xbe0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cache_depth_field_info),
-	c2h_pfch_cache_depth_field_info
-},
-{"C2H_WRB_COAL_BUF_DEPTH", 0xbe4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_buf_depth_field_info),
-	c2h_wrb_coal_buf_depth_field_info
-},
-{"C2H_PFCH_CRDT", 0xbe8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_crdt_field_info),
-	c2h_pfch_crdt_field_info
-},
-{"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_cmpt_accepted_field_info),
-	c2h_stat_has_cmpt_accepted_field_info
-},
-{"C2H_STAT_HAS_PLD_ACCEPTED", 0xbf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_pld_accepted_field_info),
-	c2h_stat_has_pld_accepted_field_info
-},
-{"C2H_PLD_PKT_ID", 0xbf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_field_info),
-	c2h_pld_pkt_id_field_info
-},
-{"C2H_PLD_PKT_ID_1", 0xbf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_1_field_info),
-	c2h_pld_pkt_id_1_field_info
-},
-{"C2H_DROP_PLD_CNT_1", 0xbfc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_1_field_info),
-	c2h_drop_pld_cnt_1_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"H2C_REQ_THROT_PCIE", 0xe24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_pcie_field_info),
-	h2c_req_throt_pcie_field_info
-},
-{"H2C_ALN_DBG_REG0", 0xe28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_aln_dbg_reg0_field_info),
-	h2c_aln_dbg_reg0_field_info
-},
-{"H2C_REQ_THROT_AXIMM", 0xe2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_aximm_field_info),
-	h2c_req_throt_aximm_field_info
-},
-{"C2H_MM_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_ctl_field_info),
-	c2h_mm_ctl_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_MM_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_cmpl_desc_cnt_field_info),
-	c2h_mm_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_MM_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_ctl_field_info),
-	h2c_mm_ctl_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_MM_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_cmpl_desc_cnt_field_info),
-	h2c_mm_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"C2H_CRDT_COAL_CFG_1", 0x1400,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_1_field_info),
-	c2h_crdt_coal_cfg_1_field_info
-},
-{"C2H_CRDT_COAL_CFG_2", 0x1404,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_2_field_info),
-	c2h_crdt_coal_cfg_2_field_info
-},
-{"C2H_PFCH_BYP_QID", 0x1408,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_qid_field_info),
-	c2h_pfch_byp_qid_field_info
-},
-{"C2H_PFCH_BYP_TAG", 0x140c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_tag_field_info),
-	c2h_pfch_byp_tag_field_info
-},
-{"C2H_WATER_MARK", 0x1500,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_water_mark_field_info),
-	c2h_water_mark_field_info
-},
-{"C2H_NOTIFY_EMPTY", 0x1800,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_notify_empty_field_info),
-	c2h_notify_empty_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1", 0x1804,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_1_field_info),
-	c2h_stat_s_axis_c2h_accepted_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1", 0x1808,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_1_field_info),
-	c2h_stat_s_axis_wrb_accepted_1_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1", 0x180c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_1_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP_1", 0x1810,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_1_field_info),
-	c2h_stat_axis_pkg_cmp_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2", 0x1814,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_2_field_info),
-	c2h_stat_s_axis_wrb_accepted_2_field_info
-},
-{"C2H_ST_PLD_FIFO_DEPTH", 0x1818,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_st_pld_fifo_depth_field_info),
-	c2h_st_pld_fifo_depth_field_info
-},
-
-};
-
-uint32_t eqdma_cpm5_config_num_regs_get(void)
-{
-	return (sizeof(eqdma_cpm5_config_regs)/
-		sizeof(eqdma_cpm5_config_regs[0]));
-}
-
-struct xreg_info *eqdma_cpm5_config_regs_get(void)
-{
-	return eqdma_cpm5_config_regs;
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
deleted file mode 100755
index 0332479..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
+++ /dev/null
@@ -1,6833 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "eqdma_soft_access.h"
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_access.tmh"
-#endif
-
-/** EQDMA Context array size */
-#define EQDMA_FMAP_NUM_WORDS				 2
-#define EQDMA_SW_CONTEXT_NUM_WORDS           8
-#define EQDMA_HW_CONTEXT_NUM_WORDS           2
-#define EQDMA_PFETCH_CONTEXT_NUM_WORDS       2
-#define EQDMA_CR_CONTEXT_NUM_WORDS           1
-#define EQDMA_CMPT_CONTEXT_NUM_WORDS         6
-#define EQDMA_IND_INTR_CONTEXT_NUM_WORDS     4
-
-#define EQDMA_VF_USER_BAR_ID                 2
-
-#define EQDMA_REG_GROUP_1_START_ADDR	0x000
-#define EQDMA_REG_GROUP_2_START_ADDR	0x804
-#define EQDMA_REG_GROUP_3_START_ADDR	0xB00
-#define EQDMA_REG_GROUP_4_START_ADDR	0x5014
-
-#define EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS   11
-#define EQDMA_GLBL_TRQ_ERR_ALL_MASK          0XB3
-#define EQDMA_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define EQDMA_C2H_ERR_ALL_MASK				0X3F6DF
-#define EQDMA_C2H_FATAL_ERR_ALL_MASK		0X1FDF1B
-#define EQDMA_H2C_ERR_ALL_MASK				0X3F
-#define EQDMA_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_DBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_MM_C2H_ERR_ALL_MASK			0X70000003
-#define EQDMA_MM_H2C0_ERR_ALL_MASK		    0X3041013E
-
-
-
-
-/* H2C Throttle settings for QDMA 4.0 */
-#define EQDMA_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA_THROT_EN_DATA               1
-#define EQDMA_THROT_EN_REQ                0
-#define EQDMA_H2C_THROT_REQ_THRESH        0xC0
-
-/* H2C Throttle settings for QDMA 5.0 */
-#define EQDMA5_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA5_THROT_EN_DATA               1
-#define EQDMA5_THROT_EN_REQ                1
-#define EQDMA5_H2C_THROT_REQ_THRESH        0xC0
-
-/* CSR Default values for QDMA 5.0 */
-#define EQDMA5_DEFAULT_C2H_UODSC_LIMIT     5
-#define EQDMA5_DEFAULT_H2C_UODSC_LIMIT     8
-#define EQDMA5_DEFAULT_MAX_DSC_FETCH       5
-#define EQDMA5_DEFAULT_WRB_INT             QDMA_WRB_INTERVAL_128
-
-/* C2H prefetch Throttle configuration. */
-#define EQDMA5_DEFAULT_C2H_EVT_QCNT_TH     0x38
-#define EQDMA5_DEFAULT_C2H_PFCH_QCNT       0x3c
-
-/** Auxillary Bitmasks for fields spanning multiple words */
-#define EQDMA_SW_CTXT_PASID_GET_H_MASK              GENMASK(21, 12)
-#define EQDMA_SW_CTXT_PASID_GET_L_MASK              GENMASK(11, 0)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK    GENMASK_ULL(63, 53)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK    GENMASK_ULL(52, 21)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK    GENMASK_ULL(20, 0)
-#define EQDMA_CMPL_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CMPL_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-#define EQDMA_INTR_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_INTR_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-
-
-#define EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT		0x10C
-
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT		0x104
-#define QDMA_GLBL2_PF3_BAR_MAP_MASK				GENMASK(23, 18)
-#define QDMA_GLBL2_PF2_BAR_MAP_MASK				GENMASK(17, 12)
-#define QDMA_GLBL2_PF1_BAR_MAP_MASK				GENMASK(11, 6)
-#define QDMA_GLBL2_PF0_BAR_MAP_MASK				GENMASK(5, 0)
-
-#define EQDMA_GLBL2_DBG_MODE_EN_MASK			BIT(4)
-#define EQDMA_GLBL2_DESC_ENG_MODE_MASK			GENMASK(3, 2)
-#define EQDMA_GLBL2_FLR_PRESENT_MASK			BIT(1)
-#define EQDMA_GLBL2_MAILBOX_EN_MASK				BIT(0)
-
-/** EQDMA_IND_REG_SEL_FMAP */
-#define EQDMA_FMAP_CTXT_W1_QID_MAX_MASK         GENMASK(11, 0)
-#define EQDMA_FMAP_CTXT_W0_QID_MASK             GENMASK(10, 0)
-
-#define EQDMA_GLBL2_IP_VERSION_MASK             GENMASK(23, 20)
-#define EQDMA_GLBL2_VF_IP_VERSION_MASK          GENMASK(7, 4)
-
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl);
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl);
-static void eqdma_hw_desc_err_process(void *dev_hndl);
-static void eqdma_hw_trq_err_process(void *dev_hndl);
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl);
-static void eqdma_mm_h2c0_err_process(void *dev_hndl);
-static void eqdma_mm_c2h0_err_process(void *dev_hndl);
-
-static struct eqdma_hw_err_info eqdma_err_info[EQDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		EQDMA_DSC_ERR_POISON,
-		"Poison error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_BCNT,
-		"Unexpected Byte count in completion error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_BCNT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR,
-		"FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_PORT_ID,
-		"Port ID Error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PORT_ID_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_VF_ACCESS,
-		"VF attempted to access Global register space or Function map",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-		"Access targeted unmapped register via queue space pathway",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-		"Timeout on request to dma internal queue space register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-		"A Shared CMPT queue has encountered a descriptor error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-		"Available ring fetch returns descriptor with error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-		"multi-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-		"single-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_WRB_PORT_ID_ERR,
-		"Port ID error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-		"A non-EOP descriptor received",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_PAR,
-		"Internal data parity error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Even RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM 1 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_ALL,
-		"All SBE Errors.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-{
-		EQDMA_SBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slavle FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slave FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	/* MM C2H Engine 0 errors */
-	{
-		EQDMA_MM_C2H_WR_SLR_ERR,
-		"MM C2H0 WR SLV Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_RD_SLR_ERR,
-		"MM C2H0 RD SLV Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_WR_FLR_ERR,
-		"MM C2H0 WR FLR Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_UR_ERR,
-		"MM C2H0 Unsupported Request Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_WR_UC_RAM_ERR,
-		"MM C2H0 Write Uncorrectable RAM Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_ERR_ALL,
-		"All MM C2H Errors",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		EQDMA_MM_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	/* MM H2C Engine 0 Errors */
-	{
-		EQDMA_MM_H2C0_RD_HDR_POISON_ERR,
-		"MM H2C0 Read cmpt header pison Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_UR_CA_ERR,
-		"MM H2C0 Read cmpt unsupported request Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_BYTE_ERR,
-		"MM H2C0 Read cmpt hdr byte cnt Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_PARAM_ERR,
-		"MM H2C0 Read cmpt hdr param mismatch Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_ADR_ERR,
-		"MM H2C0 Read cmpt hdr address mismatch Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_FLR_ERR,
-		"MM H2C0 Read flr Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_DAT_POISON_ERR,
-		"MM H2C0 Read data poison Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_RQ_DIS_ERR,
-		"MM H2C0 Read request disable Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_WR_DEC_ERR,
-		"MM H2C0 Write desc Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_WR_SLV_ERR,
-		"MM H2C0 Write slv Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_ERR_ALL,
-		"All MM H2C Errors",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		EQDMA_MM_H2C0_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-
-};
-
-static int32_t all_eqdma_hw_errs[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	EQDMA_DSC_ERR_ALL,
-	EQDMA_TRQ_ERR_ALL,
-	EQDMA_ST_C2H_ERR_ALL,
-	EQDMA_ST_FATAL_ERR_ALL,
-	EQDMA_ST_H2C_ERR_ALL,
-	EQDMA_SBE_1_ERR_ALL,
-	EQDMA_SBE_ERR_ALL,
-	EQDMA_DBE_1_ERR_ALL,
-	EQDMA_DBE_ERR_ALL,
-	EQDMA_MM_C2H_ERR_ALL,
-	EQDMA_MM_H2C0_ERR_ALL
-};
-
-static struct qctx_entry eqdma_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Interrupt with VF", 0},
-	{"Pack descriptor output interface", 0},
-	{"Irq Bypass", 0},
-};
-
-static struct qctx_entry eqdma_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry eqdma_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry eqdma_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry eqdma_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Addr High (L)[37:6]", 0},
-	{"Base Addr High(H)[63:38]", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Insterrupt with VF", 0},
-	{"c2h Direction", 0},
-	{"Base Addr Low[5:2]", 0},
-	{"Shared Completion Queue", 0},
-};
-
-static struct qctx_entry eqdma_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Variable Descriptor", 0},
-	{"Number of descriptors prefetched", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry eqdma_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-	{"Function Id", 0},
-};
-
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t eqdma_get_config_num_regs(void)
-{
-	return eqdma_config_num_regs_get();
-}
-
-struct xreg_info *eqdma_get_config_regs(void)
-{
-	return eqdma_config_regs_get();
-}
-
-uint32_t eqdma_reg_dump_buf_len(void)
-{
-	uint32_t length = (eqdma_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int len = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-			sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(eqdma_sw_ctxt_entries) /
-				sizeof(eqdma_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_hw_ctxt_entries) /
-			sizeof(eqdma_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_credit_ctxt_entries) /
-			sizeof(eqdma_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_fmap_ctxt_entries) /
-			sizeof(eqdma_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(eqdma_c2h_pftch_ctxt_entries) /
-				sizeof(eqdma_c2h_pftch_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return 0;
-}
-
-
-static uint32_t eqdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof(eqdma_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-
-static void eqdma_set_perf_opt(void *dev_hndl)
-{
-	uint32_t reg_val = 0, data_th = 0, pfch_cache_dpth = 0;
-	/****
-	 * TODO: All the below settings are for QDMA5.0
-	 * Need to add the QDMA4.0 settings
-	 */
-#define EQDMA_PFTCH_CACHE_DEPTH				64
-#define GLBL_DSC_CFG_RSVD_1_DFLT			0
-#define EQDMA_GLBL_DSC_CFG_C2H_UODSC_LIMIT		5
-#define EQDMA_GLBL_DSC_CFG_H2C_UODSC_LIMIT              8
-#define GLBL_DSC_CFG_UNC_OVR_COR_DFLT                   0
-#define GLBL_DSC_CFG_CTXT_FER_DIS_DFLT			0
-#define GLBL_DSC_CFG_RSVD_2_DFLT                        0
-#define EQDMA_GLBL_DSC_CFG_MAXFETCH                     2
-#define EQDMA_GLBL_DSC_CFG_WB_ACC_INT			5
-
-	reg_val =
-		FIELD_SET(GLBL_DSC_CFG_RSVD_1_MASK, GLBL_DSC_CFG_RSVD_1_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK,
-					EQDMA_GLBL_DSC_CFG_C2H_UODSC_LIMIT) |
-		FIELD_SET(GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK,
-					EQDMA_GLBL_DSC_CFG_H2C_UODSC_LIMIT) |
-		FIELD_SET(GLBL_DSC_CFG_UNC_OVR_COR_MASK,
-					GLBL_DSC_CFG_UNC_OVR_COR_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_CTXT_FER_DIS_MASK,
-					GLBL_DSC_CFG_CTXT_FER_DIS_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_RSVD_2_MASK, GLBL_DSC_CFG_RSVD_2_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-				EQDMA_GLBL_DSC_CFG_MAXFETCH) |
-		FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-				EQDMA_GLBL_DSC_CFG_WB_ACC_INT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-
-#define CFG_BLK_MISC_CTL_RSVD_1_DFLT                       0
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT                      0
-#define CFG_BLK_MISC_CTL_RSVD_2_DFLT                       0
-#define CFG_BLK_MISC_CTL_AXI_WBK_DFLT                      0
-#define CFG_BLK_MISC_CTL_AXI_DSC_DFLT                      0
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT                      256
-#define CFG_BLK_MISC_CTL_RSVD_3_DFLT                       0
-#define EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL             9
-
-
-	reg_val =
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_1_MASK,
-				CFG_BLK_MISC_CTL_RSVD_1_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_10B_TAG_EN_MASK,
-					CFG_BLK_MISC_CTL_10B_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_2_MASK,
-				CFG_BLK_MISC_CTL_RSVD_2_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_WBK_MASK,
-					CFG_BLK_MISC_CTL_AXI_WBK_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_DSC_MASK,
-					CFG_BLK_MISC_CTL_AXI_DSC_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_NUM_TAG_MASK,
-					CFG_BLK_MISC_CTL_NUM_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_3_MASK,
-				CFG_BLK_MISC_CTL_RSVD_3_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK,
-				EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL);
-	qdma_reg_write(dev_hndl, EQDMA_CFG_BLK_MISC_CTL_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CFG_BLK_MISC_CTL_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CFG_BLK_MISC_CTL_ADDR, reg_val);
-
-#define EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH                    256
-#define C2H_PFCH_CFG_FL_TH_DFLT                           256
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_EVTFL_TH_MASK,
-				EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH) |
-		FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK, C2H_PFCH_CFG_FL_TH_DFLT);
-
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_ADDR, reg_val);
-
-#define EQDMA_C2H_PFCH_CFG_1_QCNT_MASK		(EQDMA_PFTCH_CACHE_DEPTH - 4)
-#define EQDMA_C2H_PFCH_CFG_1_EVNT_QCNT_TH	EQDMA_C2H_PFCH_CFG_1_QCNT_MASK
-	pfch_cache_dpth = qdma_reg_read(dev_hndl,
-			EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR);
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK,
-				(pfch_cache_dpth - 4)) |
-		FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK, (pfch_cache_dpth - 4));
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_1_ADDR, reg_val);
-
-#define EQDMA_C2H_PFCH_CFG_2_FENCE_EN               1
-#define C2H_PFCH_CFG_2_RSVD_DFLT                    0
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT        0
-#define C2H_PFCH_CFG_2_LL_SZ_TH_DFLT                1024
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM                 15
-#define C2H_PFCH_CFG_2_NUM_DFLT                     8
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK,
-				EQDMA_C2H_PFCH_CFG_2_FENCE_EN) |
-		FIELD_SET(C2H_PFCH_CFG_2_RSVD_MASK, C2H_PFCH_CFG_2_RSVD_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK,
-					C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_LL_SZ_TH_MASK,
-				C2H_PFCH_CFG_2_LL_SZ_TH_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK,
-					C2H_PFCH_CFG_2_VAR_DESC_NUM) |
-		FIELD_SET(C2H_PFCH_CFG_2_NUM_MASK, C2H_PFCH_CFG_2_NUM_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-#define PFCH_CFG_3_RSVD_DFLT                               0
-#define PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_DFLT            256
-#define PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_DFLT          0
-
-
-	reg_val =
-		FIELD_SET(PFCH_CFG_3_RSVD_MASK, PFCH_CFG_3_RSVD_DFLT) |
-		FIELD_SET(PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK,
-				PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_DFLT) |
-		FIELD_SET(PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK,
-				PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_PFCH_CFG_3_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_PFCH_CFG_3_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-#define EQDMA_PFCH_CFG_4_GLB_EVT_TIMER_TICK             64
-#define PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_DFLT           0
-#define EQDMA_PFCH_CFG_4_EVT_TIMER_TICK                 400
-#define PFCH_CFG_4_DISABLE_EVT_TIMER_DFLT               0
-
-
-	reg_val =
-		FIELD_SET(PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK,
-				EQDMA_PFCH_CFG_4_GLB_EVT_TIMER_TICK) |
-		FIELD_SET(PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK,
-				PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_DFLT) |
-		FIELD_SET(PFCH_CFG_4_EVT_TIMER_TICK_MASK,
-				EQDMA_PFCH_CFG_4_EVT_TIMER_TICK) |
-		FIELD_SET(PFCH_CFG_4_DISABLE_EVT_TIMER_MASK,
-				PFCH_CFG_4_DISABLE_EVT_TIMER_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_PFCH_CFG_4_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_PFCH_CFG_4_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_PFCH_CFG_4_ADDR, reg_val);
-/**************** SET_2 *******************/
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT             0
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT        16
-#define EQDMA_C2H_CRDT_COAL_CFG_1_TIMER_TH          16 //64
-
-
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK,
-				EQDMA_C2H_CRDT_COAL_CFG_1_TIMER_TH);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT                   0
-#define EQDMA_C2H_CRDT_COAL_CFG_2_FIFO_TH	(EQDMA_PFTCH_CACHE_DEPTH - 8)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT                0
-#define EQDMA_C2H_CRDT_COAL_CFG_2_CRDT_TH                 96
-
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RSVD_1_MASK,
-					C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK,
-					(pfch_cache_dpth - 8)) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RESERVED1_MASK,
-					C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_NT_TH_MASK,
-					EQDMA_C2H_CRDT_COAL_CFG_2_CRDT_TH);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-
-/**************** SET_3 *******************/
-#define EQDMA_GLBL2_RRQ_PCIE_THROT_REQ_EN                  0
-#define GLBL2_RRQ_PCIE_THROT_REQ_DFLT                      192
-#define GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT                   1
-#define GLBL2_RRQ_PCIE_THROT_DAT_DFLT                      20480
-
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK,
-					EQDMA_GLBL2_RRQ_PCIE_THROT_REQ_EN) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_REQ_MASK,
-					GLBL2_RRQ_PCIE_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK,
-					GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_DAT_MASK,
-					GLBL2_RRQ_PCIE_THROT_DAT_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-#define GLBL2_RRQ_AXIMM_THROT_REQ_EN_DFLT                  0
-#define GLBL2_RRQ_AXIMM_THROT_REQ_DFLT                     0
-#define GLBL2_RRQ_AXIMM_THROT_DAT_EN_DFLT                  0
-#define GLBL2_RRQ_AXIMM_THROT_DAT_DFLT                     0
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK,
-					GLBL2_RRQ_AXIMM_THROT_REQ_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_REQ_MASK,
-					GLBL2_RRQ_AXIMM_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK,
-					GLBL2_RRQ_AXIMM_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_DAT_MASK,
-					GLBL2_RRQ_AXIMM_THROT_DAT_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR, reg_val);
-#define GLBL2_RRQ_BRG_THROT_REQ_EN_DFLT                    1
-#define GLBL2_RRQ_BRG_THROT_REQ_DFLT             GLBL2_RRQ_PCIE_THROT_REQ_DFLT
-#define GLBL2_RRQ_BRG_THROT_DAT_EN_DFLT                    1
-
-
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR);
-	qdma_log_info("%s: BF reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-	data_th = FIELD_GET(GLBL2_RRQ_PCIE_THROT_DAT_MASK, reg_val);
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_REQ_EN_MASK,
-				GLBL2_RRQ_BRG_THROT_REQ_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_REQ_MASK,
-				GLBL2_RRQ_BRG_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_DAT_EN_MASK,
-				GLBL2_RRQ_BRG_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_DAT_MASK, data_th);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR, reg_val);
-
-/******************* SET_4 *************************/
-#define EQDMA_H2C_REQ_THROT_PCIE_EN_REQ                     1
-#define EQDMA_H2C_REQ_THROT_PCIE_REQ_TH          GLBL2_RRQ_PCIE_THROT_REQ_DFLT
-#define EQDMA_H2C_REQ_THROT_PCIE_EN_DATA                    1
-#define EQDMA_H2C_REQ_THROT_PCIE_DATA_TH                    24576
-
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-#define EQDMA_H2C_REQ_THROT_AXIMM_EN_REQ            1
-#define EQDMA_H2C_REQ_THROT_AXIMM_REQ_TH            64
-#define EQDMA_H2C_REQ_THROT_AXIMM_EN_DATA           1
-#define EQDMA_H2C_REQ_THROT_AXIMM_DATA_TH           16384
-
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_REQ_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_DATA_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_REQ_THROT_AXIMM_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-
-#define H2C_MM_DATA_THROTTLE_RSVD_1_DFLT        0
-#define EQDMA_H2C_MM_DATA_TH_EN		      GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT
-#define EQDMA_H2C_MM_DATA_TH		      GLBL2_RRQ_PCIE_THROT_DAT_DFLT
-
-	reg_val =
-		FIELD_SET(H2C_MM_DATA_THROTTLE_RSVD_1_MASK,
-				H2C_MM_DATA_THROTTLE_RSVD_1_DFLT) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_EN_MASK,
-				EQDMA_H2C_MM_DATA_TH_EN) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_MASK, EQDMA_H2C_MM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_MM_DATA_THROTTLE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-
-}
-
-
-/*
- * eqdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-		 index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_get_ip_version(void *dev_hndl, uint8_t is_vf,
-			uint32_t *ip_version)
-{
-	uint32_t ver_reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_OFFSET_VF_VERSION :
-			EQDMA_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	ver_reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	if (!is_vf) {
-		*ip_version =
-			FIELD_GET(EQDMA_GLBL2_IP_VERSION_MASK,
-				ver_reg_val);
-	} else {
-		*ip_version =
-			FIELD_GET(EQDMA_GLBL2_VF_IP_VERSION_MASK,
-					ver_reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void eqdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	int i = 0;
-
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pidx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_arm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fnc_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->qen;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->frcd_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_chk;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_intvl_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->at;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fetch_max;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->rngsz_idx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->desc_sz;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->bypass;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mm_chn;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbk_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->port_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_no_last;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err_wb_sent;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_req;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mrkr_dis;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->is_mm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->vec;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->intr_aggr;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->dis_intr_on_vf;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pack_byp_out;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_byp;
-
-}
-
-/*
- * eqdma_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void eqdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	int i = 0;
-
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_stat_desc;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_int;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->trig_mode;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->fnc_id;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->counter_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->in_st;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->color;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ringsz_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->desc_sz;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->pidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->cidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->valid;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->err;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->user_trig_pend;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_running;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->full_upd;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ovf_chk_dis;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->at;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->vec;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->int_aggr;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dis_intr_on_vf;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dir_c2h;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->sh_cmpt;
-}
-
-/*
- * eqdma_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void eqdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	int i = 0;
-
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->cidx;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->crd_use;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->dsc_pend;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->idl_stp_b;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->evt_pnd;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * eqdma_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void eqdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	eqdma_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * eqdma_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void eqdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt
-		*pfetch_ctxt)
-{
-	int i = 0;
-
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bypass;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bufsz_idx;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->port_id;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->var_desc;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->num_pftch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->err;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch_en;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->sw_crdt;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->valid;
-}
-
-/*
- * eqdma_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void eqdma_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	eqdma_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	eqdma_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * eqdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void eqdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	int i = 0;
-
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->valid;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->vec;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->int_st;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->color;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->page_size;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->pidx;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->at;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->func_id;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_set_default_global_csr(void *dev_hndl)
-{
-	int rv = QDMA_SUCCESS;
-
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-	uint32_t eqdma_ip_version;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	rv = eqdma_get_ip_version(dev_hndl, 0, &eqdma_ip_version);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-		/* Writeback Interval */
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val =
-				FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-						DEFAULT_MAX_DSC_FETCH) |
-				FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-						DEFAULT_WRB_INT);
-
-			qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR,
-					reg_val);
-		}
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR);
-			cfg_val = FIELD_GET(C2H_PFCH_CACHE_DEPTH_MASK, reg_val);
-			reg_val = FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK,
-					(cfg_val >> 2)) |
-				FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK,
-						((cfg_val >> 2) - 4));
-
-			qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR,
-					reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_C2H_PFCH_CFG_2_ADDR);
-			reg_val |= FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK, 1);
-			qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR,
-					reg_val);
-		}
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, EQDMA_C2H_INT_TIMER_TICK_ADDR,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR);
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, EQDMA_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-		/* H2C throttle Configuration*/
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val =
-				FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-						EQDMA_H2C_THROT_DATA_THRESH) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-						EQDMA_THROT_EN_DATA) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-						EQDMA_H2C_THROT_REQ_THRESH) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-						EQDMA_THROT_EN_REQ);
-
-			qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR,
-					reg_val);
-		}
-	}
-
-	if (eqdma_ip_version == EQDMA_IP_VERSION_5)
-		eqdma_set_perf_opt(dev_hndl);
-	return QDMA_SUCCESS;
-}
-
-/*
- * dump_eqdma_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			eqdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	eqdma_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(eqdma_sw_ctxt_entries) /
-				sizeof((eqdma_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[i].name,
-				eqdma_sw_ctxt_entries[i].value,
-				eqdma_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(eqdma_hw_ctxt_entries) /
-				sizeof((eqdma_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_hw_ctxt_entries[i].name,
-				eqdma_hw_ctxt_entries[i].value,
-				eqdma_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(eqdma_credit_ctxt_entries) /
-			sizeof((eqdma_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_credit_ctxt_entries[i].name,
-				eqdma_credit_ctxt_entries[i].value,
-				eqdma_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof((eqdma_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cmpt_ctxt_entries[i].name,
-				eqdma_cmpt_ctxt_entries[i].value,
-				eqdma_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(eqdma_c2h_pftch_ctxt_entries) /
-			sizeof(eqdma_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_c2h_pftch_ctxt_entries[i].name,
-				eqdma_c2h_pftch_ctxt_entries[i].value,
-				eqdma_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* FMAP context dump */
-	n = sizeof(eqdma_fmap_ctxt_entries) /
-		sizeof((eqdma_fmap_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"FMAP Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-			DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_fmap_ctxt_entries[i].name,
-			eqdma_fmap_ctxt_entries[i].value,
-			eqdma_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * dump_eqdma_intr_context() - Helper function to dump interrupt context into
- * string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	eqdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof((eqdma_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_ind_intr_ctxt_entries[i].name,
-			eqdma_ind_intr_ctxt_entries[i].value,
-			eqdma_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_version() - Function to get the eqdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_OFFSET_VF_VERSION :
-			EQDMA_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	pasid_l =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	virtio_desc_base_l = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_m = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_h = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-		ctxt->virtio_dsc_base);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_FNC_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-				  ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->intr_aggr) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				ctxt->virtio_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				ctxt->pack_byp_out) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK, ctxt->irq_byp) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				virtio_desc_base_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				virtio_desc_base_m);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				virtio_desc_base_h);
-
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-				sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_FNC_MASK,
-				sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(SW_IND_CTXT_DATA_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		(uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK,
-				sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-				sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-				sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-				sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-				sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-				sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(SW_IND_CTXT_DATA_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr = (uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK,
-			sw_ctxt[4]));
-	ctxt->dis_intr_on_vf =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				sw_ctxt[4]));
-	ctxt->virtio_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				sw_ctxt[4]));
-	ctxt->pack_byp_out =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				sw_ctxt[4]));
-	ctxt->irq_byp =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK,
-				sw_ctxt[4]));
-	ctxt->host_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK,
-				sw_ctxt[4]));
-	pasid_l = FIELD_GET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, sw_ctxt[4]);
-
-	pasid_h = FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, sw_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK,
-			sw_ctxt[5]);
-	virtio_desc_base_l =
-		FIELD_GET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				sw_ctxt[5]);
-	virtio_desc_base_m =
-		FIELD_GET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				sw_ctxt[6]);
-
-	virtio_desc_base_h =
-		FIELD_GET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				sw_ctxt[6]);
-
-	ctxt->pasid =
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_L_MASK, pasid_l) |
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	ctxt->virtio_dsc_base =
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-					(uint64_t)virtio_desc_base_l) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-					(uint64_t)virtio_desc_base_m) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-					(uint64_t)virtio_desc_base_h);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK,
-				ctxt->num_pftch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				ctxt->var_desc) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-			pfetch_ctxt[0]);
-	ctxt->num_pftch = (uint16_t) FIELD_GET(
-			PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->var_desc = (uint8_t)
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr4_high_l, baddr4_high_h,
-			baddr4_low, pidx_l, pidx_h, pasid_l, pasid_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr4_high_l = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-			ctxt->bs_addr);
-	baddr4_high_h = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-			ctxt->bs_addr);
-	baddr4_low = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK, ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK, baddr4_high_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK, baddr4_high_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, ctxt->full_upd) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->int_aggr) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VIO_MASK, ctxt->vio) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK, ctxt->dir_c2h) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-				ctxt->pasid_en) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK,
-				baddr4_low) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK, ctxt->vio_eop) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK, ctxt->sh_cmpt);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr4_high_l, baddr4_high_h, baddr4_low,
-			pidx_l, pidx_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr4_high_l = FIELD_GET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK,
-			cmpt_ctxt[1]);
-
-	baddr4_high_h = FIELD_GET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK,
-			cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(CMPL_CTXT_DATA_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(CMPL_CTXT_DATA_W4_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, cmpt_ctxt[4]));
-	ctxt->dis_intr_on_vf = (uint8_t)
-		FIELD_GET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				cmpt_ctxt[4]);
-	ctxt->vio = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_VIO_MASK,
-			cmpt_ctxt[4]);
-	ctxt->dir_c2h = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK,
-			cmpt_ctxt[4]);
-	ctxt->host_id = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_HOST_ID_MASK,
-			cmpt_ctxt[4]);
-	pasid_l = FIELD_GET(CMPL_CTXT_DATA_W4_PASID_L_MASK, cmpt_ctxt[4]);
-
-	pasid_h = (uint32_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_H_MASK,
-			cmpt_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-			cmpt_ctxt[5]);
-	baddr4_low = (uint8_t)FIELD_GET(
-			CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK, cmpt_ctxt[5]);
-	ctxt->vio_eop = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK,
-			cmpt_ctxt[5]);
-	ctxt->sh_cmpt = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK,
-			cmpt_ctxt[5]);
-
-	ctxt->bs_addr =
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				(uint64_t)baddr4_high_l) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				(uint64_t)baddr4_high_h) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				(uint64_t)baddr4_low);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK,
-				(uint64_t)pasid_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[EQDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-					hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-					hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_EVT_PND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[EQDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[EQDMA_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_FMAP_CTXT_W1_QID_MAX_MASK, config->qmax);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[EQDMA_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, func_id,
-			EQDMA_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(EQDMA_FMAP_CTXT_W0_QID_MASK, fmap[0]);
-	config->qmax = FIELD_GET(EQDMA_FMAP_CTXT_W1_QID_MAX_MASK, fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return eqdma_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_fmap_context_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_fmap_context_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_fmap_context_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	pasid_l =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(INTR_CTXT_DATA_W2_AT_MASK, ctxt->at) |
-		FIELD_SET(INTR_CTXT_DATA_W2_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PASID_L_MASK, pasid_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_H_MASK, pasid_h) |
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(INTR_CTXT_DATA_W3_FUNC_MASK, ctxt->func_id);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			EQDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_AT_MASK, intr_ctxt[2]));
-	ctxt->host_id = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_HOST_ID_MASK,
-			intr_ctxt[2]));
-	pasid_l = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_PASID_L_MASK,
-			intr_ctxt[2]));
-
-	pasid_h = FIELD_GET(INTR_CTXT_DATA_W3_PASID_H_MASK, intr_ctxt[3]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(INTR_CTXT_DATA_W3_PASID_EN_MASK,
-			intr_ctxt[3]);
-
-	ctxt->func_id = (uint16_t)FIELD_GET(INTR_CTXT_DATA_W3_FUNC_MASK,
-			intr_ctxt[3]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < eqdma_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s", reg_info[i].name);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @context:	Queue Context
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_intr_context() - Function to get qdma interrupt context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @intr_ctx:	Interrupt Context
- * @ring_index: Ring index
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = eqdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = eqdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = eqdma_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = eqdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = eqdma_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_eqdma_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_user_bar() - Function to get the AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite bar number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  EQDMA_OFFSET_VF_USER_BAR :
-			EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: AXI Master Lite bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-	user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG0_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG1_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT0_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT1_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG2_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_err_dump_ctxt_info() - Dump the imp ctxt fields on HW error
- *
- * @dev_hndl: device handle
- * @first_err_qid: First Error QID
- * @en_st: ST Mode or MM Mode enabled
- * @c2h: C2H or H2C Mode
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_err_dump_ctxt_info(void *dev_hndl,
-		uint32_t first_err_qid_reg,
-		uint8_t en_st, uint8_t c2h)
-{
-	uint16_t first_err_qid	= 0;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-
-	first_err_qid = qdma_reg_read(dev_hndl, first_err_qid_reg);
-
-	eqdma_sw_context_read(dev_hndl, c2h, first_err_qid, &sw_ctxt);
-	eqdma_hw_context_read(dev_hndl, c2h, first_err_qid, &hw_ctxt);
-	eqdma_fill_sw_ctxt(&sw_ctxt);
-	eqdma_fill_hw_ctxt(&hw_ctxt);
-
-	if (sw_ctxt.pidx != hw_ctxt.cidx) {
-		qdma_log_info("\n%40s\n", "SW Context:");
-		/** SW Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_sw_ctxt_entries[0].name,
-					eqdma_sw_ctxt_entries[0].value,
-					eqdma_sw_ctxt_entries[0].value);
-		qdma_log_info("\n%40s\n", "HW Context:");
-		/*** HW Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_hw_ctxt_entries[0].name,
-					eqdma_hw_ctxt_entries[0].value,
-					eqdma_hw_ctxt_entries[0].value);
-	}
-
-	if (sw_ctxt.err != 0) {
-		/*** SW Context: ERR ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_sw_ctxt_entries[17].name,
-					eqdma_sw_ctxt_entries[17].value,
-					eqdma_sw_ctxt_entries[17].value);
-	}
-
-	/*** SW Context: ERR WB SENT***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[18].name,
-				eqdma_sw_ctxt_entries[18].value,
-				eqdma_sw_ctxt_entries[18].value);
-
-	/*** SW Context: IRQ REQ***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[19].name,
-				eqdma_sw_ctxt_entries[19].value,
-				eqdma_sw_ctxt_entries[19].value);
-
-	if (en_st && c2h) {
-		eqdma_cmpt_context_read(dev_hndl, first_err_qid, &cmpt_ctxt);
-		eqdma_fill_cmpt_ctxt(&cmpt_ctxt);
-
-		qdma_log_info("\n%40s\n", "CMPT Context:");
-
-		/*** CMPT Context: int_st ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[6].name,
-					eqdma_cmpt_ctxt_entries[6].value,
-					eqdma_cmpt_ctxt_entries[6].value);
-
-		/** CMPT Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[12].name,
-					eqdma_cmpt_ctxt_entries[12].value,
-					eqdma_cmpt_ctxt_entries[12].value);
-		/*** CMPT Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[13].name,
-					eqdma_cmpt_ctxt_entries[13].value,
-					eqdma_cmpt_ctxt_entries[13].value);
-
-		if (cmpt_ctxt.err != 0) {
-			/*** CMPT Context: ERR ***/
-			qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[15].name,
-					eqdma_cmpt_ctxt_entries[15].value,
-					eqdma_cmpt_ctxt_entries[15].value);
-		}
-	}
-}
-/*****************************************************************************/
-/**
- * eqdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_FIRST_ERR_QID_ADDR,
-		EQDMA_H2C_DBG_REG0_ADDR,
-		EQDMA_H2C_DBG_REG1_ADDR,
-		EQDMA_H2C_DBG_REG2_ADDR,
-		EQDMA_H2C_DBG_REG3_ADDR,
-		EQDMA_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-				EQDMA_H2C_FIRST_ERR_QID_ADDR, 1, 0);
-
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-
-	uint32_t st_c2h_err_reg_list[] = {
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FIRST_ERR_QID_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-				EQDMA_C2H_FIRST_ERR_QID_ADDR, 1, 1);
-
-}
-
-/*****************************************************************************/
-/**
- * eqdma_mm_c2h0_err_process() - Function to dump MM C2H
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_mm_c2h0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_c2h_err_reg_list[] = {
-		EQDMA_C2H_MM_STATUS_ADDR,
-		EQDMA_C2H_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_C2H_MM_ERR_CODE_ADDR,
-		EQDMA_C2H_MM_ERR_INFO_ADDR,
-		EQDMA_C2H_MM_DBG_ADDR
-	};
-	int mm_c2h_err_num_regs = sizeof(mm_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_c2h_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, mm_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_C2H_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_mm_h2c0_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_mm_h2c0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_h2c_err_reg_list[] = {
-		EQDMA_H2C_MM_STATUS_ADDR,
-		EQDMA_H2C_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_H2C_MM_ERR_CODE_ADDR,
-		EQDMA_H2C_MM_ERR_INFO_ADDR,
-		EQDMA_H2C_MM_DBG_ADDR
-	};
-	int mm_h2c_err_num_regs = sizeof(mm_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_h2c_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, mm_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_H2C_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *eqdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum eqdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return eqdma_err_info[(enum eqdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		EQDMA_DSC_ERR_POISON,
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_DBE_ERR_MI_H2C0_DAT,
-		EQDMA_MM_C2H_WR_SLR_ERR,
-		EQDMA_MM_H2C0_RD_HDR_POISON_ERR
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR);
-
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, EQDMA_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == EQDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				eqdma_err_info[bit].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			eqdma_err_info[bit].eqdma_hw_err_process(
-						dev_hndl);
-			for (idx = bit; idx < all_eqdma_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				eqdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						eqdma_hw_get_error_name(idx));
-			}
-			qdma_reg_write(dev_hndl,
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum eqdma_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == EQDMA_ERRS_ALL) {
-		for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_eqdma_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == EQDMA_ST_C2H_ERR_ALL ||
-					idx == EQDMA_ST_FATAL_ERR_ALL ||
-					idx == EQDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = eqdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				eqdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				eqdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= EQDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= EQDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(eqdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(eqdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_device_attributes() - Function to get the qdma device
- * attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs =
-			FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en = FIELD_GET(EQDMA_GLBL2_MAILBOX_EN_MASK,
-		reg_val);
-	dev_info->flr_present = FIELD_GET(EQDMA_GLBL2_FLR_PRESENT_MASK,
-		reg_val);
-	dev_info->mm_cmpt_en  = 0;
-	dev_info->debug_mode = FIELD_GET(EQDMA_GLBL2_DBG_MODE_EN_MASK,
-		reg_val);
-	dev_info->desc_eng_mode = FIELD_GET(EQDMA_GLBL2_DESC_ENG_MODE_MASK,
-		reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK, reg_val)) ? 1 : 0;
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		eqdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[reg_count].is_debug_reg == 1)
-			continue;
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *eqdma_config_regs = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = EQDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = EQDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = EQDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = EQDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &eqdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				EQDMA_C2H_TIMER_CNT_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  EQDMA_C2H_MM_CTL_ADDR :
-			EQDMA_H2C_MM_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en)
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *config_regs  = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-			/* If Debug Mode not enabled and the current register
-			 * is debug register, skip reading it.
-			 */
-			if (dev_cap.debug_mode == 0 &&
-					config_regs[j].is_debug_reg == 1)
-				continue;
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
deleted file mode 100755
index b2df4fe..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
+++ /dev/null
@@ -1,361 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __EQDMA_SOFT_ACCESS_H_
-#define __EQDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum eqdma_error_idx {
-	/* Descriptor errors */
-	EQDMA_DSC_ERR_POISON,
-	EQDMA_DSC_ERR_UR_CA,
-	EQDMA_DSC_ERR_BCNT,
-	EQDMA_DSC_ERR_PARAM,
-	EQDMA_DSC_ERR_ADDR,
-	EQDMA_DSC_ERR_TAG,
-	EQDMA_DSC_ERR_FLR,
-	EQDMA_DSC_ERR_TIMEOUT,
-	EQDMA_DSC_ERR_DAT_POISON,
-	EQDMA_DSC_ERR_FLR_CANCEL,
-	EQDMA_DSC_ERR_DMA,
-	EQDMA_DSC_ERR_DSC,
-	EQDMA_DSC_ERR_RQ_CANCEL,
-	EQDMA_DSC_ERR_DBE,
-	EQDMA_DSC_ERR_SBE,
-	EQDMA_DSC_ERR_PORT_ID,
-	EQDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	EQDMA_TRQ_ERR_CSR_UNMAPPED,
-	EQDMA_TRQ_ERR_VF_ACCESS,
-	EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-	EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-	EQDMA_TRQ_ERR_QID_RANGE,
-	EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-	EQDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-	EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-	EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-	EQDMA_ST_C2H_ERR_QID_MISMATCH,
-	EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-	EQDMA_ST_C2H_ERR_WRB_PORT_ID_ERR,
-	EQDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-	EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-	EQDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-	EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-	EQDMA_ST_H2C_ERR_SBE,
-	EQDMA_ST_H2C_ERR_DBE,
-	EQDMA_ST_H2C_ERR_PAR,
-	EQDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_SBE_1_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_ERR_MI_H2C0_DAT,
-	EQDMA_SBE_ERR_MI_H2C1_DAT,
-	EQDMA_SBE_ERR_MI_H2C2_DAT,
-	EQDMA_SBE_ERR_MI_H2C3_DAT,
-	EQDMA_SBE_ERR_MI_C2H0_DAT,
-	EQDMA_SBE_ERR_MI_C2H1_DAT,
-	EQDMA_SBE_ERR_MI_C2H2_DAT,
-	EQDMA_SBE_ERR_MI_C2H3_DAT,
-	EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_SBE_ERR_FUNC_MAP,
-	EQDMA_SBE_ERR_DSC_HW_CTXT,
-	EQDMA_SBE_ERR_DSC_CRD_RCV,
-	EQDMA_SBE_ERR_DSC_SW_CTXT,
-	EQDMA_SBE_ERR_DSC_CPLI,
-	EQDMA_SBE_ERR_DSC_CPLD,
-	EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_SBE_ERR_QID_FIFO_RAM,
-	EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_SBE_ERR_INT_CTXT_RAM,
-	EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_SBE_ERR_WRB_CTXT_RAM,
-	EQDMA_SBE_ERR_PFCH_LL_RAM,
-	EQDMA_SBE_ERR_PEND_FIFO_RAM,
-	EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_DBE_1_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_ERR_MI_H2C0_DAT,
-	EQDMA_DBE_ERR_MI_H2C1_DAT,
-	EQDMA_DBE_ERR_MI_H2C2_DAT,
-	EQDMA_DBE_ERR_MI_H2C3_DAT,
-	EQDMA_DBE_ERR_MI_C2H0_DAT,
-	EQDMA_DBE_ERR_MI_C2H1_DAT,
-	EQDMA_DBE_ERR_MI_C2H2_DAT,
-	EQDMA_DBE_ERR_MI_C2H3_DAT,
-	EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_DBE_ERR_FUNC_MAP,
-	EQDMA_DBE_ERR_DSC_HW_CTXT,
-	EQDMA_DBE_ERR_DSC_CRD_RCV,
-	EQDMA_DBE_ERR_DSC_SW_CTXT,
-	EQDMA_DBE_ERR_DSC_CPLI,
-	EQDMA_DBE_ERR_DSC_CPLD,
-	EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_DBE_ERR_QID_FIFO_RAM,
-	EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_DBE_ERR_INT_CTXT_RAM,
-	EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_DBE_ERR_WRB_CTXT_RAM,
-	EQDMA_DBE_ERR_PFCH_LL_RAM,
-	EQDMA_DBE_ERR_PEND_FIFO_RAM,
-	EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_DBE_ERR_ALL,
-
-	/* MM C2H Errors */
-	EQDMA_MM_C2H_WR_SLR_ERR,
-	EQDMA_MM_C2H_RD_SLR_ERR,
-	EQDMA_MM_C2H_WR_FLR_ERR,
-	EQDMA_MM_C2H_UR_ERR,
-	EQDMA_MM_C2H_WR_UC_RAM_ERR,
-	EQDMA_MM_C2H_ERR_ALL,
-
-	/* MM H2C Engine0 Errors */
-	EQDMA_MM_H2C0_RD_HDR_POISON_ERR,
-	EQDMA_MM_H2C0_RD_UR_CA_ERR,
-	EQDMA_MM_H2C0_RD_HDR_BYTE_ERR,
-	EQDMA_MM_H2C0_RD_HDR_PARAM_ERR,
-	EQDMA_MM_H2C0_RD_HDR_ADR_ERR,
-	EQDMA_MM_H2C0_RD_FLR_ERR,
-	EQDMA_MM_H2C0_RD_DAT_POISON_ERR,
-	EQDMA_MM_H2C0_RD_RQ_DIS_ERR,
-	EQDMA_MM_H2C0_WR_DEC_ERR,
-	EQDMA_MM_H2C0_WR_SLV_ERR,
-	EQDMA_MM_H2C0_ERR_ALL,
-
-	EQDMA_ERRS_ALL
-};
-
-struct eqdma_hw_err_info {
-	enum eqdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*eqdma_hw_err_process)(void *dev_hndl);
-};
-
-/* In QDMA_GLBL2_MISC_CAP(0x134) register,
- * Bits [23:20] gives QDMA IP version.
- * 0: QDMA3.1, 1: QDMA4.0, 2: QDMA5.0
- */
-#define EQDMA_IP_VERSION_4                1
-#define EQDMA_IP_VERSION_5                2
-
-#define EQDMA_OFFSET_VF_VERSION           0x5014
-#define EQDMA_OFFSET_VF_USER_BAR		  0x5018
-
-#define EQDMA_OFFSET_MBOX_BASE_PF         0x22400
-#define EQDMA_OFFSET_MBOX_BASE_VF         0x5000
-
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK             GENMASK_ULL(63, 38)
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK             GENMASK_ULL(37, 6)
-#define EQDMA_COMPL_CTXT_BADDR_LOW_MASK                GENMASK_ULL(5, 2)
-
-int eqdma_init_ctxt_memory(void *dev_hndl);
-
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int eqdma_get_ip_version(void *dev_hndl, uint8_t is_vf,
-			uint32_t *ip_version);
-
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_sw_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type);
-
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_prefetch_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-			struct qdma_indirect_intr_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-uint32_t eqdma_reg_dump_buf_len(void);
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int eqdma_hw_error_process(void *dev_hndl);
-const char *eqdma_hw_get_error_name(uint32_t err_idx);
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int eqdma_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int eqdma_set_default_global_csr(void *dev_hndl);
-
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t eqdma_get_config_num_regs(void);
-
-struct xreg_info *eqdma_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __EQDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
deleted file mode 100755
index 4f326ea..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
+++ /dev/null
@@ -1,1540 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __EQDMA_SOFT_REG_H
-#define __EQDMA_SOFT_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t eqdma_config_num_regs_get(void);
-struct xreg_info *eqdma_config_regs_get(void);
-#define EQDMA_CFG_BLK_IDENTIFIER_ADDR                      0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR               0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK                GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(2, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR          0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK           GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_SYSTEM_ID_ADDR                       0x10
-#define CFG_BLK_SYSTEM_ID_RSVD_1_MASK                      GENMASK(31, 17)
-#define CFG_BLK_SYSTEM_ID_INST_TYPE_MASK                   BIT(16)
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define EQDMA_CFG_BLK_MSIX_ENABLE_ADDR                     0x014
-#define CFG_BLK_MSIX_ENABLE_MASK                          GENMASK(31, 0)
-#define EQDMA_CFG_PCIE_DATA_WIDTH_ADDR                     0x18
-#define CFG_PCIE_DATA_WIDTH_RSVD_1_MASK                    GENMASK(31, 3)
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define EQDMA_CFG_PCIE_CTL_ADDR                            0x1C
-#define CFG_PCIE_CTL_RSVD_1_MASK                           GENMASK(31, 18)
-#define CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK                   GENMASK(17, 16)
-#define CFG_PCIE_CTL_RSVD_2_MASK                           GENMASK(15, 2)
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define EQDMA_CFG_BLK_MSI_ENABLE_ADDR                      0x20
-#define CFG_BLK_MSI_ENABLE_MASK                           GENMASK(31, 0)
-#define EQDMA_CFG_AXI_USER_MAX_PLD_SIZE_ADDR               0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define EQDMA_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR          0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_MISC_CTL_ADDR                        0x4C
-#define CFG_BLK_MISC_CTL_RSVD_1_MASK                       GENMASK(31, 24)
-#define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK                   BIT(23)
-#define CFG_BLK_MISC_CTL_RSVD_2_MASK                       BIT(22)
-#define CFG_BLK_MISC_CTL_AXI_WBK_MASK                      BIT(21)
-#define CFG_BLK_MISC_CTL_AXI_DSC_MASK                      BIT(20)
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RSVD_3_MASK                       GENMASK(7, 5)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define EQDMA_CFG_PL_CRED_CTL_ADDR                         0x68
-#define CFG_PL_CRED_CTL_RSVD_1_MASK                        GENMASK(31, 5)
-#define CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK                 BIT(4)
-#define CFG_PL_CRED_CTL_RSVD_2_MASK                        GENMASK(3, 1)
-#define CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK                BIT(0)
-#define EQDMA_CFG_BLK_SCRATCH_ADDR                         0x80
-#define CFG_BLK_SCRATCH_MASK                              GENMASK(31, 0)
-#define EQDMA_CFG_GIC_ADDR                                 0xA0
-#define CFG_GIC_RSVD_1_MASK                                GENMASK(31, 1)
-#define CFG_GIC_GIC_IRQ_MASK                               BIT(0)
-#define EQDMA_RAM_SBE_MSK_1_A_ADDR                         0xE0
-#define RAM_SBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_1_A_ADDR                         0xE4
-#define RAM_SBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_DBE_MSK_1_A_ADDR                         0xE8
-#define RAM_DBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_1_A_ADDR                         0xEC
-#define RAM_DBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_SBE_MSK_A_ADDR                           0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_A_ADDR                           0xF4
-#define RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_SBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_SBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_SBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_SBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_SBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_SBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_RAM_DBE_MSK_A_ADDR                           0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_A_ADDR                           0xFC
-#define RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_DBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_DBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_DBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_DBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_DBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_DBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_GLBL2_IDENTIFIER_ADDR                        0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define EQDMA_GLBL2_CHANNEL_INST_ADDR                      0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_MDMA_ADDR                      0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_STRM_ADDR                      0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_CAP_ADDR                       0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define EQDMA_GLBL2_CHANNEL_PASID_CAP_ADDR                 0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define EQDMA_GLBL2_SYSTEM_ID_ADDR                         0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define EQDMA_GLBL2_MISC_CAP_ADDR                          0x134
-#define GLBL2_MISC_CAP_MASK                               GENMASK(31, 0)
-#define EQDMA_GLBL2_RRQ_BRG_THROT_ADDR                     0x158
-#define GLBL2_RRQ_BRG_THROT_REQ_EN_MASK                    BIT(31)
-#define GLBL2_RRQ_BRG_THROT_REQ_MASK                       GENMASK(30, 19)
-#define GLBL2_RRQ_BRG_THROT_DAT_EN_MASK                    BIT(18)
-#define GLBL2_RRQ_BRG_THROT_DAT_MASK                       GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR                    0x15C
-#define GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK                   BIT(31)
-#define GLBL2_RRQ_PCIE_THROT_REQ_MASK                      GENMASK(30, 19)
-#define GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK                   BIT(18)
-#define GLBL2_RRQ_PCIE_THROT_DAT_MASK                      GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR                   0x160
-#define GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK                  BIT(31)
-#define GLBL2_RRQ_AXIMM_THROT_REQ_MASK                     GENMASK(30, 19)
-#define GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK                  BIT(18)
-#define GLBL2_RRQ_AXIMM_THROT_DAT_MASK                     GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_LAT0_ADDR                     0x164
-#define GLBL2_RRQ_PCIE_LAT0_MAX_MASK                      GENMASK(31, 16)
-#define GLBL2_RRQ_PCIE_LAT0_MIN_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_LAT1_ADDR                     0x168
-#define GLBL2_RRQ_PCIE_LAT1_RSVD_MASK                      GENMASK(31, 17)
-#define GLBL2_RRQ_PCIE_LAT1_OVFL_MASK                     BIT(16)
-#define GLBL2_RRQ_PCIE_LAT1_AVG_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_LAT0_ADDR                    0x16C
-#define GLBL2_RRQ_AXIMM_LAT0_MAX_MASK                     GENMASK(31, 16)
-#define GLBL2_RRQ_AXIMM_LAT0_MIN_MASK                     GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_LAT1_ADDR                    0x170
-#define GLBL2_RRQ_AXIMM_LAT1_RSVD_MASK                     GENMASK(31, 17)
-#define GLBL2_RRQ_AXIMM_LAT1_OVFL_MASK                    BIT(16)
-#define GLBL2_RRQ_AXIMM_LAT1_AVG_MASK                     GENMASK(15, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ0_ADDR                      0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 9)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(8, 2)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(1, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ1_ADDR                      0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 21)
-#define GLBL2_PCIE_RQ1_TAG_FL_MASK                     GENMASK(20, 19)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(18)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(17)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(16)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(15)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(14, 12)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK                BIT(8)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(7)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(6)
-#define GLBL2_PCIE_RQ1_RREQ0_RDY_MASK                  BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RDY_MASK                  BIT(2)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(1)
-#define GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK              BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR0_ADDR                     0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR1_ADDR                     0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD0_ADDR                     0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(16)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(15, 13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD1_ADDR                     0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_FAB0_ADDR                          0x1D0
-#define GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK            BIT(31)
-#define GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK            BIT(30)
-#define GLBL2_FAB0_H2C_SEG_IN_VLD_MASK                 BIT(29)
-#define GLBL2_FAB0_H2C_SEG_IN_RDY_MASK                 BIT(28)
-#define GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK                GENMASK(27, 24)
-#define GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK                BIT(23)
-#define GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK              GENMASK(22, 16)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK             BIT(15)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK            BIT(14)
-#define GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK              GENMASK(13, 10)
-#define GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK              BIT(9)
-#define GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK              BIT(8)
-#define GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK              BIT(7)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK         BIT(6)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK         BIT(5)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK        BIT(4)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK       BIT(3)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK              BIT(2)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK             BIT(1)
-#define GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK            BIT(0)
-#define EQDMA_GLBL2_DBG_FAB1_ADDR                          0x1D4
-#define GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK              GENMASK(31, 25)
-#define GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK           GENMASK(24, 18)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK             BIT(17)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK            BIT(16)
-#define GLBL2_FAB1_RSVD_1_MASK                         GENMASK(15, 13)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK          BIT(12)
-#define GLBL2_FAB1_RSVD_2_MASK                         GENMASK(11, 9)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK         BIT(8)
-#define GLBL2_FAB1_RSVD_3_MASK                         GENMASK(7, 5)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK          BIT(4)
-#define GLBL2_FAB1_RSVD_4_MASK                         GENMASK(3, 1)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK         BIT(0)
-#define EQDMA_GLBL2_DBG_MATCH_SEL_ADDR                     0x1F4
-#define GLBL2_MATCH_SEL_RSV_MASK                       GENMASK(31, 18)
-#define GLBL2_MATCH_SEL_CSR_SEL_MASK                   GENMASK(17, 13)
-#define GLBL2_MATCH_SEL_CSR_EN_MASK                    BIT(12)
-#define GLBL2_MATCH_SEL_ROTATE1_MASK                   GENMASK(11, 10)
-#define GLBL2_MATCH_SEL_ROTATE0_MASK                   GENMASK(9, 8)
-#define GLBL2_MATCH_SEL_SEL_MASK                       GENMASK(7, 0)
-#define EQDMA_GLBL2_DBG_MATCH_MSK_ADDR                     0x1F8
-#define GLBL2_MATCH_MSK_MASK                      GENMASK(31, 0)
-#define EQDMA_GLBL2_DBG_MATCH_PAT_ADDR                     0x1FC
-#define GLBL2_MATCH_PAT_PATTERN_MASK                   GENMASK(31, 0)
-#define EQDMA_GLBL_RNG_SZ_1_ADDR                           0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_2_ADDR                           0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_3_ADDR                           0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_4_ADDR                           0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_5_ADDR                           0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_6_ADDR                           0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_7_ADDR                           0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_8_ADDR                           0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_9_ADDR                           0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_A_ADDR                           0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_B_ADDR                           0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_C_ADDR                           0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_D_ADDR                           0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_E_ADDR                           0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_F_ADDR                           0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_10_ADDR                          0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL_ERR_STAT_ADDR                           0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 18)
-#define GLBL_ERR_STAT_ERR_FAB_MASK                         BIT(17)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(16)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(15)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                GENMASK(14, 9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define EQDMA_GLBL_ERR_MASK_ADDR                           0x24C
-#define GLBL_ERR_MASK                            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CFG_ADDR                            0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK                  GENMASK(29, 20)
-#define GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK                  GENMASK(19, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_STS_ADDR                        0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 26)
-#define GLBL_DSC_ERR_STS_PORT_ID_MASK                      BIT(25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(8)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(6)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(5)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(4)
-#define GLBL_DSC_ERR_STS_BCNT_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(1)
-#define EQDMA_GLBL_DSC_ERR_MSK_ADDR                        0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG0_ADDR                       0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(30)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(29, 13)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG1_ADDR                       0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_ERR_LOG1_CIDX_MASK                        GENMASK(27, 12)
-#define GLBL_DSC_ERR_LOG1_RSVD_2_MASK                      GENMASK(11, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define EQDMA_GLBL_TRQ_ERR_STS_ADDR                        0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 8)
-#define GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK             BIT(7)
-#define GLBL_TRQ_ERR_STS_RSVD_2_MASK                       BIT(6)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(5)
-#define GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK                BIT(4)
-#define GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK              BIT(3)
-#define GLBL_TRQ_ERR_STS_RSVD_3_MASK                       BIT(2)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(1)
-#define GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK                 BIT(0)
-#define EQDMA_GLBL_TRQ_ERR_MSK_ADDR                        0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_TRQ_ERR_LOG_ADDR                        0x26C
-#define GLBL_TRQ_ERR_LOG_SRC_MASK                          BIT(31)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(30, 27)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(26, 17)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(16, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT0_ADDR                       0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT1_ADDR                       0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define EQDMA_GLBL_DSC_DBG_CTL_ADDR                        0x278
-#define GLBL_DSC_CTL_RSVD_1_MASK                       GENMASK(31, 16)
-#define GLBL_DSC_CTL_LAT_QID_MASK                  GENMASK(15, 4)
-#define GLBL_DSC_CTL_DSC_ENG_LAT_CLR_MASK              BIT(3)
-#define GLBL_DSC_CTL_SELECT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG2_ADDR                       0x27c
-#define GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK                    GENMASK(31, 16)
-#define GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK                    GENMASK(15, 0)
-#define EQDMA_GLBL_GLBL_INTERRUPT_CFG_ADDR                 0x2c4
-#define GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK     BIT(1)
-#define GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK          BIT(0)
-#define EQDMA_GLBL_VCH_HOST_PROFILE_ADDR                   0x2c8
-#define GLBL_VCH_HOST_PROFILE_RSVD_1_MASK                  GENMASK(31, 28)
-#define GLBL_VCH_HOST_PROFILE_2C_MM_MASK                   GENMASK(27, 24)
-#define GLBL_VCH_HOST_PROFILE_2C_ST_MASK                   GENMASK(23, 20)
-#define GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK                 GENMASK(19, 16)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK             GENMASK(15, 12)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK            GENMASK(11, 8)
-#define GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK                GENMASK(7, 4)
-#define GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK             GENMASK(3, 0)
-#define EQDMA_GLBL_BRIDGE_HOST_PROFILE_ADDR                0x308
-#define GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK               GENMASK(31, 4)
-#define GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK                GENMASK(3, 0)
-#define EQDMA_AXIMM_IRQ_DEST_ADDR_ADDR                     0x30c
-#define AXIMM_IRQ_DEST_ADDR_ADDR_MASK                      GENMASK(31, 0)
-#define EQDMA_FAB_ERR_LOG_ADDR                             0x314
-#define FAB_ERR_LOG_RSVD_1_MASK                            GENMASK(31, 7)
-#define FAB_ERR_LOG_SRC_MASK                               GENMASK(6, 0)
-#define EQDMA_GLBL_REQ_ERR_STS_ADDR                        0x318
-#define GLBL_REQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 11)
-#define GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK               BIT(10)
-#define GLBL_REQ_ERR_STS_RC_PRTY_MASK                      BIT(9)
-#define GLBL_REQ_ERR_STS_RC_FLR_MASK                       BIT(8)
-#define GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK                   BIT(7)
-#define GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK                  BIT(6)
-#define GLBL_REQ_ERR_STS_RC_INV_TAG_MASK                   BIT(5)
-#define GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK         BIT(4)
-#define GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK        BIT(3)
-#define GLBL_REQ_ERR_STS_RC_NO_DATA_MASK                   BIT(2)
-#define GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK                 BIT(1)
-#define GLBL_REQ_ERR_STS_RC_POISONED_MASK                  BIT(0)
-#define EQDMA_GLBL_REQ_ERR_MSK_ADDR                        0x31C
-#define GLBL_REQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_DBG_LAT0_A_ADDR                     0x320
-#define GLBL_DSC_LAT0_A_LAT_MAX_MASK                   GENMASK(31, 16)
-#define GLBL_DSC_LAT0_A_LAT_MIN_MASK                   GENMASK(15, 0)
-#define EQDMA_GLBL_DSC_DBG_LAT1_A_ADDR                     0x324
-#define GLBL_DSC_LAT1_A_RSVD_MASK                      GENMASK(31, 17)
-#define GLBL_DSC_LAT1_A_LAT_OVF_MASK                   BIT(16)
-#define GLBL_DSC_LAT1_A_LAT_AVG_MASK                   GENMASK(15, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR0_A_ADDR                     0x328
-#define GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR1_A_ADDR                     0x32C
-#define GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR2_A_ADDR                     0x330
-#define GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR3_A_ADDR                     0x334
-#define GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR0_A_ADDR                 0x338
-#define GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR1_A_ADDR                 0x33C
-#define GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR2_A_ADDR                 0x340
-#define GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR3_A_ADDR                 0x344
-#define GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR0_A_ADDR                 0x348
-#define GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR1_A_ADDR                 0x34C
-#define GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR2_A_ADDR                 0x350
-#define GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR3_A_ADDR                 0x354
-#define GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR0_A_ADDR                 0x358
-#define GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR1_A_ADDR                 0x35C
-#define GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR2_A_ADDR                 0x360
-#define GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR3_A_ADDR                 0x364
-#define GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_T_ADDR                                       0x368
-#define T_USER_CTR_MAX_MASK                                GENMASK(31, 0)
-#define EQDMA_GLBL_PERF_CNTR_CTL_A1_ADDR                   0x36C
-#define GLBL_PERF_CNTR_CTL_A1_RSVD_MASK                    GENMASK(31, 18)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR_MASK          BIT(17)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ_MASK           BIT(16)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX_MASK            GENMASK(15, 0)
-#define EQDMA_GLBL_FREE_CNT_A0_ADDR                        0x370
-#define GLBL_FREE_CNT_A0_S_MASK                            GENMASK(31, 0)
-#define EQDMA_GLBL_FREE_CNT_A1_ADDR                        0x374
-#define GLBL_FREE_CNT_A1_RSVD_MASK                         GENMASK(31, 16)
-#define GLBL_FREE_CNT_A1_S_MASK                            GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A0_ADDR                    0x378
-#define GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A1_ADDR                    0x37C
-#define GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A2_ADDR                    0x380
-#define GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A3_ADDR                    0x384
-#define GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A4_ADDR                    0x388
-#define GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A5_ADDR                    0x38C
-#define GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A0_ADDR                    0x390
-#define GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A1_ADDR                    0x394
-#define GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A2_ADDR                    0x398
-#define GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A3_ADDR                    0x39C
-#define GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A4_ADDR                    0x3A0
-#define GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A5_ADDR                    0x3A4
-#define GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A0_ADDR                    0x3A8
-#define GLBL_M_AXI_WR_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A1_ADDR                    0x3AC
-#define GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_WR_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A2_ADDR                    0x3B0
-#define GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A3_ADDR                    0x3B4
-#define GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A4_ADDR                    0x3B8
-#define GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A5_ADDR                    0x3BC
-#define GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A0_ADDR                    0x3C0
-#define GLBL_M_AXI_RD_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A1_ADDR                    0x3C4
-#define GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_RD_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A2_ADDR                    0x3C8
-#define GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A3_ADDR                    0x3CC
-#define GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A4_ADDR                    0x3D0
-#define GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A5_ADDR                    0x3D4
-#define GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A0_ADDR                   0x3D8
-#define GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A1_ADDR                   0x3DC
-#define GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A2_ADDR                   0x3E0
-#define GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A3_ADDR                   0x3E4
-#define GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A4_ADDR                   0x3E8
-#define GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A5_ADDR                   0x3EC
-#define GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A0_ADDR                   0x3F0
-#define GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A1_ADDR                   0x3F4
-#define GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A2_ADDR                   0x3F8
-#define GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A3_ADDR                   0x3FC
-#define GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A4_ADDR                   0x400
-#define GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A5_ADDR                   0x404
-#define GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A0_ADDR                    0x408
-#define GLBL_S_AXI_WR_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A1_ADDR                    0x40C
-#define GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_WR_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A2_ADDR                    0x410
-#define GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A3_ADDR                    0x414
-#define GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A4_ADDR                    0x418
-#define GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A5_ADDR                    0x41C
-#define GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A0_ADDR                    0x420
-#define GLBL_S_AXI_RD_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A1_ADDR                    0x424
-#define GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_RD_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A2_ADDR                    0x428
-#define GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A3_ADDR                    0x42C
-#define GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A4_ADDR                    0x430
-#define GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A5_ADDR                    0x434
-#define GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A0_ADDR                  0x438
-#define GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A1_ADDR                  0x43C
-#define GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS_MASK              GENMASK(15, 0)
-#define GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A2_ADDR                  0x440
-#define GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A3_ADDR                  0x444
-#define GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A4_ADDR                  0x448
-#define GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS_MASK              GENMASK(15, 0)
-#define GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS_MASK              GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A5_ADDR                  0x44C
-#define GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_IND_CTXT_DATA_ADDR                           0x804
-#define IND_CTXT_DATA_DATA_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_MASK_ADDR                           0x824
-#define IND_CTXT_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_CMD_ADDR                            0x844
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 20)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(19, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SEL_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define EQDMA_C2H_TIMER_CNT_ADDR                           0xA00
-#define C2H_TIMER_CNT_RSVD_1_MASK                          GENMASK(31, 16)
-#define C2H_TIMER_CNT_MASK                                GENMASK(15, 0)
-#define EQDMA_C2H_CNT_TH_ADDR                              0xA40
-#define C2H_CNT_TH_RSVD_1_MASK                             GENMASK(31, 16)
-#define C2H_CNT_TH_THESHOLD_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_1_ADDR                          0xA80
-#define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK                    GENMASK(31, 16)
-#define C2H_PFCH_CFG_1_QCNT_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_2_ADDR                          0xA84
-#define C2H_PFCH_CFG_2_FENCE_MASK                          BIT(31)
-#define C2H_PFCH_CFG_2_RSVD_MASK                           GENMASK(30, 29)
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK               BIT(28)
-#define C2H_PFCH_CFG_2_LL_SZ_TH_MASK                       GENMASK(27, 12)
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK                   GENMASK(11, 6)
-#define C2H_PFCH_CFG_2_NUM_MASK                            GENMASK(5, 0)
-#define EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR            0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR            0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR          0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR                   0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ACCEPTED_ADDR              0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_CMP_ADDR                   0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WRQ_OUT_ADDR                        0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WPL_REN_ACCEPTED_ADDR               0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WRQ_LEN_ADDR                  0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WPL_LEN_ADDR                  0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_BUF_SZ_ADDR                              0xAB0
-#define C2H_BUF_SZ_IZE_MASK                                GENMASK(31, 0)
-#define EQDMA_C2H_ERR_STAT_ADDR                            0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 21)
-#define C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK                  BIT(20)
-#define C2H_ERR_STAT_HDR_PAR_ERR_MASK                      BIT(19)
-#define C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK                  BIT(18)
-#define C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK                  BIT(17)
-#define C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK                 BIT(16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK                  BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define EQDMA_C2H_ERR_MASK_ADDR                            0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_STAT_ADDR                      0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 21)
-#define C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK            BIT(20)
-#define C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK     BIT(19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK         BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_RESERVED2_MASK                  BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RESERVED1_MASK                  BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define EQDMA_C2H_FATAL_ERR_MASK_ADDR                      0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_ENABLE_ADDR                    0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define EQDMA_GLBL_ERR_INT_ADDR                            0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_ERR_INT_HOST_ID_MASK                          GENMASK(29, 26)
-#define GLBL_ERR_INT_DIS_INTR_ON_VF_MASK                   BIT(25)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(24)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(23)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(22, 12)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_CFG_ADDR                            0xB08
-#define C2H_PFCH_CFG_EVTFL_TH_MASK                         GENMASK(31, 16)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(15, 0)
-#define EQDMA_C2H_INT_TIMER_TICK_ADDR                      0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR         0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR          0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_REQ_ADDR                       0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR                  0xB1C
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK      BIT(31)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK      BIT(30)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK      GENMASK(29, 27)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK      GENMASK(26, 24)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK        BIT(23)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK        BIT(22)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK       BIT(21)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK       GENMASK(20, 9)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK        BIT(8)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR                  0xB20
-#define C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE_MASK   GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD_MASK  GENMASK(29, 29)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR                  0xB24
-#define C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE_MASK   GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1_MASK GENMASK(29, 29)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1_MASK     GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1_MASK     GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1_MASK      GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR                  0xB28
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT_MASK BIT(31)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER_MASK BIT(30)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ_MASK BIT(29)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID_MASK   GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT_MASK    GENMASK(16, 12)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK       BIT(11)
-#define C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK       BIT(10)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(8)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(7)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(6)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK   BIT(4)
-#define C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK   BIT(3)
-#define C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_MASK      BIT(2)
-#define C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_C2H_DBG_PFCH_ERR_CTXT_ADDR                   0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define EQDMA_C2H_FIRST_ERR_QID_ADDR                       0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_RSVD_MASK                        GENMASK(15, 13)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_STAT_NUM_WRB_IN_ADDR                         0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_OUT_ADDR                        0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_DRP_ADDR                        0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_STAT_DESC_OUT_ADDR                  0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_DSC_CRDT_SENT_ADDR                  0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_FCH_DSC_RCVD_ADDR                   0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define EQDMA_STAT_NUM_BYP_DSC_RCVD_ADDR                   0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define EQDMA_C2H_WRB_COAL_CFG_ADDR                        0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define EQDMA_C2H_INTR_H2C_REQ_ADDR                        0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_MM_REQ_ADDR                     0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_ERR_INT_REQ_ADDR                    0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_REQ_ADDR                     0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR        0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR       0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR    0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR      0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_ACK_ADDR                0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR               0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_NO_MSIX_ADDR                 0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR              0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_WR_CMP_ADDR                         0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_4_ADDR                  0xB88
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1_MASK BIT(31)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1_MASK BIT(30)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1_MASK BIT(29)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1_MASK  GENMASK(16, 12)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1_MASK     BIT(11)
-#define C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1_MASK     BIT(10)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1_MASK  BIT(9)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1_MASK BIT(8)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1_MASK BIT(7)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1_MASK BIT(6)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1_MASK    BIT(2)
-#define C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1_MASK      BIT(1)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1_MASK   BIT(0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_5_ADDR                  0xB8C
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY_MASK        BIT(31)
-#define C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK         BIT(30)
-#define C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK        GENMASK(29, 24)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK       GENMASK(23, 22)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK  GENMASK(21, 6)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK BIT(2)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK BIT(1)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK BIT(0)
-#define EQDMA_C2H_DBG_PFCH_QID_ADDR                        0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(15)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(14, 12)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(11, 0)
-#define EQDMA_C2H_DBG_PFCH_ADDR                            0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_INT_DBG_ADDR                             0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define EQDMA_C2H_STAT_IMM_ACCEPTED_ADDR                   0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_STAT_MARKER_ACCEPTED_ADDR                0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR           0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define EQDMA_C2H_PLD_FIFO_CRDT_CNT_ADDR                   0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_REQ_ADDR                        0xBAC
-#define C2H_INTR_DYN_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_DYN_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_MISC_ADDR                       0xBB0
-#define C2H_INTR_DYN_MISC_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_INTR_DYN_MISC_CNT_MASK                         GENMASK(17, 0)
-#define EQDMA_C2H_DROP_LEN_MISMATCH_ADDR                   0xBB4
-#define C2H_DROP_LEN_MISMATCH_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_LEN_MISMATCH_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_DESC_RSP_LEN_ADDR                   0xBB8
-#define C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_DESC_RSP_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_QID_FIFO_LEN_ADDR                   0xBBC
-#define C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_QID_FIFO_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_ADDR                        0xBC0
-#define C2H_DROP_PLD_CNT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_CMPT_FORMAT_0_ADDR                       0xBC4
-#define C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_0_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_1_ADDR                       0xBC8
-#define C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_1_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_2_ADDR                       0xBCC
-#define C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_2_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_3_ADDR                       0xBD0
-#define C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_3_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_4_ADDR                       0xBD4
-#define C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_4_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_5_ADDR                       0xBD8
-#define C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_5_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_6_ADDR                       0xBDC
-#define C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_6_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR                    0xBE0
-#define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK                GENMASK(23, 16)
-#define C2H_PFCH_CACHE_DEPTH_MASK                         GENMASK(7, 0)
-#define EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR                  0xBE4
-#define C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK                 GENMASK(31, 8)
-#define C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK                 GENMASK(7, 0)
-#define EQDMA_C2H_PFCH_CRDT_ADDR                           0xBE8
-#define C2H_PFCH_CRDT_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_PFCH_CRDT_RSVD_2_MASK                          BIT(0)
-#define EQDMA_C2H_STAT_HAS_CMPT_ACCEPTED_ADDR              0xBEC
-#define C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_HAS_PLD_ACCEPTED_ADDR               0xBF0
-#define C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_PLD_PKT_ID_ADDR                          0xBF4
-#define C2H_PLD_PKT_ID_CMPT_WAIT_MASK                      GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_DATA_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PLD_PKT_ID_1_ADDR                        0xBF8
-#define C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK                    GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_1_DATA_MASK                         GENMASK(15, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_1_ADDR                      0xBFC
-#define C2H_DROP_PLD_CNT_1_RSVD_1_MASK                     GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_1_CNT_MASK                        GENMASK(17, 0)
-#define EQDMA_H2C_ERR_STAT_ADDR                            0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 6)
-#define H2C_ERR_STAT_PAR_ERR_MASK                          BIT(5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define EQDMA_H2C_ERR_MASK_ADDR                            0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_H2C_FIRST_ERR_QID_ADDR                       0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 13)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_H2C_DBG_REG0_ADDR                            0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG1_ADDR                            0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG2_ADDR                            0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG3_ADDR                            0xE18
-#define H2C_REG3_RSVD_1_MASK                           BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define EQDMA_H2C_DBG_REG4_ADDR                            0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define EQDMA_H2C_FATAL_ERR_EN_ADDR                        0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define EQDMA_H2C_REQ_THROT_PCIE_ADDR                      0xE24
-#define H2C_REQ_THROT_PCIE_EN_REQ_MASK                     BIT(31)
-#define H2C_REQ_THROT_PCIE_MASK                           GENMASK(30, 19)
-#define H2C_REQ_THROT_PCIE_EN_DATA_MASK                    BIT(18)
-#define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK                GENMASK(17, 0)
-#define EQDMA_H2C_ALN_DBG_REG0_ADDR                        0xE28
-#define H2C_ALN_REG0_NUM_PKT_SENT_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_REQ_THROT_AXIMM_ADDR                     0xE2C
-#define H2C_REQ_THROT_AXIMM_EN_REQ_MASK                    BIT(31)
-#define H2C_REQ_THROT_AXIMM_MASK                          GENMASK(30, 19)
-#define H2C_REQ_THROT_AXIMM_EN_DATA_MASK                   BIT(18)
-#define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK               GENMASK(17, 0)
-#define EQDMA_C2H_MM_CTL_ADDR                              0x1004
-#define C2H_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define C2H_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define C2H_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define C2H_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_C2H_MM_STATUS_ADDR                           0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_C2H_MM_CMPL_DESC_CNT_ADDR                    0x1048
-#define C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK         BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK         GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define EQDMA_C2H_MM_ERR_CODE_ADDR                         0x1058
-#define C2H_MM_ERR_CODE_RESERVED1_MASK                     GENMASK(31, 28)
-#define C2H_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define C2H_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define C2H_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_C2H_MM_ERR_INFO_ADDR                         0x105C
-#define C2H_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define C2H_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_C2H_MM_PERF_MON_CTL_ADDR                     0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR              0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR              0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT0_ADDR               0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT1_ADDR               0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_C2H_MM_DBG_ADDR                              0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_H2C_MM_CTL_ADDR                              0x1204
-#define H2C_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define H2C_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define H2C_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define H2C_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_H2C_MM_STATUS_ADDR                           0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_H2C_MM_CMPL_DESC_CNT_ADDR                    0x1248
-#define H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK         GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK         GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK         GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK         GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK         GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK         BIT(0)
-#define EQDMA_H2C_MM_ERR_CODE_ADDR                         0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 28)
-#define H2C_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define H2C_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define H2C_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_H2C_MM_ERR_INFO_ADDR                         0x125C
-#define H2C_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define H2C_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_H2C_MM_PERF_MON_CTL_ADDR                     0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR              0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR              0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT0_ADDR               0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT1_ADDR               0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_H2C_MM_DBG_ADDR                              0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_H2C_MM_DATA_THROTTLE_ADDR                    0x12EC
-#define H2C_MM_DATA_THROTTLE_RSVD_1_MASK                   GENMASK(31, 17)
-#define H2C_MM_DATA_THROTTLE_DAT_EN_MASK                   BIT(16)
-#define H2C_MM_DATA_THROTTLE_DAT_MASK                      GENMASK(15, 0)
-#define EQDMA_C2H_CRDT_COAL_CFG_1_ADDR                     0x1400
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK               GENMASK(17, 10)
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK                  GENMASK(9, 0)
-#define EQDMA_C2H_CRDT_COAL_CFG_2_ADDR                     0x1404
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK                    GENMASK(31, 24)
-#define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK                   GENMASK(23, 16)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK                 GENMASK(15, 11)
-#define C2H_CRDT_COAL_CFG_2_NT_TH_MASK                     GENMASK(10, 0)
-#define EQDMA_C2H_PFCH_BYP_QID_ADDR                        0x1408
-#define C2H_PFCH_BYP_QID_RSVD_1_MASK                       GENMASK(31, 12)
-#define C2H_PFCH_BYP_QID_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_BYP_TAG_ADDR                        0x140C
-#define C2H_PFCH_BYP_TAG_RSVD_1_MASK                       GENMASK(31, 20)
-#define C2H_PFCH_BYP_TAG_BYP_QID_MASK                      GENMASK(19, 8)
-#define C2H_PFCH_BYP_TAG_RSVD_2_MASK                       BIT(7)
-#define C2H_PFCH_BYP_TAG_MASK                             GENMASK(6, 0)
-#define EQDMA_C2H_WATER_MARK_ADDR                          0x1410
-#define C2H_WATER_MARK_HIGH_WM_MASK                        GENMASK(31, 16)
-#define C2H_WATER_MARK_LOW_WM_MASK                         GENMASK(15, 0)
-#define EQDMA_C2H_NOTIFY_EMPTY_ADDR                        0x1450
-#define C2H_NOTIFY_EMPTY_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_NOTIFY_EMPTY_NOE_MASK                          GENMASK(15, 0)
-#define EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_1_ADDR          0x1454
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_1_ADDR          0x1458
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_ADDR        0x145C
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK            GENMASK(31, 0)
-#define EQDMA_C2H_STAT_AXIS_PKG_CMP_1_ADDR                 0x1460
-#define C2H_STAT_AXIS_PKG_CMP_1_MASK                      GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_2_ADDR          0x1464
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_ST_PLD_FIFO_DEPTH_ADDR                   0x1468
-#define C2H_ST_PLD_FIFO_DEPTH_MASK                        GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_6_ADDR                  0x146C
-#define C2H_STAT_DMA_ENG_6_RSVD_MASK                   GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_MASK \
-	GENMASK(16, 1)
-#define C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST_MASK BIT(0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_7_ADDR                  0x1470
-#define C2H_STAT_DMA_ENG_7_RSVD_MASK                   GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1_MASK \
-	GENMASK(16, 1)
-#define C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1_MASK BIT(0)
-#define EQDMA_C2H_STAT_PCIE_CMP_1_ADDR                     0x1474
-#define C2H_STAT_PCIE_CMP_1_DEPTH_MASK                     GENMASK(31, 0)
-#define EQDMA_C2H_PLD_FIFO_ALMOST_FULL_ADDR                0x1478
-#define C2H_PLD_FIFO_ALMOST_FULL_ENABLE_MASK               BIT(31)
-#define C2H_PLD_FIFO_ALMOST_FULL_TH_MASK                   GENMASK(30, 0)
-#define EQDMA_PFCH_CFG_3_ADDR                              0x147C
-#define PFCH_CFG_3_RSVD_MASK                               GENMASK(31, 16)
-#define PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK            GENMASK(15, 7)
-#define PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK          GENMASK(6, 0)
-#define EQDMA_CMPT_CFG_0_ADDR                              0x1480
-#define CMPT_CFG_0_RSVD_MASK                               GENMASK(31, 2)
-#define CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY_MASK             BIT(1)
-#define CMPT_CFG_0_VIO_EVNT_SUP_EN_MASK                    BIT(0)
-#define EQDMA_PFCH_CFG_4_ADDR                              0x1484
-#define PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK                 GENMASK(31, 17)
-#define PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK              BIT(16)
-#define PFCH_CFG_4_EVT_TIMER_TICK_MASK                     GENMASK(15, 1)
-#define PFCH_CFG_4_DISABLE_EVT_TIMER_MASK                  BIT(0)
-#define SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK        GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK        GENMASK(31, 11)
-#define SW_IND_CTXT_DATA_W5_PASID_EN_MASK                 BIT(10)
-#define SW_IND_CTXT_DATA_W5_PASID_H_MASK                  GENMASK(9, 0)
-#define SW_IND_CTXT_DATA_W4_PASID_L_MASK                  GENMASK(31, 20)
-#define SW_IND_CTXT_DATA_W4_HOST_ID_MASK                  GENMASK(19, 16)
-#define SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK                  BIT(15)
-#define SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK             BIT(14)
-#define SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK                BIT(13)
-#define SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK           BIT(12)
-#define SW_IND_CTXT_DATA_W4_INT_AGGR_MASK                 BIT(11)
-#define SW_IND_CTXT_DATA_W4_VEC_MASK                      GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(11, 9)
-#define SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK                GENMASK(8, 5)
-#define SW_IND_CTXT_DATA_W1_AT_MASK                       BIT(4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 29)
-#define SW_IND_CTXT_DATA_W0_FNC_MASK                      GENMASK(28, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   BIT(15)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                GENMASK(14, 11)
-#define HW_IND_CTXT_DATA_W1_EVT_PND_MASK                  BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_2_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 22)
-#define PREFETCH_CTXT_DATA_W0_PFCH_NEED_MASK              GENMASK(21, 16)
-#define PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK               GENMASK(15, 10)
-#define PREFETCH_CTXT_DATA_W0_VIRTIO_MASK                 BIT(9)
-#define PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK               BIT(8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK             GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W6_RSVD_1_H_MASK                   GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W5_RSVD_1_L_MASK                   GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W5_PORT_ID_MASK                    GENMASK(22, 20)
-#define CMPL_CTXT_DATA_W5_SH_CMPT_MASK                    BIT(19)
-#define CMPL_CTXT_DATA_W5_VIO_EOP_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK                 GENMASK(17, 14)
-#define CMPL_CTXT_DATA_W5_PASID_EN_MASK                   BIT(13)
-#define CMPL_CTXT_DATA_W5_PASID_H_MASK                    GENMASK(12, 0)
-#define CMPL_CTXT_DATA_W4_PASID_L_MASK                    GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W4_HOST_ID_MASK                    GENMASK(22, 19)
-#define CMPL_CTXT_DATA_W4_DIR_C2H_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W4_VIO_MASK                        BIT(17)
-#define CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK             BIT(16)
-#define CMPL_CTXT_DATA_W4_INT_AGGR_MASK                   BIT(15)
-#define CMPL_CTXT_DATA_W4_VEC_MASK                        GENMASK(14, 4)
-#define CMPL_CTXT_DATA_W4_AT_MASK                         BIT(3)
-#define CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK                BIT(2)
-#define CMPL_CTXT_DATA_W4_FULL_UPD_MASK                   BIT(1)
-#define CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK              BIT(0)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(31)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(30, 29)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(28)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(27, 12)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(11, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(27, 26)
-#define CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK              GENMASK(25, 0)
-#define CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK              GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_QSIZE_IX_MASK                   GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(27)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W0_TIMER_IX_MASK                   GENMASK(24, 21)
-#define CMPL_CTXT_DATA_W0_CNTER_IX_MASK                   GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(16, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W3_FUNC_MASK                       GENMASK(29, 18)
-#define INTR_CTXT_DATA_W3_RSVD_MASK                       GENMASK(17, 14)
-#define INTR_CTXT_DATA_W3_PASID_EN_MASK                   BIT(13)
-#define INTR_CTXT_DATA_W3_PASID_H_MASK                    GENMASK(12, 0)
-#define INTR_CTXT_DATA_W2_PASID_L_MASK                    GENMASK(31, 23)
-#define INTR_CTXT_DATA_W2_HOST_ID_MASK                    GENMASK(22, 19)
-#define INTR_CTXT_DATA_W2_AT_MASK                         BIT(18)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(17, 6)
-#define INTR_CTXT_DATA_W2_PAGE_SIZE_MASK                  GENMASK(5, 3)
-#define INTR_CTXT_DATA_W2_BADDR_4K_H_MASK                 GENMASK(2, 0)
-#define INTR_CTXT_DATA_W1_BADDR_4K_M_MASK                 GENMASK(31, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 15)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(14)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(13)
-#define INTR_CTXT_DATA_W0_RSVD1_MASK                      BIT(12)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(11, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-#define HOSTID_TABLE_W6_SMID_MASK                          GENMASK(9, 0)
-#define HOSTID_TABLE_W5_H2C_MM_AWPROT_MASK                 GENMASK(27, 26)
-#define HOSTID_TABLE_W5_H2C_MM_AWCACHE_MASK                GENMASK(25, 22)
-#define HOSTID_TABLE_W5_H2C_MM_AWSTEERING_MASK             GENMASK(20, 18)
-#define HOSTID_TABLE_W5_DSC_AWPROT_MASK                    GENMASK(17, 16)
-#define HOSTID_TABLE_W5_DSC_AWCACHE_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W5_DSC_AWSTEERING_MASK                GENMASK(11, 8)
-#define HOSTID_TABLE_W5_INT_MSG_AWPROT_MASK                GENMASK(7, 6)
-#define HOSTID_TABLE_W5_INT_MSG_AWCACHE_MASK               GENMASK(5, 2)
-#define HOSTID_TABLE_W5_INT_MSG_AWSTEERING_H_MASK          GENMASK(0, 0)
-#define HOSTID_TABLE_W4_INT_MSG_AWSTEERING_L_MASK          GENMASK(31, 30)
-#define HOSTID_TABLE_W4_INT_AGGR_AWPROT_MASK               GENMASK(29, 28)
-#define HOSTID_TABLE_W4_INT_AGGR_AWCACHE_MASK              GENMASK(27, 24)
-#define HOSTID_TABLE_W4_INT_AGGR_AWSTEERING_MASK           GENMASK(22, 20)
-#define HOSTID_TABLE_W4_CMPT_AWPROT_MASK                   GENMASK(19, 18)
-#define HOSTID_TABLE_W4_CMPT_AWCACHE_MASK                  GENMASK(17, 14)
-#define HOSTID_TABLE_W4_CMPT_AWSTEERING_MASK               GENMASK(12, 10)
-#define HOSTID_TABLE_W4_C2H_PLD_AWPROT_MASK                GENMASK(9, 8)
-#define HOSTID_TABLE_W4_C2H_PLD_AWCACHE_MASK               GENMASK(7, 4)
-#define HOSTID_TABLE_W4_C2H_PLD_AWSTEERING_MASK            GENMASK(2, 0)
-#define HOSTID_TABLE_W3_C2H_MM_ARPROT_MASK                 GENMASK(7, 6)
-#define HOSTID_TABLE_W3_C2H_MM_ARCACHE_MASK                GENMASK(5, 2)
-#define HOSTID_TABLE_W3_C2H_MM_ARSTEERING_H_MASK           GENMASK(0, 0)
-#define HOSTID_TABLE_W2_C2H_MM_ARSTEERING_L_MASK           GENMASK(31, 30)
-#define HOSTID_TABLE_W2_H2C_MM_ARPROT_MASK                 GENMASK(29, 28)
-#define HOSTID_TABLE_W2_H2C_MM_ARCACHE_MASK                GENMASK(27, 24)
-#define HOSTID_TABLE_W2_H2C_MM_ARSTEERING_MASK             GENMASK(22, 20)
-#define HOSTID_TABLE_W2_H2C_ST_ARPROT_MASK                 GENMASK(19, 18)
-#define HOSTID_TABLE_W2_H2C_ST_ARCACHE_MASK                GENMASK(17, 14)
-#define HOSTID_TABLE_W2_H2C_ST_ARSTEERING_MASK             GENMASK(12, 10)
-#define HOSTID_TABLE_W2_DSC_ARPOT_MASK                     GENMASK(9, 8)
-#define HOSTID_TABLE_W2_DSC_ARCACHE_MASK                   GENMASK(7, 4)
-#define HOSTID_TABLE_W2_DSC_ARSTEERING_MASK                GENMASK(2, 0)
-#define HOSTID_TABLE_W0_VCH_H2C_MM_MASK                    GENMASK(27, 24)
-#define HOSTID_TABLE_W0_VCH_H2C_ST_MASK                    GENMASK(23, 20)
-#define HOSTID_TABLE_W0_VCH_DSC_MASK                       GENMASK(19, 16)
-#define HOSTID_TABLE_W0_VCH_INT_MSG_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W0_VCH_INT_AGGR_MASK                  GENMASK(11, 8)
-#define HOSTID_TABLE_W0_VCH_CMPT_MASK                      GENMASK(7, 4)
-#define HOSTID_TABLE_W0_VCH_H2C_PLD_MASK                   GENMASK(3, 0)
-#define CTXT_SELC_FNC_STS_W0_MSIX_MASK                GENMASK(3, 3)
-#define CTXT_SELC_FNC_STS_W0_MSIX_ENABLE_MASK              GENMASK(2, 2)
-#define CTXT_SELC_FNC_STS_W0_MEM_SPACE_ENABLE_MASK         GENMASK(1, 1)
-#define CTXT_SELC_FNC_STS_W0_BUS_MASTER_ENABLE_MASK        GENMASK(0, 0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
deleted file mode 100755
index 41950f9..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
+++ /dev/null
@@ -1,5338 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID_RSVD_1",
-		CFG_BLK_SYSTEM_ID_RSVD_1_MASK},
-	{"CFG_BLK_SYSTEM_ID_INST_TYPE",
-		CFG_BLK_SYSTEM_ID_INST_TYPE_MASK},
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msix_enable_field_info[] = {
-	{"CFG_BLK_MSIX_ENABLE",
-		CFG_BLK_MSIX_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_RSVD_1",
-		CFG_PCIE_DATA_WIDTH_RSVD_1_MASK},
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RSVD_1",
-		CFG_PCIE_CTL_RSVD_1_MASK},
-	{"CFG_PCIE_CTL_MGMT_AXIL_CTRL",
-		CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK},
-	{"CFG_PCIE_CTL_RSVD_2",
-		CFG_PCIE_CTL_RSVD_2_MASK},
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE",
-		CFG_BLK_MSI_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_RSVD_1",
-		CFG_BLK_MISC_CTL_RSVD_1_MASK},
-	{"CFG_BLK_MISC_CTL_10B_TAG_EN",
-		CFG_BLK_MISC_CTL_10B_TAG_EN_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_2",
-		CFG_BLK_MISC_CTL_RSVD_2_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_WBK",
-		CFG_BLK_MISC_CTL_AXI_WBK_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_DSC",
-		CFG_BLK_MISC_CTL_AXI_DSC_MASK},
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_3",
-		CFG_BLK_MISC_CTL_RSVD_3_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pl_cred_ctl_field_info[] = {
-	{"CFG_PL_CRED_CTL_RSVD_1",
-		CFG_PL_CRED_CTL_RSVD_1_MASK},
-	{"CFG_PL_CRED_CTL_SLAVE_CRD_RLS",
-		CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK},
-	{"CFG_PL_CRED_CTL_RSVD_2",
-		CFG_PL_CRED_CTL_RSVD_2_MASK},
-	{"CFG_PL_CRED_CTL_MASTER_CRD_RST",
-		CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_field_info[] = {
-	{"CFG_BLK_SCRATCH",
-		CFG_BLK_SCRATCH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_gic_field_info[] = {
-	{"CFG_GIC_RSVD_1",
-		CFG_GIC_RSVD_1_MASK},
-	{"CFG_GIC_GIC_IRQ",
-		CFG_GIC_GIC_IRQ_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_1_a_field_info[] = {
-	{"RAM_SBE_MSK_1_A",
-		RAM_SBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_1_a_field_info[] = {
-	{"RAM_SBE_STS_1_A_RSVD",
-		RAM_SBE_STS_1_A_RSVD_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_SBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_SBE_STS_1_A_TAG_ODD_RAM",
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_1_a_field_info[] = {
-	{"RAM_DBE_MSK_1_A",
-		RAM_DBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_1_a_field_info[] = {
-	{"RAM_DBE_STS_1_A_RSVD",
-		RAM_DBE_STS_1_A_RSVD_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_DBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_DBE_STS_1_A_TAG_ODD_RAM",
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_SBE_STS_A_PEND_FIFO_RAM",
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H3_DAT",
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H2_DAT",
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H1_DAT",
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C3_DAT",
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C2_DAT",
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C1_DAT",
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_DBE_STS_A_PEND_FIFO_RAM",
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H3_DAT",
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H2_DAT",
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H1_DAT",
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C3_DAT",
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C2_DAT",
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C1_DAT",
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP",
-		GLBL2_MISC_CAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_brg_throt_field_info[] = {
-	{"GLBL2_RRQ_BRG_THROT_REQ_EN",
-		GLBL2_RRQ_BRG_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_BRG_THROT_REQ",
-		GLBL2_RRQ_BRG_THROT_REQ_MASK},
-	{"GLBL2_RRQ_BRG_THROT_DAT_EN",
-		GLBL2_RRQ_BRG_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_BRG_THROT_DAT",
-		GLBL2_RRQ_BRG_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_throt_field_info[] = {
-	{"GLBL2_RRQ_PCIE_THROT_REQ_EN",
-		GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_REQ",
-		GLBL2_RRQ_PCIE_THROT_REQ_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_DAT_EN",
-		GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_DAT",
-		GLBL2_RRQ_PCIE_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_throt_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_THROT_REQ_EN",
-		GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_REQ",
-		GLBL2_RRQ_AXIMM_THROT_REQ_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_DAT_EN",
-		GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_DAT",
-		GLBL2_RRQ_AXIMM_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_lat0_field_info[] = {
-	{"GLBL2_RRQ_PCIE_LAT0_MAX",
-		GLBL2_RRQ_PCIE_LAT0_MAX_MASK},
-	{"GLBL2_RRQ_PCIE_LAT0_MIN",
-		GLBL2_RRQ_PCIE_LAT0_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_lat1_field_info[] = {
-	{"GLBL2_RRQ_PCIE_LAT1_RSVD",
-		GLBL2_RRQ_PCIE_LAT1_RSVD_MASK},
-	{"GLBL2_RRQ_PCIE_LAT1_OVFL",
-		GLBL2_RRQ_PCIE_LAT1_OVFL_MASK},
-	{"GLBL2_RRQ_PCIE_LAT1_AVG",
-		GLBL2_RRQ_PCIE_LAT1_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_lat0_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_LAT0_MAX",
-		GLBL2_RRQ_AXIMM_LAT0_MAX_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT0_MIN",
-		GLBL2_RRQ_AXIMM_LAT0_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_lat1_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_LAT1_RSVD",
-		GLBL2_RRQ_AXIMM_LAT1_RSVD_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT1_OVFL",
-		GLBL2_RRQ_AXIMM_LAT1_OVFL_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT1_AVG",
-		GLBL2_RRQ_AXIMM_LAT1_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_TAG_FL",
-		GLBL2_PCIE_RQ1_TAG_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RDY",
-		GLBL2_PCIE_RQ1_RREQ0_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RDY",
-		GLBL2_PCIE_RQ1_RREQ1_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_STRADDLE",
-		GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab0_field_info[] = {
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_VLD",
-		GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_RDY",
-		GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_VLD",
-		GLBL2_FAB0_H2C_SEG_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_RDY",
-		GLBL2_FAB0_H2C_SEG_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_VLD",
-		GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_RDY",
-		GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_H2C_MST_CRDT_STAT",
-		GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_FULL",
-		GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_VLD",
-		GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_RDY",
-		GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_VLD",
-		GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_RDY",
-		GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_FULL",
-		GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY",
-		GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY",
-		GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab1_field_info[] = {
-	{"GLBL2_FAB1_BYP_OUT_CRDT_STAT",
-		GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_TM_DSC_STS_CRDT_STAT",
-		GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_1",
-		GLBL2_FAB1_RSVD_1_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_2",
-		GLBL2_FAB1_RSVD_2_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_3",
-		GLBL2_FAB1_RSVD_3_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_4",
-		GLBL2_FAB1_RSVD_4_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_sel_field_info[] = {
-	{"GLBL2_MATCH_SEL_RSV",
-		GLBL2_MATCH_SEL_RSV_MASK},
-	{"GLBL2_MATCH_SEL_CSR_SEL",
-		GLBL2_MATCH_SEL_CSR_SEL_MASK},
-	{"GLBL2_MATCH_SEL_CSR_EN",
-		GLBL2_MATCH_SEL_CSR_EN_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE1",
-		GLBL2_MATCH_SEL_ROTATE1_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE0",
-		GLBL2_MATCH_SEL_ROTATE0_MASK},
-	{"GLBL2_MATCH_SEL_SEL",
-		GLBL2_MATCH_SEL_SEL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_msk_field_info[] = {
-	{"GLBL2_MATCH_MSK",
-		GLBL2_MATCH_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_pat_field_info[] = {
-	{"GLBL2_MATCH_PAT_PATTERN",
-		GLBL2_MATCH_PAT_PATTERN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_FAB",
-		GLBL_ERR_STAT_ERR_FAB_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_C2H_UODSC_LIMIT",
-		GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK},
-	{"GLBL_DSC_CFG_H2C_UODSC_LIMIT",
-		GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_PORT_ID",
-		GLBL_DSC_ERR_STS_PORT_ID_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_BCNT",
-		GLBL_DSC_ERR_STS_BCNT_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_CIDX",
-		GLBL_DSC_ERR_LOG1_CIDX_MASK},
-	{"GLBL_DSC_ERR_LOG1_RSVD_2",
-		GLBL_DSC_ERR_LOG1_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_2",
-		GLBL_TRQ_ERR_STS_RSVD_2_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_QSPC_UNMAPPED",
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_3",
-		GLBL_TRQ_ERR_STS_RSVD_3_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_CSR_UNMAPPED",
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_SRC",
-		GLBL_TRQ_ERR_LOG_SRC_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_ctl_field_info[] = {
-	{"GLBL_DSC_CTL_RSVD_1",
-		GLBL_DSC_CTL_RSVD_1_MASK},
-	{"GLBL_DSC_CTL_LAT_QID",
-		GLBL_DSC_CTL_LAT_QID_MASK},
-	{"GLBL_DSC_CTL_DSC_ENG_LAT_CLR",
-		GLBL_DSC_CTL_DSC_ENG_LAT_CLR_MASK},
-	{"GLBL_DSC_CTL_SELECT",
-		GLBL_DSC_CTL_SELECT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log2_field_info[] = {
-	{"GLBL_DSC_ERR_LOG2_OLD_PIDX",
-		GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK},
-	{"GLBL_DSC_ERR_LOG2_NEW_PIDX",
-		GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_glbl_interrupt_cfg_field_info[] = {
-	{"GLBL_GLBL_INTERRUPT_CFG_RSVD_1",
-		GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING",
-		GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR",
-		GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_vch_host_profile_field_info[] = {
-	{"GLBL_VCH_HOST_PROFILE_RSVD_1",
-		GLBL_VCH_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_MM",
-		GLBL_VCH_HOST_PROFILE_2C_MM_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_ST",
-		GLBL_VCH_HOST_PROFILE_2C_ST_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_DSC",
-		GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_MSG",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_CMPT",
-		GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD",
-		GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl_bridge_host_profile_field_info[] = {
-	{"GLBL_BRIDGE_HOST_PROFILE_RSVD_1",
-		GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_BRIDGE_HOST_PROFILE_BDGID",
-		GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK},
-};
-
-
-static struct regfield_info
-	aximm_irq_dest_addr_field_info[] = {
-	{"AXIMM_IRQ_DEST_ADDR_ADDR",
-		AXIMM_IRQ_DEST_ADDR_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	fab_err_log_field_info[] = {
-	{"FAB_ERR_LOG_RSVD_1",
-		FAB_ERR_LOG_RSVD_1_MASK},
-	{"FAB_ERR_LOG_SRC",
-		FAB_ERR_LOG_SRC_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_sts_field_info[] = {
-	{"GLBL_REQ_ERR_STS_RSVD_1",
-		GLBL_REQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_REQ_ERR_STS_RC_DISCONTINUE",
-		GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK},
-	{"GLBL_REQ_ERR_STS_RC_PRTY",
-		GLBL_REQ_ERR_STS_RC_PRTY_MASK},
-	{"GLBL_REQ_ERR_STS_RC_FLR",
-		GLBL_REQ_ERR_STS_RC_FLR_MASK},
-	{"GLBL_REQ_ERR_STS_RC_TIMEOUT",
-		GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_BCNT",
-		GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_TAG",
-		GLBL_REQ_ERR_STS_RC_INV_TAG_MASK},
-	{"GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_NO_DATA",
-		GLBL_REQ_ERR_STS_RC_NO_DATA_MASK},
-	{"GLBL_REQ_ERR_STS_RC_UR_CA_CRS",
-		GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK},
-	{"GLBL_REQ_ERR_STS_RC_POISONED",
-		GLBL_REQ_ERR_STS_RC_POISONED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_msk_field_info[] = {
-	{"GLBL_REQ_ERR_MSK",
-		GLBL_REQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_lat0_a_field_info[] = {
-	{"GLBL_DSC_LAT0_A_LAT_MAX",
-		GLBL_DSC_LAT0_A_LAT_MAX_MASK},
-	{"GLBL_DSC_LAT0_A_LAT_MIN",
-		GLBL_DSC_LAT0_A_LAT_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_lat1_a_field_info[] = {
-	{"GLBL_DSC_LAT1_A_RSVD",
-		GLBL_DSC_LAT1_A_RSVD_MASK},
-	{"GLBL_DSC_LAT1_A_LAT_OVF",
-		GLBL_DSC_LAT1_A_LAT_OVF_MASK},
-	{"GLBL_DSC_LAT1_A_LAT_AVG",
-		GLBL_DSC_LAT1_A_LAT_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr0_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT",
-		GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr1_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT",
-		GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr2_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT",
-		GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr3_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT",
-		GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr0_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT",
-		GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr1_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT",
-		GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr2_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT",
-		GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr3_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT",
-		GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr0_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT",
-		GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr1_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT",
-		GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr2_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT",
-		GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr3_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT",
-		GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr0_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT",
-		GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr1_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT",
-		GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr2_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT",
-		GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr3_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT",
-		GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	t_field_info[] = {
-	{"T_USER_CTR_MAX",
-		T_USER_CTR_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_perf_cntr_ctl_a1_field_info[] = {
-	{"GLBL_PERF_CNTR_CTL_A1_RSVD",
-		GLBL_PERF_CNTR_CTL_A1_RSVD_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_free_cnt_a0_field_info[] = {
-	{"GLBL_FREE_CNT_A0_S",
-		GLBL_FREE_CNT_A0_S_MASK},
-};
-
-
-static struct regfield_info
-	glbl_free_cnt_a1_field_info[] = {
-	{"GLBL_FREE_CNT_A1_RSVD",
-		GLBL_FREE_CNT_A1_RSVD_MASK},
-	{"GLBL_FREE_CNT_A1_S",
-		GLBL_FREE_CNT_A1_S_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a0_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS",
-		GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a1_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS",
-		GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS_MASK},
-	{"GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS",
-		GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a2_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS",
-		GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a3_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS",
-		GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a4_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS",
-		GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS_MASK},
-	{"GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS",
-		GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a5_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS",
-		GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a0_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS",
-		GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a1_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS",
-		GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS_MASK},
-	{"GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS",
-		GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a2_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS",
-		GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a3_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS",
-		GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a4_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS",
-		GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS_MASK},
-	{"GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS",
-		GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a5_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS",
-		GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a0_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A0_PKT_CNTS",
-		GLBL_M_AXI_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a1_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXI_WR_CNT_A1_PKT_CNTS",
-		GLBL_M_AXI_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a2_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a3_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a4_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a5_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a0_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A0_PKT_CNTS",
-		GLBL_M_AXI_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a1_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXI_RD_CNT_A1_PKT_CNTS",
-		GLBL_M_AXI_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a2_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a3_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a4_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a5_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a0_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS",
-		GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a1_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS",
-		GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a2_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a3_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a4_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a5_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a0_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS",
-		GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a1_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS",
-		GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a2_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a3_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a4_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a5_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a0_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A0_PKT_CNTS",
-		GLBL_S_AXI_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a1_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXI_WR_CNT_A1_PKT_CNTS",
-		GLBL_S_AXI_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a2_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a3_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a4_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a5_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a0_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A0_PKT_CNTS",
-		GLBL_S_AXI_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a1_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXI_RD_CNT_A1_PKT_CNTS",
-		GLBL_S_AXI_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a2_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a3_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a4_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a5_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a0_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a1_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a2_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a3_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a4_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a5_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_field_info[] = {
-	{"IND_CTXT_DATA_DATA",
-		IND_CTXT_DATA_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_mask_field_info[] = {
-	{"IND_CTXT",
-		IND_CTXT_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SEL",
-		IND_CTXT_CMD_SEL_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_field_info[] = {
-	{"C2H_TIMER_CNT_RSVD_1",
-		C2H_TIMER_CNT_RSVD_1_MASK},
-	{"C2H_TIMER_CNT",
-		C2H_TIMER_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_field_info[] = {
-	{"C2H_CNT_TH_RSVD_1",
-		C2H_CNT_TH_RSVD_1_MASK},
-	{"C2H_CNT_TH_THESHOLD_CNT",
-		C2H_CNT_TH_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_1_field_info[] = {
-	{"C2H_PFCH_CFG_1_EVT_QCNT_TH",
-		C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_1_QCNT",
-		C2H_PFCH_CFG_1_QCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_2_field_info[] = {
-	{"C2H_PFCH_CFG_2_FENCE",
-		C2H_PFCH_CFG_2_FENCE_MASK},
-	{"C2H_PFCH_CFG_2_RSVD",
-		C2H_PFCH_CFG_2_RSVD_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NO_DROP",
-		C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK},
-	{"C2H_PFCH_CFG_2_LL_SZ_TH",
-		C2H_PFCH_CFG_2_LL_SZ_TH_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NUM",
-		C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK},
-	{"C2H_PFCH_CFG_2_NUM",
-		C2H_PFCH_CFG_2_NUM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_field_info[] = {
-	{"C2H_BUF_SZ_IZE",
-		C2H_BUF_SZ_IZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PORT_ID_ERR",
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_PAR_ERR",
-		C2H_ERR_STAT_HDR_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_COR_ERR",
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_ERR_STAT_AVL_RING_DSC_ERR",
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_SH_CMPT_DSC_ERR",
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED2",
-		C2H_FATAL_ERR_STAT_RESERVED2_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED1",
-		C2H_FATAL_ERR_STAT_RESERVED1_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_HOST_ID",
-		GLBL_ERR_INT_HOST_ID_MASK},
-	{"GLBL_ERR_INT_DIS_INTR_ON_VF",
-		GLBL_ERR_INT_DIS_INTR_ON_VF_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVTFL_TH",
-		C2H_PFCH_CFG_EVTFL_TH_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE",
-		C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE_MASK},
-	{"C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE",
-		C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE_MASK},
-	{"C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1",
-		C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER",
-		C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_MASK},
-	{"C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_TYPE",
-		C2H_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"C2H_FIRST_ERR_QID_RSVD",
-		C2H_FIRST_ERR_QID_RSVD_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1",
-		C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ",
-		C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_req_field_info[] = {
-	{"C2H_INTR_DYN_REQ_RSVD_1",
-		C2H_INTR_DYN_REQ_RSVD_1_MASK},
-	{"C2H_INTR_DYN_REQ_CNT",
-		C2H_INTR_DYN_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_misc_field_info[] = {
-	{"C2H_INTR_DYN_MISC_RSVD_1",
-		C2H_INTR_DYN_MISC_RSVD_1_MASK},
-	{"C2H_INTR_DYN_MISC_CNT",
-		C2H_INTR_DYN_MISC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_len_mismatch_field_info[] = {
-	{"C2H_DROP_LEN_MISMATCH_RSVD_1",
-		C2H_DROP_LEN_MISMATCH_RSVD_1_MASK},
-	{"C2H_DROP_LEN_MISMATCH_CNT",
-		C2H_DROP_LEN_MISMATCH_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_desc_rsp_len_field_info[] = {
-	{"C2H_DROP_DESC_RSP_LEN_RSVD_1",
-		C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK},
-	{"C2H_DROP_DESC_RSP_LEN_CNT",
-		C2H_DROP_DESC_RSP_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_qid_fifo_len_field_info[] = {
-	{"C2H_DROP_QID_FIFO_LEN_RSVD_1",
-		C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK},
-	{"C2H_DROP_QID_FIFO_LEN_CNT",
-		C2H_DROP_QID_FIFO_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_field_info[] = {
-	{"C2H_DROP_PLD_CNT_RSVD_1",
-		C2H_DROP_PLD_CNT_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_CNT",
-		C2H_DROP_PLD_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_0_field_info[] = {
-	{"C2H_CMPT_FORMAT_0_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_0_COLOR_LOC",
-		C2H_CMPT_FORMAT_0_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_1_field_info[] = {
-	{"C2H_CMPT_FORMAT_1_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_1_COLOR_LOC",
-		C2H_CMPT_FORMAT_1_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_2_field_info[] = {
-	{"C2H_CMPT_FORMAT_2_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_2_COLOR_LOC",
-		C2H_CMPT_FORMAT_2_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_3_field_info[] = {
-	{"C2H_CMPT_FORMAT_3_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_3_COLOR_LOC",
-		C2H_CMPT_FORMAT_3_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_4_field_info[] = {
-	{"C2H_CMPT_FORMAT_4_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_4_COLOR_LOC",
-		C2H_CMPT_FORMAT_4_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_5_field_info[] = {
-	{"C2H_CMPT_FORMAT_5_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_5_COLOR_LOC",
-		C2H_CMPT_FORMAT_5_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_6_field_info[] = {
-	{"C2H_CMPT_FORMAT_6_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_6_COLOR_LOC",
-		C2H_CMPT_FORMAT_6_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cache_depth_field_info[] = {
-	{"C2H_PFCH_CACHE_DEPTH_MAX_STBUF",
-		C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK},
-	{"C2H_PFCH_CACHE_DEPTH",
-		C2H_PFCH_CACHE_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_buf_depth_field_info[] = {
-	{"C2H_WRB_COAL_BUF_DEPTH_RSVD_1",
-		C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK},
-	{"C2H_WRB_COAL_BUF_DEPTH_BUFFER",
-		C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_crdt_field_info[] = {
-	{"C2H_PFCH_CRDT_RSVD_1",
-		C2H_PFCH_CRDT_RSVD_1_MASK},
-	{"C2H_PFCH_CRDT_RSVD_2",
-		C2H_PFCH_CRDT_RSVD_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_cmpt_accepted_field_info[] = {
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_CNT",
-		C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_pld_accepted_field_info[] = {
-	{"C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_PLD_ACCEPTED_CNT",
-		C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_field_info[] = {
-	{"C2H_PLD_PKT_ID_CMPT_WAIT",
-		C2H_PLD_PKT_ID_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_DATA",
-		C2H_PLD_PKT_ID_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_1_field_info[] = {
-	{"C2H_PLD_PKT_ID_1_CMPT_WAIT",
-		C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_1_DATA",
-		C2H_PLD_PKT_ID_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_1_field_info[] = {
-	{"C2H_DROP_PLD_CNT_1_RSVD_1",
-		C2H_DROP_PLD_CNT_1_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_1_CNT",
-		C2H_DROP_PLD_CNT_1_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_PAR_ERR",
-		H2C_ERR_STAT_PAR_ERR_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3_RSVD_1",
-		H2C_REG3_RSVD_1_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_pcie_field_info[] = {
-	{"H2C_REQ_THROT_PCIE_EN_REQ",
-		H2C_REQ_THROT_PCIE_EN_REQ_MASK},
-	{"H2C_REQ_THROT_PCIE",
-		H2C_REQ_THROT_PCIE_MASK},
-	{"H2C_REQ_THROT_PCIE_EN_DATA",
-		H2C_REQ_THROT_PCIE_EN_DATA_MASK},
-	{"H2C_REQ_THROT_PCIE_DATA_THRESH",
-		H2C_REQ_THROT_PCIE_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	h2c_aln_dbg_reg0_field_info[] = {
-	{"H2C_ALN_REG0_NUM_PKT_SENT",
-		H2C_ALN_REG0_NUM_PKT_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_aximm_field_info[] = {
-	{"H2C_REQ_THROT_AXIMM_EN_REQ",
-		H2C_REQ_THROT_AXIMM_EN_REQ_MASK},
-	{"H2C_REQ_THROT_AXIMM",
-		H2C_REQ_THROT_AXIMM_MASK},
-	{"H2C_REQ_THROT_AXIMM_EN_DATA",
-		H2C_REQ_THROT_AXIMM_EN_DATA_MASK},
-	{"H2C_REQ_THROT_AXIMM_DATA_THRESH",
-		H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_ctl_field_info[] = {
-	{"C2H_MM_CTL_RESERVED1",
-		C2H_MM_CTL_RESERVED1_MASK},
-	{"C2H_MM_CTL_ERRC_EN",
-		C2H_MM_CTL_ERRC_EN_MASK},
-	{"C2H_MM_CTL_RESERVED0",
-		C2H_MM_CTL_RESERVED0_MASK},
-	{"C2H_MM_CTL_RUN",
-		C2H_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_cmpl_desc_cnt_field_info[] = {
-	{"C2H_MM_CMPL_DESC_CNT_C2H_CO",
-		C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED1",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED0",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RESERVED1",
-		C2H_MM_ERR_CODE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_CIDX",
-		C2H_MM_ERR_CODE_CIDX_MASK},
-	{"C2H_MM_ERR_CODE_RESERVED0",
-		C2H_MM_ERR_CODE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_SUB_TYPE",
-		C2H_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_VALID",
-		C2H_MM_ERR_INFO_VALID_MASK},
-	{"C2H_MM_ERR_INFO_SEL",
-		C2H_MM_ERR_INFO_SEL_MASK},
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_ctl_field_info[] = {
-	{"H2C_MM_CTL_RESERVED1",
-		H2C_MM_CTL_RESERVED1_MASK},
-	{"H2C_MM_CTL_ERRC_EN",
-		H2C_MM_CTL_ERRC_EN_MASK},
-	{"H2C_MM_CTL_RESERVED0",
-		H2C_MM_CTL_RESERVED0_MASK},
-	{"H2C_MM_CTL_RUN",
-		H2C_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_cmpl_desc_cnt_field_info[] = {
-	{"H2C_MM_CMPL_DESC_CNT_H2C_CO",
-		H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED5",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED4",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED3",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED2",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED1",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED0",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_CIDX",
-		H2C_MM_ERR_CODE_CIDX_MASK},
-	{"H2C_MM_ERR_CODE_RESERVED0",
-		H2C_MM_ERR_CODE_RESERVED0_MASK},
-	{"H2C_MM_ERR_CODE_SUB_TYPE",
-		H2C_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_VALID",
-		H2C_MM_ERR_INFO_VALID_MASK},
-	{"H2C_MM_ERR_INFO_SEL",
-		H2C_MM_ERR_INFO_SEL_MASK},
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_data_throttle_field_info[] = {
-	{"H2C_MM_DATA_THROTTLE_RSVD_1",
-		H2C_MM_DATA_THROTTLE_RSVD_1_MASK},
-	{"H2C_MM_DATA_THROTTLE_DAT_EN",
-		H2C_MM_DATA_THROTTLE_DAT_EN_MASK},
-	{"H2C_MM_DATA_THROTTLE_DAT",
-		H2C_MM_DATA_THROTTLE_DAT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_1_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_1_RSVD_1",
-		C2H_CRDT_COAL_CFG_1_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH",
-		C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_1_TIMER_TH",
-		C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_2_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_2_RSVD_1",
-		C2H_CRDT_COAL_CFG_2_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_FIFO_TH",
-		C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_2_RESERVED1",
-		C2H_CRDT_COAL_CFG_2_RESERVED1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_NT_TH",
-		C2H_CRDT_COAL_CFG_2_NT_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_qid_field_info[] = {
-	{"C2H_PFCH_BYP_QID_RSVD_1",
-		C2H_PFCH_BYP_QID_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_QID",
-		C2H_PFCH_BYP_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_tag_field_info[] = {
-	{"C2H_PFCH_BYP_TAG_RSVD_1",
-		C2H_PFCH_BYP_TAG_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_TAG_BYP_QID",
-		C2H_PFCH_BYP_TAG_BYP_QID_MASK},
-	{"C2H_PFCH_BYP_TAG_RSVD_2",
-		C2H_PFCH_BYP_TAG_RSVD_2_MASK},
-	{"C2H_PFCH_BYP_TAG",
-		C2H_PFCH_BYP_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_water_mark_field_info[] = {
-	{"C2H_WATER_MARK_HIGH_WM",
-		C2H_WATER_MARK_HIGH_WM_MASK},
-	{"C2H_WATER_MARK_LOW_WM",
-		C2H_WATER_MARK_LOW_WM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_notify_empty_field_info[] = {
-	{"C2H_NOTIFY_EMPTY_RSVD_1",
-		C2H_NOTIFY_EMPTY_RSVD_1_MASK},
-	{"C2H_NOTIFY_EMPTY_NOE",
-		C2H_NOTIFY_EMPTY_NOE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_1_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_1",
-		C2H_STAT_AXIS_PKG_CMP_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_2_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_st_pld_fifo_depth_field_info[] = {
-	{"C2H_ST_PLD_FIFO_DEPTH",
-		C2H_ST_PLD_FIFO_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_6_field_info[] = {
-	{"C2H_STAT_DMA_ENG_6_RSVD",
-		C2H_STAT_DMA_ENG_6_RSVD_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID",
-		C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID",
-		C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST",
-		C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_7_field_info[] = {
-	{"C2H_STAT_DMA_ENG_7_RSVD",
-		C2H_STAT_DMA_ENG_7_RSVD_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1",
-		C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1",
-		C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1",
-		C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_pcie_cmp_1_field_info[] = {
-	{"C2H_STAT_PCIE_CMP_1_DEPTH",
-		C2H_STAT_PCIE_CMP_1_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_almost_full_field_info[] = {
-	{"C2H_PLD_FIFO_ALMOST_FULL_ENABLE",
-		C2H_PLD_FIFO_ALMOST_FULL_ENABLE_MASK},
-	{"C2H_PLD_FIFO_ALMOST_FULL_TH",
-		C2H_PLD_FIFO_ALMOST_FULL_TH_MASK},
-};
-
-
-static struct regfield_info
-	pfch_cfg_3_field_info[] = {
-	{"PFCH_CFG_3_RSVD",
-		PFCH_CFG_3_RSVD_MASK},
-	{"PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH",
-		PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK},
-	{"PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH",
-		PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK},
-};
-
-
-static struct regfield_info
-	cmpt_cfg_0_field_info[] = {
-	{"CMPT_CFG_0_RSVD",
-		CMPT_CFG_0_RSVD_MASK},
-	{"CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY",
-		CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY_MASK},
-	{"CMPT_CFG_0_VIO_EVNT_SUP_EN",
-		CMPT_CFG_0_VIO_EVNT_SUP_EN_MASK},
-};
-
-
-static struct regfield_info
-	pfch_cfg_4_field_info[] = {
-	{"PFCH_CFG_4_GLB_EVT_TIMER_TICK",
-		PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK},
-	{"PFCH_CFG_4_DISABLE_GLB_EVT_TIMER",
-		PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK},
-	{"PFCH_CFG_4_EVT_TIMER_TICK",
-		PFCH_CFG_4_EVT_TIMER_TICK_MASK},
-	{"PFCH_CFG_4_DISABLE_EVT_TIMER",
-		PFCH_CFG_4_DISABLE_EVT_TIMER_MASK},
-};
-
-static struct xreg_info eqdma_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSIX_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msix_enable_field_info),
-	cfg_blk_msix_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x20,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_PL_CRED_CTL", 0x68,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pl_cred_ctl_field_info),
-	cfg_pl_cred_ctl_field_info
-},
-{"CFG_BLK_SCRATCH", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_field_info),
-	cfg_blk_scratch_field_info
-},
-{"CFG_GIC", 0xa0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_gic_field_info),
-	cfg_gic_field_info
-},
-{"RAM_SBE_MSK_1_A", 0xe0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_1_a_field_info),
-	ram_sbe_msk_1_a_field_info
-},
-{"RAM_SBE_STS_1_A", 0xe4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_1_a_field_info),
-	ram_sbe_sts_1_a_field_info
-},
-{"RAM_DBE_MSK_1_A", 0xe8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_1_a_field_info),
-	ram_dbe_msk_1_a_field_info
-},
-{"RAM_DBE_STS_1_A", 0xec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_1_a_field_info),
-	ram_dbe_sts_1_a_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_RRQ_BRG_THROT", 0x158,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_brg_throt_field_info),
-	glbl2_rrq_brg_throt_field_info
-},
-{"GLBL2_RRQ_PCIE_THROT", 0x15c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_throt_field_info),
-	glbl2_rrq_pcie_throt_field_info
-},
-{"GLBL2_RRQ_AXIMM_THROT", 0x160,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_throt_field_info),
-	glbl2_rrq_aximm_throt_field_info
-},
-{"GLBL2_RRQ_PCIE_LAT0", 0x164,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_lat0_field_info),
-	glbl2_rrq_pcie_lat0_field_info
-},
-{"GLBL2_RRQ_PCIE_LAT1", 0x168,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_lat1_field_info),
-	glbl2_rrq_pcie_lat1_field_info
-},
-{"GLBL2_RRQ_AXIMM_LAT0", 0x16c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_lat0_field_info),
-	glbl2_rrq_aximm_lat0_field_info
-},
-{"GLBL2_RRQ_AXIMM_LAT1", 0x170,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_lat1_field_info),
-	glbl2_rrq_aximm_lat1_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL2_DBG_FAB0", 0x1d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab0_field_info),
-	glbl2_dbg_fab0_field_info
-},
-{"GLBL2_DBG_FAB1", 0x1d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab1_field_info),
-	glbl2_dbg_fab1_field_info
-},
-{"GLBL2_DBG_MATCH_SEL", 0x1f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_sel_field_info),
-	glbl2_dbg_match_sel_field_info
-},
-{"GLBL2_DBG_MATCH_MSK", 0x1f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_msk_field_info),
-	glbl2_dbg_match_msk_field_info
-},
-{"GLBL2_DBG_MATCH_PAT", 0x1fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_pat_field_info),
-	glbl2_dbg_match_pat_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"GLBL_DSC_DBG_CTL", 0x278,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_ctl_field_info),
-	glbl_dsc_dbg_ctl_field_info
-},
-{"GLBL_DSC_ERR_LOG2", 0x27c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log2_field_info),
-	glbl_dsc_err_log2_field_info
-},
-{"GLBL_GLBL_INTERRUPT_CFG", 0x2c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_glbl_interrupt_cfg_field_info),
-	glbl_glbl_interrupt_cfg_field_info
-},
-{"GLBL_VCH_HOST_PROFILE", 0x2c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_vch_host_profile_field_info),
-	glbl_vch_host_profile_field_info
-},
-{"GLBL_BRIDGE_HOST_PROFILE", 0x308,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_bridge_host_profile_field_info),
-	glbl_bridge_host_profile_field_info
-},
-{"AXIMM_IRQ_DEST_ADDR", 0x30c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(aximm_irq_dest_addr_field_info),
-	aximm_irq_dest_addr_field_info
-},
-{"FAB_ERR_LOG", 0x314,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(fab_err_log_field_info),
-	fab_err_log_field_info
-},
-{"GLBL_REQ_ERR_STS", 0x318,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_sts_field_info),
-	glbl_req_err_sts_field_info
-},
-{"GLBL_REQ_ERR_MSK", 0x31c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_msk_field_info),
-	glbl_req_err_msk_field_info
-},
-{"GLBL_DSC_DBG_LAT0_A", 0x320,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_dbg_lat0_a_field_info),
-	glbl_dsc_dbg_lat0_a_field_info
-},
-{"GLBL_DSC_DBG_LAT1_A", 0x324,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_dbg_lat1_a_field_info),
-	glbl_dsc_dbg_lat1_a_field_info
-},
-{"GLBL_DSC_CRD_CTR0_A", 0x328,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr0_a_field_info),
-	glbl_dsc_crd_ctr0_a_field_info
-},
-{"GLBL_DSC_CRD_CTR1_A", 0x32c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr1_a_field_info),
-	glbl_dsc_crd_ctr1_a_field_info
-},
-{"GLBL_DSC_CRD_CTR2_A", 0x330,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr2_a_field_info),
-	glbl_dsc_crd_ctr2_a_field_info
-},
-{"GLBL_DSC_CRD_CTR3_A", 0x334,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr3_a_field_info),
-	glbl_dsc_crd_ctr3_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR0_A", 0x338,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr0_a_field_info),
-	glbl_dsc_imm_crd_ctr0_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR1_A", 0x33c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr1_a_field_info),
-	glbl_dsc_imm_crd_ctr1_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR2_A", 0x340,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr2_a_field_info),
-	glbl_dsc_imm_crd_ctr2_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR3_A", 0x344,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr3_a_field_info),
-	glbl_dsc_imm_crd_ctr3_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR0_A", 0x348,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr0_a_field_info),
-	glbl_dsc_h2c_out_ctr0_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR1_A", 0x34c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr1_a_field_info),
-	glbl_dsc_h2c_out_ctr1_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR2_A", 0x350,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr2_a_field_info),
-	glbl_dsc_h2c_out_ctr2_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR3_A", 0x354,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr3_a_field_info),
-	glbl_dsc_h2c_out_ctr3_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR0_A", 0x358,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr0_a_field_info),
-	glbl_dsc_c2h_out_ctr0_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR1_A", 0x35c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr1_a_field_info),
-	glbl_dsc_c2h_out_ctr1_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR2_A", 0x360,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr2_a_field_info),
-	glbl_dsc_c2h_out_ctr2_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR3_A", 0x364,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr3_a_field_info),
-	glbl_dsc_c2h_out_ctr3_a_field_info
-},
-{"T", 0x368,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(t_field_info),
-	t_field_info
-},
-{"GLBL_PERF_CNTR_CTL_A1", 0x36c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_perf_cntr_ctl_a1_field_info),
-	glbl_perf_cntr_ctl_a1_field_info
-},
-{"GLBL_FREE_CNT_A0", 0x370,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_free_cnt_a0_field_info),
-	glbl_free_cnt_a0_field_info
-},
-{"GLBL_FREE_CNT_A1", 0x374,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_free_cnt_a1_field_info),
-	glbl_free_cnt_a1_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A0", 0x378,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a0_field_info),
-	glbl_axis_h2c_cnt_a0_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A1", 0x37c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a1_field_info),
-	glbl_axis_h2c_cnt_a1_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A2", 0x380,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a2_field_info),
-	glbl_axis_h2c_cnt_a2_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A3", 0x384,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a3_field_info),
-	glbl_axis_h2c_cnt_a3_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A4", 0x388,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a4_field_info),
-	glbl_axis_h2c_cnt_a4_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A5", 0x38c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a5_field_info),
-	glbl_axis_h2c_cnt_a5_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A0", 0x390,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a0_field_info),
-	glbl_axis_c2h_cnt_a0_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A1", 0x394,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a1_field_info),
-	glbl_axis_c2h_cnt_a1_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A2", 0x398,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a2_field_info),
-	glbl_axis_c2h_cnt_a2_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A3", 0x39c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a3_field_info),
-	glbl_axis_c2h_cnt_a3_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A4", 0x3a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a4_field_info),
-	glbl_axis_c2h_cnt_a4_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A5", 0x3a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a5_field_info),
-	glbl_axis_c2h_cnt_a5_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A0", 0x3a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a0_field_info),
-	glbl_m_axi_wr_cnt_a0_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A1", 0x3ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a1_field_info),
-	glbl_m_axi_wr_cnt_a1_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A2", 0x3b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a2_field_info),
-	glbl_m_axi_wr_cnt_a2_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A3", 0x3b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a3_field_info),
-	glbl_m_axi_wr_cnt_a3_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A4", 0x3b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a4_field_info),
-	glbl_m_axi_wr_cnt_a4_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A5", 0x3bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a5_field_info),
-	glbl_m_axi_wr_cnt_a5_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A0", 0x3c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a0_field_info),
-	glbl_m_axi_rd_cnt_a0_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A1", 0x3c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a1_field_info),
-	glbl_m_axi_rd_cnt_a1_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A2", 0x3c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a2_field_info),
-	glbl_m_axi_rd_cnt_a2_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A3", 0x3cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a3_field_info),
-	glbl_m_axi_rd_cnt_a3_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A4", 0x3d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a4_field_info),
-	glbl_m_axi_rd_cnt_a4_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A5", 0x3d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a5_field_info),
-	glbl_m_axi_rd_cnt_a5_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A0", 0x3d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a0_field_info),
-	glbl_m_axib_wr_cnt_a0_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A1", 0x3dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a1_field_info),
-	glbl_m_axib_wr_cnt_a1_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A2", 0x3e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a2_field_info),
-	glbl_m_axib_wr_cnt_a2_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A3", 0x3e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a3_field_info),
-	glbl_m_axib_wr_cnt_a3_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A4", 0x3e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a4_field_info),
-	glbl_m_axib_wr_cnt_a4_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A5", 0x3ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a5_field_info),
-	glbl_m_axib_wr_cnt_a5_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A0", 0x3f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a0_field_info),
-	glbl_m_axib_rd_cnt_a0_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A1", 0x3f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a1_field_info),
-	glbl_m_axib_rd_cnt_a1_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A2", 0x3f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a2_field_info),
-	glbl_m_axib_rd_cnt_a2_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A3", 0x3fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a3_field_info),
-	glbl_m_axib_rd_cnt_a3_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A4", 0x400,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a4_field_info),
-	glbl_m_axib_rd_cnt_a4_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A5", 0x404,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a5_field_info),
-	glbl_m_axib_rd_cnt_a5_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A0", 0x408,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a0_field_info),
-	glbl_s_axi_wr_cnt_a0_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A1", 0x40c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a1_field_info),
-	glbl_s_axi_wr_cnt_a1_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A2", 0x410,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a2_field_info),
-	glbl_s_axi_wr_cnt_a2_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A3", 0x414,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a3_field_info),
-	glbl_s_axi_wr_cnt_a3_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A4", 0x418,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a4_field_info),
-	glbl_s_axi_wr_cnt_a4_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A5", 0x41c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a5_field_info),
-	glbl_s_axi_wr_cnt_a5_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A0", 0x420,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a0_field_info),
-	glbl_s_axi_rd_cnt_a0_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A1", 0x424,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a1_field_info),
-	glbl_s_axi_rd_cnt_a1_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A2", 0x428,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a2_field_info),
-	glbl_s_axi_rd_cnt_a2_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A3", 0x42c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a3_field_info),
-	glbl_s_axi_rd_cnt_a3_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A4", 0x430,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a4_field_info),
-	glbl_s_axi_rd_cnt_a4_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A5", 0x434,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a5_field_info),
-	glbl_s_axi_rd_cnt_a5_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A0", 0x438,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a0_field_info),
-	glbl_s_axis_cmp_cnt_a0_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A1", 0x43c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a1_field_info),
-	glbl_s_axis_cmp_cnt_a1_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A2", 0x440,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a2_field_info),
-	glbl_s_axis_cmp_cnt_a2_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A3", 0x444,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a3_field_info),
-	glbl_s_axis_cmp_cnt_a3_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A4", 0x448,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a4_field_info),
-	glbl_s_axis_cmp_cnt_a4_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A5", 0x44c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a5_field_info),
-	glbl_s_axis_cmp_cnt_a5_field_info
-},
-{"IND_CTXT_DATA", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_field_info),
-	ind_ctxt_data_field_info
-},
-{"IND_CTXT_MASK", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_mask_field_info),
-	ind_ctxt_mask_field_info
-},
-{"IND_CTXT_CMD", 0x844,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_field_info),
-	c2h_timer_cnt_field_info
-},
-{"C2H_CNT_TH", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_field_info),
-	c2h_cnt_th_field_info
-},
-{"C2H_PFCH_CFG_1", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_1_field_info),
-	c2h_pfch_cfg_1_field_info
-},
-{"C2H_PFCH_CFG_2", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_2_field_info),
-	c2h_pfch_cfg_2_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_field_info),
-	c2h_buf_sz_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"C2H_INTR_DYN_REQ", 0xbac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_req_field_info),
-	c2h_intr_dyn_req_field_info
-},
-{"C2H_INTR_DYN_MISC", 0xbb0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_misc_field_info),
-	c2h_intr_dyn_misc_field_info
-},
-{"C2H_DROP_LEN_MISMATCH", 0xbb4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_len_mismatch_field_info),
-	c2h_drop_len_mismatch_field_info
-},
-{"C2H_DROP_DESC_RSP_LEN", 0xbb8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_desc_rsp_len_field_info),
-	c2h_drop_desc_rsp_len_field_info
-},
-{"C2H_DROP_QID_FIFO_LEN", 0xbbc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_qid_fifo_len_field_info),
-	c2h_drop_qid_fifo_len_field_info
-},
-{"C2H_DROP_PLD_CNT", 0xbc0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_field_info),
-	c2h_drop_pld_cnt_field_info
-},
-{"C2H_CMPT_FORMAT_0", 0xbc4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_0_field_info),
-	c2h_cmpt_format_0_field_info
-},
-{"C2H_CMPT_FORMAT_1", 0xbc8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_1_field_info),
-	c2h_cmpt_format_1_field_info
-},
-{"C2H_CMPT_FORMAT_2", 0xbcc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_2_field_info),
-	c2h_cmpt_format_2_field_info
-},
-{"C2H_CMPT_FORMAT_3", 0xbd0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_3_field_info),
-	c2h_cmpt_format_3_field_info
-},
-{"C2H_CMPT_FORMAT_4", 0xbd4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_4_field_info),
-	c2h_cmpt_format_4_field_info
-},
-{"C2H_CMPT_FORMAT_5", 0xbd8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_5_field_info),
-	c2h_cmpt_format_5_field_info
-},
-{"C2H_CMPT_FORMAT_6", 0xbdc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_6_field_info),
-	c2h_cmpt_format_6_field_info
-},
-{"C2H_PFCH_CACHE_DEPTH", 0xbe0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cache_depth_field_info),
-	c2h_pfch_cache_depth_field_info
-},
-{"C2H_WRB_COAL_BUF_DEPTH", 0xbe4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_buf_depth_field_info),
-	c2h_wrb_coal_buf_depth_field_info
-},
-{"C2H_PFCH_CRDT", 0xbe8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_crdt_field_info),
-	c2h_pfch_crdt_field_info
-},
-{"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_cmpt_accepted_field_info),
-	c2h_stat_has_cmpt_accepted_field_info
-},
-{"C2H_STAT_HAS_PLD_ACCEPTED", 0xbf0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_pld_accepted_field_info),
-	c2h_stat_has_pld_accepted_field_info
-},
-{"C2H_PLD_PKT_ID", 0xbf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_field_info),
-	c2h_pld_pkt_id_field_info
-},
-{"C2H_PLD_PKT_ID_1", 0xbf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_1_field_info),
-	c2h_pld_pkt_id_1_field_info
-},
-{"C2H_DROP_PLD_CNT_1", 0xbfc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_1_field_info),
-	c2h_drop_pld_cnt_1_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"H2C_REQ_THROT_PCIE", 0xe24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_pcie_field_info),
-	h2c_req_throt_pcie_field_info
-},
-{"H2C_ALN_DBG_REG0", 0xe28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_aln_dbg_reg0_field_info),
-	h2c_aln_dbg_reg0_field_info
-},
-{"H2C_REQ_THROT_AXIMM", 0xe2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_aximm_field_info),
-	h2c_req_throt_aximm_field_info
-},
-{"C2H_MM_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_ctl_field_info),
-	c2h_mm_ctl_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_MM_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_cmpl_desc_cnt_field_info),
-	c2h_mm_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_MM_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_ctl_field_info),
-	h2c_mm_ctl_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_MM_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_cmpl_desc_cnt_field_info),
-	h2c_mm_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"H2C_MM_DATA_THROTTLE", 0x12ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_data_throttle_field_info),
-	h2c_mm_data_throttle_field_info
-},
-{"C2H_CRDT_COAL_CFG_1", 0x1400,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_1_field_info),
-	c2h_crdt_coal_cfg_1_field_info
-},
-{"C2H_CRDT_COAL_CFG_2", 0x1404,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_2_field_info),
-	c2h_crdt_coal_cfg_2_field_info
-},
-{"C2H_PFCH_BYP_QID", 0x1408,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_qid_field_info),
-	c2h_pfch_byp_qid_field_info
-},
-{"C2H_PFCH_BYP_TAG", 0x140c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_tag_field_info),
-	c2h_pfch_byp_tag_field_info
-},
-{"C2H_WATER_MARK", 0x1410,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_water_mark_field_info),
-	c2h_water_mark_field_info
-},
-{"C2H_NOTIFY_EMPTY", 0x1450,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_notify_empty_field_info),
-	c2h_notify_empty_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1", 0x1454,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_1_field_info),
-	c2h_stat_s_axis_c2h_accepted_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1", 0x1458,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_1_field_info),
-	c2h_stat_s_axis_wrb_accepted_1_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1", 0x145c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_1_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP_1", 0x1460,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_1_field_info),
-	c2h_stat_axis_pkg_cmp_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2", 0x1464,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_2_field_info),
-	c2h_stat_s_axis_wrb_accepted_2_field_info
-},
-{"C2H_ST_PLD_FIFO_DEPTH", 0x1468,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_st_pld_fifo_depth_field_info),
-	c2h_st_pld_fifo_depth_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_6", 0x146c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_6_field_info),
-	c2h_stat_dbg_dma_eng_6_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_7", 0x1470,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_7_field_info),
-	c2h_stat_dbg_dma_eng_7_field_info
-},
-{"C2H_STAT_PCIE_CMP_1", 0x1474,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_pcie_cmp_1_field_info),
-	c2h_stat_pcie_cmp_1_field_info
-},
-{"C2H_PLD_FIFO_ALMOST_FULL", 0x1478,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_almost_full_field_info),
-	c2h_pld_fifo_almost_full_field_info
-},
-{"PFCH_CFG_3", 0x147c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(pfch_cfg_3_field_info),
-	pfch_cfg_3_field_info
-},
-{"CMPT_CFG_0", 0x1480,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cmpt_cfg_0_field_info),
-	cmpt_cfg_0_field_info
-},
-{"PFCH_CFG_4", 0x1484,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(pfch_cfg_4_field_info),
-	pfch_cfg_4_field_info
-},
-
-};
-
-uint32_t eqdma_config_num_regs_get(void)
-{
-	return (sizeof(eqdma_config_regs)/
-		sizeof(eqdma_config_regs[0]));
-}
-
-struct xreg_info *eqdma_config_regs_get(void)
-{
-	return eqdma_config_regs;
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.c
deleted file mode 100755
index 84a9526..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.c
+++ /dev/null
@@ -1,1530 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_access_common.h"
-#include "qdma_platform.h"
-#include "qdma_soft_reg.h"
-#include "qdma_soft_access.h"
-#include "qdma_cpm4_access/qdma_cpm4_access.h"
-#include "eqdma_soft_access.h"
-#include "eqdma_cpm5_access/eqdma_cpm5_access.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_access_common.tmh"
-#endif
-
-/* qdma version info */
-#define RTL_BASE_VERSION                        2
-#define RTL_PATCH_VERSION                       3
-
-/**
- * enum qdma_ip - To hold ip type
- */
-enum qdma_ip {
-	QDMA_OR_VERSAL_IP,
-	EQDMA_IP,
-	EQDMA_CPM5_IP
-};
-
-
-/*
- * hw_monitor_reg() - polling a register repeatly until
- *	(the register value & mask) == val or time is up
- *
- * return -QDMA_BUSY_IIMEOUT_ERR if register value didn't match, 0 other wise
- */
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us, uint32_t timeout_us)
-{
-	int count;
-	uint32_t v;
-
-	if (!interval_us)
-		interval_us = QDMA_REG_POLL_DFLT_INTERVAL_US;
-	if (!timeout_us)
-		timeout_us = QDMA_REG_POLL_DFLT_TIMEOUT_US;
-
-	count = timeout_us / interval_us;
-
-	do {
-		v = qdma_reg_read(dev_hndl, reg);
-		if ((v & mask) == val)
-			return QDMA_SUCCESS;
-		qdma_udelay(interval_us);
-	} while (--count);
-
-	v = qdma_reg_read(dev_hndl, reg);
-	if ((v & mask) == val)
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: Reg read=%u Expected=%u, err:%d\n",
-				   __func__, v, val,
-				   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-	return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_rtl_version() - Function to get the rtl_version in
- * string format
- *
- * @rtl_version: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_rtl_version(enum qdma_rtl_version rtl_version)
-{
-	switch (rtl_version) {
-	case QDMA_RTL_PATCH:
-		return "RTL Patch";
-	case QDMA_RTL_BASE:
-		return "RTL Base";
-	default:
-		qdma_log_error("%s: invalid rtl_version(%d), err:%d\n",
-				__func__, rtl_version, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_ip_type() - Function to get the ip type in string format
- *
- * @dev_hndl:  device handle
- * @is_vf:	   Whether PF or VF
- * @ip_type:   IP Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_ip_type(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type)
-{
-	uint32_t ip_version;
-	int rv = QDMA_SUCCESS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-
-	switch (ip_type) {
-	case QDMA_VERSAL_HARD_IP:
-		return "Versal Hard IP";
-	case QDMA_VERSAL_SOFT_IP:
-		return "Versal Soft IP";
-	case QDMA_SOFT_IP:
-		return "QDMA Soft IP";
-	case EQDMA_SOFT_IP:
-		rv = eqdma_get_ip_version(dev_hndl, is_vf, &ip_version);
-		if (rv != QDMA_SUCCESS)
-			return NULL;
-
-		if (ip_version == EQDMA_IP_VERSION_4)
-			return "EQDMA4.0 Soft IP";
-		else if (ip_version == EQDMA_IP_VERSION_5)
-			return "EQDMA5.0 Soft IP";
-
-		qdma_log_error("%s: invalid eqdma ip version(%d), err:%d\n",
-				__func__, ip_version, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	default:
-		qdma_log_error("%s: invalid ip type(%d), err:%d\n",
-				__func__, ip_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_type() - Function to get the device type in
- * string format
- *
- * @device_type: Device Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_device_type(enum qdma_device_type device_type)
-{
-	switch (device_type) {
-	case QDMA_DEVICE_SOFT:
-		return "Soft IP";
-	case QDMA_DEVICE_VERSAL_CPM4:
-		return "Versal CPM4 Hard IP";
-	case QDMA_DEVICE_VERSAL_CPM5:
-		return "Versal Hard CPM5";
-	default:
-		qdma_log_error("%s: invalid device type(%d), err:%d\n",
-				__func__, device_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_vivado_release_id() - Function to get the vivado release id in
- * string format
- *
- * @vivado_release_id: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_vivado_release_id(
-				enum qdma_vivado_release_id vivado_release_id)
-{
-	switch (vivado_release_id) {
-	case QDMA_VIVADO_2018_3:
-		return "vivado 2018.3";
-	case QDMA_VIVADO_2019_1:
-		return "vivado 2019.1";
-	case QDMA_VIVADO_2019_2:
-		return "vivado 2019.2";
-	case QDMA_VIVADO_2020_1:
-		return "vivado 2020.1";
-	case QDMA_VIVADO_2020_2:
-		return "vivado 2020.2";
-	case QDMA_VIVADO_2021_1:
-		return "vivado 2021.1";
-	case QDMA_VIVADO_2022_1:
-		return "vivado 2022.1";
-	default:
-		qdma_log_error("%s: invalid vivado_release_id(%d), err:%d\n",
-				__func__,
-				vivado_release_id,
-				-QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	for (index = idx; index < (idx + cnt); index++) {
-		reg_addr = reg_offst + (index * sizeof(uint32_t));
-		qdma_reg_write(dev_hndl, reg_addr, values[index - idx]);
-	}
-}
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	reg_addr = reg_offst + (idx * sizeof(uint32_t));
-	for (index = 0; index < cnt; index++) {
-		values[index] = qdma_reg_read(dev_hndl, reg_addr +
-					      (index * sizeof(uint32_t)));
-	}
-}
-
-void qdma_fetch_version_details(void *dev_hndl, uint8_t is_vf,
-	uint32_t version_reg_val, struct qdma_hw_version_info *version_info)
-{
-	uint32_t rtl_version, vivado_release_id, ip_type, device_type;
-	const char *version_str;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return;
-	}
-
-	if (!is_vf) {
-		rtl_version = FIELD_GET(QDMA_GLBL2_RTL_VERSION_MASK,
-				version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type = FIELD_GET(QDMA_GLBL2_VERSAL_IP_MASK,
-				version_reg_val);
-	} else {
-		rtl_version =
-			FIELD_GET(QDMA_GLBL2_VF_RTL_VERSION_MASK,
-					version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VF_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_VF_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type =
-			FIELD_GET(QDMA_GLBL2_VF_VERSAL_IP_MASK,
-					version_reg_val);
-	}
-
-	switch (rtl_version) {
-	case 0:
-		version_info->rtl_version = QDMA_RTL_BASE;
-		break;
-	case 1:
-		version_info->rtl_version = QDMA_RTL_PATCH;
-		break;
-	default:
-		version_info->rtl_version = QDMA_RTL_NONE;
-		break;
-	}
-
-	version_str = qdma_get_rtl_version(version_info->rtl_version);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_rtl_version_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-	switch (device_type) {
-	case 0:
-		version_info->device_type = QDMA_DEVICE_SOFT;
-		break;
-	case 1:
-		version_info->device_type = QDMA_DEVICE_VERSAL_CPM4;
-		break;
-	case 2:
-		version_info->device_type = QDMA_DEVICE_VERSAL_CPM5;
-		break;
-	default:
-		version_info->device_type = QDMA_DEVICE_NONE;
-		break;
-	}
-
-	version_str = qdma_get_device_type(version_info->device_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_device_type_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-
-	if (version_info->device_type == QDMA_DEVICE_SOFT) {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_SOFT_IP;
-			break;
-		case 1:
-		case 2:
-			/* For QDMA4.0 and QDMA5.0, HW design and
-			 * register map is same except some
-			 * performance optimizations
-			 */
-			version_info->ip_type = EQDMA_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	} else {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_VERSAL_HARD_IP;
-			break;
-		case 1:
-			version_info->ip_type = QDMA_VERSAL_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	}
-
-	version_str = qdma_get_ip_type(dev_hndl, is_vf, version_info->ip_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_ip_type_str,
-			version_str,
-			QDMA_HW_VERSION_STRING_LEN);
-
-	if (version_info->ip_type == QDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2018_3;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2019_1;
-			break;
-		case 2:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else if (version_info->ip_type == EQDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2020_1;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2020_2;
-			break;
-		case 2:
-			version_info->vivado_release = QDMA_VIVADO_2022_1;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else if (version_info->device_type == QDMA_DEVICE_VERSAL_CPM5) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2021_1;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2022_1;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else { /* Versal case */
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	}
-
-	version_str = qdma_get_vivado_release_id(
-			version_info->vivado_release);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_vivado_release_id_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-}
-
-
-/*
- * dump_reg() - Helper function to dump register value into string
- *
- * return len - length of the string copied into buffer
- */
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval)
-{
-	/* length of the line should be minimum 80 chars.
-	 * If below print pattern is changed, check for
-	 * new buffer size requirement
-	 */
-	if (buf_sz < DEBGFS_LINE_SZ) {
-		qdma_log_error("%s: buf_sz(%d) < expected(%d): err: %d\n",
-						__func__,
-						buf_sz, DEBGFS_LINE_SZ,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return QDMA_SNPRINTF_S(buf, buf_sz, DEBGFS_LINE_SZ,
-			"[%#7x] %-47s %#-10x %u\n",
-			raddr, rname, rval, rval);
-
-}
-
-void qdma_memset(void *to, uint8_t val, uint32_t size)
-{
-	uint32_t i;
-	uint8_t *_to = (uint8_t *)to;
-
-	for (i = 0; i < size; i++)
-		_to[i] = val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_read() - function to read the CMPT CIDX register
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	pointer to array to hold the values read
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_queue_cmpt_cidx_read(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-			QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	reg_addr += qid * QDMA_CMPT_CIDX_STEP;
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	reg_info->wrb_cidx =
-		FIELD_GET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK, reg_val);
-	reg_info->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-			reg_val));
-	reg_info->wrb_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-			reg_val));
-	reg_info->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_val));
-	reg_info->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK, reg_val));
-	reg_info->trig_mode =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK, reg_val));
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_initiate_flr() - function to initiate Function Level Reset
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_initiate_flr(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, reg_addr, 1);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_flr_done() - function to check whether the FLR is done or not
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @done:	if FLR process completed ,  done is 1 else 0.
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_flr_done(void *dev_hndl, uint8_t is_vf, uint8_t *done)
-{
-	int rv;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!done) {
-		qdma_log_error("%s: done is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* wait for it to become zero */
-	rv = hw_monitor_reg(dev_hndl, reg_addr, QDMA_FLR_STATUS_MASK,
-			0, 5 * QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US);
-	if (rv < 0)
-		*done = 0;
-	else
-		*done = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_config_bar() - function for the config bar verification
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_config_bar(void *dev_hndl, uint8_t is_vf, enum qdma_ip *ip)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_CONFIG_BLOCK_ID;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	/** TODO: Version register for VFs is 0x5014 for EQDMA and
-	 *  0x1014 for QDMA/Versal. First time reading 0x5014 for
-	 *  all the device and based on the upper 16 bits value
-	 *  (i.e. 0x1fd3), finding out whether its EQDMA or QDMA/Versal
-	 *  for EQDMA VFs.
-	 *  Need to modify this logic once the hardware team
-	 *  comes up with a common register for VFs
-	 */
-	if (is_vf) {
-		if (FIELD_GET(QDMA_GLBL2_VF_UNIQUE_ID_MASK, reg_val)
-				!= QDMA_MAGIC_NUMBER) {
-			/* Its either QDMA or Versal */
-
-#ifdef EQDMA_CPM5_VF_GT_256Q_SUPPORTED
-			*ip = EQDMA_CPM5_IP;
-			reg_addr = EQDMA_CPM5_OFFSET_VF_VERSION;
-#else
-			*ip = EQDMA_IP;
-			reg_addr = EQDMA_OFFSET_VF_VERSION;
-#endif
-			reg_val = qdma_reg_read(dev_hndl, reg_addr);
-		} else {
-			*ip = QDMA_OR_VERSAL_IP;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	if (FIELD_GET(QDMA_CONFIG_BLOCK_ID_MASK, reg_val)
-			!= QDMA_MAGIC_NUMBER) {
-		qdma_log_error("%s: Invalid config bar, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_INV_CONFIG_BAR);
-		return -QDMA_ERR_HWACC_INV_CONFIG_BAR;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = qdma_soft_reg_dump_buf_len();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			len = qdma_cpm4_reg_dump_buf_len();
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			len = eqdma_cpm5_reg_dump_buf_len();
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_reg_info_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen, int *num_regs)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buflen) {
-		qdma_log_error("%s: buflen is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!num_regs) {
-		qdma_log_error("%s: num_regs is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = 0;
-		*num_regs = 0;
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4) {
-			len = qdma_cpm4_reg_dump_buf_len();
-			*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		} else if (device_type == QDMA_DEVICE_VERSAL_CPM5) {
-			len = eqdma_cpm5_reg_dump_buf_len();
-			*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		} else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-				__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_context_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int rv = 0;
-
-	*buflen = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_context_buf_len(st, q_type, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_context_buf_len(st, q_type, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_context_buf_len(st, q_type, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_context_buf_len(st, q_type, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-int qdma_acc_get_num_config_regs(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t *num_regs)
-{
-	int rv = 0;
-
-	*num_regs = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_get_config_num_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_get_config_num_regs();
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_get_config_num_regs();
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_get_config_num_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*num_regs = rv;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_get_config_regs() - Function to get qdma config registers.
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_data:   pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type, enum qdma_device_type device_type,
-		uint32_t *reg_data)
-{
-	struct xreg_info *reg_info;
-	uint32_t count = 0;
-	uint32_t num_regs;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Get Config regs not valid for VF, err:%d\n",
-			__func__,
-			-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (reg_data == NULL) {
-		qdma_log_error("%s: reg_data is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		num_regs = qdma_get_config_num_regs();
-		reg_info = qdma_get_config_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4) {
-			num_regs = qdma_cpm4_get_config_num_regs();
-			reg_info = qdma_cpm4_get_config_regs();
-		} else if (device_type == QDMA_DEVICE_VERSAL_CPM5) {
-			num_regs = eqdma_cpm5_get_config_num_regs();
-			reg_info = eqdma_cpm5_get_config_regs();
-		} else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-				__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-		break;
-	case EQDMA_SOFT_IP:
-		num_regs = eqdma_get_config_num_regs();
-		reg_info = eqdma_get_config_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (count = 0; count < num_regs - 1; count++) {
-		reg_data[count] = qdma_reg_read(dev_hndl,
-				reg_info[count].addr);
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type, enum qdma_device_type device_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv =  qdma_soft_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_config_regs(dev_hndl, is_vf,
-					buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_config_regs(dev_hndl, is_vf,
-					buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to dump fileds in
- * a specified register.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf || !buflen) {
-		qdma_log_error("%s: Invalid input buffer, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		QDMA_SNPRINTF_S(buf, buflen, DEBGFS_LINE_SZ,
-		"QDMA reg field info not supported for QDMA_SOFT_IP\n");
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @st:		Queue Mode (ST or MM)
- * @q_type:	Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP type
- * @device_type:QDMA DEVICE Type
- * @hw_qid:     queue id
- * @st:		Queue Mode(ST or MM)
- * @q_type:	Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				enum qdma_device_type device_type,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_read_dump_queue_context(dev_hndl, func_id,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_read_dump_queue_context(dev_hndl,
-				func_id, qid_hw, st, q_type, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_read_dump_queue_context(dev_hndl,
-				func_id, qid_hw, st, q_type, buf, buflen);
-		else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_read_dump_queue_context(dev_hndl, func_id,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA ip type
- * @num_regs :		Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_get_function_number() - Function to get the function number
- *
- * @dev_hndl:	device handle
- * @func_id:	pointer to hold the function id
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_get_function_number(void *dev_hndl, uint16_t *func_id)
-{
-	if (!dev_hndl || !func_id) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*func_id = (uint8_t)qdma_reg_read(dev_hndl,
-			QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_setup() - Function to set up the qdma error
- * interrupt
- *
- * @dev_hndl:	device handle
- * @func_id:	Function id
- * @err_intr_index:	Interrupt vector
- * @rearm:	rearm or not
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_setup(void *dev_hndl, uint16_t func_id,
-		uint8_t err_intr_index)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val =
-		FIELD_SET(QDMA_GLBL_ERR_FUNC_MASK, func_id) |
-		FIELD_SET(QDMA_GLBL_ERR_VEC_MASK, err_intr_index);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_rearm() - Function to re-arm the error interrupt
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_rearm(void *dev_hndl)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT);
-	reg_val |= FIELD_SET(QDMA_GLBL_ERR_ARM_MASK, 1);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code)
-{
-	return qdma_get_err_code(acc_err_code);
-}
-
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access)
-{
-	int rv = QDMA_SUCCESS;
-	enum qdma_ip ip = EQDMA_IP;
-
-	struct qdma_hw_version_info version_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!hw_access) {
-		qdma_log_error("%s: hw_access is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_is_config_bar(dev_hndl, is_vf, &ip);
-	if (rv != QDMA_SUCCESS) {
-		qdma_log_error("%s: config bar passed is INVALID, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	qdma_memset(hw_access, 0, sizeof(struct qdma_hw_access));
-
-	if (ip == EQDMA_IP)
-		hw_access->qdma_get_version = &eqdma_get_version;
-	else if (ip == EQDMA_CPM5_IP)
-		hw_access->qdma_get_version = &eqdma_cpm5_get_version;
-	else
-		hw_access->qdma_get_version = &qdma_get_version;
-
-	hw_access->qdma_init_ctxt_memory = &qdma_init_ctxt_memory;
-	hw_access->qdma_fmap_conf = &qdma_fmap_conf;
-	hw_access->qdma_sw_ctx_conf = &qdma_sw_ctx_conf;
-	hw_access->qdma_pfetch_ctx_conf = &qdma_pfetch_ctx_conf;
-	hw_access->qdma_cmpt_ctx_conf = &qdma_cmpt_ctx_conf;
-	hw_access->qdma_hw_ctx_conf = &qdma_hw_ctx_conf;
-	hw_access->qdma_credit_ctx_conf = &qdma_credit_ctx_conf;
-	hw_access->qdma_indirect_intr_ctx_conf = &qdma_indirect_intr_ctx_conf;
-	hw_access->qdma_set_default_global_csr = &qdma_set_default_global_csr;
-	hw_access->qdma_global_csr_conf = &qdma_global_csr_conf;
-	hw_access->qdma_global_writeback_interval_conf =
-					&qdma_global_writeback_interval_conf;
-	hw_access->qdma_queue_pidx_update = &qdma_queue_pidx_update;
-	hw_access->qdma_queue_cmpt_cidx_read = &qdma_queue_cmpt_cidx_read;
-	hw_access->qdma_queue_cmpt_cidx_update = &qdma_queue_cmpt_cidx_update;
-	hw_access->qdma_queue_intr_cidx_update = &qdma_queue_intr_cidx_update;
-	hw_access->qdma_mm_channel_conf = &qdma_mm_channel_conf;
-	hw_access->qdma_get_user_bar = &qdma_get_user_bar;
-	hw_access->qdma_get_function_number = &qdma_get_function_number;
-	hw_access->qdma_get_device_attributes = &qdma_get_device_attributes;
-	hw_access->qdma_hw_error_intr_setup = &qdma_hw_error_intr_setup;
-	hw_access->qdma_hw_error_intr_rearm = &qdma_hw_error_intr_rearm;
-	hw_access->qdma_hw_error_enable = &qdma_hw_error_enable;
-	hw_access->qdma_hw_get_error_name = &qdma_hw_get_error_name;
-	hw_access->qdma_hw_error_process = &qdma_hw_error_process;
-	hw_access->qdma_dump_config_regs = &qdma_soft_dump_config_regs;
-	hw_access->qdma_dump_queue_context = &qdma_soft_dump_queue_context;
-	hw_access->qdma_read_dump_queue_context =
-					&qdma_soft_read_dump_queue_context;
-	hw_access->qdma_dump_intr_context = &qdma_dump_intr_context;
-	hw_access->qdma_is_legacy_intr_pend = &qdma_is_legacy_intr_pend;
-	hw_access->qdma_clear_pend_legacy_intr = &qdma_clear_pend_legacy_intr;
-	hw_access->qdma_legacy_intr_conf = &qdma_legacy_intr_conf;
-	hw_access->qdma_initiate_flr = &qdma_initiate_flr;
-	hw_access->qdma_is_flr_done = &qdma_is_flr_done;
-	hw_access->qdma_get_error_code = &qdma_get_error_code;
-	hw_access->qdma_read_reg_list = &qdma_read_reg_list;
-	hw_access->qdma_dump_config_reg_list =
-			&qdma_soft_dump_config_reg_list;
-	hw_access->qdma_dump_reg_info = &qdma_dump_reg_info;
-	hw_access->mbox_base_pf = QDMA_OFFSET_MBOX_BASE_PF;
-	hw_access->mbox_base_vf = QDMA_OFFSET_MBOX_BASE_VF;
-	hw_access->qdma_max_errors = QDMA_ERRS_ALL;
-
-	rv = hw_access->qdma_get_version(dev_hndl, is_vf, &version_info);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	qdma_log_info("Device Type: %s\n",
-			qdma_get_device_type(version_info.device_type));
-
-	qdma_log_info("IP Type: %s\n",
-		qdma_get_ip_type(dev_hndl, is_vf, version_info.ip_type));
-
-	qdma_log_info("Vivado Release: %s\n",
-		qdma_get_vivado_release_id(version_info.vivado_release));
-
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP &&
-			version_info.device_type == QDMA_DEVICE_VERSAL_CPM4) {
-		hw_access->qdma_init_ctxt_memory =
-				&qdma_cpm4_init_ctxt_memory;
-		hw_access->qdma_qid2vec_conf = &qdma_cpm4_qid2vec_conf;
-		hw_access->qdma_fmap_conf = &qdma_cpm4_fmap_conf;
-		hw_access->qdma_sw_ctx_conf = &qdma_cpm4_sw_ctx_conf;
-		hw_access->qdma_pfetch_ctx_conf =
-				&qdma_cpm4_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &qdma_cpm4_cmpt_ctx_conf;
-		hw_access->qdma_hw_ctx_conf = &qdma_cpm4_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf =
-				&qdma_cpm4_credit_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&qdma_cpm4_indirect_intr_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-					&qdma_cpm4_set_default_global_csr;
-		hw_access->qdma_queue_pidx_update =
-				&qdma_cpm4_queue_pidx_update;
-		hw_access->qdma_queue_cmpt_cidx_update =
-				&qdma_cpm4_queue_cmpt_cidx_update;
-		hw_access->qdma_queue_intr_cidx_update =
-				&qdma_cpm4_queue_intr_cidx_update;
-		hw_access->qdma_get_user_bar = &qdma_cmp_get_user_bar;
-		hw_access->qdma_get_device_attributes =
-				&qdma_cpm4_get_device_attributes;
-		hw_access->qdma_dump_config_regs =
-				&qdma_cpm4_dump_config_regs;
-		hw_access->qdma_dump_intr_context =
-				&qdma_cpm4_dump_intr_context;
-		hw_access->qdma_hw_error_enable =
-				&qdma_cpm4_hw_error_enable;
-		hw_access->qdma_hw_error_process =
-				&qdma_cpm4_hw_error_process;
-		hw_access->qdma_hw_get_error_name =
-				&qdma_cpm4_hw_get_error_name;
-		hw_access->qdma_legacy_intr_conf = NULL;
-		hw_access->qdma_read_reg_list = &qdma_cpm4_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&qdma_cpm4_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&qdma_cpm4_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&qdma_cpm4_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &qdma_cpm4_dump_reg_info;
-		hw_access->qdma_max_errors = QDMA_CPM4_ERRS_ALL;
-	}
-
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP &&
-			version_info.device_type == QDMA_DEVICE_VERSAL_CPM5) {
-		hw_access->qdma_init_ctxt_memory =
-			&eqdma_cpm5_init_ctxt_memory;
-#ifdef TANDEM_BOOT_SUPPORTED
-		hw_access->qdma_init_st_ctxt =
-			&eqdma_cpm5_init_st_ctxt;
-#endif
-		hw_access->qdma_sw_ctx_conf = &eqdma_cpm5_sw_ctx_conf;
-		hw_access->qdma_fmap_conf = &eqdma_cpm5_fmap_conf;
-		hw_access->qdma_pfetch_ctx_conf =
-			&eqdma_cpm5_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &eqdma_cpm5_cmpt_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&eqdma_cpm5_indirect_intr_ctx_conf;
-		hw_access->qdma_dump_config_regs =
-			&eqdma_cpm5_dump_config_regs;
-		hw_access->qdma_dump_intr_context =
-			&eqdma_cpm5_dump_intr_context;
-		hw_access->qdma_hw_error_enable =
-			&eqdma_cpm5_hw_error_enable;
-		hw_access->qdma_hw_error_process =
-			&eqdma_cpm5_hw_error_process;
-		hw_access->qdma_hw_get_error_name =
-			&eqdma_cpm5_hw_get_error_name;
-		hw_access->qdma_hw_ctx_conf = &eqdma_cpm5_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf =
-			&eqdma_cpm5_credit_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-				&eqdma_cpm5_set_default_global_csr;
-		hw_access->qdma_get_device_attributes =
-				&eqdma_cpm5_get_device_attributes;
-		hw_access->qdma_get_user_bar = &eqdma_cpm5_get_user_bar;
-		hw_access->qdma_read_reg_list = &eqdma_cpm5_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&eqdma_cpm5_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&eqdma_cpm5_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&eqdma_cpm5_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &eqdma_cpm5_dump_reg_info;
-		/* All CSR and Queue space register belongs to Window 0.
-		 * Mailbox and MSIX register belongs to Window 1
-		 * Therefore, Mailbox offsets are different for EQDMA
-		 * Mailbox offset for PF : 128K + original address
-		 * Mailbox offset for VF : 16K + original address
-		 */
-		hw_access->mbox_base_pf = EQDMA_CPM5_OFFSET_MBOX_BASE_PF;
-		hw_access->mbox_base_vf = EQDMA_CPM5_OFFSET_MBOX_BASE_VF;
-		hw_access->qdma_max_errors = EQDMA_CPM5_ERRS_ALL;
-
-}
-
-	if (version_info.ip_type == EQDMA_SOFT_IP) {
-		hw_access->qdma_init_ctxt_memory = &eqdma_init_ctxt_memory;
-		hw_access->qdma_sw_ctx_conf = &eqdma_sw_ctx_conf;
-		hw_access->qdma_fmap_conf = &eqdma_fmap_conf;
-		hw_access->qdma_pfetch_ctx_conf = &eqdma_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &eqdma_cmpt_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&eqdma_indirect_intr_ctx_conf;
-		hw_access->qdma_dump_config_regs = &eqdma_dump_config_regs;
-		hw_access->qdma_dump_intr_context = &eqdma_dump_intr_context;
-		hw_access->qdma_hw_error_enable = &eqdma_hw_error_enable;
-		hw_access->qdma_hw_error_process = &eqdma_hw_error_process;
-		hw_access->qdma_hw_get_error_name = &eqdma_hw_get_error_name;
-		hw_access->qdma_hw_ctx_conf = &eqdma_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf = &eqdma_credit_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-				&eqdma_set_default_global_csr;
-		hw_access->qdma_get_device_attributes =
-				&eqdma_get_device_attributes;
-		hw_access->qdma_get_user_bar = &eqdma_get_user_bar;
-		hw_access->qdma_read_reg_list = &eqdma_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&eqdma_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&eqdma_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&eqdma_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &eqdma_dump_reg_info;
-		/* All CSR and Queue space register belongs to Window 0.
-		 * Mailbox and MSIX register belongs to Window 1
-		 * Therefore, Mailbox offsets are different for EQDMA
-		 * Mailbox offset for PF : 128K + original address
-		 * Mailbox offset for VF : 16K + original address
-		 */
-		hw_access->mbox_base_pf = EQDMA_OFFSET_MBOX_BASE_PF;
-		hw_access->mbox_base_vf = EQDMA_OFFSET_MBOX_BASE_VF;
-		hw_access->qdma_max_errors = EQDMA_ERRS_ALL;
-	}
-
-	return QDMA_SUCCESS;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.h
deleted file mode 100755
index 24a2189..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_common.h
+++ /dev/null
@@ -1,942 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_ACCESS_COMMON_H_
-#define __QDMA_ACCESS_COMMON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_access_export.h"
-#include "qdma_access_errors.h"
-
-/* QDMA HW version string array length */
-#define QDMA_HW_VERSION_STRING_LEN			32
-
-#define ENABLE_INIT_CTXT_MEMORY			1
-
-#ifdef GCC_COMPILER
-static inline uint32_t get_trailing_zeros(uint64_t x)
-{
-	uint32_t rv =
-		__builtin_ffsll(x) - 1;
-	return rv;
-}
-#else
-static inline uint32_t get_trailing_zeros(uint64_t value)
-{
-	uint32_t pos = 0;
-
-	if ((value & 0xffffffff) == 0) {
-		pos += 32;
-		value >>= 32;
-	}
-	if ((value & 0xffff) == 0) {
-		pos += 16;
-		value >>= 16;
-	}
-	if ((value & 0xff) == 0) {
-		pos += 8;
-		value >>= 8;
-	}
-	if ((value & 0xf) == 0) {
-		pos += 4;
-		value >>= 4;
-	}
-	if ((value & 0x3) == 0) {
-		pos += 2;
-		value >>= 2;
-	}
-	if ((value & 0x1) == 0)
-		pos += 1;
-
-	return pos;
-}
-#endif
-
-#define FIELD_SHIFT(mask)       get_trailing_zeros(mask)
-#define FIELD_SET(mask, val)    ((val << FIELD_SHIFT(mask)) & mask)
-#define FIELD_GET(mask, reg)    ((reg & mask) >> FIELD_SHIFT(mask))
-
-
-/* CSR Default values */
-#define DEFAULT_MAX_DSC_FETCH               6
-#define DEFAULT_WRB_INT                     QDMA_WRB_INTERVAL_128
-
-/* Default values for 0xB08 */
-#define DEFAULT_PFCH_NUM_ENTRIES_PER_Q      8
-#define DEFAULT_PFCH_MAX_Q_CNT              16
-#define DEFAULT_C2H_INTR_TIMER_TICK         25
-#define DEFAULT_CMPT_COAL_TIMER_TICK        25
-#define DEFAULT_CMPT_COAL_MAX_BUF_SZ        32
-
-#ifdef THROUGHPUT_MEASUREMENT
-/* Update WRB coalesce timer count for throughput measurement */
-#define DEFAULT_CMPT_COAL_TIMER_CNT         10
-#else
-/* Update WRB coalesce timer count for low latency measurement */
-#define DEFAULT_CMPT_COAL_TIMER_CNT         5
-#endif
-
-#define QDMA_BAR_NUM                        6
-
-/** Maximum data vectors to be used for each function
- * TODO: Please note that for 2018.2 only one vector would be used
- * per pf and only one ring would be created for this vector
- * It is also assumed that all functions have the same number of data vectors
- * and currently different number of vectors per PF is not supported
- */
-#define QDMA_NUM_DATA_VEC_FOR_INTR_CXT  1
-
-enum ind_ctxt_cmd_op {
-	QDMA_CTXT_CMD_CLR,
-	QDMA_CTXT_CMD_WR,
-	QDMA_CTXT_CMD_RD,
-	QDMA_CTXT_CMD_INV
-};
-
-enum ind_ctxt_cmd_sel {
-	QDMA_CTXT_SEL_SW_C2H,
-	QDMA_CTXT_SEL_SW_H2C,
-	QDMA_CTXT_SEL_HW_C2H,
-	QDMA_CTXT_SEL_HW_H2C,
-	QDMA_CTXT_SEL_CR_C2H,
-	QDMA_CTXT_SEL_CR_H2C,
-	QDMA_CTXT_SEL_CMPT,
-	QDMA_CTXT_SEL_PFTCH,
-	QDMA_CTXT_SEL_INT_COAL,
-	QDMA_CTXT_SEL_PASID_RAM_LOW,
-	QDMA_CTXT_SEL_PASID_RAM_HIGH,
-	QDMA_CTXT_SEL_TIMER,
-	QDMA_CTXT_SEL_FMAP,
-};
-
-/* polling a register */
-#define	QDMA_REG_POLL_DFLT_INTERVAL_US	10		    /* 10us per poll */
-#define	QDMA_REG_POLL_DFLT_TIMEOUT_US	(500*1000)	/* 500ms */
-
-/** Constants */
-#define QDMA_NUM_RING_SIZES                                 16
-#define QDMA_NUM_C2H_TIMERS                                 16
-#define QDMA_NUM_C2H_BUFFER_SIZES                           16
-#define QDMA_NUM_C2H_COUNTERS                               16
-#define QDMA_MM_CONTROL_RUN                                 0x1
-#define QDMA_MM_CONTROL_STEP                                0x100
-#define QDMA_MAGIC_NUMBER                                   0x1fd3
-#define QDMA_PIDX_STEP                                      0x10
-#define QDMA_CMPT_CIDX_STEP                                 0x10
-#define QDMA_INT_CIDX_STEP                                  0x10
-
-
-/** QDMA_IND_REG_SEL_PFTCH */
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK                  GENMASK(15, 3)
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK                  GENMASK(2, 0)
-
-/** QDMA_IND_REG_SEL_CMPT */
-#define QDMA_COMPL_CTXT_BADDR_GET_H_MASK                    GENMASK_ULL(63, 38)
-#define QDMA_COMPL_CTXT_BADDR_GET_L_MASK                    GENMASK_ULL(37, 12)
-#define QDMA_COMPL_CTXT_PIDX_GET_H_MASK                     GENMASK(15, 4)
-#define QDMA_COMPL_CTXT_PIDX_GET_L_MASK                     GENMASK(3, 0)
-
-#define QDMA_INTR_CTXT_BADDR_GET_H_MASK                     GENMASK_ULL(63, 61)
-#define QDMA_INTR_CTXT_BADDR_GET_M_MASK                     GENMASK_ULL(60, 29)
-#define QDMA_INTR_CTXT_BADDR_GET_L_MASK                     GENMASK_ULL(28, 12)
-
-#define     QDMA_GLBL2_MM_CMPT_EN_MASK                      BIT(2)
-#define     QDMA_GLBL2_FLR_PRESENT_MASK                     BIT(1)
-#define     QDMA_GLBL2_MAILBOX_EN_MASK                      BIT(0)
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-
-/* ------------------------ indirect register context fields -----------*/
-union qdma_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:12;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-#define QDMA_IND_CTXT_DATA_NUM_REGS                         8
-
-/**
- * struct qdma_indirect_ctxt_regs - Inirect Context programming registers
- */
-struct qdma_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_IND_CTXT_DATA_NUM_REGS];
-	union qdma_ind_ctxt_cmd cmd;
-};
-
-/**
- * struct qdma_fmap_cfg - fmap config data structure
- */
-struct qdma_fmap_cfg {
-
-	/** @qbase - queue base for the function */
-	uint16_t qbase;
-	/** @qmax - maximum queues in the function */
-	uint16_t qmax;
-};
-
-/**
- * struct qdma_qid2vec - qid to vector mapping data structure
- */
-struct qdma_qid2vec {
-
-	/** @c2h_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t c2h_vector;
-	/** @c2h_en_coal - C2H Interrupt aggregation enable */
-	uint8_t c2h_en_coal;
-	/** @h2c_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t h2c_vector;
-	/** @h2c_en_coal - H2C Interrupt aggregation enable */
-	uint8_t h2c_en_coal;
-};
-
-/**
- * struct qdma_descq_sw_ctxt - descq SW context config data structure
- */
-struct qdma_descq_sw_ctxt {
-
-	/** @ring_bs_addr - ring base address */
-	uint64_t ring_bs_addr;
-	/** @vec - vector number */
-	uint16_t vec;
-	/** @pidx - initial producer index */
-	uint16_t pidx;
-	/** @irq_arm - Interrupt Arm */
-	uint8_t irq_arm;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @qen - Indicates that the queue is enabled */
-	uint8_t qen;
-	/** @frcd_en -Enable fetch credit */
-	uint8_t frcd_en;
-	/** @wbi_chk -Writeback/Interrupt after pending check */
-	uint8_t wbi_chk;
-	/** @wbi_intvl_en -Write back/Interrupt interval */
-	uint8_t wbi_intvl_en;
-	/** @at - Address tanslation */
-	uint8_t at;
-	/** @fetch_max - Maximum number of descriptor fetches outstanding */
-	uint8_t fetch_max;
-	/** @rngsz_idx - Descriptor ring size index */
-	uint8_t rngsz_idx;
-	/** @desc_sz -Descriptor fetch size */
-	uint8_t desc_sz;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @mm_chn - MM channel */
-	uint8_t mm_chn;
-	/** @wbk_en -Writeback enable */
-	uint8_t wbk_en;
-	/** @irq_en -Interrupt enable */
-	uint8_t irq_en;
-	/** @port_id -Port_id */
-	uint8_t port_id;
-	/** @irq_no_last - No interrupt was sent */
-	uint8_t irq_no_last;
-	/** @err - Error status */
-	uint8_t err;
-	/** @err_wb_sent -writeback/interrupt was sent for an error */
-	uint8_t err_wb_sent;
-	/** @irq_req - Interrupt due to error waiting to be sent */
-	uint8_t irq_req;
-	/** @mrkr_dis - Marker disable */
-	uint8_t mrkr_dis;
-	/** @is_mm - MM mode */
-	uint8_t is_mm;
-	/** @intr_aggr - interrupt aggregation enable */
-	uint8_t intr_aggr;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @virtio_en - Queue is in Virtio Mode */
-	uint8_t virtio_en;
-	/** @pack_byp_out - descs on desc output interface can be packed */
-	uint8_t pack_byp_out;
-	/** @irq_byp - IRQ Bypass mode */
-	uint8_t irq_byp;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @virtio_dsc_base - Virtio Desc Base Address */
-	uint64_t virtio_dsc_base;
-};
-
-/**
- * struct qdma_descq_hw_ctxt - descq hw context config data structure
- */
-struct qdma_descq_hw_ctxt {
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @crd_use - credits consumed */
-	uint16_t crd_use;
-	/** @dsc_pend - descriptors pending */
-	uint8_t dsc_pend;
-	/** @idl_stp_b -Queue invalid and no descriptors pending */
-	uint8_t idl_stp_b;
-	/** @evt_pnd - Event pending */
-	uint8_t evt_pnd;
-	/** @fetch_pnd -Descriptor fetch pending */
-	uint8_t fetch_pnd;
-};
-
-/**
- * struct qdma_descq_credit_ctxt - descq credit context config data structure
- */
-struct qdma_descq_credit_ctxt {
-
-	/** @credit -Fetch credits received. */
-	uint32_t credit;
-};
-
-/**
- * struct qdma_descq_prefetch_ctxt - descq pfetch context config data structure
- */
-struct qdma_descq_prefetch_ctxt {
-	/** @sw_crdt -Software credit */
-	uint16_t sw_crdt;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @bufsz_idx - c2h buffer size index */
-	uint8_t bufsz_idx;
-	/** @port_id - port ID */
-	uint8_t port_id;
-	/** @var_desc - Variable Descriptor */
-	uint8_t var_desc;
-	/** @num_pftch - Number of descs prefetched */
-	uint16_t num_pftch;
-	/** @err -Error detected on this queue */
-	uint8_t err;
-	/** @pfch_en - Enable prefetch */
-	uint8_t pfch_en;
-	/** @pfch - Queue is in prefetch */
-	uint8_t pfch;
-	/** @valid - context is valid */
-	uint8_t valid;
-};
-
-/**
- * struct qdma_descq_cmpt_ctxt - descq completion context config data structure
- */
-struct qdma_descq_cmpt_ctxt {
-	/** @bs_addr - completion ring base address */
-	uint64_t bs_addr;
-	/** @vec - Interrupt Vector */
-	uint16_t vec;
-	/** @pidx_l - producer index low */
-	uint16_t pidx;
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @en_stat_desc - Enable Completion Status writes */
-	uint8_t en_stat_desc;
-	/** @en_int - Enable Completion interrupts */
-	uint8_t en_int;
-	/** @trig_mode - Interrupt and Completion Status Write Trigger Mode */
-	uint8_t trig_mode;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @counter_idx - Index to counter register */
-	uint8_t counter_idx;
-	/** @timer_idx - Index to timer register */
-	uint8_t timer_idx;
-	/** @in_st - Interrupt State */
-	uint8_t in_st;
-	/** @color - initial color bit to be used on Completion */
-	uint8_t color;
-	/** @ringsz_idx - Completion ring size index to ring size registers */
-	uint8_t ringsz_idx;
-	/** @desc_sz  -descriptor size */
-	uint8_t desc_sz;
-	/** @valid  - context valid */
-	uint8_t valid;
-	/** @err - error status */
-	uint8_t err;
-	/**
-	 * @user_trig_pend - user logic initiated interrupt is
-	 * pending to be generate
-	 */
-	uint8_t user_trig_pend;
-	/** @timer_running - timer is running on this queue */
-	uint8_t timer_running;
-	/** @full_upd - Full update */
-	uint8_t full_upd;
-	/** @ovf_chk_dis - Completion Ring Overflow Check Disable */
-	uint8_t ovf_chk_dis;
-	/** @at -Address Translation */
-	uint8_t at;
-	/** @int_aggr -Interrupt Aggregation */
-	uint8_t int_aggr;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @vio - queue is in VirtIO mode */
-	uint8_t vio;
-	/** @dir_c2h - DMA direction is C2H */
-	uint8_t dir_c2h;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @vio_eop - Virtio End-of-packet */
-	uint8_t vio_eop;
-	/** @sh_cmpt - Shared Completion Queue */
-	uint8_t sh_cmpt;
-};
-
-/**
- * struct qdma_indirect_intr_ctxt - indirect interrupt context config data
- * structure
- */
-struct qdma_indirect_intr_ctxt {
-	/** @baddr_4k -Base address of Interrupt Aggregation Ring */
-	uint64_t baddr_4k;
-	/** @vec - Interrupt vector index in msix table */
-	uint16_t vec;
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @valid - context valid */
-	uint8_t valid;
-	/** @int_st -Interrupt State */
-	uint8_t int_st;
-	/** @color - Color bit */
-	uint8_t color;
-	/** @page_size - Interrupt Aggregation Ring size */
-	uint8_t page_size;
-	/** @at - Address translation */
-	uint8_t at;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @func_id - Function ID */
-	uint16_t func_id;
-};
-
-struct qdma_hw_version_info {
-	/** @rtl_version - RTL Version */
-	enum qdma_rtl_version rtl_version;
-	/** @vivado_release - Vivado Release id */
-	enum qdma_vivado_release_id vivado_release;
-	/** @versal_ip_state - Versal IP state */
-	enum qdma_ip_type ip_type;
-	/** @device_type - Device Type */
-	enum qdma_device_type device_type;
-	/** @qdma_rtl_version_str - RTL Version string*/
-	char qdma_rtl_version_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_vivado_release_id_str - Vivado Release id string*/
-	char qdma_vivado_release_id_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_device_type_str - Qdma device type string*/
-	char qdma_device_type_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_versal_ip_state_str - Versal IP state string*/
-	char qdma_ip_type_str[QDMA_HW_VERSION_STRING_LEN];
-};
-
-#define CTXT_ENTRY_NAME_SZ        64
-struct qctx_entry {
-	char		name[CTXT_ENTRY_NAME_SZ];
-	uint32_t	value;
-};
-
-/**
- * @struct - qdma_descq_context
- * @brief	queue context information
- */
-struct qdma_descq_context {
-	struct qdma_qid2vec qid2vec;
-	struct qdma_fmap_cfg fmap;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_credit_ctxt cr_ctxt;
-	struct qdma_descq_prefetch_ctxt pfetch_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-};
-
-/**
- * struct qdma_q_pidx_reg_info - Software PIDX register fields
- */
-struct qdma_q_pidx_reg_info {
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @irq_en - Interrupt enable */
-	uint8_t irq_en;
-};
-
-/**
- * struct qdma_q_intr_cidx_reg_info - Interrupt Ring CIDX register fields
- */
-struct qdma_intr_cidx_reg_info {
-	/** @sw_cidx - Software Consumer Index */
-	uint16_t sw_cidx;
-	/** @rng_idx - Ring Index of the Interrupt Aggregation ring */
-	uint8_t rng_idx;
-};
-
-/**
- * struct qdma_q_cmpt_cidx_reg_info - CMPT CIDX register fields
- */
-struct qdma_q_cmpt_cidx_reg_info {
-	/** @wrb_cidx - CMPT Consumer Index */
-	uint16_t wrb_cidx;
-	/** @counter_idx - Counter Threshold Index */
-	uint8_t counter_idx;
-	/** @timer_idx - Timer Count Index */
-	uint8_t timer_idx;
-	/** @trig_mode - Trigger mode */
-	uint8_t trig_mode;
-	/** @wrb_en - Enable status descriptor for CMPT */
-	uint8_t wrb_en;
-	/** @irq_en - Enable Interrupt for CMPT */
-	uint8_t irq_en;
-};
-
-
-/**
- * struct qdma_csr_info - Global CSR info data structure
- */
-struct qdma_csr_info {
-	/** @ringsz: ring size values */
-	uint16_t ringsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @bufsz: buffer size values */
-	uint16_t bufsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @timer_cnt: timer threshold values */
-	uint8_t timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @cnt_thres: counter threshold values */
-	uint8_t cnt_thres[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @wb_intvl: writeback interval */
-	uint8_t wb_intvl;
-};
-
-#define QDMA_MAX_REGISTER_DUMP	14
-
-/**
- * struct qdma_reg_data - Structure to
- * hold address value and pair
- */
-struct qdma_reg_data {
-	/** @reg_addr: register address */
-	uint32_t reg_addr;
-	/** @reg_val: register value */
-	uint32_t reg_val;
-};
-
-/**
- * enum qdma_hw_access_type - To hold hw access type
- */
-enum qdma_hw_access_type {
-	QDMA_HW_ACCESS_READ,
-	QDMA_HW_ACCESS_WRITE,
-	QDMA_HW_ACCESS_CLEAR,
-	QDMA_HW_ACCESS_INVALIDATE,
-	QDMA_HW_ACCESS_MAX
-};
-
-/**
- * enum qdma_global_csr_type - To hold global csr type
- */
-enum qdma_global_csr_type {
-	QDMA_CSR_RING_SZ,
-	QDMA_CSR_TIMER_CNT,
-	QDMA_CSR_CNT_TH,
-	QDMA_CSR_BUF_SZ,
-	QDMA_CSR_MAX
-};
-
-/**
- * enum status_type - To hold enable/disable status type
- */
-enum status_type {
-	DISABLE = 0,
-	ENABLE = 1,
-};
-
-/**
- * enum qdma_reg_read_type - Indicates reg read type
- */
-enum qdma_reg_read_type {
-	/** @QDMA_REG_READ_PF_ONLY: Read the register for PFs only */
-	QDMA_REG_READ_PF_ONLY,
-	/** @QDMA_REG_READ_VF_ONLY: Read the register for VFs only */
-	QDMA_REG_READ_VF_ONLY,
-	/** @QDMA_REG_READ_PF_VF: Read the register for both PF and VF */
-	QDMA_REG_READ_PF_VF,
-	/** @QDMA_REG_READ_MAX: Reg read enum max */
-	QDMA_REG_READ_MAX
-};
-
-/**
- * enum qdma_reg_read_groups - Indicates reg read groups
- */
-enum qdma_reg_read_groups {
-	/** @QDMA_REG_READ_GROUP_1: Read the register from  0x000 to 0x288 */
-	QDMA_REG_READ_GROUP_1,
-	/** @QDMA_REG_READ_GROUP_2: Read the register from 0x400 to 0xAFC */
-	QDMA_REG_READ_GROUP_2,
-	/** @QDMA_REG_READ_GROUP_3: Read the register from 0xB00 to 0xE28 */
-	QDMA_REG_READ_GROUP_3,
-	/** @QDMA_REG_READ_GROUP_4: Read the register Mailbox Registers */
-	QDMA_REG_READ_GROUP_4,
-	/** @QDMA_REG_READ_GROUP_MAX: Reg read max groups */
-	QDMA_REG_READ_GROUP_MAX
-};
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values);
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values);
-
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval);
-
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us,
-		uint32_t timeout_us);
-
-void qdma_memset(void *to, uint8_t val, uint32_t size);
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen);
-
-int qdma_acc_reg_info_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen, int *num_regs);
-
-int qdma_acc_context_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_acc_get_num_config_regs(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t *num_regs);
-
-/*
- * struct qdma_hw_access - Structure to hold HW access function pointers
- */
-struct qdma_hw_access {
-	int (*qdma_set_default_global_csr)(void *dev_hndl);
-	int (*qdma_global_csr_conf)(void *dev_hndl, uint8_t index,
-					uint8_t count, uint32_t *csr_val,
-					enum qdma_global_csr_type csr_type,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_global_writeback_interval_conf)(void *dev_hndl,
-					enum qdma_wrb_interval *wb_int,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_init_ctxt_memory)(void *dev_hndl);
-	int (*qdma_qid2vec_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				 struct qdma_qid2vec *ctxt,
-				 enum qdma_hw_access_type access_type);
-	int (*qdma_fmap_conf)(void *dev_hndl, uint16_t func_id,
-					struct qdma_fmap_cfg *config,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_sw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_sw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_pfetch_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_prefetch_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_cmpt_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_cmpt_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_hw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_hw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_credit_ctx_conf)(void *dev_hndl, uint8_t c2h,
-					uint16_t hw_qid,
-					struct qdma_descq_credit_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_indirect_intr_ctx_conf)(void *dev_hndl, uint16_t ring_index,
-					struct qdma_indirect_intr_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_queue_pidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				uint8_t is_c2h,
-				const struct qdma_q_pidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_read)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_update)(void *dev_hndl, uint8_t is_vf,
-			uint16_t qid,
-			const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_intr_cidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				const struct qdma_intr_cidx_reg_info *reg_info);
-	int (*qdma_mm_channel_conf)(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h, uint8_t enable);
-	int (*qdma_get_user_bar)(void *dev_hndl, uint8_t is_vf,
-				uint16_t func_id, uint8_t *user_bar);
-	int (*qdma_get_function_number)(void *dev_hndl, uint16_t *func_id);
-	int (*qdma_get_version)(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_version_info *version_info);
-	int (*qdma_get_device_attributes)(void *dev_hndl,
-					struct qdma_dev_attributes *dev_info);
-	int (*qdma_hw_error_intr_setup)(void *dev_hndl, uint16_t func_id,
-					uint8_t err_intr_index);
-	int (*qdma_hw_error_intr_rearm)(void *dev_hndl);
-	int (*qdma_hw_error_enable)(void *dev_hndl,
-			uint32_t err_idx);
-	const char *(*qdma_hw_get_error_name)(uint32_t err_idx);
-	int (*qdma_hw_error_process)(void *dev_hndl);
-	int (*qdma_dump_config_regs)(void *dev_hndl, uint8_t is_vf, char *buf,
-					uint32_t buflen);
-	int (*qdma_dump_reg_info)(void *dev_hndl, uint32_t reg_addr,
-				  uint32_t num_regs,
-				  char *buf,
-				  uint32_t buflen);
-	int (*qdma_dump_queue_context)(void *dev_hndl,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			struct qdma_descq_context *ctxt_data,
-			char *buf, uint32_t buflen);
-	int (*qdma_read_dump_queue_context)(void *dev_hndl,
-			uint16_t func_id,
-			uint16_t qid_hw,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			char *buf, uint32_t buflen);
-	int (*qdma_dump_intr_context)(void *dev_hndl,
-			struct qdma_indirect_intr_ctxt *intr_ctx,
-			int ring_index,
-			char *buf, uint32_t buflen);
-	int (*qdma_is_legacy_intr_pend)(void *dev_hndl);
-	int (*qdma_clear_pend_legacy_intr)(void *dev_hndl);
-	int (*qdma_legacy_intr_conf)(void *dev_hndl, enum status_type enable);
-	int (*qdma_initiate_flr)(void *dev_hndl, uint8_t is_vf);
-	int (*qdma_is_flr_done)(void *dev_hndl, uint8_t is_vf, uint8_t *done);
-	int (*qdma_get_error_code)(int acc_err_code);
-	int (*qdma_read_reg_list)(void *dev_hndl, uint8_t is_vf,
-			uint16_t reg_rd_group,
-			uint16_t *total_regs,
-			struct qdma_reg_data *reg_list);
-	int (*qdma_dump_config_reg_list)(void *dev_hndl,
-			uint32_t num_regs,
-			struct qdma_reg_data *reg_list,
-			char *buf, uint32_t buflen);
-#ifdef TANDEM_BOOT_SUPPORTED
-	int (*qdma_init_st_ctxt)(void *dev_hndl);
-#endif
-	uint32_t mbox_base_pf;
-	uint32_t mbox_base_vf;
-	uint32_t qdma_max_errors;
-};
-
-/*****************************************************************************/
-/**
- * qdma_hw_access_init() - Function to get the QDMA hardware
- *			access function pointers
- *	This function should be called once per device from
- *	device_open()/probe(). Caller shall allocate memory for
- *	qdma_hw_access structure and store pointer to it in their
- *	per device structure. Config BAR validation will be done
- *	inside this function
- *
- * @dev_hndl: device handle
- * @is_vf: Whether PF or VF
- * @hw_access: qdma_hw_access structure pointer.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access);
-
-/*****************************************************************************/
-/**
- * qdma_acc_get_config_regs() - Function to get qdma config registers
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_data:  pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t *reg_data);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to get qdma reg info in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_addr:   Register Address
- * @num_regs:   Number of Registers
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to dump qdma queue context data in a
- * buffer where context information is already available in 'ctxt_data'
- * structure pointer buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @ctxt_data:	Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @qid_hw:     queue id
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				enum qdma_device_type device_type,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA IP Type
- * @device_type:	QDMA DEVICE Type
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code);
-
-/*****************************************************************************/
-/**
- * qdma_fetch_version_details() - Function to fetch the version details from the
- *  version register value
- *
- * @is_vf           :    Whether PF or VF
- * @version_reg_val :    Value of the version register
- * @version_info :       Pointer to store the version details.
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_fetch_version_details(void *dev_hndl, uint8_t is_vf,
-	uint32_t version_reg_val, struct qdma_hw_version_info *version_info);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* QDMA_ACCESS_COMMON_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_errors.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_errors.h
deleted file mode 100755
index 8eb2c58..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_errors.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_ACCESS_ERRORS_H_
-#define __QDMA_ACCESS_ERRORS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library error codes definitions
- *
- * Header file *qdma_access_errors.h* defines error codes for common library
- */
-
-struct err_code_map {
-	int acc_err_code;
-	int err_code;
-};
-
-#define QDMA_HW_ERR_NOT_DETECTED		1
-
-enum qdma_access_error_codes {
-	QDMA_SUCCESS = 0,
-	QDMA_ERR_INV_PARAM,
-	QDMA_ERR_NO_MEM,
-	QDMA_ERR_HWACC_BUSY_TIMEOUT,
-	QDMA_ERR_HWACC_INV_CONFIG_BAR,
-	QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,
-	QDMA_ERR_HWACC_BAR_NOT_FOUND,
-	QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,   /* 7 */
-
-	QDMA_ERR_RM_RES_EXISTS,				/* 8 */
-	QDMA_ERR_RM_RES_NOT_EXISTS,
-	QDMA_ERR_RM_DEV_EXISTS,
-	QDMA_ERR_RM_DEV_NOT_EXISTS,
-	QDMA_ERR_RM_NO_QUEUES_LEFT,
-	QDMA_ERR_RM_QMAX_CONF_REJECTED,		/* 13 */
-
-	QDMA_ERR_MBOX_FMAP_WR_FAILED,		/* 14 */
-	QDMA_ERR_MBOX_NUM_QUEUES,
-	QDMA_ERR_MBOX_INV_QID,
-	QDMA_ERR_MBOX_INV_RINGSZ,
-	QDMA_ERR_MBOX_INV_BUFSZ,
-	QDMA_ERR_MBOX_INV_CNTR_TH,
-	QDMA_ERR_MBOX_INV_TMR_TH,
-	QDMA_ERR_MBOX_INV_MSG,
-	QDMA_ERR_MBOX_SEND_BUSY,
-	QDMA_ERR_MBOX_NO_MSG_IN,
-	QDMA_ERR_MBOX_REG_READ_FAILED,
-	QDMA_ERR_MBOX_ALL_ZERO_MSG,			/* 25 */
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_ERRORS_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_export.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_export.h
deleted file mode 100755
index dba8185..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_export.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_ACCESS_EXPORT_H_
-#define __QDMA_ACCESS_EXPORT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-
-/** QDMA Global CSR array size */
-#define QDMA_GLOBAL_CSR_ARRAY_SZ        16
-
-/**
- * struct qdma_dev_attributes - QDMA device attributes
- */
-struct qdma_dev_attributes {
-	/** @num_pfs - Num of PFs*/
-	uint8_t num_pfs;
-	/** @num_qs - Num of Queues */
-	uint16_t num_qs;
-	/** @flr_present - FLR resent or not? */
-	uint8_t flr_present:1;
-	/** @st_en - ST mode supported or not? */
-	uint8_t st_en:1;
-	/** @mm_en - MM mode supported or not? */
-	uint8_t mm_en:1;
-	/** @mm_cmpt_en - MM with Completions supported or not? */
-	uint8_t mm_cmpt_en:1;
-	/** @mailbox_en - Mailbox supported or not? */
-	uint8_t mailbox_en:1;
-	/** @debug_mode - Debug mode is enabled/disabled for IP */
-	uint8_t debug_mode:1;
-	/** @desc_eng_mode - Descriptor Engine mode:
-	 * Internal only/Bypass only/Internal & Bypass
-	 */
-	uint8_t desc_eng_mode:2;
-	/** @mm_channel_max - Num of MM channels */
-	uint8_t mm_channel_max;
-
-	/** Below are the list of HW features which are populated by qdma_access
-	 * based on RTL version
-	 */
-	/** @qid2vec_ctx - To indicate support of qid2vec context */
-	uint8_t qid2vec_ctx:1;
-	/** @cmpt_ovf_chk_dis - To indicate support of overflow check
-	 * disable in CMPT ring
-	 */
-	uint8_t cmpt_ovf_chk_dis:1;
-	/** @mailbox_intr - To indicate support of mailbox interrupt */
-	uint8_t mailbox_intr:1;
-	/** @sw_desc_64b - To indicate support of 64 bytes C2H/H2C
-	 * descriptor format
-	 */
-	uint8_t sw_desc_64b:1;
-	/** @cmpt_desc_64b - To indicate support of 64 bytes CMPT
-	 * descriptor format
-	 */
-	uint8_t cmpt_desc_64b:1;
-	/** @dynamic_bar - To indicate support of dynamic bar detection */
-	uint8_t dynamic_bar:1;
-	/** @legacy_intr - To indicate support of legacy interrupt */
-	uint8_t legacy_intr:1;
-	/** @cmpt_trig_count_timer - To indicate support of counter + timer
-	 * trigger mode
-	 */
-	uint8_t cmpt_trig_count_timer:1;
-};
-
-/** qdma_dev_attributes structure size */
-#define QDMA_DEV_ATTR_STRUCT_SIZE	(sizeof(struct qdma_dev_attributes))
-
-/** global_csr_conf structure size */
-#define QDMA_DEV_GLOBAL_CSR_STRUCT_SIZE	(sizeof(struct global_csr_conf))
-
-/**
- * enum qdma_dev_type - To hold qdma device type
- */
-enum qdma_dev_type {
-	QDMA_DEV_PF,
-	QDMA_DEV_VF
-};
-
-/**
- * enum qdma_dev_q_type: Q type
- */
-enum qdma_dev_q_type {
-	/** @QDMA_DEV_Q_TYPE_H2C: H2C Q */
-	QDMA_DEV_Q_TYPE_H2C,
-	/** @QDMA_DEV_Q_TYPE_C2H: C2H Q */
-	QDMA_DEV_Q_TYPE_C2H,
-	/** @QDMA_DEV_Q_TYPE_CMPT: CMPT Q */
-	QDMA_DEV_Q_TYPE_CMPT,
-	/** @QDMA_DEV_Q_TYPE_MAX: Total Q types */
-	QDMA_DEV_Q_TYPE_MAX
-};
-
-/**
- * @enum qdma_desc_size - QDMA queue descriptor size
- */
-enum qdma_desc_size {
-	/** @QDMA_DESC_SIZE_8B - 8 byte descriptor */
-	QDMA_DESC_SIZE_8B,
-	/** @QDMA_DESC_SIZE_16B - 16 byte descriptor */
-	QDMA_DESC_SIZE_16B,
-	/** @QDMA_DESC_SIZE_32B - 32 byte descriptor */
-	QDMA_DESC_SIZE_32B,
-	/** @QDMA_DESC_SIZE_64B - 64 byte descriptor */
-	QDMA_DESC_SIZE_64B
-};
-
-/**
- * @enum qdma_cmpt_update_trig_mode - Interrupt and Completion status write
- * trigger mode
- */
-enum qdma_cmpt_update_trig_mode {
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_DIS - disabled */
-	QDMA_CMPT_UPDATE_TRIG_MODE_DIS,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_EVERY - every */
-	QDMA_CMPT_UPDATE_TRIG_MODE_EVERY,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT - user counter */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR - user */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR - user timer */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR - timer + counter combo */
-	QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR
-};
-
-
-/**
- * @enum qdma_indirect_intr_ring_size - Indirect interrupt ring size
- */
-enum qdma_indirect_intr_ring_size {
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_4KB - Accommodates 512 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_4KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_8KB - Accommodates 1024 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_8KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_12KB - Accommodates 1536 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_12KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_16KB - Accommodates 2048 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_16KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_20KB - Accommodates 2560 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_20KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_24KB - Accommodates 3072 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_24KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_28KB - Accommodates 3584 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_28KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_32KB - Accommodates 4096 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_32KB
-};
-
-/**
- * @enum qdma_wrb_interval - writeback update interval
- */
-enum qdma_wrb_interval {
-	/** @QDMA_WRB_INTERVAL_4 - writeback update interval of 4 */
-	QDMA_WRB_INTERVAL_4,
-	/** @QDMA_WRB_INTERVAL_8 - writeback update interval of 8 */
-	QDMA_WRB_INTERVAL_8,
-	/** @QDMA_WRB_INTERVAL_16 - writeback update interval of 16 */
-	QDMA_WRB_INTERVAL_16,
-	/** @QDMA_WRB_INTERVAL_32 - writeback update interval of 32 */
-	QDMA_WRB_INTERVAL_32,
-	/** @QDMA_WRB_INTERVAL_64 - writeback update interval of 64 */
-	QDMA_WRB_INTERVAL_64,
-	/** @QDMA_WRB_INTERVAL_128 - writeback update interval of 128 */
-	QDMA_WRB_INTERVAL_128,
-	/** @QDMA_WRB_INTERVAL_256 - writeback update interval of 256 */
-	QDMA_WRB_INTERVAL_256,
-	/** @QDMA_WRB_INTERVAL_512 - writeback update interval of 512 */
-	QDMA_WRB_INTERVAL_512,
-	/** @QDMA_NUM_WRB_INTERVALS - total number of writeback intervals */
-	QDMA_NUM_WRB_INTERVALS
-};
-
-enum qdma_rtl_version {
-	/** @QDMA_RTL_BASE - RTL Base  */
-	QDMA_RTL_BASE,
-	/** @QDMA_RTL_PATCH - RTL Patch  */
-	QDMA_RTL_PATCH,
-	/** @QDMA_RTL_NONE - Not a valid RTL version */
-	QDMA_RTL_NONE,
-};
-
-enum qdma_vivado_release_id {
-	/** @QDMA_VIVADO_2018_3 - Vivado version 2018.3  */
-	QDMA_VIVADO_2018_3,
-	/** @QDMA_VIVADO_2019_1 - Vivado version 2019.1  */
-	QDMA_VIVADO_2019_1,
-	/** @QDMA_VIVADO_2019_2 - Vivado version 2019.2  */
-	QDMA_VIVADO_2019_2,
-	/** @QDMA_VIVADO_2020_1 - Vivado version 2020.1  */
-	QDMA_VIVADO_2020_1,
-	/** @QDMA_VIVADO_2020_2 - Vivado version 2020.2  */
-	QDMA_VIVADO_2020_2,
-	/** @QDMA_VIVADO_2021_1 - Vivado version 2021.1  */
-	QDMA_VIVADO_2021_1,
-	/** @QDMA_VIVADO_2022_1 - Vivado version 2022.1  */
-	QDMA_VIVADO_2022_1,
-	/** @QDMA_VIVADO_NONE - Not a valid Vivado version*/
-	QDMA_VIVADO_NONE
-};
-
-enum qdma_ip_type {
-	/** @QDMA_VERSAL_HARD_IP - Hard IP  */
-	QDMA_VERSAL_HARD_IP,
-	/** @QDMA_VERSAL_SOFT_IP - Soft IP  */
-	QDMA_VERSAL_SOFT_IP,
-	/** @QDMA_SOFT_IP - Hard IP  */
-	QDMA_SOFT_IP,
-	/** @EQDMA_SOFT_IP - Soft IP  */
-	EQDMA_SOFT_IP,
-	/** @QDMA_VERSAL_NONE - Not versal device  */
-	QDMA_NONE_IP
-};
-
-
-enum qdma_device_type {
-	/** @QDMA_DEVICE_SOFT - UltraScale+ IP's  */
-	QDMA_DEVICE_SOFT,
-	/** @QDMA_DEVICE_VERSAL_CPM4 -VERSAL IP  */
-	QDMA_DEVICE_VERSAL_CPM4,
-	/** @QDMA_DEVICE_VERSAL_CPM5 -VERSAL IP  */
-	QDMA_DEVICE_VERSAL_CPM5,
-	/** @QDMA_DEVICE_NONE - Not a valid device  */
-	QDMA_DEVICE_NONE
-};
-
-enum qdma_desc_eng_mode {
-	/** @QDMA_DESC_ENG_INTERNAL_BYPASS - Internal and Bypass mode */
-	QDMA_DESC_ENG_INTERNAL_BYPASS,
-	/** @QDMA_DESC_ENG_BYPASS_ONLY - Only Bypass mode  */
-	QDMA_DESC_ENG_BYPASS_ONLY,
-	/** @QDMA_DESC_ENG_INTERNAL_ONLY - Only Internal mode  */
-	QDMA_DESC_ENG_INTERNAL_ONLY,
-	/** @QDMA_DESC_ENG_MODE_MAX - Max of desc engine modes  */
-	QDMA_DESC_ENG_MODE_MAX
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_EXPORT_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_version.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_version.h
deleted file mode 100755
index 652a555..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_access_version.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_ACCESS_VERSION_H_
-#define __QDMA_ACCESS_VERSION_H_
-
-
-#define QDMA_VERSION_MAJOR	2023
-#define QDMA_VERSION_MINOR	2
-#define QDMA_VERSION_PATCH	1
-
-#define QDMA_VERSION_STR	\
-	__stringify(QDMA_VERSION_MAJOR) "." \
-	__stringify(QDMA_VERSION_MINOR) "." \
-	__stringify(QDMA_VERSION_PATCH)
-
-#define QDMA_VERSION  \
-	((QDMA_VERSION_MAJOR)*1000 + \
-	 (QDMA_VERSION_MINOR)*100 + \
-	  QDMA_VERSION_PATCH)
-
-
-#endif /* __QDMA_ACCESS_VERSION_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
deleted file mode 100755
index b70e924..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
+++ /dev/null
@@ -1,6071 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_cpm4_access.h"
-#include "qdma_cpm4_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_cpm4_access.tmh"
-#endif
-
-/** QDMA CPM4 Hard Context array size */
-#define QDMA_CPM4_SW_CONTEXT_NUM_WORDS              4
-#define QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS            4
-#define QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS         1
-#define QDMA_CPM4_HW_CONTEXT_NUM_WORDS              2
-#define QDMA_CPM4_CR_CONTEXT_NUM_WORDS              1
-#define QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS        3
-#define QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS          2
-
-#define QDMA_CPM4_VF_USER_BAR_ID   2
-
-#define QDMA_CPM4_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_CPM4_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_CPM4_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_CPM4_REG_GROUP_4_START_ADDR	0x1014
-
-#define QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP	4
-
-#define QDMA_CPM4_IND_CTXT_DATA_NUM_REGS	4
-
-#define QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS	7
-#define QDMA_CPM4_GLBL_TRQ_ERR_ALL_MASK			0XB3
-#define QDMA_CPM4_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define QDMA_CPM4_C2H_ERR_ALL_MASK				0X3F6DF
-#define QDMA_CPM4_C2H_FATAL_ERR_ALL_MASK			0X1FDF1B
-#define QDMA_CPM4_H2C_ERR_ALL_MASK				0X3F
-#define QDMA_CPM4_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define QDMA_CPM4_DBE_ERR_ALL_MASK				0XFFFFFFFF
-
-#define QDMA_CPM4_OFFSET_DMAP_SEL_INT_CIDX                  0x6400
-#define QDMA_CPM4_OFFSET_DMAP_SEL_H2C_DSC_PIDX          0x6404
-#define QDMA_CPM4_OFFSET_DMAP_SEL_C2H_DSC_PIDX          0x6408
-#define QDMA_CPM4_OFFSET_DMAP_SEL_CMPT_CIDX               0x640C
-
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_INT_CIDX             0x3000
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX     0x3004
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX     0x3008
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_CMPT_CIDX          0x300C
-
-#define QDMA_CPM4_DMA_SEL_INT_SW_CIDX_MASK               GENMASK(15, 0)
-#define QDMA_CPM4_DMA_SEL_INT_RING_IDX_MASK              GENMASK(23, 16)
-#define QDMA_CPM4_DMA_SEL_DESC_PIDX_MASK                   GENMASK(15, 0)
-#define QDMA_CPM4_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define QDMA_CPM4_DMAP_SEL_CMPT_IRQ_EN_MASK             BIT(28)
-#define QDMA_CPM4_DMAP_SEL_CMPT_STS_DESC_EN_MASK    BIT(27)
-#define QDMA_CPM4_DMAP_SEL_CMPT_TRG_MODE_MASK        GENMASK(26, 24)
-#define QDMA_CPM4_DMAP_SEL_CMPT_TMR_CNT_MASK          GENMASK(23, 20)
-#define QDMA_CPM4_DMAP_SEL_CMPT_CNT_THRESH_MASK     GENMASK(19, 16)
-#define QDMA_CPM4_DMAP_SEL_CMPT_WRB_CIDX_MASK        GENMASK(15, 0)
-#define QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK     GENMASK_ULL(63, 35)
-#define QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK     GENMASK_ULL(34, 12)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK    GENMASK_ULL(63, 42)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK    GENMASK_ULL(41, 10)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK    GENMASK_ULL(9, 6)
-#define QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK     GENMASK(15, 8)
-#define QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK     GENMASK(7, 0)
-#define QDMA_CPM4_QID2VEC_H2C_VECTOR             GENMASK(16, 9)
-#define QDMA_CPM4_QID2VEC_H2C_COAL_EN            BIT(17)
-
-#define QDMA_CPM4_DEFAULT_PFCH_STOP_THRESH            256
-
-static void qdma_cpm4_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_desc_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_trq_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct qdma_cpm4_hw_err_info
-		qdma_cpm4_err_info[QDMA_CPM4_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_CPM4_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_CPM4_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_CPM4_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_VF_ACCESS_ERR,
-		"VF attempted to access Global register space or Function map",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass in mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		"Zero length descriptor error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-		"A non-EOP descriptor received",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		QDMA_CPM4_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PASID_CTXT_RAM,
-		"Pasid ctxt FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		QDMA_CPM4_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		QDMA_CPM4_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PASID_CTXT_RAM,
-		"PASID CTXT RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"Payload fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_INT_QID2VEC_RAM,
-		"QID2VEC RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		QDMA_CPM4_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_qdma_cpm4_hw_errs[
-		QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_CPM4_DSC_ERR_ALL,
-	QDMA_CPM4_TRQ_ERR_ALL,
-	QDMA_CPM4_ST_C2H_ERR_ALL,
-	QDMA_CPM4_ST_FATAL_ERR_ALL,
-	QDMA_CPM4_ST_H2C_ERR_ALL,
-	QDMA_CPM4_SBE_ERR_ALL,
-	QDMA_CPM4_DBE_ERR_ALL
-};
-
-
-
-union qdma_cpm4_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:11;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-struct qdma_cpm4_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_CPM4_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_CPM4_IND_CTXT_DATA_NUM_REGS];
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-};
-
-static struct qctx_entry qdma_cpm4_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Function Id", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-};
-
-static struct qctx_entry qdma_cpm4_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry qdma_cpm4_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry qdma_cpm4_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry qdma_cpm4_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-};
-
-static struct qctx_entry qdma_cpm4_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry qdma_cpm4_qid2vec_ctxt_entries[] = {
-	{"c2h_vector", 0},
-	{"c2h_en_coal", 0},
-	{"h2c_vector", 0},
-	{"h2c_en_coal", 0},
-};
-
-static struct qctx_entry qdma_cpm4_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-};
-
-static int qdma_cpm4_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_cpm4_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_cpm4_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_cpm4_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t qdma_cpm4_get_config_num_regs(void)
-{
-	return qdma_cpm4_config_num_regs_get();
-}
-
-struct xreg_info *qdma_cpm4_get_config_regs(void)
-{
-	return qdma_cpm4_config_regs_get();
-}
-
-uint32_t qdma_cpm4_reg_dump_buf_len(void)
-{
-	uint32_t length = (qdma_cpm4_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int qdma_cpm4_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-			sizeof(qdma_cpm4_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(qdma_cpm4_sw_ctxt_entries) /
-				sizeof(qdma_cpm4_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_hw_ctxt_entries) /
-			sizeof(qdma_cpm4_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_credit_ctxt_entries) /
-			sizeof(qdma_cpm4_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_fmap_ctxt_entries) /
-			sizeof(qdma_cpm4_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-			sizeof(qdma_cpm4_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(qdma_cpm4_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_cpm4_c2h_pftch_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*req_buflen = len;
-	return rv;
-}
-
-static uint32_t qdma_cpm4_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(qdma_cpm4_ind_intr_ctxt_entries) /
-			sizeof(qdma_cpm4_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_cpm4_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	qdma_cpm4_sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	qdma_cpm4_sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	qdma_cpm4_sw_ctxt_entries[2].value = sw_ctxt->qen;
-	qdma_cpm4_sw_ctxt_entries[3].value = sw_ctxt->frcd_en;
-	qdma_cpm4_sw_ctxt_entries[4].value = sw_ctxt->wbi_chk;
-	qdma_cpm4_sw_ctxt_entries[5].value = sw_ctxt->wbi_intvl_en;
-	qdma_cpm4_sw_ctxt_entries[6].value = sw_ctxt->fnc_id;
-	qdma_cpm4_sw_ctxt_entries[7].value = sw_ctxt->rngsz_idx;
-	qdma_cpm4_sw_ctxt_entries[8].value = sw_ctxt->desc_sz;
-	qdma_cpm4_sw_ctxt_entries[9].value = sw_ctxt->bypass;
-	qdma_cpm4_sw_ctxt_entries[10].value = sw_ctxt->mm_chn;
-	qdma_cpm4_sw_ctxt_entries[11].value = sw_ctxt->wbk_en;
-	qdma_cpm4_sw_ctxt_entries[12].value = sw_ctxt->irq_en;
-	qdma_cpm4_sw_ctxt_entries[13].value = sw_ctxt->port_id;
-	qdma_cpm4_sw_ctxt_entries[14].value = sw_ctxt->irq_no_last;
-	qdma_cpm4_sw_ctxt_entries[15].value = sw_ctxt->err;
-	qdma_cpm4_sw_ctxt_entries[16].value = sw_ctxt->err_wb_sent;
-	qdma_cpm4_sw_ctxt_entries[17].value = sw_ctxt->irq_req;
-	qdma_cpm4_sw_ctxt_entries[18].value = sw_ctxt->mrkr_dis;
-	qdma_cpm4_sw_ctxt_entries[19].value = sw_ctxt->is_mm;
-	qdma_cpm4_sw_ctxt_entries[20].value =
-			sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	qdma_cpm4_sw_ctxt_entries[21].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_cpm4_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	qdma_cpm4_cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	qdma_cpm4_cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	qdma_cpm4_cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	qdma_cpm4_cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	qdma_cpm4_cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	qdma_cpm4_cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	qdma_cpm4_cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	qdma_cpm4_cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	qdma_cpm4_cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	qdma_cpm4_cmpt_ctxt_entries[9].value =
-			cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	qdma_cpm4_cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	qdma_cpm4_cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	qdma_cpm4_cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	qdma_cpm4_cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	qdma_cpm4_cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	qdma_cpm4_cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	qdma_cpm4_cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	qdma_cpm4_cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	qdma_cpm4_cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_cpm4_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	qdma_cpm4_hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	qdma_cpm4_hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	qdma_cpm4_hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	qdma_cpm4_hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	qdma_cpm4_hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	qdma_cpm4_hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_credit_ctxt(
-		struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	qdma_cpm4_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_pfetch_ctxt(
-		struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	qdma_cpm4_c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	qdma_cpm4_c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	qdma_cpm4_c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	qdma_cpm4_c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	qdma_cpm4_c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	qdma_cpm4_c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	qdma_cpm4_c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	qdma_cpm4_c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-/*
- * qdma_cpm4_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	qdma_cpm4_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	qdma_cpm4_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-static void qdma_cpm4_fill_qid2vec_ctxt(struct qdma_qid2vec *qid2vec_ctxt)
-{
-	qdma_cpm4_qid2vec_ctxt_entries[0].value = qid2vec_ctxt->c2h_vector;
-	qdma_cpm4_qid2vec_ctxt_entries[1].value = qid2vec_ctxt->c2h_en_coal;
-	qdma_cpm4_qid2vec_ctxt_entries[2].value = qid2vec_ctxt->h2c_vector;
-	qdma_cpm4_qid2vec_ctxt_entries[3].value = qid2vec_ctxt->h2c_en_coal;
-}
-
-static void qdma_cpm4_fill_intr_ctxt(
-		struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	qdma_cpm4_ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	qdma_cpm4_ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	qdma_cpm4_ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	qdma_cpm4_ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	qdma_cpm4_ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	qdma_cpm4_ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	qdma_cpm4_ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	qdma_cpm4_ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-}
-
-/*
- * dump_cpm4_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_cpm4_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Invalid queue type(%d), err:%d\n",
-						__func__,
-						q_type,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_fill_sw_ctxt(&queue_context->sw_ctxt);
-	qdma_cpm4_fill_hw_ctxt(&queue_context->hw_ctxt);
-	qdma_cpm4_fill_credit_ctxt(&queue_context->cr_ctxt);
-	qdma_cpm4_fill_qid2vec_ctxt(&queue_context->qid2vec);
-	if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		qdma_cpm4_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-		qdma_cpm4_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	}
-
-	qdma_cpm4_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(qdma_cpm4_sw_ctxt_entries) /
-				sizeof((qdma_cpm4_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_sw_ctxt_entries[i].name,
-				qdma_cpm4_sw_ctxt_entries[i].value,
-				qdma_cpm4_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(qdma_cpm4_hw_ctxt_entries) /
-				sizeof((qdma_cpm4_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_hw_ctxt_entries[i].name,
-				qdma_cpm4_hw_ctxt_entries[i].value,
-				qdma_cpm4_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(qdma_cpm4_credit_ctxt_entries) /
-			sizeof((qdma_cpm4_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_credit_ctxt_entries[i].name,
-				qdma_cpm4_credit_ctxt_entries[i].value,
-				qdma_cpm4_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* SW context dump */
-	n = sizeof(qdma_cpm4_qid2vec_ctxt_entries) /
-			sizeof((qdma_cpm4_qid2vec_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"QID2VEC Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_qid2vec_ctxt_entries[i].name,
-			qdma_cpm4_qid2vec_ctxt_entries[i].value,
-			qdma_cpm4_qid2vec_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-				sizeof((qdma_cpm4_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_cmpt_ctxt_entries[i].name,
-				qdma_cpm4_cmpt_ctxt_entries[i].value,
-				qdma_cpm4_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(qdma_cpm4_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_cpm4_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].name,
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].value,
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(qdma_cpm4_fmap_ctxt_entries) /
-		sizeof(qdma_cpm4_fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_fmap_ctxt_entries[i].name,
-			qdma_cpm4_fmap_ctxt_entries[i].value,
-			qdma_cpm4_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-static int dump_cpm4_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	qdma_cpm4_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(qdma_cpm4_ind_intr_ctxt_entries) /
-			sizeof((qdma_cpm4_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_ind_intr_ctxt_entries[i].name,
-			qdma_cpm4_ind_intr_ctxt_entries[i].value,
-			qdma_cpm4_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial intr context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_cpm4_indirect_reg_invalidate() - helper function to invalidate
- * indirect context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_CPM4_IND_CTXT_DATA_3_ADDR;
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_cpm4_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_CPM4_IND_CTXT_DATA_NUM_REGS;
-			index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_CPM4_IND_CTXT_DATA_3_ADDR;
-
-	for (index = 0;
-		index < ((2 * QDMA_CPM4_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_write() - create qid2vec context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_write(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	uint32_t qid2vec = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-	int rv = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			1, &qid2vec);
-	if (rv < 0)
-		return rv;
-	if (c2h) {
-		qid2vec = qid2vec & (QDMA_CPM4_QID2VEC_H2C_VECTOR |
-					QDMA_CPM4_QID2VEC_H2C_COAL_EN);
-		qid2vec |= FIELD_SET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-				     ctxt->c2h_vector) |
-			FIELD_SET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-				  ctxt->c2h_en_coal);
-	} else {
-		qid2vec = qid2vec & (C2H_QID2VEC_MAP_C2H_VECTOR_MASK |
-					C2H_QID2VEC_MAP_C2H_EN_COAL_MASK);
-		qid2vec |=
-			FIELD_SET(QDMA_CPM4_QID2VEC_H2C_VECTOR,
-				  ctxt->h2c_vector) |
-			FIELD_SET(QDMA_CPM4_QID2VEC_H2C_COAL_EN,
-				  ctxt->h2c_en_coal);
-	}
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			&qid2vec, QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_read() - read qid2vec context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_read(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	int rv = 0;
-	uint32_t qid2vec[QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS, qid2vec);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->c2h_vector = FIELD_GET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-						qid2vec[0]);
-		ctxt->c2h_en_coal =
-			(uint8_t)(FIELD_GET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-						qid2vec[0]));
-	} else {
-		ctxt->h2c_vector =
-			(uint8_t)(FIELD_GET(QDMA_CPM4_QID2VEC_H2C_VECTOR,
-								qid2vec[0]));
-		ctxt->h2c_en_coal =
-			(uint8_t)(FIELD_GET(QDMA_CPM4_QID2VEC_H2C_COAL_EN,
-								qid2vec[0]));
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_clear() - clear qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_invalidate() - invalidate qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_conf() - configure qid2vector context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_qid2vec_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_qid2vec_write(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_qid2vec_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_qid2vec_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle or config is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = FIELD_SET(TRQ_SEL_FMAP_0_QID_BASE_MASK, config->qbase) |
-		FIELD_SET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				config->qmax);
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_read() - read fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = qdma_reg_read(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			     func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP);
-
-	config->qbase = FIELD_GET(TRQ_SEL_FMAP_0_QID_BASE_MASK, fmap);
-	config->qmax =
-		(uint16_t)(FIELD_GET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				fmap));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_clear() - clear fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_CPM4_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl or ctxt is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_64B) ||
-		(ctxt->rngsz_idx >= QDMA_NUM_RING_SIZES)) {
-		qdma_log_error("%s: Invalid desc_sz(%d)/rngidx(%d), err:%d\n",
-					__func__,
-					ctxt->desc_sz,
-					ctxt->rngsz_idx,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t sw_ctxt[QDMA_CPM4_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-	struct qdma_qid2vec qid2vec_ctxt = {0};
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p sw_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-			sw_ctxt[0]));
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-		sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-			sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-			sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-			sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-			sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-			sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-			sw_ctxt[1]));
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	/** Read the QID2VEC Context Data */
-	rv = qdma_cpm4_qid2vec_read(dev_hndl, c2h, hw_qid, &qid2vec_ctxt);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->vec = qid2vec_ctxt.c2h_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.c2h_en_coal;
-	} else {
-		ctxt->vec = qid2vec_ctxt.h2c_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.h2c_en_coal;
-	}
-
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_sw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_sw_context_write(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_sw_context_invalidate(dev_hndl,
-				c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t pfetch_ctxt[QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK,
-			pfetch_ctxt[0]));
-	ctxt->bufsz_idx =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				pfetch_ctxt[0]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK,
-			pfetch_ctxt[0]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-			pfetch_ctxt[0]));
-	sw_crdt_l =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK,
-			pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK,
-			pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		(uint16_t)(FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK,
-			sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_pfetch_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_pfetch_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_pfetch_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, baddr_m, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_32B) ||
-		(ctxt->ringsz_idx >= QDMA_NUM_RING_SIZES) ||
-		(ctxt->counter_idx >= QDMA_NUM_C2H_COUNTERS) ||
-		(ctxt->timer_idx >= QDMA_NUM_C2H_TIMERS) ||
-		(ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR)) {
-		qdma_log_error
-		("%s Inv dsz(%d)/ridx(%d)/cntr(%d)/tmr(%d)/tm(%d), err:%d\n",
-				__func__,
-				ctxt->desc_sz,
-				ctxt->ringsz_idx,
-				ctxt->counter_idx,
-				ctxt->timer_idx,
-				ctxt->trig_mode,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_m =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK,
-			ctxt->bs_addr);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK,
-			ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK,
-			ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-				ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-				ctxt->ringsz_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				baddr_m);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				baddr_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-				ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-				pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-				pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-				ctxt->full_upd);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	    pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t cmpt_ctxt[QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, baddr_m,
-			 pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK,
-		cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(
-			CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l =
-		FIELD_GET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				cmpt_ctxt[0]);
-	baddr_m =
-		FIELD_GET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				cmpt_ctxt[1]);
-	baddr_h =
-		FIELD_GET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				cmpt_ctxt[2]);
-
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-			cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-			cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend =
-		(uint8_t)(FIELD_GET(
-		CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-			cmpt_ctxt[3]));
-	ctxt->full_upd =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK,
-			(uint64_t)baddr_l) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK,
-			(uint64_t)baddr_m) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK,
-			(uint64_t)baddr_h);
-
-	ctxt->pidx =
-		(uint16_t)(FIELD_SET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK,
-			pidx_l) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK,
-			pidx_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_cmpt_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_cmpt_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_cmpt_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t hw_ctxt[QDMA_CPM4_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p hw_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-				   QDMA_CPM4_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-				hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-				hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_FETCH_PND_MASK,
-			hw_ctxt[1]));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_hw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_hw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-						__func__, access_type,
-						-QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_write() - create indirect
- * interrupt context and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->page_size > QDMA_INDIRECT_INTR_RING_SIZE_32KB) {
-		qdma_log_error("%s: ctxt->page_size=%u is too big, err:%d\n",
-					   __func__, ctxt->page_size,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-				ctxt->page_size);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t intr_ctxt[QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK,
-			intr_ctxt[0]);
-	ctxt->int_st = FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]);
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK,
-			intr_ctxt[0]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK,
-			intr_ctxt[1]);
-	ctxt->page_size =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-			intr_ctxt[1]));
-	ctxt->pidx = FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_clear() - clear indirect
- * interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_invalidate() - invalidate
- * indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_indirect_intr_context_read(dev_hndl,
-							      ring_index,
-							      ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_indirect_intr_context_write(dev_hndl,
-							       ring_index,
-							       ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_indirect_intr_context_clear(dev_hndl,
-							   ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_indirect_intr_context_invalidate(
-				dev_hndl, ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_set_default_global_csr() - function to set the global
- *  CSR register to default values. The value can be modified later by using
- *  the set/get csr functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257,
-				385, 513, 769, 1025, 1537, 3073, 4097, 6145,
-				8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-				30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24,
-				32, 48, 64, 80, 96, 112, 128, 144,
-				160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-				2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096,
-				4096, 8192, 9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, 0,
-					QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-				  DEFAULT_MAX_DSC_FETCH) |
-				  FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-				  DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		reg_val =
-			FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-				QDMA_CPM4_DEFAULT_PFCH_STOP_THRESH) |
-				FIELD_SET(C2H_PFCH_CFG_NUM_MASK,
-				DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-				FIELD_SET(C2H_PFCH_CFG_QCNT_MASK,
-				DEFAULT_PFCH_MAX_Q_CNT) |
-				FIELD_SET(C2H_PFCH_CFG_EVT_QCNT_TH_MASK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_C2H_PFCH_CFG_ADDR, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_CPM4_C2H_INT_TIMER_TICK_ADDR,
-						DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-				DEFAULT_CMPT_COAL_TIMER_CNT) |
-				FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-				DEFAULT_CMPT_COAL_TIMER_TICK) |
-				FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK,
-				DEFAULT_CMPT_COAL_MAX_BUF_SZ);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-#if 0
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-				DEFAULT_H2C_THROT_DATA_THRESH) |
-				FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-				DEFAULT_THROT_EN_DATA);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-#endif
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?
-			QDMA_CPM4_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_CPM4_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?
-			QDMA_CPM4_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_CPM4_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_CPM4_DMA_SEL_DESC_PIDX_MASK,
-					reg_info->pidx) |
-			  FIELD_SET(QDMA_CPM4_DMA_SEL_IRQ_EN_MASK,
-					reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_cmpt_cidx_update() - function to update the CMPT
- * CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_CPM4_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_CPM4_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_IRQ_EN_MASK,
-				reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_intr_cidx_update() - function to update the
- * CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_CPM4_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_CPM4_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_CPM4_DMA_SEL_INT_SW_CIDX_MASK,
-			reg_info->sw_cidx) |
-		FIELD_SET(QDMA_CPM4_DMA_SEL_INT_RING_IDX_MASK,
-			reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmp_get_user_bar() - Function to get the
- *			AXI Master Lite(user bar) number
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite(user bar) number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr = (is_vf) ? QDMA_CPM4_GLBL2_PF_VF_BARLITE_EXT_ADDR :
-			QDMA_CPM4_GLBL2_PF_BARLITE_EXT_ADDR;
-
-	if (!is_vf) {
-		user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	} else {
-		*user_bar = QDMA_CPM4_VF_USER_BAR_ID;
-		return QDMA_SUCCESS;
-	}
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ram_sbe_err_process() -Function to dump SBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_cpm4_dump_reg_info(dev_hndl, QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ram_dbe_err_process() -Function to dump DBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_cpm4_dump_reg_info(dev_hndl, QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_desc_err_process() -Function to dump Descriptor Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_LOG0_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_LOG1_ADDR,
-		QDMA_CPM4_GLBL_DSC_DBG_DAT0_ADDR,
-		QDMA_CPM4_GLBL_DSC_DBG_DAT1_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_trq_err_process() -Function to dump Target Access Err info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_st_h2c_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		QDMA_CPM4_H2C_FIRST_ERR_QID_ADDR,
-		QDMA_CPM4_H2C_DBG_REG0_ADDR,
-		QDMA_CPM4_H2C_DBG_REG1_ADDR,
-		QDMA_CPM4_H2C_DBG_REG2_ADDR,
-		QDMA_CPM4_H2C_DBG_REG3_ADDR,
-		QDMA_CPM4_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_st_c2h_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FIRST_ERR_QID_ADDR,
-		QDMA_CPM4_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_get_error_name() - Function to get the error in str format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_cpm4_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_CPM4_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-			__func__,
-			(enum qdma_cpm4_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_cpm4_err_info[
-			(enum qdma_cpm4_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t i = 0, j = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_CPM4_DSC_ERR_POISON,
-		QDMA_CPM4_TRQ_ERR_UNMAPPED,
-		QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-		QDMA_CPM4_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_STAT_ADDR);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, QDMA_CPM4_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		j = hw_err_position[i];
-
-		if ((!dev_cap.st_en) &&
-			(j == QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH ||
-			j == QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH ||
-			j == QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_cpm4_err_info[j].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-				qdma_cpm4_err_info[j].stat_reg_addr,
-				err_stat);
-
-			qdma_cpm4_err_info[j].qdma_cpm4_hw_err_process(
-				dev_hndl);
-			for (idx = j;
-				idx < all_qdma_cpm4_hw_errs[i];
-				idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				qdma_cpm4_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						qdma_cpm4_hw_get_error_name(
-							idx));
-			}
-			qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[j].stat_reg_addr,
-				err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_CPM4_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum qdma_cpm4_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_CPM4_ERRS_ALL) {
-		for (i = 0;
-				i < QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS;
-				i++) {
-
-			idx = all_qdma_cpm4_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_CPM4_ST_C2H_ERR_ALL ||
-					idx == QDMA_CPM4_ST_FATAL_ERR_ALL ||
-					idx == QDMA_CPM4_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_cpm4_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[idx].mask_reg_addr,
-					reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_CPM4_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				qdma_cpm4_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl,
-					QDMA_CPM4_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_CPM4_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_cpm4_err_info[err_idx].mask_reg_addr);
-		reg_val |=
-			FIELD_SET(qdma_cpm4_err_info[err_idx].leaf_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[err_idx].mask_reg_addr,
-						reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(
-				qdma_cpm4_err_info[err_idx].global_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_get_device_attributes() - Function to get the qdma
- * device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_CPM4_GLBL2_PF_BARLITE_INT_ADDR);
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_CPM4_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs = (FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK,
-			reg_val));
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_CPM4_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = 0;
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_CPM4_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK,
-		reg_val)) ? 1 : 0;
-
-	/* num of mm channels for Versal Hard is 2 */
-	dev_info->mm_channel_max = 2;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 1;
-	dev_info->cmpt_ovf_chk_dis = 0;
-	dev_info->mailbox_intr = 0;
-	dev_info->sw_desc_64b = 0;
-	dev_info->cmpt_desc_64b = 0;
-	dev_info->dynamic_bar = 0;
-	dev_info->legacy_intr = 0;
-	dev_info->cmpt_trig_count_timer = 0;
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- * @ctxt    :	pointer to the context data
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_CPM4_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK,
-			cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl    :	device handle
- * @c2h         :	is c2h queue
- * @hw_qid      :	hardware qid of the queue
- * @ctxt        :	pointer to the context data
- * @access_type :	HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_cpm4_credit_context_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_cpm4_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_cpm4_credit_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_dump_config_regs() - Function to get qdma config register
- * dump in a buffer
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @buf :	pointer to buffer to be filled
- * @buflen :	Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_cpm4_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n", __func__,
-					   -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_cpm4_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-					name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm4_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_cpm4_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm4_intr_context() - Function to get qdma interrupt
- * context dump in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	req_buflen = qdma_cpm4_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_cpm4_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_cpm4_sw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_hw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_qid2vec_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.qid2vec),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read qid2vec context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_cpm4_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_cpm4_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = qdma_cpm4_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_cpm4_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_init_ctxt_memory() - Initialize the context for all queues
- *
- * @dev_hndl    :	device handle
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-
-int qdma_cpm4_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_info);
-	qdma_log_info("%s: clearing the context for all qs",
-			__func__);
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-
-#ifdef TANDEM_BOOT_SUPPORTED
-		for (; sel <=  QDMA_CTXT_SEL_CR_H2C; sel++) {
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#else
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    (sel == QDMA_CTXT_SEL_PFTCH ||
-				sel == QDMA_CTXT_SEL_CMPT)) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug(" sel = %d", sel);
-				continue;
-			}
-
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#endif
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_cpm4_fmap_clear(dev_hndl, i);
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return 0;
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * qdma_cpm4_init_st_ctxt() - Initialize the ST context
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_init_st_ctxt(void *dev_hndl)
-{
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_CMPT;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-
-}
-#endif
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-
-	reg_info = qdma_cpm4_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_cpm4_config_regs_get();
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-	struct xreg_info *reg_info = qdma_cpm4_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_slot) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_ring_sizes() - set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl,
-			QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_ring_sizes() - function to get the
- *	global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl,
-			QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_counter_threshold() - get the counter
- *	threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_buffer_sizes(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_cpm4_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_cpm4_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_cpm4_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_cpm4_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_cpm4_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_cpm4_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_cpm4_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_cpm4_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_write() -  function to set the
- * writeback interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_read() -  function to get the
- * writeback interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv =
-		qdma_cpm4_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv =
-		qdma_cpm4_global_writeback_interval_write(dev_hndl,
-								*wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_CPM4_C2H_CHANNEL_CTL_ADDR :
-			QDMA_CPM4_H2C_CHANNEL_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_cpm4_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_cpm4_config_num_regs_get();
-	struct xreg_info *config_regs  = qdma_cpm4_config_regs_get();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
deleted file mode 100755
index a28f633..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_CPM4_ACCESS_H_
-#define __QDMA_CPM4_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_cpm4_error_idx {
-	/* Descriptor errors */
-	QDMA_CPM4_DSC_ERR_POISON,
-	QDMA_CPM4_DSC_ERR_UR_CA,
-	QDMA_CPM4_DSC_ERR_PARAM,
-	QDMA_CPM4_DSC_ERR_ADDR,
-	QDMA_CPM4_DSC_ERR_TAG,
-	QDMA_CPM4_DSC_ERR_FLR,
-	QDMA_CPM4_DSC_ERR_TIMEOUT,
-	QDMA_CPM4_DSC_ERR_DAT_POISON,
-	QDMA_CPM4_DSC_ERR_FLR_CANCEL,
-	QDMA_CPM4_DSC_ERR_DMA,
-	QDMA_CPM4_DSC_ERR_DSC,
-	QDMA_CPM4_DSC_ERR_RQ_CANCEL,
-	QDMA_CPM4_DSC_ERR_DBE,
-	QDMA_CPM4_DSC_ERR_SBE,
-	QDMA_CPM4_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_CPM4_TRQ_ERR_UNMAPPED,
-	QDMA_CPM4_TRQ_ERR_QID_RANGE,
-	QDMA_CPM4_TRQ_ERR_VF_ACCESS_ERR,
-	QDMA_CPM4_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_CPM4_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_CPM4_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_CPM4_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_CPM4_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_CPM4_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_WRB_INV_Q_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_QFULL_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_CIDX_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_PRTY_ERR,
-	QDMA_CPM4_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-	QDMA_CPM4_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-	QDMA_CPM4_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-	QDMA_CPM4_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_CPM4_ST_H2C_ERR_DBE,
-	QDMA_CPM4_ST_H2C_ERR_SBE,
-	QDMA_CPM4_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-	QDMA_CPM4_SBE_ERR_MI_C2H0_DAT,
-	QDMA_CPM4_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_FUNC_MAP,
-	QDMA_CPM4_SBE_ERR_DSC_HW_CTXT,
-	QDMA_CPM4_SBE_ERR_DSC_CRD_RCV,
-	QDMA_CPM4_SBE_ERR_DSC_SW_CTXT,
-	QDMA_CPM4_SBE_ERR_DSC_CPLI,
-	QDMA_CPM4_SBE_ERR_DSC_CPLD,
-	QDMA_CPM4_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_QID_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_CPM4_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_CPM4_SBE_ERR_INT_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_PFCH_LL_RAM,
-	QDMA_CPM4_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_CPM4_DBE_ERR_MI_H2C0_DAT,
-	QDMA_CPM4_DBE_ERR_MI_C2H0_DAT,
-	QDMA_CPM4_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_FUNC_MAP,
-	QDMA_CPM4_DBE_ERR_DSC_HW_CTXT,
-	QDMA_CPM4_DBE_ERR_DSC_CRD_RCV,
-	QDMA_CPM4_DBE_ERR_DSC_SW_CTXT,
-	QDMA_CPM4_DBE_ERR_DSC_CPLI,
-	QDMA_CPM4_DBE_ERR_DSC_CPLD,
-	QDMA_CPM4_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_QID_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_CPM4_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_CPM4_DBE_ERR_INT_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_PFCH_LL_RAM,
-	QDMA_CPM4_DBE_ERR_ALL,
-
-	QDMA_CPM4_ERRS_ALL
-};
-
-struct qdma_cpm4_hw_err_info {
-	enum qdma_cpm4_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_cpm4_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_cpm4_init_ctxt_memory(void *dev_hndl);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-int qdma_cpm4_init_st_ctxt(void *dev_hndl);
-#endif
-
-int qdma_cpm4_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_set_default_global_csr(void *dev_hndl);
-
-int qdma_cpm4_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_cpm4_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_cpm4_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int qdma_cpm4_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-uint32_t qdma_cpm4_reg_dump_buf_len(void);
-
-int qdma_cpm4_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen);
-
-int qdma_cpm4_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_hw_error_process(void *dev_hndl);
-const char *qdma_cpm4_hw_get_error_name(uint32_t err_idx);
-int qdma_cpm4_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_cpm4_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_cpm4_global_csr_conf(void *dev_hndl, uint8_t index,
-				uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_cpm4_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-				uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t qdma_cpm4_get_config_num_regs(void);
-
-struct xreg_info *qdma_cpm4_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_CPM4_ACCESS_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
deleted file mode 100755
index 00bba14..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
+++ /dev/null
@@ -1,2062 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_CPM4_REG_H
-#define __QDMA_CPM4_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t qdma_cpm4_config_num_regs_get(void);
-struct xreg_info *qdma_cpm4_config_regs_get(void);
-#define QDMA_CPM4_CFG_BLK_IDENTIFIER_ADDR              0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_CFG_BLK_BUSDEV_ADDR                  0x04
-#define CFG_BLK_BUSDEV_BDF_MASK                            GENMASK(15, 0)
-#define QDMA_CPM4_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR       0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_MASK                    GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR  0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK               GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_SYSTEM_ID_ADDR               0x10
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define QDMA_CPM4_CFG_BLK_MSI_ENABLE_ADDR              0x014
-#define CFG_BLK_MSI_ENABLE_3_MASK                          BIT(17)
-#define CFG_BLK_MSI_ENABLE_MSIX3_MASK                      BIT(16)
-#define CFG_BLK_MSI_ENABLE_2_MASK                          BIT(13)
-#define CFG_BLK_MSI_ENABLE_MSIX2_MASK                      BIT(12)
-#define CFG_BLK_MSI_ENABLE_1_MASK                          BIT(9)
-#define CFG_BLK_MSI_ENABLE_MSIX1_MASK                      BIT(8)
-#define CFG_BLK_MSI_ENABLE_0_MASK                          BIT(1)
-#define CFG_BLK_MSI_ENABLE_MSIX0_MASK                      BIT(0)
-#define QDMA_CPM4_CFG_PCIE_DATA_WIDTH_ADDR             0x18
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define QDMA_CPM4_CFG_PCIE_CTL_ADDR                    0x1C
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define QDMA_CPM4_CFG_AXI_USER_MAX_PLD_SIZE_ADDR       0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define QDMA_CPM4_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR  0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_MISC_CTL_ADDR                0x4C
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_0_ADDR               0x80
-#define CFG_BLK_SCRATCH_0_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_1_ADDR               0x84
-#define CFG_BLK_SCRATCH_1_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_2_ADDR               0x88
-#define CFG_BLK_SCRATCH_2_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_3_ADDR               0x8C
-#define CFG_BLK_SCRATCH_3_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_4_ADDR               0x90
-#define CFG_BLK_SCRATCH_4_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_5_ADDR               0x94
-#define CFG_BLK_SCRATCH_5_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_6_ADDR               0x98
-#define CFG_BLK_SCRATCH_6_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_7_ADDR               0x9C
-#define CFG_BLK_SCRATCH_7_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_SBE_MSK_A_ADDR                   0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_SBE_STS_A_ADDR                   0xF4
-#define RAM_SBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_SBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_SBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_CPM4_RAM_DBE_MSK_A_ADDR                   0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_DBE_STS_A_ADDR                   0xFC
-#define RAM_DBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_DBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_DBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL2_IDENTIFIER_ADDR                0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define QDMA_CPM4_GLBL2_PF_BARLITE_INT_ADDR            0x104
-#define GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_VF_BARLITE_INT_ADDR         0x108
-#define GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_BARLITE_EXT_ADDR            0x10C
-#define GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_VF_BARLITE_EXT_ADDR         0x110
-#define GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_CHANNEL_INST_ADDR              0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_MDMA_ADDR              0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_STRM_ADDR              0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_CAP_ADDR               0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define QDMA_CPM4_GLBL2_CHANNEL_PASID_CAP_ADDR         0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 16)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK          GENMASK(15, 4)
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK                GENMASK(3, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_FUNC_RET_ADDR          0x12C
-#define GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK                 GENMASK(31, 8)
-#define GLBL2_CHANNEL_FUNC_RET_FUNC_MASK                   GENMASK(7, 0)
-#define QDMA_CPM4_GLBL2_SYSTEM_ID_ADDR                 0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define QDMA_CPM4_GLBL2_MISC_CAP_ADDR                  0x134
-#define GLBL2_MISC_CAP_RSVD_1_MASK                         GENMASK(31, 0)
-#define QDMA_CPM4_GLBL2_DBG_PCIE_RQ0_ADDR              0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 10)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(9, 4)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(3, 2)
-#define GLBL2_PCIE_RQ0_TAG_FL_MASK                     GENMASK(1, 0)
-#define QDMA_CPM4_GLBL2_DBG_PCIE_RQ1_ADDR              0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 17)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(16)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(15)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(14)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(13)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(12)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(8, 6)
-#define GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK               BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK               BIT(2)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(1)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_WR0_ADDR             0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_WR1_ADDR             0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_RD0_ADDR             0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(16, 14)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_RD1_ADDR             0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_1_ADDR                   0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_2_ADDR                   0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_3_ADDR                   0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_4_ADDR                   0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_5_ADDR                   0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_6_ADDR                   0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_7_ADDR                   0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_8_ADDR                   0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_9_ADDR                   0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_A_ADDR                   0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_B_ADDR                   0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_C_ADDR                   0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_D_ADDR                   0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_E_ADDR                   0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_F_ADDR                   0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_10_ADDR                  0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_ERR_STAT_ADDR                   0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 12)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(11)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(10)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                BIT(9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL_ERR_MASK_ADDR                   0x24C
-#define GLBL_ERR_RSVD_1_MASK                          GENMASK(31, 9)
-#define GLBL_ERR_MASK                            GENMASK(8, 0)
-#define QDMA_CPM4_GLBL_DSC_CFG_ADDR                    0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR                0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(5)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(4)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(1)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(0)
-#define QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR                0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(8, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_LOG0_ADDR               0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(30, 29)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(28, 17)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(16)
-#define GLBL_DSC_ERR_LOG0_CIDX_MASK                        GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_LOG1_ADDR               0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR                0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 4)
-#define GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK                  BIT(3)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(2)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(1)
-#define GLBL_TRQ_ERR_STS_UNMAPPED_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR                0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_LOG_ADDR                0x26C
-#define GLBL_TRQ_ERR_LOG_RSVD_1_MASK                       GENMASK(31, 28)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(27, 24)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(23, 16)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_DSC_DBG_DAT0_ADDR               0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define QDMA_CPM4_GLBL_DSC_DBG_DAT1_ADDR               0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR                  0x400
-#define TRQ_SEL_FMAP_0_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_0_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_0_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1_ADDR                  0x404
-#define TRQ_SEL_FMAP_1_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2_ADDR                  0x408
-#define TRQ_SEL_FMAP_2_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3_ADDR                  0x40C
-#define TRQ_SEL_FMAP_3_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4_ADDR                  0x410
-#define TRQ_SEL_FMAP_4_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5_ADDR                  0x414
-#define TRQ_SEL_FMAP_5_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6_ADDR                  0x418
-#define TRQ_SEL_FMAP_6_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7_ADDR                  0x41C
-#define TRQ_SEL_FMAP_7_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8_ADDR                  0x420
-#define TRQ_SEL_FMAP_8_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9_ADDR                  0x424
-#define TRQ_SEL_FMAP_9_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A_ADDR                  0x428
-#define TRQ_SEL_FMAP_A_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B_ADDR                  0x42C
-#define TRQ_SEL_FMAP_B_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D_ADDR                  0x430
-#define TRQ_SEL_FMAP_D_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E_ADDR                  0x434
-#define TRQ_SEL_FMAP_E_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_F_ADDR                  0x438
-#define TRQ_SEL_FMAP_F_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_10_ADDR                 0x43C
-#define TRQ_SEL_FMAP_10_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_10_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_10_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_11_ADDR                 0x440
-#define TRQ_SEL_FMAP_11_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_11_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_11_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_12_ADDR                 0x444
-#define TRQ_SEL_FMAP_12_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_12_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_12_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_13_ADDR                 0x448
-#define TRQ_SEL_FMAP_13_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_13_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_13_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_14_ADDR                 0x44C
-#define TRQ_SEL_FMAP_14_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_14_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_14_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_15_ADDR                 0x450
-#define TRQ_SEL_FMAP_15_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_15_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_15_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_16_ADDR                 0x454
-#define TRQ_SEL_FMAP_16_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_16_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_16_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_17_ADDR                 0x458
-#define TRQ_SEL_FMAP_17_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_17_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_17_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_18_ADDR                 0x45C
-#define TRQ_SEL_FMAP_18_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_18_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_18_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_19_ADDR                 0x460
-#define TRQ_SEL_FMAP_19_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_19_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_19_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1A_ADDR                 0x464
-#define TRQ_SEL_FMAP_1A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1B_ADDR                 0x468
-#define TRQ_SEL_FMAP_1B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1C_ADDR                 0x46C
-#define TRQ_SEL_FMAP_1C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1D_ADDR                 0x470
-#define TRQ_SEL_FMAP_1D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1E_ADDR                 0x474
-#define TRQ_SEL_FMAP_1E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1F_ADDR                 0x478
-#define TRQ_SEL_FMAP_1F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_20_ADDR                 0x47C
-#define TRQ_SEL_FMAP_20_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_20_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_20_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_21_ADDR                 0x480
-#define TRQ_SEL_FMAP_21_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_21_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_21_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_22_ADDR                 0x484
-#define TRQ_SEL_FMAP_22_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_22_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_22_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_23_ADDR                 0x488
-#define TRQ_SEL_FMAP_23_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_23_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_23_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_24_ADDR                 0x48C
-#define TRQ_SEL_FMAP_24_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_24_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_24_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_25_ADDR                 0x490
-#define TRQ_SEL_FMAP_25_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_25_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_25_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_26_ADDR                 0x494
-#define TRQ_SEL_FMAP_26_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_26_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_26_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_27_ADDR                 0x498
-#define TRQ_SEL_FMAP_27_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_27_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_27_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_28_ADDR                 0x49C
-#define TRQ_SEL_FMAP_28_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_28_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_28_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_29_ADDR                 0x4A0
-#define TRQ_SEL_FMAP_29_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_29_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_29_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2A_ADDR                 0x4A4
-#define TRQ_SEL_FMAP_2A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2B_ADDR                 0x4A8
-#define TRQ_SEL_FMAP_2B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2C_ADDR                 0x4AC
-#define TRQ_SEL_FMAP_2C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2D_ADDR                 0x4B0
-#define TRQ_SEL_FMAP_2D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2E_ADDR                 0x4B4
-#define TRQ_SEL_FMAP_2E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2F_ADDR                 0x4B8
-#define TRQ_SEL_FMAP_2F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_30_ADDR                 0x4BC
-#define TRQ_SEL_FMAP_30_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_30_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_30_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_31_ADDR                 0x4D0
-#define TRQ_SEL_FMAP_31_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_31_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_31_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_32_ADDR                 0x4D4
-#define TRQ_SEL_FMAP_32_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_32_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_32_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_33_ADDR                 0x4D8
-#define TRQ_SEL_FMAP_33_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_33_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_33_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_34_ADDR                 0x4DC
-#define TRQ_SEL_FMAP_34_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_34_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_34_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_35_ADDR                 0x4E0
-#define TRQ_SEL_FMAP_35_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_35_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_35_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_36_ADDR                 0x4E4
-#define TRQ_SEL_FMAP_36_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_36_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_36_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_37_ADDR                 0x4E8
-#define TRQ_SEL_FMAP_37_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_37_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_37_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_38_ADDR                 0x4EC
-#define TRQ_SEL_FMAP_38_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_38_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_38_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_39_ADDR                 0x4F0
-#define TRQ_SEL_FMAP_39_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_39_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_39_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3A_ADDR                 0x4F4
-#define TRQ_SEL_FMAP_3A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3B_ADDR                 0x4F8
-#define TRQ_SEL_FMAP_3B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3C_ADDR                 0x4FC
-#define TRQ_SEL_FMAP_3C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3D_ADDR                 0x500
-#define TRQ_SEL_FMAP_3D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3E_ADDR                 0x504
-#define TRQ_SEL_FMAP_3E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3F_ADDR                 0x508
-#define TRQ_SEL_FMAP_3F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_40_ADDR                 0x50C
-#define TRQ_SEL_FMAP_40_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_40_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_40_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_41_ADDR                 0x510
-#define TRQ_SEL_FMAP_41_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_41_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_41_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_42_ADDR                 0x514
-#define TRQ_SEL_FMAP_42_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_42_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_42_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_43_ADDR                 0x518
-#define TRQ_SEL_FMAP_43_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_43_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_43_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_44_ADDR                 0x51C
-#define TRQ_SEL_FMAP_44_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_44_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_44_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_45_ADDR                 0x520
-#define TRQ_SEL_FMAP_45_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_45_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_45_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_46_ADDR                 0x524
-#define TRQ_SEL_FMAP_46_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_46_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_46_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_47_ADDR                 0x528
-#define TRQ_SEL_FMAP_47_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_47_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_47_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_48_ADDR                 0x52C
-#define TRQ_SEL_FMAP_48_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_48_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_48_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_49_ADDR                 0x530
-#define TRQ_SEL_FMAP_49_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_49_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_49_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4A_ADDR                 0x534
-#define TRQ_SEL_FMAP_4A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4B_ADDR                 0x538
-#define TRQ_SEL_FMAP_4B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4C_ADDR                 0x53C
-#define TRQ_SEL_FMAP_4C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4D_ADDR                 0x540
-#define TRQ_SEL_FMAP_4D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4E_ADDR                 0x544
-#define TRQ_SEL_FMAP_4E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4F_ADDR                 0x548
-#define TRQ_SEL_FMAP_4F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_50_ADDR                 0x54C
-#define TRQ_SEL_FMAP_50_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_50_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_50_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_51_ADDR                 0x550
-#define TRQ_SEL_FMAP_51_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_51_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_51_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_52_ADDR                 0x554
-#define TRQ_SEL_FMAP_52_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_52_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_52_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_53_ADDR                 0x558
-#define TRQ_SEL_FMAP_53_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_53_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_53_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_54_ADDR                 0x55C
-#define TRQ_SEL_FMAP_54_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_54_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_54_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_55_ADDR                 0x560
-#define TRQ_SEL_FMAP_55_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_55_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_55_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_56_ADDR                 0x564
-#define TRQ_SEL_FMAP_56_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_56_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_56_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_57_ADDR                 0x568
-#define TRQ_SEL_FMAP_57_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_57_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_57_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_58_ADDR                 0x56C
-#define TRQ_SEL_FMAP_58_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_58_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_58_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_59_ADDR                 0x570
-#define TRQ_SEL_FMAP_59_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_59_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_59_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5A_ADDR                 0x574
-#define TRQ_SEL_FMAP_5A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5B_ADDR                 0x578
-#define TRQ_SEL_FMAP_5B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5C_ADDR                 0x57C
-#define TRQ_SEL_FMAP_5C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5D_ADDR                 0x580
-#define TRQ_SEL_FMAP_5D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5E_ADDR                 0x584
-#define TRQ_SEL_FMAP_5E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5F_ADDR                 0x588
-#define TRQ_SEL_FMAP_5F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_60_ADDR                 0x58C
-#define TRQ_SEL_FMAP_60_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_60_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_60_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_61_ADDR                 0x590
-#define TRQ_SEL_FMAP_61_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_61_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_61_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_62_ADDR                 0x594
-#define TRQ_SEL_FMAP_62_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_62_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_62_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_63_ADDR                 0x598
-#define TRQ_SEL_FMAP_63_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_63_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_63_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_64_ADDR                 0x59C
-#define TRQ_SEL_FMAP_64_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_64_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_64_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_65_ADDR                 0x5A0
-#define TRQ_SEL_FMAP_65_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_65_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_65_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_66_ADDR                 0x5A4
-#define TRQ_SEL_FMAP_66_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_66_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_66_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_67_ADDR                 0x5A8
-#define TRQ_SEL_FMAP_67_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_67_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_67_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_68_ADDR                 0x5AC
-#define TRQ_SEL_FMAP_68_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_68_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_68_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_69_ADDR                 0x5B0
-#define TRQ_SEL_FMAP_69_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_69_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_69_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6A_ADDR                 0x5B4
-#define TRQ_SEL_FMAP_6A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6B_ADDR                 0x5B8
-#define TRQ_SEL_FMAP_6B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6C_ADDR                 0x5BC
-#define TRQ_SEL_FMAP_6C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6D_ADDR                 0x5C0
-#define TRQ_SEL_FMAP_6D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6E_ADDR                 0x5C4
-#define TRQ_SEL_FMAP_6E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6F_ADDR                 0x5C8
-#define TRQ_SEL_FMAP_6F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_70_ADDR                 0x5CC
-#define TRQ_SEL_FMAP_70_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_70_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_70_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_71_ADDR                 0x5D0
-#define TRQ_SEL_FMAP_71_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_71_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_71_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_72_ADDR                 0x5D4
-#define TRQ_SEL_FMAP_72_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_72_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_72_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_73_ADDR                 0x5D8
-#define TRQ_SEL_FMAP_73_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_73_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_73_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_74_ADDR                 0x5DC
-#define TRQ_SEL_FMAP_74_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_74_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_74_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_75_ADDR                 0x5E0
-#define TRQ_SEL_FMAP_75_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_75_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_75_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_76_ADDR                 0x5E4
-#define TRQ_SEL_FMAP_76_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_76_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_76_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_77_ADDR                 0x5E8
-#define TRQ_SEL_FMAP_77_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_77_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_77_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_78_ADDR                 0x5EC
-#define TRQ_SEL_FMAP_78_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_78_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_78_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_79_ADDR                 0x5F0
-#define TRQ_SEL_FMAP_79_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_79_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_79_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7A_ADDR                 0x5F4
-#define TRQ_SEL_FMAP_7A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7B_ADDR                 0x5F8
-#define TRQ_SEL_FMAP_7B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7C_ADDR                 0x5FC
-#define TRQ_SEL_FMAP_7C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7D_ADDR                 0x600
-#define TRQ_SEL_FMAP_7D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7E_ADDR                 0x604
-#define TRQ_SEL_FMAP_7E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7F_ADDR                 0x608
-#define TRQ_SEL_FMAP_7F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_80_ADDR                 0x60C
-#define TRQ_SEL_FMAP_80_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_80_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_80_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_81_ADDR                 0x610
-#define TRQ_SEL_FMAP_81_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_81_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_81_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_82_ADDR                 0x614
-#define TRQ_SEL_FMAP_82_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_82_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_82_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_83_ADDR                 0x618
-#define TRQ_SEL_FMAP_83_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_83_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_83_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_84_ADDR                 0x61C
-#define TRQ_SEL_FMAP_84_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_84_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_84_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_85_ADDR                 0x620
-#define TRQ_SEL_FMAP_85_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_85_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_85_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_86_ADDR                 0x624
-#define TRQ_SEL_FMAP_86_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_86_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_86_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_87_ADDR                 0x628
-#define TRQ_SEL_FMAP_87_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_87_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_87_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_88_ADDR                 0x62C
-#define TRQ_SEL_FMAP_88_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_88_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_88_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_89_ADDR                 0x630
-#define TRQ_SEL_FMAP_89_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_89_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_89_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8A_ADDR                 0x634
-#define TRQ_SEL_FMAP_8A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8B_ADDR                 0x638
-#define TRQ_SEL_FMAP_8B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8C_ADDR                 0x63C
-#define TRQ_SEL_FMAP_8C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8D_ADDR                 0x640
-#define TRQ_SEL_FMAP_8D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8E_ADDR                 0x644
-#define TRQ_SEL_FMAP_8E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8F_ADDR                 0x648
-#define TRQ_SEL_FMAP_8F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_90_ADDR                 0x64C
-#define TRQ_SEL_FMAP_90_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_90_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_90_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_91_ADDR                 0x650
-#define TRQ_SEL_FMAP_91_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_91_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_91_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_92_ADDR                 0x654
-#define TRQ_SEL_FMAP_92_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_92_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_92_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_93_ADDR                 0x658
-#define TRQ_SEL_FMAP_93_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_93_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_93_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_94_ADDR                 0x65C
-#define TRQ_SEL_FMAP_94_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_94_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_94_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_95_ADDR                 0x660
-#define TRQ_SEL_FMAP_95_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_95_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_95_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_96_ADDR                 0x664
-#define TRQ_SEL_FMAP_96_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_96_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_96_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_97_ADDR                 0x668
-#define TRQ_SEL_FMAP_97_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_97_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_97_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_98_ADDR                 0x66C
-#define TRQ_SEL_FMAP_98_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_98_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_98_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_99_ADDR                 0x670
-#define TRQ_SEL_FMAP_99_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_99_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_99_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9A_ADDR                 0x674
-#define TRQ_SEL_FMAP_9A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9B_ADDR                 0x678
-#define TRQ_SEL_FMAP_9B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9C_ADDR                 0x67C
-#define TRQ_SEL_FMAP_9C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9D_ADDR                 0x680
-#define TRQ_SEL_FMAP_9D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9E_ADDR                 0x684
-#define TRQ_SEL_FMAP_9E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9F_ADDR                 0x688
-#define TRQ_SEL_FMAP_9F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A0_ADDR                 0x68C
-#define TRQ_SEL_FMAP_A0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A1_ADDR                 0x690
-#define TRQ_SEL_FMAP_A1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A2_ADDR                 0x694
-#define TRQ_SEL_FMAP_A2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A3_ADDR                 0x698
-#define TRQ_SEL_FMAP_A3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A4_ADDR                 0x69C
-#define TRQ_SEL_FMAP_A4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A5_ADDR                 0x6A0
-#define TRQ_SEL_FMAP_A5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A6_ADDR                 0x6A4
-#define TRQ_SEL_FMAP_A6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A7_ADDR                 0x6A8
-#define TRQ_SEL_FMAP_A7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A8_ADDR                 0x6AC
-#define TRQ_SEL_FMAP_A8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A9_ADDR                 0x6B0
-#define TRQ_SEL_FMAP_A9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AA_ADDR                 0x6B4
-#define TRQ_SEL_FMAP_AA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AB_ADDR                 0x6B8
-#define TRQ_SEL_FMAP_AB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AC_ADDR                 0x6BC
-#define TRQ_SEL_FMAP_AC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AD_ADDR                 0x6D0
-#define TRQ_SEL_FMAP_AD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AE_ADDR                 0x6D4
-#define TRQ_SEL_FMAP_AE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AF_ADDR                 0x6D8
-#define TRQ_SEL_FMAP_AF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B0_ADDR                 0x6DC
-#define TRQ_SEL_FMAP_B0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B1_ADDR                 0x6E0
-#define TRQ_SEL_FMAP_B1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B2_ADDR                 0x6E4
-#define TRQ_SEL_FMAP_B2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B3_ADDR                 0x6E8
-#define TRQ_SEL_FMAP_B3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B4_ADDR                 0x6EC
-#define TRQ_SEL_FMAP_B4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B5_ADDR                 0x6F0
-#define TRQ_SEL_FMAP_B5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B6_ADDR                 0x6F4
-#define TRQ_SEL_FMAP_B6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B7_ADDR                 0x6F8
-#define TRQ_SEL_FMAP_B7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B8_ADDR                 0x6FC
-#define TRQ_SEL_FMAP_B8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B9_ADDR                 0x700
-#define TRQ_SEL_FMAP_B9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BA_ADDR                 0x704
-#define TRQ_SEL_FMAP_BA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BB_ADDR                 0x708
-#define TRQ_SEL_FMAP_BB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BC_ADDR                 0x70C
-#define TRQ_SEL_FMAP_BC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BD_ADDR                 0x710
-#define TRQ_SEL_FMAP_BD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BE_ADDR                 0x714
-#define TRQ_SEL_FMAP_BE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BF_ADDR                 0x718
-#define TRQ_SEL_FMAP_BF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C0_ADDR                 0x71C
-#define TRQ_SEL_FMAP_C0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C1_ADDR                 0x720
-#define TRQ_SEL_FMAP_C1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C2_ADDR                 0x734
-#define TRQ_SEL_FMAP_C2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C3_ADDR                 0x748
-#define TRQ_SEL_FMAP_C3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C4_ADDR                 0x74C
-#define TRQ_SEL_FMAP_C4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C5_ADDR                 0x750
-#define TRQ_SEL_FMAP_C5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C6_ADDR                 0x754
-#define TRQ_SEL_FMAP_C6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C7_ADDR                 0x758
-#define TRQ_SEL_FMAP_C7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C8_ADDR                 0x75C
-#define TRQ_SEL_FMAP_C8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C9_ADDR                 0x760
-#define TRQ_SEL_FMAP_C9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CA_ADDR                 0x764
-#define TRQ_SEL_FMAP_CA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CB_ADDR                 0x768
-#define TRQ_SEL_FMAP_CB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CC_ADDR                 0x76C
-#define TRQ_SEL_FMAP_CC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CD_ADDR                 0x770
-#define TRQ_SEL_FMAP_CD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CE_ADDR                 0x774
-#define TRQ_SEL_FMAP_CE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CF_ADDR                 0x778
-#define TRQ_SEL_FMAP_CF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D0_ADDR                 0x77C
-#define TRQ_SEL_FMAP_D0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D1_ADDR                 0x780
-#define TRQ_SEL_FMAP_D1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D2_ADDR                 0x784
-#define TRQ_SEL_FMAP_D2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D3_ADDR                 0x788
-#define TRQ_SEL_FMAP_D3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D4_ADDR                 0x78C
-#define TRQ_SEL_FMAP_D4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D5_ADDR                 0x790
-#define TRQ_SEL_FMAP_D5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D6_ADDR                 0x794
-#define TRQ_SEL_FMAP_D6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D7_ADDR                 0x798
-#define TRQ_SEL_FMAP_D7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D8_ADDR                 0x79C
-#define TRQ_SEL_FMAP_D8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D9_ADDR                 0x7A0
-#define TRQ_SEL_FMAP_D9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DA_ADDR                 0x7A4
-#define TRQ_SEL_FMAP_DA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DB_ADDR                 0x7A8
-#define TRQ_SEL_FMAP_DB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DC_ADDR                 0x7AC
-#define TRQ_SEL_FMAP_DC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DD_ADDR                 0x7B0
-#define TRQ_SEL_FMAP_DD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DE_ADDR                 0x7B4
-#define TRQ_SEL_FMAP_DE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DF_ADDR                 0x7B8
-#define TRQ_SEL_FMAP_DF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E0_ADDR                 0x7BC
-#define TRQ_SEL_FMAP_E0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E1_ADDR                 0x7C0
-#define TRQ_SEL_FMAP_E1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E2_ADDR                 0x7C4
-#define TRQ_SEL_FMAP_E2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E3_ADDR                 0x7C8
-#define TRQ_SEL_FMAP_E3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E4_ADDR                 0x7CC
-#define TRQ_SEL_FMAP_E4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E5_ADDR                 0x7D0
-#define TRQ_SEL_FMAP_E5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E6_ADDR                 0x7D4
-#define TRQ_SEL_FMAP_E6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E7_ADDR                 0x7D8
-#define TRQ_SEL_FMAP_E7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E8_ADDR                 0x7DC
-#define TRQ_SEL_FMAP_E8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E9_ADDR                 0x7E0
-#define TRQ_SEL_FMAP_E9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EA_ADDR                 0x7E4
-#define TRQ_SEL_FMAP_EA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EB_ADDR                 0x7E8
-#define TRQ_SEL_FMAP_EB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EC_ADDR                 0x7EC
-#define TRQ_SEL_FMAP_EC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_ED_ADDR                 0x7F0
-#define TRQ_SEL_FMAP_ED_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_ED_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_ED_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EE_ADDR                 0x7F4
-#define TRQ_SEL_FMAP_EE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EF_ADDR                 0x7F8
-#define TRQ_SEL_FMAP_EF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_F0_ADDR                 0x7FC
-#define TRQ_SEL_FMAP_F0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_3_ADDR                 0x804
-#define IND_CTXT_DATA_3_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_2_ADDR                 0x808
-#define IND_CTXT_DATA_2_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_1_ADDR                 0x80C
-#define IND_CTXT_DATA_1_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_0_ADDR                 0x810
-#define IND_CTXT_DATA_0_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT3_ADDR                       0x814
-#define IND_CTXT3_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT2_ADDR                       0x818
-#define IND_CTXT2_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT1_ADDR                       0x81C
-#define IND_CTXT1_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT0_ADDR                       0x820
-#define IND_CTXT0_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_CMD_ADDR                    0x824
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 18)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(17, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SET_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define QDMA_CPM4_C2H_TIMER_CNT_1_ADDR                 0xA00
-#define C2H_TIMER_CNT_1_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_1_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_2_ADDR                 0xA04
-#define C2H_TIMER_CNT_2_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_2_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_3_ADDR                 0xA08
-#define C2H_TIMER_CNT_3_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_3_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_4_ADDR                 0xA0C
-#define C2H_TIMER_CNT_4_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_4_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_5_ADDR                 0xA10
-#define C2H_TIMER_CNT_5_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_5_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_6_ADDR                 0xA14
-#define C2H_TIMER_CNT_6_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_6_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_7_ADDR                 0xA18
-#define C2H_TIMER_CNT_7_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_7_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_8_ADDR                 0xA1C
-#define C2H_TIMER_CNT_8_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_8_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_9_ADDR                 0xA20
-#define C2H_TIMER_CNT_9_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_9_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_A_ADDR                 0xA24
-#define C2H_TIMER_CNT_A_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_A_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_B_ADDR                 0xA28
-#define C2H_TIMER_CNT_B_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_B_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_C_ADDR                 0xA2C
-#define C2H_TIMER_CNT_C_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_C_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_D_ADDR                 0xA30
-#define C2H_TIMER_CNT_D_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_D_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_E_ADDR                 0xA34
-#define C2H_TIMER_CNT_E_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_E_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_F_ADDR                 0xA38
-#define C2H_TIMER_CNT_F_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_F_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_10_ADDR                0xA3C
-#define C2H_TIMER_CNT_10_RSVD_1_MASK                       GENMASK(31, 8)
-#define C2H_TIMER_CNT_10_MASK                             GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_1_ADDR                    0xA40
-#define C2H_CNT_TH_1_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_1_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_2_ADDR                    0xA44
-#define C2H_CNT_TH_2_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_2_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_3_ADDR                    0xA48
-#define C2H_CNT_TH_3_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_3_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_4_ADDR                    0xA4C
-#define C2H_CNT_TH_4_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_4_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_5_ADDR                    0xA50
-#define C2H_CNT_TH_5_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_5_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_6_ADDR                    0xA54
-#define C2H_CNT_TH_6_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_6_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_7_ADDR                    0xA58
-#define C2H_CNT_TH_7_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_7_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_8_ADDR                    0xA5C
-#define C2H_CNT_TH_8_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_8_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_9_ADDR                    0xA60
-#define C2H_CNT_TH_9_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_9_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_A_ADDR                    0xA64
-#define C2H_CNT_TH_A_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_A_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_B_ADDR                    0xA68
-#define C2H_CNT_TH_B_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_B_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_C_ADDR                    0xA6C
-#define C2H_CNT_TH_C_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_C_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_D_ADDR                    0xA70
-#define C2H_CNT_TH_D_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_D_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_E_ADDR                    0xA74
-#define C2H_CNT_TH_E_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_E_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_F_ADDR                    0xA78
-#define C2H_CNT_TH_F_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_F_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_10_ADDR                   0xA7C
-#define C2H_CNT_TH_10_RSVD_1_MASK                          GENMASK(31, 8)
-#define C2H_CNT_TH_10_THESHOLD_CNT_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_C2H_QID2VEC_MAP_QID_ADDR             0xA80
-#define C2H_QID2VEC_MAP_QID_RSVD_1_MASK                    GENMASK(31, 11)
-#define C2H_QID2VEC_MAP_QID_QID_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_C2H_QID2VEC_MAP_ADDR                 0xA84
-#define C2H_QID2VEC_MAP_RSVD_1_MASK                        GENMASK(31, 19)
-#define C2H_QID2VEC_MAP_H2C_EN_COAL_MASK                   BIT(18)
-#define C2H_QID2VEC_MAP_H2C_VECTOR_MASK                    GENMASK(17, 9)
-#define C2H_QID2VEC_MAP_C2H_EN_COAL_MASK                   BIT(8)
-#define C2H_QID2VEC_MAP_C2H_VECTOR_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR    0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR    0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR  0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_AXIS_PKG_CMP_ADDR           0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_ACCEPTED_ADDR      0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_CMP_ADDR           0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_WRQ_OUT_ADDR                0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_WPL_REN_ACCEPTED_ADDR       0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_TOTAL_WRQ_LEN_ADDR          0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_TOTAL_WPL_LEN_ADDR          0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_0_ADDR                    0xAB0
-#define C2H_BUF_SZ_0_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_1_ADDR                    0xAB4
-#define C2H_BUF_SZ_1_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_2_ADDR                    0xAB8
-#define C2H_BUF_SZ_2_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_3_ADDR                    0xABC
-#define C2H_BUF_SZ_3_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_4_ADDR                    0xAC0
-#define C2H_BUF_SZ_4_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_5_ADDR                    0xAC4
-#define C2H_BUF_SZ_5_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_7_ADDR                    0XAC8
-#define C2H_BUF_SZ_7_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_8_ADDR                    0XACC
-#define C2H_BUF_SZ_8_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_9_ADDR                    0xAD0
-#define C2H_BUF_SZ_9_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_10_ADDR                   0xAD4
-#define C2H_BUF_SZ_10_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_11_ADDR                   0xAD8
-#define C2H_BUF_SZ_11_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_12_ADDR                   0xAE0
-#define C2H_BUF_SZ_12_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_13_ADDR                   0xAE4
-#define C2H_BUF_SZ_13_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_14_ADDR                   0xAE8
-#define C2H_BUF_SZ_14_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_15_ADDR                   0XAEC
-#define C2H_BUF_SZ_15_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_ERR_STAT_ADDR                    0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK          BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define QDMA_CPM4_C2H_ERR_MASK_ADDR                    0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR              0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK        BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK       BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RSVD_2_MASK                     BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR              0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_FATAL_ERR_ENABLE_ADDR            0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define QDMA_CPM4_GLBL_ERR_INT_ADDR                    0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 18)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(17)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(16)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(15, 8)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(7, 0)
-#define QDMA_CPM4_C2H_PFCH_CFG_ADDR                    0xB08
-#define C2H_PFCH_CFG_EVT_QCNT_TH_MASK                      GENMASK(31, 25)
-#define C2H_PFCH_CFG_QCNT_MASK                             GENMASK(24, 16)
-#define C2H_PFCH_CFG_NUM_MASK                              GENMASK(15, 8)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(7, 0)
-#define QDMA_CPM4_C2H_INT_TIMER_TICK_ADDR              0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR 0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR  0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_REQ_ADDR               0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_0_ADDR          0xB1C
-#define C2H_STAT_DMA_ENG_0_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(30, 28)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK       GENMASK(27, 18)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 8)
-#define C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_1_ADDR          0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK          BIT(30)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK        GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_2_ADDR          0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_3_ADDR          0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK        GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_ERR_CTXT_ADDR           0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define QDMA_CPM4_C2H_FIRST_ERR_QID_ADDR               0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_STAT_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_CMD_WR_MASK                      GENMASK(15, 12)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_IN_ADDR                 0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_OUT_ADDR                0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_DRP_ADDR                0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_STAT_DESC_OUT_ADDR          0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_DSC_CRDT_SENT_ADDR          0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_FCH_DSC_RCVD_ADDR           0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_BYP_DSC_RCVD_ADDR           0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define QDMA_CPM4_C2H_WRB_COAL_CFG_ADDR                0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define QDMA_CPM4_C2H_INTR_H2C_REQ_ADDR                0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_MM_REQ_ADDR             0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_ERR_INT_REQ_ADDR            0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_REQ_ADDR             0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR 0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR 0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR 0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR 0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_MSIX_ACK_ADDR        0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR       0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_NO_MSIX_ADDR         0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR      0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_WR_CMP_ADDR                 0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_4_ADDR          0xB88
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK     BIT(31)
-#define C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK        BIT(30)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK  GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK     GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_5_ADDR          0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 25)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK     BIT(24)
-#define C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK      BIT(23)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK      GENMASK(22, 13)
-#define C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK   GENMASK(12, 3)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK         GENMASK(2, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_QID_ADDR                0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 15)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(14)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(13, 11)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(10, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_ADDR                    0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_INT_DBG_ADDR                     0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define QDMA_CPM4_C2H_STAT_IMM_ACCEPTED_ADDR           0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_MARKER_ACCEPTED_ADDR        0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR   0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define QDMA_CPM4_C2H_PLD_FIFO_CRDT_CNT_ADDR           0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_CPM4_H2C_ERR_STAT_ADDR                    0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define QDMA_CPM4_H2C_ERR_MASK_ADDR                    0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_H2C_FIRST_ERR_QID_ADDR               0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 12)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_CPM4_H2C_DBG_REG0_ADDR                    0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG1_ADDR                    0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG2_ADDR                    0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG3_ADDR                    0xE18
-#define H2C_REG3_MASK                              BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define QDMA_CPM4_H2C_DBG_REG4_ADDR                    0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_H2C_FATAL_ERR_EN_ADDR                0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CTL_ADDR                 0x1004
-#define C2H_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CTL_1_ADDR               0x1008
-#define C2H_CHANNEL_CTL_1_RUN_MASK                         GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_1_RUN_1_MASK                       BIT(0)
-#define QDMA_CPM4_C2H_MM_STATUS_ADDR                   0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CMPL_DESC_CNT_ADDR       0x1048
-#define C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK            BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define QDMA_CPM4_C2H_MM_ERR_CODE_ADDR                 0x1058
-#define C2H_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define C2H_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_CPM4_C2H_MM_ERR_INFO_ADDR                 0x105C
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define C2H_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define C2H_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CTL_ADDR             0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR      0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR      0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_DATA_CNT0_ADDR       0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_DATA_CNT1_ADDR       0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_CPM4_C2H_MM_DBG_ADDR                      0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_ADDR                 0x1204
-#define H2C_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define H2C_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_1_ADDR               0x1208
-#define H2C_CHANNEL_CTL_1_RUN_MASK                         BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_2_ADDR               0x120C
-#define H2C_CHANNEL_CTL_2_RUN_MASK                         BIT(0)
-#define QDMA_CPM4_H2C_MM_STATUS_ADDR                   0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CMPL_DESC_CNT_ADDR       0x1248
-#define H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK            GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK            GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK            GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK            GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK            BIT(0)
-#define QDMA_CPM4_H2C_MM_ERR_CODE_ADDR                 0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define H2C_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define H2C_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_CPM4_H2C_MM_ERR_INFO_ADDR                 0x125C
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define H2C_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define H2C_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CTL_ADDR             0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR      0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR      0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_DATA_CNT0_ADDR       0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_DATA_CNT1_ADDR       0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_CPM4_H2C_MM_DBG_ADDR                      0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_CPM4_FUNC_STATUS_REG_ADDR                 0x2400
-#define FUNC_STATUS_REG_RSVD_1_MASK                        GENMASK(31, 12)
-#define FUNC_STATUS_REG_CUR_SRC_FN_MASK                    GENMASK(11, 4)
-#define FUNC_STATUS_REG_ACK_MASK                           BIT(2)
-#define FUNC_STATUS_REG_O_MSG_MASK                         BIT(1)
-#define FUNC_STATUS_REG_I_MSG_MASK                         BIT(0)
-#define QDMA_CPM4_FUNC_CMD_REG_ADDR                    0x2404
-#define FUNC_CMD_REG_RSVD_1_MASK                           GENMASK(31, 3)
-#define FUNC_CMD_REG_RSVD_2_MASK                           BIT(2)
-#define FUNC_CMD_REG_MSG_RCV_MASK                          BIT(1)
-#define FUNC_CMD_REG_MSG_SENT_MASK                         BIT(0)
-#define QDMA_CPM4_FUNC_INTERRUPT_VECTOR_REG_ADDR       0x2408
-#define FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK              GENMASK(31, 5)
-#define FUNC_INTERRUPT_VECTOR_REG_IN_MASK                  GENMASK(4, 0)
-#define QDMA_CPM4_TARGET_FUNC_REG_ADDR                 0x240C
-#define TARGET_FUNC_REG_RSVD_1_MASK                        GENMASK(31, 8)
-#define TARGET_FUNC_REG_N_ID_MASK                          GENMASK(7, 0)
-#define QDMA_CPM4_FUNC_INTERRUPT_CTL_REG_ADDR          0x2410
-#define FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK                 GENMASK(31, 1)
-#define FUNC_INTERRUPT_CTL_REG_INT_EN_MASK                 BIT(0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_FNC_ID_MASK                   GENMASK(11, 4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_MASK                     GENMASK(15, 11)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK           GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W3_RSVD_MASK                       GENMASK(31, 30)
-#define CMPL_CTXT_DATA_W3_FULL_UPD_MASK                   BIT(29)
-#define CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK              BIT(28)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(27)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(24)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(23, 8)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 24)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(23, 22)
-#define CMPL_CTXT_DATA_W2_BADDR_64_H_MASK                 GENMASK(21, 0)
-#define CMPL_CTXT_DATA_W1_BADDR_64_M_MASK                 GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_BADDR_64_L_MASK                 GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK                  GENMASK(27, 24)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(23)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(22, 21)
-#define CMPL_CTXT_DATA_W0_TIMER_IDX_MASK                  GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_CNTER_IDX_MASK                  GENMASK(16, 13)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(12, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(11, 0)
-#define INTR_CTXT_DATA_W1_PAGE_SIZE_MASK                  GENMASK(31, 29)
-#define INTR_CTXT_DATA_W1_BADDR_4K_H_MASK                 GENMASK(28, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 9)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(8)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(7)
-#define INTR_CTXT_DATA_W0_RSVD_MASK                       BIT(6)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(5, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
deleted file mode 100755
index 2955d7a..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
+++ /dev/null
@@ -1,8029 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_cpm4_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_cpm4_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_busdev_field_info[] = {
-	{"CFG_BLK_BUSDEV_BDF",
-		CFG_BLK_BUSDEV_BDF_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE_3",
-		CFG_BLK_MSI_ENABLE_3_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX3",
-		CFG_BLK_MSI_ENABLE_MSIX3_MASK},
-	{"CFG_BLK_MSI_ENABLE_2",
-		CFG_BLK_MSI_ENABLE_2_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX2",
-		CFG_BLK_MSI_ENABLE_MSIX2_MASK},
-	{"CFG_BLK_MSI_ENABLE_1",
-		CFG_BLK_MSI_ENABLE_1_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX1",
-		CFG_BLK_MSI_ENABLE_MSIX1_MASK},
-	{"CFG_BLK_MSI_ENABLE_0",
-		CFG_BLK_MSI_ENABLE_0_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX0",
-		CFG_BLK_MSI_ENABLE_MSIX0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_0_field_info[] = {
-	{"CFG_BLK_SCRATCH_0",
-		CFG_BLK_SCRATCH_0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_1_field_info[] = {
-	{"CFG_BLK_SCRATCH_1",
-		CFG_BLK_SCRATCH_1_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_2_field_info[] = {
-	{"CFG_BLK_SCRATCH_2",
-		CFG_BLK_SCRATCH_2_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_3_field_info[] = {
-	{"CFG_BLK_SCRATCH_3",
-		CFG_BLK_SCRATCH_3_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_4_field_info[] = {
-	{"CFG_BLK_SCRATCH_4",
-		CFG_BLK_SCRATCH_4_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_5_field_info[] = {
-	{"CFG_BLK_SCRATCH_5",
-		CFG_BLK_SCRATCH_5_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_6_field_info[] = {
-	{"CFG_BLK_SCRATCH_6",
-		CFG_BLK_SCRATCH_6_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_7_field_info[] = {
-	{"CFG_BLK_SCRATCH_7",
-		CFG_BLK_SCRATCH_7_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RSVD_1",
-		RAM_SBE_STS_A_RSVD_1_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_QID2VEC_RAM",
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_TUSER_FIFO_RAM",
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PLD_FIFO_RAM",
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PASID_CTXT_RAM",
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_2",
-		RAM_SBE_STS_A_RSVD_2_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_3",
-		RAM_SBE_STS_A_RSVD_3_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RSVD_1",
-		RAM_DBE_STS_A_RSVD_1_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_QID2VEC_RAM",
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_TUSER_FIFO_RAM",
-		RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PLD_FIFO_RAM",
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PASID_CTXT_RAM",
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_2",
-		RAM_DBE_STS_A_RSVD_2_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_3",
-		RAM_DBE_STS_A_RSVD_3_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_int_field_info[] = {
-	{"GLBL2_PF_BARLITE_INT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_int_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_INT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_EXT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_2",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_func_ret_field_info[] = {
-	{"GLBL2_CHANNEL_FUNC_RET_RSVD_1",
-		GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_FUNC_RET_FUNC",
-		GLBL2_CHANNEL_FUNC_RET_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP_RSVD_1",
-		GLBL2_MISC_CAP_RSVD_1_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_FL",
-		GLBL2_PCIE_RQ0_TAG_FL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR_RSVD_1",
-		GLBL_ERR_RSVD_1_MASK},
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_CIDX",
-		GLBL_DSC_ERR_LOG0_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_UNMAPPED",
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_RSVD_1",
-		GLBL_TRQ_ERR_LOG_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_0_field_info[] = {
-	{"TRQ_SEL_FMAP_0_RSVD_1",
-		TRQ_SEL_FMAP_0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_0_QID_MAX",
-		TRQ_SEL_FMAP_0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_0_QID_BASE",
-		TRQ_SEL_FMAP_0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1_field_info[] = {
-	{"TRQ_SEL_FMAP_1_RSVD_1",
-		TRQ_SEL_FMAP_1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1_QID_MAX",
-		TRQ_SEL_FMAP_1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1_QID_BASE",
-		TRQ_SEL_FMAP_1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2_field_info[] = {
-	{"TRQ_SEL_FMAP_2_RSVD_1",
-		TRQ_SEL_FMAP_2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2_QID_MAX",
-		TRQ_SEL_FMAP_2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2_QID_BASE",
-		TRQ_SEL_FMAP_2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3_field_info[] = {
-	{"TRQ_SEL_FMAP_3_RSVD_1",
-		TRQ_SEL_FMAP_3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3_QID_MAX",
-		TRQ_SEL_FMAP_3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3_QID_BASE",
-		TRQ_SEL_FMAP_3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4_field_info[] = {
-	{"TRQ_SEL_FMAP_4_RSVD_1",
-		TRQ_SEL_FMAP_4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4_QID_MAX",
-		TRQ_SEL_FMAP_4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4_QID_BASE",
-		TRQ_SEL_FMAP_4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5_field_info[] = {
-	{"TRQ_SEL_FMAP_5_RSVD_1",
-		TRQ_SEL_FMAP_5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5_QID_MAX",
-		TRQ_SEL_FMAP_5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5_QID_BASE",
-		TRQ_SEL_FMAP_5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6_field_info[] = {
-	{"TRQ_SEL_FMAP_6_RSVD_1",
-		TRQ_SEL_FMAP_6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6_QID_MAX",
-		TRQ_SEL_FMAP_6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6_QID_BASE",
-		TRQ_SEL_FMAP_6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7_field_info[] = {
-	{"TRQ_SEL_FMAP_7_RSVD_1",
-		TRQ_SEL_FMAP_7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7_QID_MAX",
-		TRQ_SEL_FMAP_7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7_QID_BASE",
-		TRQ_SEL_FMAP_7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8_field_info[] = {
-	{"TRQ_SEL_FMAP_8_RSVD_1",
-		TRQ_SEL_FMAP_8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8_QID_MAX",
-		TRQ_SEL_FMAP_8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8_QID_BASE",
-		TRQ_SEL_FMAP_8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9_field_info[] = {
-	{"TRQ_SEL_FMAP_9_RSVD_1",
-		TRQ_SEL_FMAP_9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9_QID_MAX",
-		TRQ_SEL_FMAP_9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9_QID_BASE",
-		TRQ_SEL_FMAP_9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a_field_info[] = {
-	{"TRQ_SEL_FMAP_A_RSVD_1",
-		TRQ_SEL_FMAP_A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A_QID_MAX",
-		TRQ_SEL_FMAP_A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A_QID_BASE",
-		TRQ_SEL_FMAP_A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b_field_info[] = {
-	{"TRQ_SEL_FMAP_B_RSVD_1",
-		TRQ_SEL_FMAP_B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B_QID_MAX",
-		TRQ_SEL_FMAP_B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B_QID_BASE",
-		TRQ_SEL_FMAP_B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d_field_info[] = {
-	{"TRQ_SEL_FMAP_D_RSVD_1",
-		TRQ_SEL_FMAP_D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D_QID_MAX",
-		TRQ_SEL_FMAP_D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D_QID_BASE",
-		TRQ_SEL_FMAP_D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e_field_info[] = {
-	{"TRQ_SEL_FMAP_E_RSVD_1",
-		TRQ_SEL_FMAP_E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E_QID_MAX",
-		TRQ_SEL_FMAP_E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E_QID_BASE",
-		TRQ_SEL_FMAP_E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f_field_info[] = {
-	{"TRQ_SEL_FMAP_F_RSVD_1",
-		TRQ_SEL_FMAP_F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F_QID_MAX",
-		TRQ_SEL_FMAP_F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F_QID_BASE",
-		TRQ_SEL_FMAP_F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_10_field_info[] = {
-	{"TRQ_SEL_FMAP_10_RSVD_1",
-		TRQ_SEL_FMAP_10_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_10_QID_MAX",
-		TRQ_SEL_FMAP_10_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_10_QID_BASE",
-		TRQ_SEL_FMAP_10_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_11_field_info[] = {
-	{"TRQ_SEL_FMAP_11_RSVD_1",
-		TRQ_SEL_FMAP_11_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_11_QID_MAX",
-		TRQ_SEL_FMAP_11_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_11_QID_BASE",
-		TRQ_SEL_FMAP_11_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_12_field_info[] = {
-	{"TRQ_SEL_FMAP_12_RSVD_1",
-		TRQ_SEL_FMAP_12_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_12_QID_MAX",
-		TRQ_SEL_FMAP_12_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_12_QID_BASE",
-		TRQ_SEL_FMAP_12_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_13_field_info[] = {
-	{"TRQ_SEL_FMAP_13_RSVD_1",
-		TRQ_SEL_FMAP_13_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_13_QID_MAX",
-		TRQ_SEL_FMAP_13_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_13_QID_BASE",
-		TRQ_SEL_FMAP_13_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_14_field_info[] = {
-	{"TRQ_SEL_FMAP_14_RSVD_1",
-		TRQ_SEL_FMAP_14_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_14_QID_MAX",
-		TRQ_SEL_FMAP_14_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_14_QID_BASE",
-		TRQ_SEL_FMAP_14_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_15_field_info[] = {
-	{"TRQ_SEL_FMAP_15_RSVD_1",
-		TRQ_SEL_FMAP_15_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_15_QID_MAX",
-		TRQ_SEL_FMAP_15_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_15_QID_BASE",
-		TRQ_SEL_FMAP_15_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_16_field_info[] = {
-	{"TRQ_SEL_FMAP_16_RSVD_1",
-		TRQ_SEL_FMAP_16_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_16_QID_MAX",
-		TRQ_SEL_FMAP_16_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_16_QID_BASE",
-		TRQ_SEL_FMAP_16_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_17_field_info[] = {
-	{"TRQ_SEL_FMAP_17_RSVD_1",
-		TRQ_SEL_FMAP_17_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_17_QID_MAX",
-		TRQ_SEL_FMAP_17_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_17_QID_BASE",
-		TRQ_SEL_FMAP_17_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_18_field_info[] = {
-	{"TRQ_SEL_FMAP_18_RSVD_1",
-		TRQ_SEL_FMAP_18_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_18_QID_MAX",
-		TRQ_SEL_FMAP_18_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_18_QID_BASE",
-		TRQ_SEL_FMAP_18_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_19_field_info[] = {
-	{"TRQ_SEL_FMAP_19_RSVD_1",
-		TRQ_SEL_FMAP_19_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_19_QID_MAX",
-		TRQ_SEL_FMAP_19_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_19_QID_BASE",
-		TRQ_SEL_FMAP_19_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1a_field_info[] = {
-	{"TRQ_SEL_FMAP_1A_RSVD_1",
-		TRQ_SEL_FMAP_1A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_MAX",
-		TRQ_SEL_FMAP_1A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_BASE",
-		TRQ_SEL_FMAP_1A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1b_field_info[] = {
-	{"TRQ_SEL_FMAP_1B_RSVD_1",
-		TRQ_SEL_FMAP_1B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_MAX",
-		TRQ_SEL_FMAP_1B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_BASE",
-		TRQ_SEL_FMAP_1B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1c_field_info[] = {
-	{"TRQ_SEL_FMAP_1C_RSVD_1",
-		TRQ_SEL_FMAP_1C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_MAX",
-		TRQ_SEL_FMAP_1C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_BASE",
-		TRQ_SEL_FMAP_1C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1d_field_info[] = {
-	{"TRQ_SEL_FMAP_1D_RSVD_1",
-		TRQ_SEL_FMAP_1D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_MAX",
-		TRQ_SEL_FMAP_1D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_BASE",
-		TRQ_SEL_FMAP_1D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1e_field_info[] = {
-	{"TRQ_SEL_FMAP_1E_RSVD_1",
-		TRQ_SEL_FMAP_1E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_MAX",
-		TRQ_SEL_FMAP_1E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_BASE",
-		TRQ_SEL_FMAP_1E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1f_field_info[] = {
-	{"TRQ_SEL_FMAP_1F_RSVD_1",
-		TRQ_SEL_FMAP_1F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_MAX",
-		TRQ_SEL_FMAP_1F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_BASE",
-		TRQ_SEL_FMAP_1F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_20_field_info[] = {
-	{"TRQ_SEL_FMAP_20_RSVD_1",
-		TRQ_SEL_FMAP_20_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_20_QID_MAX",
-		TRQ_SEL_FMAP_20_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_20_QID_BASE",
-		TRQ_SEL_FMAP_20_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_21_field_info[] = {
-	{"TRQ_SEL_FMAP_21_RSVD_1",
-		TRQ_SEL_FMAP_21_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_21_QID_MAX",
-		TRQ_SEL_FMAP_21_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_21_QID_BASE",
-		TRQ_SEL_FMAP_21_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_22_field_info[] = {
-	{"TRQ_SEL_FMAP_22_RSVD_1",
-		TRQ_SEL_FMAP_22_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_22_QID_MAX",
-		TRQ_SEL_FMAP_22_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_22_QID_BASE",
-		TRQ_SEL_FMAP_22_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_23_field_info[] = {
-	{"TRQ_SEL_FMAP_23_RSVD_1",
-		TRQ_SEL_FMAP_23_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_23_QID_MAX",
-		TRQ_SEL_FMAP_23_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_23_QID_BASE",
-		TRQ_SEL_FMAP_23_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_24_field_info[] = {
-	{"TRQ_SEL_FMAP_24_RSVD_1",
-		TRQ_SEL_FMAP_24_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_24_QID_MAX",
-		TRQ_SEL_FMAP_24_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_24_QID_BASE",
-		TRQ_SEL_FMAP_24_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_25_field_info[] = {
-	{"TRQ_SEL_FMAP_25_RSVD_1",
-		TRQ_SEL_FMAP_25_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_25_QID_MAX",
-		TRQ_SEL_FMAP_25_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_25_QID_BASE",
-		TRQ_SEL_FMAP_25_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_26_field_info[] = {
-	{"TRQ_SEL_FMAP_26_RSVD_1",
-		TRQ_SEL_FMAP_26_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_26_QID_MAX",
-		TRQ_SEL_FMAP_26_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_26_QID_BASE",
-		TRQ_SEL_FMAP_26_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_27_field_info[] = {
-	{"TRQ_SEL_FMAP_27_RSVD_1",
-		TRQ_SEL_FMAP_27_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_27_QID_MAX",
-		TRQ_SEL_FMAP_27_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_27_QID_BASE",
-		TRQ_SEL_FMAP_27_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_28_field_info[] = {
-	{"TRQ_SEL_FMAP_28_RSVD_1",
-		TRQ_SEL_FMAP_28_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_28_QID_MAX",
-		TRQ_SEL_FMAP_28_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_28_QID_BASE",
-		TRQ_SEL_FMAP_28_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_29_field_info[] = {
-	{"TRQ_SEL_FMAP_29_RSVD_1",
-		TRQ_SEL_FMAP_29_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_29_QID_MAX",
-		TRQ_SEL_FMAP_29_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_29_QID_BASE",
-		TRQ_SEL_FMAP_29_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2a_field_info[] = {
-	{"TRQ_SEL_FMAP_2A_RSVD_1",
-		TRQ_SEL_FMAP_2A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_MAX",
-		TRQ_SEL_FMAP_2A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_BASE",
-		TRQ_SEL_FMAP_2A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2b_field_info[] = {
-	{"TRQ_SEL_FMAP_2B_RSVD_1",
-		TRQ_SEL_FMAP_2B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_MAX",
-		TRQ_SEL_FMAP_2B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_BASE",
-		TRQ_SEL_FMAP_2B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2c_field_info[] = {
-	{"TRQ_SEL_FMAP_2C_RSVD_1",
-		TRQ_SEL_FMAP_2C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_MAX",
-		TRQ_SEL_FMAP_2C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_BASE",
-		TRQ_SEL_FMAP_2C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2d_field_info[] = {
-	{"TRQ_SEL_FMAP_2D_RSVD_1",
-		TRQ_SEL_FMAP_2D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_MAX",
-		TRQ_SEL_FMAP_2D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_BASE",
-		TRQ_SEL_FMAP_2D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2e_field_info[] = {
-	{"TRQ_SEL_FMAP_2E_RSVD_1",
-		TRQ_SEL_FMAP_2E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_MAX",
-		TRQ_SEL_FMAP_2E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_BASE",
-		TRQ_SEL_FMAP_2E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2f_field_info[] = {
-	{"TRQ_SEL_FMAP_2F_RSVD_1",
-		TRQ_SEL_FMAP_2F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_MAX",
-		TRQ_SEL_FMAP_2F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_BASE",
-		TRQ_SEL_FMAP_2F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_30_field_info[] = {
-	{"TRQ_SEL_FMAP_30_RSVD_1",
-		TRQ_SEL_FMAP_30_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_30_QID_MAX",
-		TRQ_SEL_FMAP_30_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_30_QID_BASE",
-		TRQ_SEL_FMAP_30_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_31_field_info[] = {
-	{"TRQ_SEL_FMAP_31_RSVD_1",
-		TRQ_SEL_FMAP_31_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_31_QID_MAX",
-		TRQ_SEL_FMAP_31_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_31_QID_BASE",
-		TRQ_SEL_FMAP_31_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_32_field_info[] = {
-	{"TRQ_SEL_FMAP_32_RSVD_1",
-		TRQ_SEL_FMAP_32_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_32_QID_MAX",
-		TRQ_SEL_FMAP_32_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_32_QID_BASE",
-		TRQ_SEL_FMAP_32_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_33_field_info[] = {
-	{"TRQ_SEL_FMAP_33_RSVD_1",
-		TRQ_SEL_FMAP_33_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_33_QID_MAX",
-		TRQ_SEL_FMAP_33_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_33_QID_BASE",
-		TRQ_SEL_FMAP_33_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_34_field_info[] = {
-	{"TRQ_SEL_FMAP_34_RSVD_1",
-		TRQ_SEL_FMAP_34_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_34_QID_MAX",
-		TRQ_SEL_FMAP_34_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_34_QID_BASE",
-		TRQ_SEL_FMAP_34_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_35_field_info[] = {
-	{"TRQ_SEL_FMAP_35_RSVD_1",
-		TRQ_SEL_FMAP_35_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_35_QID_MAX",
-		TRQ_SEL_FMAP_35_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_35_QID_BASE",
-		TRQ_SEL_FMAP_35_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_36_field_info[] = {
-	{"TRQ_SEL_FMAP_36_RSVD_1",
-		TRQ_SEL_FMAP_36_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_36_QID_MAX",
-		TRQ_SEL_FMAP_36_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_36_QID_BASE",
-		TRQ_SEL_FMAP_36_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_37_field_info[] = {
-	{"TRQ_SEL_FMAP_37_RSVD_1",
-		TRQ_SEL_FMAP_37_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_37_QID_MAX",
-		TRQ_SEL_FMAP_37_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_37_QID_BASE",
-		TRQ_SEL_FMAP_37_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_38_field_info[] = {
-	{"TRQ_SEL_FMAP_38_RSVD_1",
-		TRQ_SEL_FMAP_38_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_38_QID_MAX",
-		TRQ_SEL_FMAP_38_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_38_QID_BASE",
-		TRQ_SEL_FMAP_38_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_39_field_info[] = {
-	{"TRQ_SEL_FMAP_39_RSVD_1",
-		TRQ_SEL_FMAP_39_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_39_QID_MAX",
-		TRQ_SEL_FMAP_39_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_39_QID_BASE",
-		TRQ_SEL_FMAP_39_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3a_field_info[] = {
-	{"TRQ_SEL_FMAP_3A_RSVD_1",
-		TRQ_SEL_FMAP_3A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_MAX",
-		TRQ_SEL_FMAP_3A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_BASE",
-		TRQ_SEL_FMAP_3A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3b_field_info[] = {
-	{"TRQ_SEL_FMAP_3B_RSVD_1",
-		TRQ_SEL_FMAP_3B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_MAX",
-		TRQ_SEL_FMAP_3B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_BASE",
-		TRQ_SEL_FMAP_3B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3c_field_info[] = {
-	{"TRQ_SEL_FMAP_3C_RSVD_1",
-		TRQ_SEL_FMAP_3C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_MAX",
-		TRQ_SEL_FMAP_3C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_BASE",
-		TRQ_SEL_FMAP_3C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3d_field_info[] = {
-	{"TRQ_SEL_FMAP_3D_RSVD_1",
-		TRQ_SEL_FMAP_3D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_MAX",
-		TRQ_SEL_FMAP_3D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_BASE",
-		TRQ_SEL_FMAP_3D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3e_field_info[] = {
-	{"TRQ_SEL_FMAP_3E_RSVD_1",
-		TRQ_SEL_FMAP_3E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_MAX",
-		TRQ_SEL_FMAP_3E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_BASE",
-		TRQ_SEL_FMAP_3E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3f_field_info[] = {
-	{"TRQ_SEL_FMAP_3F_RSVD_1",
-		TRQ_SEL_FMAP_3F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_MAX",
-		TRQ_SEL_FMAP_3F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_BASE",
-		TRQ_SEL_FMAP_3F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_40_field_info[] = {
-	{"TRQ_SEL_FMAP_40_RSVD_1",
-		TRQ_SEL_FMAP_40_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_40_QID_MAX",
-		TRQ_SEL_FMAP_40_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_40_QID_BASE",
-		TRQ_SEL_FMAP_40_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_41_field_info[] = {
-	{"TRQ_SEL_FMAP_41_RSVD_1",
-		TRQ_SEL_FMAP_41_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_41_QID_MAX",
-		TRQ_SEL_FMAP_41_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_41_QID_BASE",
-		TRQ_SEL_FMAP_41_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_42_field_info[] = {
-	{"TRQ_SEL_FMAP_42_RSVD_1",
-		TRQ_SEL_FMAP_42_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_42_QID_MAX",
-		TRQ_SEL_FMAP_42_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_42_QID_BASE",
-		TRQ_SEL_FMAP_42_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_43_field_info[] = {
-	{"TRQ_SEL_FMAP_43_RSVD_1",
-		TRQ_SEL_FMAP_43_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_43_QID_MAX",
-		TRQ_SEL_FMAP_43_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_43_QID_BASE",
-		TRQ_SEL_FMAP_43_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_44_field_info[] = {
-	{"TRQ_SEL_FMAP_44_RSVD_1",
-		TRQ_SEL_FMAP_44_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_44_QID_MAX",
-		TRQ_SEL_FMAP_44_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_44_QID_BASE",
-		TRQ_SEL_FMAP_44_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_45_field_info[] = {
-	{"TRQ_SEL_FMAP_45_RSVD_1",
-		TRQ_SEL_FMAP_45_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_45_QID_MAX",
-		TRQ_SEL_FMAP_45_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_45_QID_BASE",
-		TRQ_SEL_FMAP_45_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_46_field_info[] = {
-	{"TRQ_SEL_FMAP_46_RSVD_1",
-		TRQ_SEL_FMAP_46_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_46_QID_MAX",
-		TRQ_SEL_FMAP_46_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_46_QID_BASE",
-		TRQ_SEL_FMAP_46_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_47_field_info[] = {
-	{"TRQ_SEL_FMAP_47_RSVD_1",
-		TRQ_SEL_FMAP_47_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_47_QID_MAX",
-		TRQ_SEL_FMAP_47_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_47_QID_BASE",
-		TRQ_SEL_FMAP_47_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_48_field_info[] = {
-	{"TRQ_SEL_FMAP_48_RSVD_1",
-		TRQ_SEL_FMAP_48_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_48_QID_MAX",
-		TRQ_SEL_FMAP_48_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_48_QID_BASE",
-		TRQ_SEL_FMAP_48_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_49_field_info[] = {
-	{"TRQ_SEL_FMAP_49_RSVD_1",
-		TRQ_SEL_FMAP_49_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_49_QID_MAX",
-		TRQ_SEL_FMAP_49_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_49_QID_BASE",
-		TRQ_SEL_FMAP_49_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4a_field_info[] = {
-	{"TRQ_SEL_FMAP_4A_RSVD_1",
-		TRQ_SEL_FMAP_4A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_MAX",
-		TRQ_SEL_FMAP_4A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_BASE",
-		TRQ_SEL_FMAP_4A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4b_field_info[] = {
-	{"TRQ_SEL_FMAP_4B_RSVD_1",
-		TRQ_SEL_FMAP_4B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_MAX",
-		TRQ_SEL_FMAP_4B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_BASE",
-		TRQ_SEL_FMAP_4B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4c_field_info[] = {
-	{"TRQ_SEL_FMAP_4C_RSVD_1",
-		TRQ_SEL_FMAP_4C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_MAX",
-		TRQ_SEL_FMAP_4C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_BASE",
-		TRQ_SEL_FMAP_4C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4d_field_info[] = {
-	{"TRQ_SEL_FMAP_4D_RSVD_1",
-		TRQ_SEL_FMAP_4D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_MAX",
-		TRQ_SEL_FMAP_4D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_BASE",
-		TRQ_SEL_FMAP_4D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4e_field_info[] = {
-	{"TRQ_SEL_FMAP_4E_RSVD_1",
-		TRQ_SEL_FMAP_4E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_MAX",
-		TRQ_SEL_FMAP_4E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_BASE",
-		TRQ_SEL_FMAP_4E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4f_field_info[] = {
-	{"TRQ_SEL_FMAP_4F_RSVD_1",
-		TRQ_SEL_FMAP_4F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_MAX",
-		TRQ_SEL_FMAP_4F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_BASE",
-		TRQ_SEL_FMAP_4F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_50_field_info[] = {
-	{"TRQ_SEL_FMAP_50_RSVD_1",
-		TRQ_SEL_FMAP_50_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_50_QID_MAX",
-		TRQ_SEL_FMAP_50_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_50_QID_BASE",
-		TRQ_SEL_FMAP_50_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_51_field_info[] = {
-	{"TRQ_SEL_FMAP_51_RSVD_1",
-		TRQ_SEL_FMAP_51_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_51_QID_MAX",
-		TRQ_SEL_FMAP_51_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_51_QID_BASE",
-		TRQ_SEL_FMAP_51_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_52_field_info[] = {
-	{"TRQ_SEL_FMAP_52_RSVD_1",
-		TRQ_SEL_FMAP_52_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_52_QID_MAX",
-		TRQ_SEL_FMAP_52_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_52_QID_BASE",
-		TRQ_SEL_FMAP_52_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_53_field_info[] = {
-	{"TRQ_SEL_FMAP_53_RSVD_1",
-		TRQ_SEL_FMAP_53_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_53_QID_MAX",
-		TRQ_SEL_FMAP_53_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_53_QID_BASE",
-		TRQ_SEL_FMAP_53_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_54_field_info[] = {
-	{"TRQ_SEL_FMAP_54_RSVD_1",
-		TRQ_SEL_FMAP_54_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_54_QID_MAX",
-		TRQ_SEL_FMAP_54_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_54_QID_BASE",
-		TRQ_SEL_FMAP_54_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_55_field_info[] = {
-	{"TRQ_SEL_FMAP_55_RSVD_1",
-		TRQ_SEL_FMAP_55_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_55_QID_MAX",
-		TRQ_SEL_FMAP_55_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_55_QID_BASE",
-		TRQ_SEL_FMAP_55_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_56_field_info[] = {
-	{"TRQ_SEL_FMAP_56_RSVD_1",
-		TRQ_SEL_FMAP_56_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_56_QID_MAX",
-		TRQ_SEL_FMAP_56_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_56_QID_BASE",
-		TRQ_SEL_FMAP_56_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_57_field_info[] = {
-	{"TRQ_SEL_FMAP_57_RSVD_1",
-		TRQ_SEL_FMAP_57_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_57_QID_MAX",
-		TRQ_SEL_FMAP_57_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_57_QID_BASE",
-		TRQ_SEL_FMAP_57_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_58_field_info[] = {
-	{"TRQ_SEL_FMAP_58_RSVD_1",
-		TRQ_SEL_FMAP_58_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_58_QID_MAX",
-		TRQ_SEL_FMAP_58_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_58_QID_BASE",
-		TRQ_SEL_FMAP_58_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_59_field_info[] = {
-	{"TRQ_SEL_FMAP_59_RSVD_1",
-		TRQ_SEL_FMAP_59_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_59_QID_MAX",
-		TRQ_SEL_FMAP_59_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_59_QID_BASE",
-		TRQ_SEL_FMAP_59_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5a_field_info[] = {
-	{"TRQ_SEL_FMAP_5A_RSVD_1",
-		TRQ_SEL_FMAP_5A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_MAX",
-		TRQ_SEL_FMAP_5A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_BASE",
-		TRQ_SEL_FMAP_5A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5b_field_info[] = {
-	{"TRQ_SEL_FMAP_5B_RSVD_1",
-		TRQ_SEL_FMAP_5B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_MAX",
-		TRQ_SEL_FMAP_5B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_BASE",
-		TRQ_SEL_FMAP_5B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5c_field_info[] = {
-	{"TRQ_SEL_FMAP_5C_RSVD_1",
-		TRQ_SEL_FMAP_5C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_MAX",
-		TRQ_SEL_FMAP_5C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_BASE",
-		TRQ_SEL_FMAP_5C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5d_field_info[] = {
-	{"TRQ_SEL_FMAP_5D_RSVD_1",
-		TRQ_SEL_FMAP_5D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_MAX",
-		TRQ_SEL_FMAP_5D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_BASE",
-		TRQ_SEL_FMAP_5D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5e_field_info[] = {
-	{"TRQ_SEL_FMAP_5E_RSVD_1",
-		TRQ_SEL_FMAP_5E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_MAX",
-		TRQ_SEL_FMAP_5E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_BASE",
-		TRQ_SEL_FMAP_5E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5f_field_info[] = {
-	{"TRQ_SEL_FMAP_5F_RSVD_1",
-		TRQ_SEL_FMAP_5F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_MAX",
-		TRQ_SEL_FMAP_5F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_BASE",
-		TRQ_SEL_FMAP_5F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_60_field_info[] = {
-	{"TRQ_SEL_FMAP_60_RSVD_1",
-		TRQ_SEL_FMAP_60_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_60_QID_MAX",
-		TRQ_SEL_FMAP_60_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_60_QID_BASE",
-		TRQ_SEL_FMAP_60_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_61_field_info[] = {
-	{"TRQ_SEL_FMAP_61_RSVD_1",
-		TRQ_SEL_FMAP_61_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_61_QID_MAX",
-		TRQ_SEL_FMAP_61_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_61_QID_BASE",
-		TRQ_SEL_FMAP_61_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_62_field_info[] = {
-	{"TRQ_SEL_FMAP_62_RSVD_1",
-		TRQ_SEL_FMAP_62_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_62_QID_MAX",
-		TRQ_SEL_FMAP_62_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_62_QID_BASE",
-		TRQ_SEL_FMAP_62_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_63_field_info[] = {
-	{"TRQ_SEL_FMAP_63_RSVD_1",
-		TRQ_SEL_FMAP_63_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_63_QID_MAX",
-		TRQ_SEL_FMAP_63_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_63_QID_BASE",
-		TRQ_SEL_FMAP_63_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_64_field_info[] = {
-	{"TRQ_SEL_FMAP_64_RSVD_1",
-		TRQ_SEL_FMAP_64_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_64_QID_MAX",
-		TRQ_SEL_FMAP_64_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_64_QID_BASE",
-		TRQ_SEL_FMAP_64_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_65_field_info[] = {
-	{"TRQ_SEL_FMAP_65_RSVD_1",
-		TRQ_SEL_FMAP_65_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_65_QID_MAX",
-		TRQ_SEL_FMAP_65_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_65_QID_BASE",
-		TRQ_SEL_FMAP_65_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_66_field_info[] = {
-	{"TRQ_SEL_FMAP_66_RSVD_1",
-		TRQ_SEL_FMAP_66_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_66_QID_MAX",
-		TRQ_SEL_FMAP_66_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_66_QID_BASE",
-		TRQ_SEL_FMAP_66_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_67_field_info[] = {
-	{"TRQ_SEL_FMAP_67_RSVD_1",
-		TRQ_SEL_FMAP_67_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_67_QID_MAX",
-		TRQ_SEL_FMAP_67_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_67_QID_BASE",
-		TRQ_SEL_FMAP_67_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_68_field_info[] = {
-	{"TRQ_SEL_FMAP_68_RSVD_1",
-		TRQ_SEL_FMAP_68_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_68_QID_MAX",
-		TRQ_SEL_FMAP_68_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_68_QID_BASE",
-		TRQ_SEL_FMAP_68_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_69_field_info[] = {
-	{"TRQ_SEL_FMAP_69_RSVD_1",
-		TRQ_SEL_FMAP_69_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_69_QID_MAX",
-		TRQ_SEL_FMAP_69_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_69_QID_BASE",
-		TRQ_SEL_FMAP_69_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6a_field_info[] = {
-	{"TRQ_SEL_FMAP_6A_RSVD_1",
-		TRQ_SEL_FMAP_6A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_MAX",
-		TRQ_SEL_FMAP_6A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_BASE",
-		TRQ_SEL_FMAP_6A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6b_field_info[] = {
-	{"TRQ_SEL_FMAP_6B_RSVD_1",
-		TRQ_SEL_FMAP_6B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_MAX",
-		TRQ_SEL_FMAP_6B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_BASE",
-		TRQ_SEL_FMAP_6B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6c_field_info[] = {
-	{"TRQ_SEL_FMAP_6C_RSVD_1",
-		TRQ_SEL_FMAP_6C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_MAX",
-		TRQ_SEL_FMAP_6C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_BASE",
-		TRQ_SEL_FMAP_6C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6d_field_info[] = {
-	{"TRQ_SEL_FMAP_6D_RSVD_1",
-		TRQ_SEL_FMAP_6D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_MAX",
-		TRQ_SEL_FMAP_6D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_BASE",
-		TRQ_SEL_FMAP_6D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6e_field_info[] = {
-	{"TRQ_SEL_FMAP_6E_RSVD_1",
-		TRQ_SEL_FMAP_6E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_MAX",
-		TRQ_SEL_FMAP_6E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_BASE",
-		TRQ_SEL_FMAP_6E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6f_field_info[] = {
-	{"TRQ_SEL_FMAP_6F_RSVD_1",
-		TRQ_SEL_FMAP_6F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_MAX",
-		TRQ_SEL_FMAP_6F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_BASE",
-		TRQ_SEL_FMAP_6F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_70_field_info[] = {
-	{"TRQ_SEL_FMAP_70_RSVD_1",
-		TRQ_SEL_FMAP_70_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_70_QID_MAX",
-		TRQ_SEL_FMAP_70_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_70_QID_BASE",
-		TRQ_SEL_FMAP_70_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_71_field_info[] = {
-	{"TRQ_SEL_FMAP_71_RSVD_1",
-		TRQ_SEL_FMAP_71_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_71_QID_MAX",
-		TRQ_SEL_FMAP_71_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_71_QID_BASE",
-		TRQ_SEL_FMAP_71_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_72_field_info[] = {
-	{"TRQ_SEL_FMAP_72_RSVD_1",
-		TRQ_SEL_FMAP_72_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_72_QID_MAX",
-		TRQ_SEL_FMAP_72_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_72_QID_BASE",
-		TRQ_SEL_FMAP_72_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_73_field_info[] = {
-	{"TRQ_SEL_FMAP_73_RSVD_1",
-		TRQ_SEL_FMAP_73_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_73_QID_MAX",
-		TRQ_SEL_FMAP_73_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_73_QID_BASE",
-		TRQ_SEL_FMAP_73_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_74_field_info[] = {
-	{"TRQ_SEL_FMAP_74_RSVD_1",
-		TRQ_SEL_FMAP_74_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_74_QID_MAX",
-		TRQ_SEL_FMAP_74_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_74_QID_BASE",
-		TRQ_SEL_FMAP_74_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_75_field_info[] = {
-	{"TRQ_SEL_FMAP_75_RSVD_1",
-		TRQ_SEL_FMAP_75_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_75_QID_MAX",
-		TRQ_SEL_FMAP_75_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_75_QID_BASE",
-		TRQ_SEL_FMAP_75_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_76_field_info[] = {
-	{"TRQ_SEL_FMAP_76_RSVD_1",
-		TRQ_SEL_FMAP_76_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_76_QID_MAX",
-		TRQ_SEL_FMAP_76_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_76_QID_BASE",
-		TRQ_SEL_FMAP_76_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_77_field_info[] = {
-	{"TRQ_SEL_FMAP_77_RSVD_1",
-		TRQ_SEL_FMAP_77_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_77_QID_MAX",
-		TRQ_SEL_FMAP_77_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_77_QID_BASE",
-		TRQ_SEL_FMAP_77_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_78_field_info[] = {
-	{"TRQ_SEL_FMAP_78_RSVD_1",
-		TRQ_SEL_FMAP_78_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_78_QID_MAX",
-		TRQ_SEL_FMAP_78_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_78_QID_BASE",
-		TRQ_SEL_FMAP_78_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_79_field_info[] = {
-	{"TRQ_SEL_FMAP_79_RSVD_1",
-		TRQ_SEL_FMAP_79_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_79_QID_MAX",
-		TRQ_SEL_FMAP_79_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_79_QID_BASE",
-		TRQ_SEL_FMAP_79_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7a_field_info[] = {
-	{"TRQ_SEL_FMAP_7A_RSVD_1",
-		TRQ_SEL_FMAP_7A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_MAX",
-		TRQ_SEL_FMAP_7A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_BASE",
-		TRQ_SEL_FMAP_7A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7b_field_info[] = {
-	{"TRQ_SEL_FMAP_7B_RSVD_1",
-		TRQ_SEL_FMAP_7B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_MAX",
-		TRQ_SEL_FMAP_7B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_BASE",
-		TRQ_SEL_FMAP_7B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7c_field_info[] = {
-	{"TRQ_SEL_FMAP_7C_RSVD_1",
-		TRQ_SEL_FMAP_7C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_MAX",
-		TRQ_SEL_FMAP_7C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_BASE",
-		TRQ_SEL_FMAP_7C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7d_field_info[] = {
-	{"TRQ_SEL_FMAP_7D_RSVD_1",
-		TRQ_SEL_FMAP_7D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_MAX",
-		TRQ_SEL_FMAP_7D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_BASE",
-		TRQ_SEL_FMAP_7D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7e_field_info[] = {
-	{"TRQ_SEL_FMAP_7E_RSVD_1",
-		TRQ_SEL_FMAP_7E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_MAX",
-		TRQ_SEL_FMAP_7E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_BASE",
-		TRQ_SEL_FMAP_7E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7f_field_info[] = {
-	{"TRQ_SEL_FMAP_7F_RSVD_1",
-		TRQ_SEL_FMAP_7F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_MAX",
-		TRQ_SEL_FMAP_7F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_BASE",
-		TRQ_SEL_FMAP_7F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_80_field_info[] = {
-	{"TRQ_SEL_FMAP_80_RSVD_1",
-		TRQ_SEL_FMAP_80_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_80_QID_MAX",
-		TRQ_SEL_FMAP_80_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_80_QID_BASE",
-		TRQ_SEL_FMAP_80_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_81_field_info[] = {
-	{"TRQ_SEL_FMAP_81_RSVD_1",
-		TRQ_SEL_FMAP_81_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_81_QID_MAX",
-		TRQ_SEL_FMAP_81_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_81_QID_BASE",
-		TRQ_SEL_FMAP_81_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_82_field_info[] = {
-	{"TRQ_SEL_FMAP_82_RSVD_1",
-		TRQ_SEL_FMAP_82_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_82_QID_MAX",
-		TRQ_SEL_FMAP_82_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_82_QID_BASE",
-		TRQ_SEL_FMAP_82_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_83_field_info[] = {
-	{"TRQ_SEL_FMAP_83_RSVD_1",
-		TRQ_SEL_FMAP_83_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_83_QID_MAX",
-		TRQ_SEL_FMAP_83_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_83_QID_BASE",
-		TRQ_SEL_FMAP_83_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_84_field_info[] = {
-	{"TRQ_SEL_FMAP_84_RSVD_1",
-		TRQ_SEL_FMAP_84_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_84_QID_MAX",
-		TRQ_SEL_FMAP_84_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_84_QID_BASE",
-		TRQ_SEL_FMAP_84_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_85_field_info[] = {
-	{"TRQ_SEL_FMAP_85_RSVD_1",
-		TRQ_SEL_FMAP_85_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_85_QID_MAX",
-		TRQ_SEL_FMAP_85_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_85_QID_BASE",
-		TRQ_SEL_FMAP_85_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_86_field_info[] = {
-	{"TRQ_SEL_FMAP_86_RSVD_1",
-		TRQ_SEL_FMAP_86_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_86_QID_MAX",
-		TRQ_SEL_FMAP_86_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_86_QID_BASE",
-		TRQ_SEL_FMAP_86_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_87_field_info[] = {
-	{"TRQ_SEL_FMAP_87_RSVD_1",
-		TRQ_SEL_FMAP_87_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_87_QID_MAX",
-		TRQ_SEL_FMAP_87_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_87_QID_BASE",
-		TRQ_SEL_FMAP_87_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_88_field_info[] = {
-	{"TRQ_SEL_FMAP_88_RSVD_1",
-		TRQ_SEL_FMAP_88_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_88_QID_MAX",
-		TRQ_SEL_FMAP_88_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_88_QID_BASE",
-		TRQ_SEL_FMAP_88_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_89_field_info[] = {
-	{"TRQ_SEL_FMAP_89_RSVD_1",
-		TRQ_SEL_FMAP_89_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_89_QID_MAX",
-		TRQ_SEL_FMAP_89_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_89_QID_BASE",
-		TRQ_SEL_FMAP_89_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8a_field_info[] = {
-	{"TRQ_SEL_FMAP_8A_RSVD_1",
-		TRQ_SEL_FMAP_8A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_MAX",
-		TRQ_SEL_FMAP_8A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_BASE",
-		TRQ_SEL_FMAP_8A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8b_field_info[] = {
-	{"TRQ_SEL_FMAP_8B_RSVD_1",
-		TRQ_SEL_FMAP_8B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_MAX",
-		TRQ_SEL_FMAP_8B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_BASE",
-		TRQ_SEL_FMAP_8B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8c_field_info[] = {
-	{"TRQ_SEL_FMAP_8C_RSVD_1",
-		TRQ_SEL_FMAP_8C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_MAX",
-		TRQ_SEL_FMAP_8C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_BASE",
-		TRQ_SEL_FMAP_8C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8d_field_info[] = {
-	{"TRQ_SEL_FMAP_8D_RSVD_1",
-		TRQ_SEL_FMAP_8D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_MAX",
-		TRQ_SEL_FMAP_8D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_BASE",
-		TRQ_SEL_FMAP_8D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8e_field_info[] = {
-	{"TRQ_SEL_FMAP_8E_RSVD_1",
-		TRQ_SEL_FMAP_8E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_MAX",
-		TRQ_SEL_FMAP_8E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_BASE",
-		TRQ_SEL_FMAP_8E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8f_field_info[] = {
-	{"TRQ_SEL_FMAP_8F_RSVD_1",
-		TRQ_SEL_FMAP_8F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_MAX",
-		TRQ_SEL_FMAP_8F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_BASE",
-		TRQ_SEL_FMAP_8F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_90_field_info[] = {
-	{"TRQ_SEL_FMAP_90_RSVD_1",
-		TRQ_SEL_FMAP_90_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_90_QID_MAX",
-		TRQ_SEL_FMAP_90_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_90_QID_BASE",
-		TRQ_SEL_FMAP_90_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_91_field_info[] = {
-	{"TRQ_SEL_FMAP_91_RSVD_1",
-		TRQ_SEL_FMAP_91_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_91_QID_MAX",
-		TRQ_SEL_FMAP_91_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_91_QID_BASE",
-		TRQ_SEL_FMAP_91_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_92_field_info[] = {
-	{"TRQ_SEL_FMAP_92_RSVD_1",
-		TRQ_SEL_FMAP_92_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_92_QID_MAX",
-		TRQ_SEL_FMAP_92_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_92_QID_BASE",
-		TRQ_SEL_FMAP_92_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_93_field_info[] = {
-	{"TRQ_SEL_FMAP_93_RSVD_1",
-		TRQ_SEL_FMAP_93_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_93_QID_MAX",
-		TRQ_SEL_FMAP_93_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_93_QID_BASE",
-		TRQ_SEL_FMAP_93_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_94_field_info[] = {
-	{"TRQ_SEL_FMAP_94_RSVD_1",
-		TRQ_SEL_FMAP_94_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_94_QID_MAX",
-		TRQ_SEL_FMAP_94_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_94_QID_BASE",
-		TRQ_SEL_FMAP_94_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_95_field_info[] = {
-	{"TRQ_SEL_FMAP_95_RSVD_1",
-		TRQ_SEL_FMAP_95_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_95_QID_MAX",
-		TRQ_SEL_FMAP_95_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_95_QID_BASE",
-		TRQ_SEL_FMAP_95_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_96_field_info[] = {
-	{"TRQ_SEL_FMAP_96_RSVD_1",
-		TRQ_SEL_FMAP_96_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_96_QID_MAX",
-		TRQ_SEL_FMAP_96_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_96_QID_BASE",
-		TRQ_SEL_FMAP_96_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_97_field_info[] = {
-	{"TRQ_SEL_FMAP_97_RSVD_1",
-		TRQ_SEL_FMAP_97_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_97_QID_MAX",
-		TRQ_SEL_FMAP_97_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_97_QID_BASE",
-		TRQ_SEL_FMAP_97_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_98_field_info[] = {
-	{"TRQ_SEL_FMAP_98_RSVD_1",
-		TRQ_SEL_FMAP_98_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_98_QID_MAX",
-		TRQ_SEL_FMAP_98_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_98_QID_BASE",
-		TRQ_SEL_FMAP_98_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_99_field_info[] = {
-	{"TRQ_SEL_FMAP_99_RSVD_1",
-		TRQ_SEL_FMAP_99_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_99_QID_MAX",
-		TRQ_SEL_FMAP_99_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_99_QID_BASE",
-		TRQ_SEL_FMAP_99_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9a_field_info[] = {
-	{"TRQ_SEL_FMAP_9A_RSVD_1",
-		TRQ_SEL_FMAP_9A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_MAX",
-		TRQ_SEL_FMAP_9A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_BASE",
-		TRQ_SEL_FMAP_9A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9b_field_info[] = {
-	{"TRQ_SEL_FMAP_9B_RSVD_1",
-		TRQ_SEL_FMAP_9B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_MAX",
-		TRQ_SEL_FMAP_9B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_BASE",
-		TRQ_SEL_FMAP_9B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9c_field_info[] = {
-	{"TRQ_SEL_FMAP_9C_RSVD_1",
-		TRQ_SEL_FMAP_9C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_MAX",
-		TRQ_SEL_FMAP_9C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_BASE",
-		TRQ_SEL_FMAP_9C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9d_field_info[] = {
-	{"TRQ_SEL_FMAP_9D_RSVD_1",
-		TRQ_SEL_FMAP_9D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_MAX",
-		TRQ_SEL_FMAP_9D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_BASE",
-		TRQ_SEL_FMAP_9D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9e_field_info[] = {
-	{"TRQ_SEL_FMAP_9E_RSVD_1",
-		TRQ_SEL_FMAP_9E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_MAX",
-		TRQ_SEL_FMAP_9E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_BASE",
-		TRQ_SEL_FMAP_9E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9f_field_info[] = {
-	{"TRQ_SEL_FMAP_9F_RSVD_1",
-		TRQ_SEL_FMAP_9F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_MAX",
-		TRQ_SEL_FMAP_9F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_BASE",
-		TRQ_SEL_FMAP_9F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a0_field_info[] = {
-	{"TRQ_SEL_FMAP_A0_RSVD_1",
-		TRQ_SEL_FMAP_A0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_MAX",
-		TRQ_SEL_FMAP_A0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_BASE",
-		TRQ_SEL_FMAP_A0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a1_field_info[] = {
-	{"TRQ_SEL_FMAP_A1_RSVD_1",
-		TRQ_SEL_FMAP_A1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_MAX",
-		TRQ_SEL_FMAP_A1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_BASE",
-		TRQ_SEL_FMAP_A1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a2_field_info[] = {
-	{"TRQ_SEL_FMAP_A2_RSVD_1",
-		TRQ_SEL_FMAP_A2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_MAX",
-		TRQ_SEL_FMAP_A2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_BASE",
-		TRQ_SEL_FMAP_A2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a3_field_info[] = {
-	{"TRQ_SEL_FMAP_A3_RSVD_1",
-		TRQ_SEL_FMAP_A3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_MAX",
-		TRQ_SEL_FMAP_A3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_BASE",
-		TRQ_SEL_FMAP_A3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a4_field_info[] = {
-	{"TRQ_SEL_FMAP_A4_RSVD_1",
-		TRQ_SEL_FMAP_A4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_MAX",
-		TRQ_SEL_FMAP_A4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_BASE",
-		TRQ_SEL_FMAP_A4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a5_field_info[] = {
-	{"TRQ_SEL_FMAP_A5_RSVD_1",
-		TRQ_SEL_FMAP_A5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_MAX",
-		TRQ_SEL_FMAP_A5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_BASE",
-		TRQ_SEL_FMAP_A5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a6_field_info[] = {
-	{"TRQ_SEL_FMAP_A6_RSVD_1",
-		TRQ_SEL_FMAP_A6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_MAX",
-		TRQ_SEL_FMAP_A6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_BASE",
-		TRQ_SEL_FMAP_A6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a7_field_info[] = {
-	{"TRQ_SEL_FMAP_A7_RSVD_1",
-		TRQ_SEL_FMAP_A7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_MAX",
-		TRQ_SEL_FMAP_A7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_BASE",
-		TRQ_SEL_FMAP_A7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a8_field_info[] = {
-	{"TRQ_SEL_FMAP_A8_RSVD_1",
-		TRQ_SEL_FMAP_A8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_MAX",
-		TRQ_SEL_FMAP_A8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_BASE",
-		TRQ_SEL_FMAP_A8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a9_field_info[] = {
-	{"TRQ_SEL_FMAP_A9_RSVD_1",
-		TRQ_SEL_FMAP_A9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_MAX",
-		TRQ_SEL_FMAP_A9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_BASE",
-		TRQ_SEL_FMAP_A9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_aa_field_info[] = {
-	{"TRQ_SEL_FMAP_AA_RSVD_1",
-		TRQ_SEL_FMAP_AA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_MAX",
-		TRQ_SEL_FMAP_AA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_BASE",
-		TRQ_SEL_FMAP_AA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ab_field_info[] = {
-	{"TRQ_SEL_FMAP_AB_RSVD_1",
-		TRQ_SEL_FMAP_AB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_MAX",
-		TRQ_SEL_FMAP_AB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_BASE",
-		TRQ_SEL_FMAP_AB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ac_field_info[] = {
-	{"TRQ_SEL_FMAP_AC_RSVD_1",
-		TRQ_SEL_FMAP_AC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_MAX",
-		TRQ_SEL_FMAP_AC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_BASE",
-		TRQ_SEL_FMAP_AC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ad_field_info[] = {
-	{"TRQ_SEL_FMAP_AD_RSVD_1",
-		TRQ_SEL_FMAP_AD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_MAX",
-		TRQ_SEL_FMAP_AD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_BASE",
-		TRQ_SEL_FMAP_AD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ae_field_info[] = {
-	{"TRQ_SEL_FMAP_AE_RSVD_1",
-		TRQ_SEL_FMAP_AE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_MAX",
-		TRQ_SEL_FMAP_AE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_BASE",
-		TRQ_SEL_FMAP_AE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_af_field_info[] = {
-	{"TRQ_SEL_FMAP_AF_RSVD_1",
-		TRQ_SEL_FMAP_AF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_MAX",
-		TRQ_SEL_FMAP_AF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_BASE",
-		TRQ_SEL_FMAP_AF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b0_field_info[] = {
-	{"TRQ_SEL_FMAP_B0_RSVD_1",
-		TRQ_SEL_FMAP_B0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_MAX",
-		TRQ_SEL_FMAP_B0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_BASE",
-		TRQ_SEL_FMAP_B0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b1_field_info[] = {
-	{"TRQ_SEL_FMAP_B1_RSVD_1",
-		TRQ_SEL_FMAP_B1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_MAX",
-		TRQ_SEL_FMAP_B1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_BASE",
-		TRQ_SEL_FMAP_B1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b2_field_info[] = {
-	{"TRQ_SEL_FMAP_B2_RSVD_1",
-		TRQ_SEL_FMAP_B2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_MAX",
-		TRQ_SEL_FMAP_B2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_BASE",
-		TRQ_SEL_FMAP_B2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b3_field_info[] = {
-	{"TRQ_SEL_FMAP_B3_RSVD_1",
-		TRQ_SEL_FMAP_B3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_MAX",
-		TRQ_SEL_FMAP_B3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_BASE",
-		TRQ_SEL_FMAP_B3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b4_field_info[] = {
-	{"TRQ_SEL_FMAP_B4_RSVD_1",
-		TRQ_SEL_FMAP_B4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_MAX",
-		TRQ_SEL_FMAP_B4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_BASE",
-		TRQ_SEL_FMAP_B4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b5_field_info[] = {
-	{"TRQ_SEL_FMAP_B5_RSVD_1",
-		TRQ_SEL_FMAP_B5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_MAX",
-		TRQ_SEL_FMAP_B5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_BASE",
-		TRQ_SEL_FMAP_B5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b6_field_info[] = {
-	{"TRQ_SEL_FMAP_B6_RSVD_1",
-		TRQ_SEL_FMAP_B6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_MAX",
-		TRQ_SEL_FMAP_B6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_BASE",
-		TRQ_SEL_FMAP_B6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b7_field_info[] = {
-	{"TRQ_SEL_FMAP_B7_RSVD_1",
-		TRQ_SEL_FMAP_B7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_MAX",
-		TRQ_SEL_FMAP_B7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_BASE",
-		TRQ_SEL_FMAP_B7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b8_field_info[] = {
-	{"TRQ_SEL_FMAP_B8_RSVD_1",
-		TRQ_SEL_FMAP_B8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_MAX",
-		TRQ_SEL_FMAP_B8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_BASE",
-		TRQ_SEL_FMAP_B8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b9_field_info[] = {
-	{"TRQ_SEL_FMAP_B9_RSVD_1",
-		TRQ_SEL_FMAP_B9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_MAX",
-		TRQ_SEL_FMAP_B9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_BASE",
-		TRQ_SEL_FMAP_B9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ba_field_info[] = {
-	{"TRQ_SEL_FMAP_BA_RSVD_1",
-		TRQ_SEL_FMAP_BA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_MAX",
-		TRQ_SEL_FMAP_BA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_BASE",
-		TRQ_SEL_FMAP_BA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bb_field_info[] = {
-	{"TRQ_SEL_FMAP_BB_RSVD_1",
-		TRQ_SEL_FMAP_BB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_MAX",
-		TRQ_SEL_FMAP_BB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_BASE",
-		TRQ_SEL_FMAP_BB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bc_field_info[] = {
-	{"TRQ_SEL_FMAP_BC_RSVD_1",
-		TRQ_SEL_FMAP_BC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_MAX",
-		TRQ_SEL_FMAP_BC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_BASE",
-		TRQ_SEL_FMAP_BC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bd_field_info[] = {
-	{"TRQ_SEL_FMAP_BD_RSVD_1",
-		TRQ_SEL_FMAP_BD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_MAX",
-		TRQ_SEL_FMAP_BD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_BASE",
-		TRQ_SEL_FMAP_BD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_be_field_info[] = {
-	{"TRQ_SEL_FMAP_BE_RSVD_1",
-		TRQ_SEL_FMAP_BE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_MAX",
-		TRQ_SEL_FMAP_BE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_BASE",
-		TRQ_SEL_FMAP_BE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bf_field_info[] = {
-	{"TRQ_SEL_FMAP_BF_RSVD_1",
-		TRQ_SEL_FMAP_BF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_MAX",
-		TRQ_SEL_FMAP_BF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_BASE",
-		TRQ_SEL_FMAP_BF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c0_field_info[] = {
-	{"TRQ_SEL_FMAP_C0_RSVD_1",
-		TRQ_SEL_FMAP_C0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_MAX",
-		TRQ_SEL_FMAP_C0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_BASE",
-		TRQ_SEL_FMAP_C0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c1_field_info[] = {
-	{"TRQ_SEL_FMAP_C1_RSVD_1",
-		TRQ_SEL_FMAP_C1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_MAX",
-		TRQ_SEL_FMAP_C1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_BASE",
-		TRQ_SEL_FMAP_C1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c2_field_info[] = {
-	{"TRQ_SEL_FMAP_C2_RSVD_1",
-		TRQ_SEL_FMAP_C2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_MAX",
-		TRQ_SEL_FMAP_C2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_BASE",
-		TRQ_SEL_FMAP_C2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c3_field_info[] = {
-	{"TRQ_SEL_FMAP_C3_RSVD_1",
-		TRQ_SEL_FMAP_C3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_MAX",
-		TRQ_SEL_FMAP_C3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_BASE",
-		TRQ_SEL_FMAP_C3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c4_field_info[] = {
-	{"TRQ_SEL_FMAP_C4_RSVD_1",
-		TRQ_SEL_FMAP_C4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_MAX",
-		TRQ_SEL_FMAP_C4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_BASE",
-		TRQ_SEL_FMAP_C4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c5_field_info[] = {
-	{"TRQ_SEL_FMAP_C5_RSVD_1",
-		TRQ_SEL_FMAP_C5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_MAX",
-		TRQ_SEL_FMAP_C5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_BASE",
-		TRQ_SEL_FMAP_C5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c6_field_info[] = {
-	{"TRQ_SEL_FMAP_C6_RSVD_1",
-		TRQ_SEL_FMAP_C6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_MAX",
-		TRQ_SEL_FMAP_C6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_BASE",
-		TRQ_SEL_FMAP_C6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c7_field_info[] = {
-	{"TRQ_SEL_FMAP_C7_RSVD_1",
-		TRQ_SEL_FMAP_C7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_MAX",
-		TRQ_SEL_FMAP_C7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_BASE",
-		TRQ_SEL_FMAP_C7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c8_field_info[] = {
-	{"TRQ_SEL_FMAP_C8_RSVD_1",
-		TRQ_SEL_FMAP_C8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_MAX",
-		TRQ_SEL_FMAP_C8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_BASE",
-		TRQ_SEL_FMAP_C8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c9_field_info[] = {
-	{"TRQ_SEL_FMAP_C9_RSVD_1",
-		TRQ_SEL_FMAP_C9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_MAX",
-		TRQ_SEL_FMAP_C9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_BASE",
-		TRQ_SEL_FMAP_C9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ca_field_info[] = {
-	{"TRQ_SEL_FMAP_CA_RSVD_1",
-		TRQ_SEL_FMAP_CA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_MAX",
-		TRQ_SEL_FMAP_CA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_BASE",
-		TRQ_SEL_FMAP_CA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cb_field_info[] = {
-	{"TRQ_SEL_FMAP_CB_RSVD_1",
-		TRQ_SEL_FMAP_CB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_MAX",
-		TRQ_SEL_FMAP_CB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_BASE",
-		TRQ_SEL_FMAP_CB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cc_field_info[] = {
-	{"TRQ_SEL_FMAP_CC_RSVD_1",
-		TRQ_SEL_FMAP_CC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_MAX",
-		TRQ_SEL_FMAP_CC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_BASE",
-		TRQ_SEL_FMAP_CC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cd_field_info[] = {
-	{"TRQ_SEL_FMAP_CD_RSVD_1",
-		TRQ_SEL_FMAP_CD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_MAX",
-		TRQ_SEL_FMAP_CD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_BASE",
-		TRQ_SEL_FMAP_CD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ce_field_info[] = {
-	{"TRQ_SEL_FMAP_CE_RSVD_1",
-		TRQ_SEL_FMAP_CE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_MAX",
-		TRQ_SEL_FMAP_CE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_BASE",
-		TRQ_SEL_FMAP_CE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cf_field_info[] = {
-	{"TRQ_SEL_FMAP_CF_RSVD_1",
-		TRQ_SEL_FMAP_CF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_MAX",
-		TRQ_SEL_FMAP_CF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_BASE",
-		TRQ_SEL_FMAP_CF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d0_field_info[] = {
-	{"TRQ_SEL_FMAP_D0_RSVD_1",
-		TRQ_SEL_FMAP_D0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_MAX",
-		TRQ_SEL_FMAP_D0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_BASE",
-		TRQ_SEL_FMAP_D0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d1_field_info[] = {
-	{"TRQ_SEL_FMAP_D1_RSVD_1",
-		TRQ_SEL_FMAP_D1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_MAX",
-		TRQ_SEL_FMAP_D1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_BASE",
-		TRQ_SEL_FMAP_D1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d2_field_info[] = {
-	{"TRQ_SEL_FMAP_D2_RSVD_1",
-		TRQ_SEL_FMAP_D2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_MAX",
-		TRQ_SEL_FMAP_D2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_BASE",
-		TRQ_SEL_FMAP_D2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d3_field_info[] = {
-	{"TRQ_SEL_FMAP_D3_RSVD_1",
-		TRQ_SEL_FMAP_D3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_MAX",
-		TRQ_SEL_FMAP_D3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_BASE",
-		TRQ_SEL_FMAP_D3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d4_field_info[] = {
-	{"TRQ_SEL_FMAP_D4_RSVD_1",
-		TRQ_SEL_FMAP_D4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_MAX",
-		TRQ_SEL_FMAP_D4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_BASE",
-		TRQ_SEL_FMAP_D4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d5_field_info[] = {
-	{"TRQ_SEL_FMAP_D5_RSVD_1",
-		TRQ_SEL_FMAP_D5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_MAX",
-		TRQ_SEL_FMAP_D5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_BASE",
-		TRQ_SEL_FMAP_D5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d6_field_info[] = {
-	{"TRQ_SEL_FMAP_D6_RSVD_1",
-		TRQ_SEL_FMAP_D6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_MAX",
-		TRQ_SEL_FMAP_D6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_BASE",
-		TRQ_SEL_FMAP_D6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d7_field_info[] = {
-	{"TRQ_SEL_FMAP_D7_RSVD_1",
-		TRQ_SEL_FMAP_D7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_MAX",
-		TRQ_SEL_FMAP_D7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_BASE",
-		TRQ_SEL_FMAP_D7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d8_field_info[] = {
-	{"TRQ_SEL_FMAP_D8_RSVD_1",
-		TRQ_SEL_FMAP_D8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_MAX",
-		TRQ_SEL_FMAP_D8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_BASE",
-		TRQ_SEL_FMAP_D8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d9_field_info[] = {
-	{"TRQ_SEL_FMAP_D9_RSVD_1",
-		TRQ_SEL_FMAP_D9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_MAX",
-		TRQ_SEL_FMAP_D9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_BASE",
-		TRQ_SEL_FMAP_D9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_da_field_info[] = {
-	{"TRQ_SEL_FMAP_DA_RSVD_1",
-		TRQ_SEL_FMAP_DA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_MAX",
-		TRQ_SEL_FMAP_DA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_BASE",
-		TRQ_SEL_FMAP_DA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_db_field_info[] = {
-	{"TRQ_SEL_FMAP_DB_RSVD_1",
-		TRQ_SEL_FMAP_DB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_MAX",
-		TRQ_SEL_FMAP_DB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_BASE",
-		TRQ_SEL_FMAP_DB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dc_field_info[] = {
-	{"TRQ_SEL_FMAP_DC_RSVD_1",
-		TRQ_SEL_FMAP_DC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_MAX",
-		TRQ_SEL_FMAP_DC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_BASE",
-		TRQ_SEL_FMAP_DC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dd_field_info[] = {
-	{"TRQ_SEL_FMAP_DD_RSVD_1",
-		TRQ_SEL_FMAP_DD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_MAX",
-		TRQ_SEL_FMAP_DD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_BASE",
-		TRQ_SEL_FMAP_DD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_de_field_info[] = {
-	{"TRQ_SEL_FMAP_DE_RSVD_1",
-		TRQ_SEL_FMAP_DE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_MAX",
-		TRQ_SEL_FMAP_DE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_BASE",
-		TRQ_SEL_FMAP_DE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_df_field_info[] = {
-	{"TRQ_SEL_FMAP_DF_RSVD_1",
-		TRQ_SEL_FMAP_DF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_MAX",
-		TRQ_SEL_FMAP_DF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_BASE",
-		TRQ_SEL_FMAP_DF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e0_field_info[] = {
-	{"TRQ_SEL_FMAP_E0_RSVD_1",
-		TRQ_SEL_FMAP_E0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_MAX",
-		TRQ_SEL_FMAP_E0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_BASE",
-		TRQ_SEL_FMAP_E0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e1_field_info[] = {
-	{"TRQ_SEL_FMAP_E1_RSVD_1",
-		TRQ_SEL_FMAP_E1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_MAX",
-		TRQ_SEL_FMAP_E1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_BASE",
-		TRQ_SEL_FMAP_E1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e2_field_info[] = {
-	{"TRQ_SEL_FMAP_E2_RSVD_1",
-		TRQ_SEL_FMAP_E2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_MAX",
-		TRQ_SEL_FMAP_E2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_BASE",
-		TRQ_SEL_FMAP_E2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e3_field_info[] = {
-	{"TRQ_SEL_FMAP_E3_RSVD_1",
-		TRQ_SEL_FMAP_E3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_MAX",
-		TRQ_SEL_FMAP_E3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_BASE",
-		TRQ_SEL_FMAP_E3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e4_field_info[] = {
-	{"TRQ_SEL_FMAP_E4_RSVD_1",
-		TRQ_SEL_FMAP_E4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_MAX",
-		TRQ_SEL_FMAP_E4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_BASE",
-		TRQ_SEL_FMAP_E4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e5_field_info[] = {
-	{"TRQ_SEL_FMAP_E5_RSVD_1",
-		TRQ_SEL_FMAP_E5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_MAX",
-		TRQ_SEL_FMAP_E5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_BASE",
-		TRQ_SEL_FMAP_E5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e6_field_info[] = {
-	{"TRQ_SEL_FMAP_E6_RSVD_1",
-		TRQ_SEL_FMAP_E6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_MAX",
-		TRQ_SEL_FMAP_E6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_BASE",
-		TRQ_SEL_FMAP_E6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e7_field_info[] = {
-	{"TRQ_SEL_FMAP_E7_RSVD_1",
-		TRQ_SEL_FMAP_E7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_MAX",
-		TRQ_SEL_FMAP_E7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_BASE",
-		TRQ_SEL_FMAP_E7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e8_field_info[] = {
-	{"TRQ_SEL_FMAP_E8_RSVD_1",
-		TRQ_SEL_FMAP_E8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_MAX",
-		TRQ_SEL_FMAP_E8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_BASE",
-		TRQ_SEL_FMAP_E8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e9_field_info[] = {
-	{"TRQ_SEL_FMAP_E9_RSVD_1",
-		TRQ_SEL_FMAP_E9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_MAX",
-		TRQ_SEL_FMAP_E9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_BASE",
-		TRQ_SEL_FMAP_E9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ea_field_info[] = {
-	{"TRQ_SEL_FMAP_EA_RSVD_1",
-		TRQ_SEL_FMAP_EA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_MAX",
-		TRQ_SEL_FMAP_EA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_BASE",
-		TRQ_SEL_FMAP_EA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_eb_field_info[] = {
-	{"TRQ_SEL_FMAP_EB_RSVD_1",
-		TRQ_SEL_FMAP_EB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_MAX",
-		TRQ_SEL_FMAP_EB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_BASE",
-		TRQ_SEL_FMAP_EB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ec_field_info[] = {
-	{"TRQ_SEL_FMAP_EC_RSVD_1",
-		TRQ_SEL_FMAP_EC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_MAX",
-		TRQ_SEL_FMAP_EC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_BASE",
-		TRQ_SEL_FMAP_EC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ed_field_info[] = {
-	{"TRQ_SEL_FMAP_ED_RSVD_1",
-		TRQ_SEL_FMAP_ED_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_MAX",
-		TRQ_SEL_FMAP_ED_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_BASE",
-		TRQ_SEL_FMAP_ED_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ee_field_info[] = {
-	{"TRQ_SEL_FMAP_EE_RSVD_1",
-		TRQ_SEL_FMAP_EE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_MAX",
-		TRQ_SEL_FMAP_EE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_BASE",
-		TRQ_SEL_FMAP_EE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ef_field_info[] = {
-	{"TRQ_SEL_FMAP_EF_RSVD_1",
-		TRQ_SEL_FMAP_EF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_MAX",
-		TRQ_SEL_FMAP_EF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_BASE",
-		TRQ_SEL_FMAP_EF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f0_field_info[] = {
-	{"TRQ_SEL_FMAP_F0_RSVD_1",
-		TRQ_SEL_FMAP_F0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_MAX",
-		TRQ_SEL_FMAP_F0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_BASE",
-		TRQ_SEL_FMAP_F0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_3_field_info[] = {
-	{"IND_CTXT_DATA_3_DATA",
-		IND_CTXT_DATA_3_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_2_field_info[] = {
-	{"IND_CTXT_DATA_2_DATA",
-		IND_CTXT_DATA_2_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_1_field_info[] = {
-	{"IND_CTXT_DATA_1_DATA",
-		IND_CTXT_DATA_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_0_field_info[] = {
-	{"IND_CTXT_DATA_0_DATA",
-		IND_CTXT_DATA_0_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt3_field_info[] = {
-	{"IND_CTXT3",
-		IND_CTXT3_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt2_field_info[] = {
-	{"IND_CTXT2",
-		IND_CTXT2_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt1_field_info[] = {
-	{"IND_CTXT1",
-		IND_CTXT1_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt0_field_info[] = {
-	{"IND_CTXT0",
-		IND_CTXT0_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SET",
-		IND_CTXT_CMD_SET_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_1_field_info[] = {
-	{"C2H_TIMER_CNT_1_RSVD_1",
-		C2H_TIMER_CNT_1_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_1",
-		C2H_TIMER_CNT_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_2_field_info[] = {
-	{"C2H_TIMER_CNT_2_RSVD_1",
-		C2H_TIMER_CNT_2_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_2",
-		C2H_TIMER_CNT_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_3_field_info[] = {
-	{"C2H_TIMER_CNT_3_RSVD_1",
-		C2H_TIMER_CNT_3_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_3",
-		C2H_TIMER_CNT_3_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_4_field_info[] = {
-	{"C2H_TIMER_CNT_4_RSVD_1",
-		C2H_TIMER_CNT_4_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_4",
-		C2H_TIMER_CNT_4_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_5_field_info[] = {
-	{"C2H_TIMER_CNT_5_RSVD_1",
-		C2H_TIMER_CNT_5_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_5",
-		C2H_TIMER_CNT_5_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_6_field_info[] = {
-	{"C2H_TIMER_CNT_6_RSVD_1",
-		C2H_TIMER_CNT_6_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_6",
-		C2H_TIMER_CNT_6_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_7_field_info[] = {
-	{"C2H_TIMER_CNT_7_RSVD_1",
-		C2H_TIMER_CNT_7_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_7",
-		C2H_TIMER_CNT_7_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_8_field_info[] = {
-	{"C2H_TIMER_CNT_8_RSVD_1",
-		C2H_TIMER_CNT_8_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_8",
-		C2H_TIMER_CNT_8_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_9_field_info[] = {
-	{"C2H_TIMER_CNT_9_RSVD_1",
-		C2H_TIMER_CNT_9_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_9",
-		C2H_TIMER_CNT_9_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_a_field_info[] = {
-	{"C2H_TIMER_CNT_A_RSVD_1",
-		C2H_TIMER_CNT_A_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_A",
-		C2H_TIMER_CNT_A_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_b_field_info[] = {
-	{"C2H_TIMER_CNT_B_RSVD_1",
-		C2H_TIMER_CNT_B_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_B",
-		C2H_TIMER_CNT_B_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_c_field_info[] = {
-	{"C2H_TIMER_CNT_C_RSVD_1",
-		C2H_TIMER_CNT_C_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_C",
-		C2H_TIMER_CNT_C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_d_field_info[] = {
-	{"C2H_TIMER_CNT_D_RSVD_1",
-		C2H_TIMER_CNT_D_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_D",
-		C2H_TIMER_CNT_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_e_field_info[] = {
-	{"C2H_TIMER_CNT_E_RSVD_1",
-		C2H_TIMER_CNT_E_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_E",
-		C2H_TIMER_CNT_E_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_f_field_info[] = {
-	{"C2H_TIMER_CNT_F_RSVD_1",
-		C2H_TIMER_CNT_F_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_F",
-		C2H_TIMER_CNT_F_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_10_field_info[] = {
-	{"C2H_TIMER_CNT_10_RSVD_1",
-		C2H_TIMER_CNT_10_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_10",
-		C2H_TIMER_CNT_10_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_1_field_info[] = {
-	{"C2H_CNT_TH_1_RSVD_1",
-		C2H_CNT_TH_1_RSVD_1_MASK},
-	{"C2H_CNT_TH_1_THESHOLD_CNT",
-		C2H_CNT_TH_1_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_2_field_info[] = {
-	{"C2H_CNT_TH_2_RSVD_1",
-		C2H_CNT_TH_2_RSVD_1_MASK},
-	{"C2H_CNT_TH_2_THESHOLD_CNT",
-		C2H_CNT_TH_2_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_3_field_info[] = {
-	{"C2H_CNT_TH_3_RSVD_1",
-		C2H_CNT_TH_3_RSVD_1_MASK},
-	{"C2H_CNT_TH_3_THESHOLD_CNT",
-		C2H_CNT_TH_3_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_4_field_info[] = {
-	{"C2H_CNT_TH_4_RSVD_1",
-		C2H_CNT_TH_4_RSVD_1_MASK},
-	{"C2H_CNT_TH_4_THESHOLD_CNT",
-		C2H_CNT_TH_4_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_5_field_info[] = {
-	{"C2H_CNT_TH_5_RSVD_1",
-		C2H_CNT_TH_5_RSVD_1_MASK},
-	{"C2H_CNT_TH_5_THESHOLD_CNT",
-		C2H_CNT_TH_5_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_6_field_info[] = {
-	{"C2H_CNT_TH_6_RSVD_1",
-		C2H_CNT_TH_6_RSVD_1_MASK},
-	{"C2H_CNT_TH_6_THESHOLD_CNT",
-		C2H_CNT_TH_6_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_7_field_info[] = {
-	{"C2H_CNT_TH_7_RSVD_1",
-		C2H_CNT_TH_7_RSVD_1_MASK},
-	{"C2H_CNT_TH_7_THESHOLD_CNT",
-		C2H_CNT_TH_7_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_8_field_info[] = {
-	{"C2H_CNT_TH_8_RSVD_1",
-		C2H_CNT_TH_8_RSVD_1_MASK},
-	{"C2H_CNT_TH_8_THESHOLD_CNT",
-		C2H_CNT_TH_8_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_9_field_info[] = {
-	{"C2H_CNT_TH_9_RSVD_1",
-		C2H_CNT_TH_9_RSVD_1_MASK},
-	{"C2H_CNT_TH_9_THESHOLD_CNT",
-		C2H_CNT_TH_9_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_a_field_info[] = {
-	{"C2H_CNT_TH_A_RSVD_1",
-		C2H_CNT_TH_A_RSVD_1_MASK},
-	{"C2H_CNT_TH_A_THESHOLD_CNT",
-		C2H_CNT_TH_A_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_b_field_info[] = {
-	{"C2H_CNT_TH_B_RSVD_1",
-		C2H_CNT_TH_B_RSVD_1_MASK},
-	{"C2H_CNT_TH_B_THESHOLD_CNT",
-		C2H_CNT_TH_B_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_c_field_info[] = {
-	{"C2H_CNT_TH_C_RSVD_1",
-		C2H_CNT_TH_C_RSVD_1_MASK},
-	{"C2H_CNT_TH_C_THESHOLD_CNT",
-		C2H_CNT_TH_C_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_d_field_info[] = {
-	{"C2H_CNT_TH_D_RSVD_1",
-		C2H_CNT_TH_D_RSVD_1_MASK},
-	{"C2H_CNT_TH_D_THESHOLD_CNT",
-		C2H_CNT_TH_D_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_e_field_info[] = {
-	{"C2H_CNT_TH_E_RSVD_1",
-		C2H_CNT_TH_E_RSVD_1_MASK},
-	{"C2H_CNT_TH_E_THESHOLD_CNT",
-		C2H_CNT_TH_E_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_f_field_info[] = {
-	{"C2H_CNT_TH_F_RSVD_1",
-		C2H_CNT_TH_F_RSVD_1_MASK},
-	{"C2H_CNT_TH_F_THESHOLD_CNT",
-		C2H_CNT_TH_F_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_10_field_info[] = {
-	{"C2H_CNT_TH_10_RSVD_1",
-		C2H_CNT_TH_10_RSVD_1_MASK},
-	{"C2H_CNT_TH_10_THESHOLD_CNT",
-		C2H_CNT_TH_10_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_qid_field_info[] = {
-	{"C2H_QID2VEC_MAP_QID_RSVD_1",
-		C2H_QID2VEC_MAP_QID_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_QID_QID",
-		C2H_QID2VEC_MAP_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_field_info[] = {
-	{"C2H_QID2VEC_MAP_RSVD_1",
-		C2H_QID2VEC_MAP_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_H2C_EN_COAL",
-		C2H_QID2VEC_MAP_H2C_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_H2C_VECTOR",
-		C2H_QID2VEC_MAP_H2C_VECTOR_MASK},
-	{"C2H_QID2VEC_MAP_C2H_EN_COAL",
-		C2H_QID2VEC_MAP_C2H_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_C2H_VECTOR",
-		C2H_QID2VEC_MAP_C2H_VECTOR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_0_field_info[] = {
-	{"C2H_BUF_SZ_0_SIZE",
-		C2H_BUF_SZ_0_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_1_field_info[] = {
-	{"C2H_BUF_SZ_1_SIZE",
-		C2H_BUF_SZ_1_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_2_field_info[] = {
-	{"C2H_BUF_SZ_2_SIZE",
-		C2H_BUF_SZ_2_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_3_field_info[] = {
-	{"C2H_BUF_SZ_3_SIZE",
-		C2H_BUF_SZ_3_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_4_field_info[] = {
-	{"C2H_BUF_SZ_4_SIZE",
-		C2H_BUF_SZ_4_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_5_field_info[] = {
-	{"C2H_BUF_SZ_5_SIZE",
-		C2H_BUF_SZ_5_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_7_field_info[] = {
-	{"C2H_BUF_SZ_7_SIZE",
-		C2H_BUF_SZ_7_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_8_field_info[] = {
-	{"C2H_BUF_SZ_8_SIZE",
-		C2H_BUF_SZ_8_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_9_field_info[] = {
-	{"C2H_BUF_SZ_9_SIZE",
-		C2H_BUF_SZ_9_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_10_field_info[] = {
-	{"C2H_BUF_SZ_10_SIZE",
-		C2H_BUF_SZ_10_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_11_field_info[] = {
-	{"C2H_BUF_SZ_11_SIZE",
-		C2H_BUF_SZ_11_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_12_field_info[] = {
-	{"C2H_BUF_SZ_12_SIZE",
-		C2H_BUF_SZ_12_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_13_field_info[] = {
-	{"C2H_BUF_SZ_13_SIZE",
-		C2H_BUF_SZ_13_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_14_field_info[] = {
-	{"C2H_BUF_SZ_14_SIZE",
-		C2H_BUF_SZ_14_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_15_field_info[] = {
-	{"C2H_BUF_SZ_15_SIZE",
-		C2H_BUF_SZ_15_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RSVD_2",
-		C2H_FATAL_ERR_STAT_RSVD_2_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVT_QCNT_TH",
-		C2H_PFCH_CFG_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_QCNT",
-		C2H_PFCH_CFG_QCNT_MASK},
-	{"C2H_PFCH_CFG_NUM",
-		C2H_PFCH_CFG_NUM_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_RSVD_1",
-		C2H_STAT_DMA_ENG_0_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_DESC_RSP_LAST",
-		C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT",
-		C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_STAT",
-		C2H_FIRST_ERR_QID_ERR_STAT_MASK},
-	{"C2H_FIRST_ERR_QID_CMD_WR",
-		C2H_FIRST_ERR_QID_CMD_WR_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3",
-		H2C_REG3_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_field_info[] = {
-	{"C2H_CHANNEL_CTL_RSVD_1",
-		C2H_CHANNEL_CTL_RSVD_1_MASK},
-	{"C2H_CHANNEL_CTL_RUN",
-		C2H_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_1_field_info[] = {
-	{"C2H_CHANNEL_CTL_1_RUN",
-		C2H_CHANNEL_CTL_1_RUN_MASK},
-	{"C2H_CHANNEL_CTL_1_RUN_1",
-		C2H_CHANNEL_CTL_1_RUN_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_cmpl_desc_cnt_field_info[] = {
-	{"C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO",
-		C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_1",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_2",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RSVD_1",
-		C2H_MM_ERR_CODE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_VALID",
-		C2H_MM_ERR_CODE_VALID_MASK},
-	{"C2H_MM_ERR_CODE_RDWR",
-		C2H_MM_ERR_CODE_RDWR_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-	{"C2H_MM_ERR_INFO_DIR",
-		C2H_MM_ERR_INFO_DIR_MASK},
-	{"C2H_MM_ERR_INFO_CIDX",
-		C2H_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_field_info[] = {
-	{"H2C_CHANNEL_CTL_RSVD_1",
-		H2C_CHANNEL_CTL_RSVD_1_MASK},
-	{"H2C_CHANNEL_CTL_RUN",
-		H2C_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_1_field_info[] = {
-	{"H2C_CHANNEL_CTL_1_RUN",
-		H2C_CHANNEL_CTL_1_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_2_field_info[] = {
-	{"H2C_CHANNEL_CTL_2_RUN",
-		H2C_CHANNEL_CTL_2_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_cmpl_desc_cnt_field_info[] = {
-	{"H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO",
-		H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_1",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_2",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_3",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_4",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_5",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_6",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_VALID",
-		H2C_MM_ERR_CODE_VALID_MASK},
-	{"H2C_MM_ERR_CODE_RDWR",
-		H2C_MM_ERR_CODE_RDWR_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-	{"H2C_MM_ERR_INFO_DIR",
-		H2C_MM_ERR_INFO_DIR_MASK},
-	{"H2C_MM_ERR_INFO_CIDX",
-		H2C_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	func_status_reg_field_info[] = {
-	{"FUNC_STATUS_REG_RSVD_1",
-		FUNC_STATUS_REG_RSVD_1_MASK},
-	{"FUNC_STATUS_REG_CUR_SRC_FN",
-		FUNC_STATUS_REG_CUR_SRC_FN_MASK},
-	{"FUNC_STATUS_REG_ACK",
-		FUNC_STATUS_REG_ACK_MASK},
-	{"FUNC_STATUS_REG_O_MSG",
-		FUNC_STATUS_REG_O_MSG_MASK},
-	{"FUNC_STATUS_REG_I_MSG",
-		FUNC_STATUS_REG_I_MSG_MASK},
-};
-
-
-static struct regfield_info
-	func_cmd_reg_field_info[] = {
-	{"FUNC_CMD_REG_RSVD_1",
-		FUNC_CMD_REG_RSVD_1_MASK},
-	{"FUNC_CMD_REG_RSVD_2",
-		FUNC_CMD_REG_RSVD_2_MASK},
-	{"FUNC_CMD_REG_MSG_RCV",
-		FUNC_CMD_REG_MSG_RCV_MASK},
-	{"FUNC_CMD_REG_MSG_SENT",
-		FUNC_CMD_REG_MSG_SENT_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_vector_reg_field_info[] = {
-	{"FUNC_INTERRUPT_VECTOR_REG_RSVD_1",
-		FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_VECTOR_REG_IN",
-		FUNC_INTERRUPT_VECTOR_REG_IN_MASK},
-};
-
-
-static struct regfield_info
-	target_func_reg_field_info[] = {
-	{"TARGET_FUNC_REG_RSVD_1",
-		TARGET_FUNC_REG_RSVD_1_MASK},
-	{"TARGET_FUNC_REG_N_ID",
-		TARGET_FUNC_REG_N_ID_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_ctl_reg_field_info[] = {
-	{"FUNC_INTERRUPT_CTL_REG_RSVD_1",
-		FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_CTL_REG_INT_EN",
-		FUNC_INTERRUPT_CTL_REG_INT_EN_MASK},
-};
-
-static struct xreg_info qdma_cpm4_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_BUSDEV", 0x04,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_busdev_field_info),
-	cfg_blk_busdev_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_BLK_SCRATCH_0", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_0_field_info),
-	cfg_blk_scratch_0_field_info
-},
-{"CFG_BLK_SCRATCH_1", 0x84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_1_field_info),
-	cfg_blk_scratch_1_field_info
-},
-{"CFG_BLK_SCRATCH_2", 0x88,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_2_field_info),
-	cfg_blk_scratch_2_field_info
-},
-{"CFG_BLK_SCRATCH_3", 0x8c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_3_field_info),
-	cfg_blk_scratch_3_field_info
-},
-{"CFG_BLK_SCRATCH_4", 0x90,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_4_field_info),
-	cfg_blk_scratch_4_field_info
-},
-{"CFG_BLK_SCRATCH_5", 0x94,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_5_field_info),
-	cfg_blk_scratch_5_field_info
-},
-{"CFG_BLK_SCRATCH_6", 0x98,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_6_field_info),
-	cfg_blk_scratch_6_field_info
-},
-{"CFG_BLK_SCRATCH_7", 0x9c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_7_field_info),
-	cfg_blk_scratch_7_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_PF_BARLITE_INT", 0x104,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_int_field_info),
-	glbl2_pf_barlite_int_field_info
-},
-{"GLBL2_PF_VF_BARLITE_INT", 0x108,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_int_field_info),
-	glbl2_pf_vf_barlite_int_field_info
-},
-{"GLBL2_PF_BARLITE_EXT", 0x10c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_ext_field_info),
-	glbl2_pf_barlite_ext_field_info
-},
-{"GLBL2_PF_VF_BARLITE_EXT", 0x110,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_ext_field_info),
-	glbl2_pf_vf_barlite_ext_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_CHANNEL_FUNC_RET", 0x12c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_func_ret_field_info),
-	glbl2_channel_func_ret_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"TRQ_SEL_FMAP_0", 0x400,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_0_field_info),
-	trq_sel_fmap_0_field_info
-},
-{"TRQ_SEL_FMAP_1", 0x404,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1_field_info),
-	trq_sel_fmap_1_field_info
-},
-{"TRQ_SEL_FMAP_2", 0x408,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2_field_info),
-	trq_sel_fmap_2_field_info
-},
-{"TRQ_SEL_FMAP_3", 0x40c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3_field_info),
-	trq_sel_fmap_3_field_info
-},
-{"TRQ_SEL_FMAP_4", 0x410,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4_field_info),
-	trq_sel_fmap_4_field_info
-},
-{"TRQ_SEL_FMAP_5", 0x414,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5_field_info),
-	trq_sel_fmap_5_field_info
-},
-{"TRQ_SEL_FMAP_6", 0x418,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6_field_info),
-	trq_sel_fmap_6_field_info
-},
-{"TRQ_SEL_FMAP_7", 0x41c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7_field_info),
-	trq_sel_fmap_7_field_info
-},
-{"TRQ_SEL_FMAP_8", 0x420,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8_field_info),
-	trq_sel_fmap_8_field_info
-},
-{"TRQ_SEL_FMAP_9", 0x424,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9_field_info),
-	trq_sel_fmap_9_field_info
-},
-{"TRQ_SEL_FMAP_A", 0x428,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a_field_info),
-	trq_sel_fmap_a_field_info
-},
-{"TRQ_SEL_FMAP_B", 0x42c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b_field_info),
-	trq_sel_fmap_b_field_info
-},
-{"TRQ_SEL_FMAP_D", 0x430,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d_field_info),
-	trq_sel_fmap_d_field_info
-},
-{"TRQ_SEL_FMAP_E", 0x434,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e_field_info),
-	trq_sel_fmap_e_field_info
-},
-{"TRQ_SEL_FMAP_F", 0x438,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f_field_info),
-	trq_sel_fmap_f_field_info
-},
-{"TRQ_SEL_FMAP_10", 0x43c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_10_field_info),
-	trq_sel_fmap_10_field_info
-},
-{"TRQ_SEL_FMAP_11", 0x440,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_11_field_info),
-	trq_sel_fmap_11_field_info
-},
-{"TRQ_SEL_FMAP_12", 0x444,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_12_field_info),
-	trq_sel_fmap_12_field_info
-},
-{"TRQ_SEL_FMAP_13", 0x448,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_13_field_info),
-	trq_sel_fmap_13_field_info
-},
-{"TRQ_SEL_FMAP_14", 0x44c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_14_field_info),
-	trq_sel_fmap_14_field_info
-},
-{"TRQ_SEL_FMAP_15", 0x450,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_15_field_info),
-	trq_sel_fmap_15_field_info
-},
-{"TRQ_SEL_FMAP_16", 0x454,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_16_field_info),
-	trq_sel_fmap_16_field_info
-},
-{"TRQ_SEL_FMAP_17", 0x458,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_17_field_info),
-	trq_sel_fmap_17_field_info
-},
-{"TRQ_SEL_FMAP_18", 0x45c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_18_field_info),
-	trq_sel_fmap_18_field_info
-},
-{"TRQ_SEL_FMAP_19", 0x460,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_19_field_info),
-	trq_sel_fmap_19_field_info
-},
-{"TRQ_SEL_FMAP_1A", 0x464,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1a_field_info),
-	trq_sel_fmap_1a_field_info
-},
-{"TRQ_SEL_FMAP_1B", 0x468,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1b_field_info),
-	trq_sel_fmap_1b_field_info
-},
-{"TRQ_SEL_FMAP_1C", 0x46c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1c_field_info),
-	trq_sel_fmap_1c_field_info
-},
-{"TRQ_SEL_FMAP_1D", 0x470,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1d_field_info),
-	trq_sel_fmap_1d_field_info
-},
-{"TRQ_SEL_FMAP_1E", 0x474,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1e_field_info),
-	trq_sel_fmap_1e_field_info
-},
-{"TRQ_SEL_FMAP_1F", 0x478,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1f_field_info),
-	trq_sel_fmap_1f_field_info
-},
-{"TRQ_SEL_FMAP_20", 0x47c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_20_field_info),
-	trq_sel_fmap_20_field_info
-},
-{"TRQ_SEL_FMAP_21", 0x480,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_21_field_info),
-	trq_sel_fmap_21_field_info
-},
-{"TRQ_SEL_FMAP_22", 0x484,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_22_field_info),
-	trq_sel_fmap_22_field_info
-},
-{"TRQ_SEL_FMAP_23", 0x488,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_23_field_info),
-	trq_sel_fmap_23_field_info
-},
-{"TRQ_SEL_FMAP_24", 0x48c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_24_field_info),
-	trq_sel_fmap_24_field_info
-},
-{"TRQ_SEL_FMAP_25", 0x490,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_25_field_info),
-	trq_sel_fmap_25_field_info
-},
-{"TRQ_SEL_FMAP_26", 0x494,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_26_field_info),
-	trq_sel_fmap_26_field_info
-},
-{"TRQ_SEL_FMAP_27", 0x498,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_27_field_info),
-	trq_sel_fmap_27_field_info
-},
-{"TRQ_SEL_FMAP_28", 0x49c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_28_field_info),
-	trq_sel_fmap_28_field_info
-},
-{"TRQ_SEL_FMAP_29", 0x4a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_29_field_info),
-	trq_sel_fmap_29_field_info
-},
-{"TRQ_SEL_FMAP_2A", 0x4a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2a_field_info),
-	trq_sel_fmap_2a_field_info
-},
-{"TRQ_SEL_FMAP_2B", 0x4a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2b_field_info),
-	trq_sel_fmap_2b_field_info
-},
-{"TRQ_SEL_FMAP_2C", 0x4ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2c_field_info),
-	trq_sel_fmap_2c_field_info
-},
-{"TRQ_SEL_FMAP_2D", 0x4b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2d_field_info),
-	trq_sel_fmap_2d_field_info
-},
-{"TRQ_SEL_FMAP_2E", 0x4b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2e_field_info),
-	trq_sel_fmap_2e_field_info
-},
-{"TRQ_SEL_FMAP_2F", 0x4b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2f_field_info),
-	trq_sel_fmap_2f_field_info
-},
-{"TRQ_SEL_FMAP_30", 0x4bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_30_field_info),
-	trq_sel_fmap_30_field_info
-},
-{"TRQ_SEL_FMAP_31", 0x4d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_31_field_info),
-	trq_sel_fmap_31_field_info
-},
-{"TRQ_SEL_FMAP_32", 0x4d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_32_field_info),
-	trq_sel_fmap_32_field_info
-},
-{"TRQ_SEL_FMAP_33", 0x4d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_33_field_info),
-	trq_sel_fmap_33_field_info
-},
-{"TRQ_SEL_FMAP_34", 0x4dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_34_field_info),
-	trq_sel_fmap_34_field_info
-},
-{"TRQ_SEL_FMAP_35", 0x4e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_35_field_info),
-	trq_sel_fmap_35_field_info
-},
-{"TRQ_SEL_FMAP_36", 0x4e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_36_field_info),
-	trq_sel_fmap_36_field_info
-},
-{"TRQ_SEL_FMAP_37", 0x4e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_37_field_info),
-	trq_sel_fmap_37_field_info
-},
-{"TRQ_SEL_FMAP_38", 0x4ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_38_field_info),
-	trq_sel_fmap_38_field_info
-},
-{"TRQ_SEL_FMAP_39", 0x4f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_39_field_info),
-	trq_sel_fmap_39_field_info
-},
-{"TRQ_SEL_FMAP_3A", 0x4f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3a_field_info),
-	trq_sel_fmap_3a_field_info
-},
-{"TRQ_SEL_FMAP_3B", 0x4f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3b_field_info),
-	trq_sel_fmap_3b_field_info
-},
-{"TRQ_SEL_FMAP_3C", 0x4fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3c_field_info),
-	trq_sel_fmap_3c_field_info
-},
-{"TRQ_SEL_FMAP_3D", 0x500,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3d_field_info),
-	trq_sel_fmap_3d_field_info
-},
-{"TRQ_SEL_FMAP_3E", 0x504,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3e_field_info),
-	trq_sel_fmap_3e_field_info
-},
-{"TRQ_SEL_FMAP_3F", 0x508,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3f_field_info),
-	trq_sel_fmap_3f_field_info
-},
-{"TRQ_SEL_FMAP_40", 0x50c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_40_field_info),
-	trq_sel_fmap_40_field_info
-},
-{"TRQ_SEL_FMAP_41", 0x510,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_41_field_info),
-	trq_sel_fmap_41_field_info
-},
-{"TRQ_SEL_FMAP_42", 0x514,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_42_field_info),
-	trq_sel_fmap_42_field_info
-},
-{"TRQ_SEL_FMAP_43", 0x518,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_43_field_info),
-	trq_sel_fmap_43_field_info
-},
-{"TRQ_SEL_FMAP_44", 0x51c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_44_field_info),
-	trq_sel_fmap_44_field_info
-},
-{"TRQ_SEL_FMAP_45", 0x520,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_45_field_info),
-	trq_sel_fmap_45_field_info
-},
-{"TRQ_SEL_FMAP_46", 0x524,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_46_field_info),
-	trq_sel_fmap_46_field_info
-},
-{"TRQ_SEL_FMAP_47", 0x528,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_47_field_info),
-	trq_sel_fmap_47_field_info
-},
-{"TRQ_SEL_FMAP_48", 0x52c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_48_field_info),
-	trq_sel_fmap_48_field_info
-},
-{"TRQ_SEL_FMAP_49", 0x530,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_49_field_info),
-	trq_sel_fmap_49_field_info
-},
-{"TRQ_SEL_FMAP_4A", 0x534,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4a_field_info),
-	trq_sel_fmap_4a_field_info
-},
-{"TRQ_SEL_FMAP_4B", 0x538,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4b_field_info),
-	trq_sel_fmap_4b_field_info
-},
-{"TRQ_SEL_FMAP_4C", 0x53c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4c_field_info),
-	trq_sel_fmap_4c_field_info
-},
-{"TRQ_SEL_FMAP_4D", 0x540,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4d_field_info),
-	trq_sel_fmap_4d_field_info
-},
-{"TRQ_SEL_FMAP_4E", 0x544,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4e_field_info),
-	trq_sel_fmap_4e_field_info
-},
-{"TRQ_SEL_FMAP_4F", 0x548,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4f_field_info),
-	trq_sel_fmap_4f_field_info
-},
-{"TRQ_SEL_FMAP_50", 0x54c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_50_field_info),
-	trq_sel_fmap_50_field_info
-},
-{"TRQ_SEL_FMAP_51", 0x550,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_51_field_info),
-	trq_sel_fmap_51_field_info
-},
-{"TRQ_SEL_FMAP_52", 0x554,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_52_field_info),
-	trq_sel_fmap_52_field_info
-},
-{"TRQ_SEL_FMAP_53", 0x558,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_53_field_info),
-	trq_sel_fmap_53_field_info
-},
-{"TRQ_SEL_FMAP_54", 0x55c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_54_field_info),
-	trq_sel_fmap_54_field_info
-},
-{"TRQ_SEL_FMAP_55", 0x560,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_55_field_info),
-	trq_sel_fmap_55_field_info
-},
-{"TRQ_SEL_FMAP_56", 0x564,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_56_field_info),
-	trq_sel_fmap_56_field_info
-},
-{"TRQ_SEL_FMAP_57", 0x568,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_57_field_info),
-	trq_sel_fmap_57_field_info
-},
-{"TRQ_SEL_FMAP_58", 0x56c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_58_field_info),
-	trq_sel_fmap_58_field_info
-},
-{"TRQ_SEL_FMAP_59", 0x570,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_59_field_info),
-	trq_sel_fmap_59_field_info
-},
-{"TRQ_SEL_FMAP_5A", 0x574,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5a_field_info),
-	trq_sel_fmap_5a_field_info
-},
-{"TRQ_SEL_FMAP_5B", 0x578,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5b_field_info),
-	trq_sel_fmap_5b_field_info
-},
-{"TRQ_SEL_FMAP_5C", 0x57c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5c_field_info),
-	trq_sel_fmap_5c_field_info
-},
-{"TRQ_SEL_FMAP_5D", 0x580,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5d_field_info),
-	trq_sel_fmap_5d_field_info
-},
-{"TRQ_SEL_FMAP_5E", 0x584,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5e_field_info),
-	trq_sel_fmap_5e_field_info
-},
-{"TRQ_SEL_FMAP_5F", 0x588,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5f_field_info),
-	trq_sel_fmap_5f_field_info
-},
-{"TRQ_SEL_FMAP_60", 0x58c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_60_field_info),
-	trq_sel_fmap_60_field_info
-},
-{"TRQ_SEL_FMAP_61", 0x590,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_61_field_info),
-	trq_sel_fmap_61_field_info
-},
-{"TRQ_SEL_FMAP_62", 0x594,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_62_field_info),
-	trq_sel_fmap_62_field_info
-},
-{"TRQ_SEL_FMAP_63", 0x598,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_63_field_info),
-	trq_sel_fmap_63_field_info
-},
-{"TRQ_SEL_FMAP_64", 0x59c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_64_field_info),
-	trq_sel_fmap_64_field_info
-},
-{"TRQ_SEL_FMAP_65", 0x5a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_65_field_info),
-	trq_sel_fmap_65_field_info
-},
-{"TRQ_SEL_FMAP_66", 0x5a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_66_field_info),
-	trq_sel_fmap_66_field_info
-},
-{"TRQ_SEL_FMAP_67", 0x5a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_67_field_info),
-	trq_sel_fmap_67_field_info
-},
-{"TRQ_SEL_FMAP_68", 0x5ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_68_field_info),
-	trq_sel_fmap_68_field_info
-},
-{"TRQ_SEL_FMAP_69", 0x5b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_69_field_info),
-	trq_sel_fmap_69_field_info
-},
-{"TRQ_SEL_FMAP_6A", 0x5b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6a_field_info),
-	trq_sel_fmap_6a_field_info
-},
-{"TRQ_SEL_FMAP_6B", 0x5b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6b_field_info),
-	trq_sel_fmap_6b_field_info
-},
-{"TRQ_SEL_FMAP_6C", 0x5bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6c_field_info),
-	trq_sel_fmap_6c_field_info
-},
-{"TRQ_SEL_FMAP_6D", 0x5c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6d_field_info),
-	trq_sel_fmap_6d_field_info
-},
-{"TRQ_SEL_FMAP_6E", 0x5c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6e_field_info),
-	trq_sel_fmap_6e_field_info
-},
-{"TRQ_SEL_FMAP_6F", 0x5c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6f_field_info),
-	trq_sel_fmap_6f_field_info
-},
-{"TRQ_SEL_FMAP_70", 0x5cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_70_field_info),
-	trq_sel_fmap_70_field_info
-},
-{"TRQ_SEL_FMAP_71", 0x5d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_71_field_info),
-	trq_sel_fmap_71_field_info
-},
-{"TRQ_SEL_FMAP_72", 0x5d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_72_field_info),
-	trq_sel_fmap_72_field_info
-},
-{"TRQ_SEL_FMAP_73", 0x5d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_73_field_info),
-	trq_sel_fmap_73_field_info
-},
-{"TRQ_SEL_FMAP_74", 0x5dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_74_field_info),
-	trq_sel_fmap_74_field_info
-},
-{"TRQ_SEL_FMAP_75", 0x5e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_75_field_info),
-	trq_sel_fmap_75_field_info
-},
-{"TRQ_SEL_FMAP_76", 0x5e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_76_field_info),
-	trq_sel_fmap_76_field_info
-},
-{"TRQ_SEL_FMAP_77", 0x5e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_77_field_info),
-	trq_sel_fmap_77_field_info
-},
-{"TRQ_SEL_FMAP_78", 0x5ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_78_field_info),
-	trq_sel_fmap_78_field_info
-},
-{"TRQ_SEL_FMAP_79", 0x5f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_79_field_info),
-	trq_sel_fmap_79_field_info
-},
-{"TRQ_SEL_FMAP_7A", 0x5f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7a_field_info),
-	trq_sel_fmap_7a_field_info
-},
-{"TRQ_SEL_FMAP_7B", 0x5f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7b_field_info),
-	trq_sel_fmap_7b_field_info
-},
-{"TRQ_SEL_FMAP_7C", 0x5fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7c_field_info),
-	trq_sel_fmap_7c_field_info
-},
-{"TRQ_SEL_FMAP_7D", 0x600,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7d_field_info),
-	trq_sel_fmap_7d_field_info
-},
-{"TRQ_SEL_FMAP_7E", 0x604,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7e_field_info),
-	trq_sel_fmap_7e_field_info
-},
-{"TRQ_SEL_FMAP_7F", 0x608,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7f_field_info),
-	trq_sel_fmap_7f_field_info
-},
-{"TRQ_SEL_FMAP_80", 0x60c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_80_field_info),
-	trq_sel_fmap_80_field_info
-},
-{"TRQ_SEL_FMAP_81", 0x610,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_81_field_info),
-	trq_sel_fmap_81_field_info
-},
-{"TRQ_SEL_FMAP_82", 0x614,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_82_field_info),
-	trq_sel_fmap_82_field_info
-},
-{"TRQ_SEL_FMAP_83", 0x618,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_83_field_info),
-	trq_sel_fmap_83_field_info
-},
-{"TRQ_SEL_FMAP_84", 0x61c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_84_field_info),
-	trq_sel_fmap_84_field_info
-},
-{"TRQ_SEL_FMAP_85", 0x620,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_85_field_info),
-	trq_sel_fmap_85_field_info
-},
-{"TRQ_SEL_FMAP_86", 0x624,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_86_field_info),
-	trq_sel_fmap_86_field_info
-},
-{"TRQ_SEL_FMAP_87", 0x628,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_87_field_info),
-	trq_sel_fmap_87_field_info
-},
-{"TRQ_SEL_FMAP_88", 0x62c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_88_field_info),
-	trq_sel_fmap_88_field_info
-},
-{"TRQ_SEL_FMAP_89", 0x630,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_89_field_info),
-	trq_sel_fmap_89_field_info
-},
-{"TRQ_SEL_FMAP_8A", 0x634,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8a_field_info),
-	trq_sel_fmap_8a_field_info
-},
-{"TRQ_SEL_FMAP_8B", 0x638,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8b_field_info),
-	trq_sel_fmap_8b_field_info
-},
-{"TRQ_SEL_FMAP_8C", 0x63c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8c_field_info),
-	trq_sel_fmap_8c_field_info
-},
-{"TRQ_SEL_FMAP_8D", 0x640,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8d_field_info),
-	trq_sel_fmap_8d_field_info
-},
-{"TRQ_SEL_FMAP_8E", 0x644,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8e_field_info),
-	trq_sel_fmap_8e_field_info
-},
-{"TRQ_SEL_FMAP_8F", 0x648,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8f_field_info),
-	trq_sel_fmap_8f_field_info
-},
-{"TRQ_SEL_FMAP_90", 0x64c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_90_field_info),
-	trq_sel_fmap_90_field_info
-},
-{"TRQ_SEL_FMAP_91", 0x650,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_91_field_info),
-	trq_sel_fmap_91_field_info
-},
-{"TRQ_SEL_FMAP_92", 0x654,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_92_field_info),
-	trq_sel_fmap_92_field_info
-},
-{"TRQ_SEL_FMAP_93", 0x658,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_93_field_info),
-	trq_sel_fmap_93_field_info
-},
-{"TRQ_SEL_FMAP_94", 0x65c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_94_field_info),
-	trq_sel_fmap_94_field_info
-},
-{"TRQ_SEL_FMAP_95", 0x660,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_95_field_info),
-	trq_sel_fmap_95_field_info
-},
-{"TRQ_SEL_FMAP_96", 0x664,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_96_field_info),
-	trq_sel_fmap_96_field_info
-},
-{"TRQ_SEL_FMAP_97", 0x668,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_97_field_info),
-	trq_sel_fmap_97_field_info
-},
-{"TRQ_SEL_FMAP_98", 0x66c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_98_field_info),
-	trq_sel_fmap_98_field_info
-},
-{"TRQ_SEL_FMAP_99", 0x670,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_99_field_info),
-	trq_sel_fmap_99_field_info
-},
-{"TRQ_SEL_FMAP_9A", 0x674,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9a_field_info),
-	trq_sel_fmap_9a_field_info
-},
-{"TRQ_SEL_FMAP_9B", 0x678,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9b_field_info),
-	trq_sel_fmap_9b_field_info
-},
-{"TRQ_SEL_FMAP_9C", 0x67c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9c_field_info),
-	trq_sel_fmap_9c_field_info
-},
-{"TRQ_SEL_FMAP_9D", 0x680,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9d_field_info),
-	trq_sel_fmap_9d_field_info
-},
-{"TRQ_SEL_FMAP_9E", 0x684,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9e_field_info),
-	trq_sel_fmap_9e_field_info
-},
-{"TRQ_SEL_FMAP_9F", 0x688,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9f_field_info),
-	trq_sel_fmap_9f_field_info
-},
-{"TRQ_SEL_FMAP_A0", 0x68c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a0_field_info),
-	trq_sel_fmap_a0_field_info
-},
-{"TRQ_SEL_FMAP_A1", 0x690,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a1_field_info),
-	trq_sel_fmap_a1_field_info
-},
-{"TRQ_SEL_FMAP_A2", 0x694,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a2_field_info),
-	trq_sel_fmap_a2_field_info
-},
-{"TRQ_SEL_FMAP_A3", 0x698,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a3_field_info),
-	trq_sel_fmap_a3_field_info
-},
-{"TRQ_SEL_FMAP_A4", 0x69c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a4_field_info),
-	trq_sel_fmap_a4_field_info
-},
-{"TRQ_SEL_FMAP_A5", 0x6a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a5_field_info),
-	trq_sel_fmap_a5_field_info
-},
-{"TRQ_SEL_FMAP_A6", 0x6a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a6_field_info),
-	trq_sel_fmap_a6_field_info
-},
-{"TRQ_SEL_FMAP_A7", 0x6a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a7_field_info),
-	trq_sel_fmap_a7_field_info
-},
-{"TRQ_SEL_FMAP_A8", 0x6ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a8_field_info),
-	trq_sel_fmap_a8_field_info
-},
-{"TRQ_SEL_FMAP_A9", 0x6b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a9_field_info),
-	trq_sel_fmap_a9_field_info
-},
-{"TRQ_SEL_FMAP_AA", 0x6b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_aa_field_info),
-	trq_sel_fmap_aa_field_info
-},
-{"TRQ_SEL_FMAP_AB", 0x6b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ab_field_info),
-	trq_sel_fmap_ab_field_info
-},
-{"TRQ_SEL_FMAP_AC", 0x6bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ac_field_info),
-	trq_sel_fmap_ac_field_info
-},
-{"TRQ_SEL_FMAP_AD", 0x6d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ad_field_info),
-	trq_sel_fmap_ad_field_info
-},
-{"TRQ_SEL_FMAP_AE", 0x6d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ae_field_info),
-	trq_sel_fmap_ae_field_info
-},
-{"TRQ_SEL_FMAP_AF", 0x6d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_af_field_info),
-	trq_sel_fmap_af_field_info
-},
-{"TRQ_SEL_FMAP_B0", 0x6dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b0_field_info),
-	trq_sel_fmap_b0_field_info
-},
-{"TRQ_SEL_FMAP_B1", 0x6e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b1_field_info),
-	trq_sel_fmap_b1_field_info
-},
-{"TRQ_SEL_FMAP_B2", 0x6e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b2_field_info),
-	trq_sel_fmap_b2_field_info
-},
-{"TRQ_SEL_FMAP_B3", 0x6e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b3_field_info),
-	trq_sel_fmap_b3_field_info
-},
-{"TRQ_SEL_FMAP_B4", 0x6ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b4_field_info),
-	trq_sel_fmap_b4_field_info
-},
-{"TRQ_SEL_FMAP_B5", 0x6f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b5_field_info),
-	trq_sel_fmap_b5_field_info
-},
-{"TRQ_SEL_FMAP_B6", 0x6f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b6_field_info),
-	trq_sel_fmap_b6_field_info
-},
-{"TRQ_SEL_FMAP_B7", 0x6f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b7_field_info),
-	trq_sel_fmap_b7_field_info
-},
-{"TRQ_SEL_FMAP_B8", 0x6fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b8_field_info),
-	trq_sel_fmap_b8_field_info
-},
-{"TRQ_SEL_FMAP_B9", 0x700,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b9_field_info),
-	trq_sel_fmap_b9_field_info
-},
-{"TRQ_SEL_FMAP_BA", 0x704,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ba_field_info),
-	trq_sel_fmap_ba_field_info
-},
-{"TRQ_SEL_FMAP_BB", 0x708,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bb_field_info),
-	trq_sel_fmap_bb_field_info
-},
-{"TRQ_SEL_FMAP_BC", 0x70c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bc_field_info),
-	trq_sel_fmap_bc_field_info
-},
-{"TRQ_SEL_FMAP_BD", 0x710,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bd_field_info),
-	trq_sel_fmap_bd_field_info
-},
-{"TRQ_SEL_FMAP_BE", 0x714,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_be_field_info),
-	trq_sel_fmap_be_field_info
-},
-{"TRQ_SEL_FMAP_BF", 0x718,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bf_field_info),
-	trq_sel_fmap_bf_field_info
-},
-{"TRQ_SEL_FMAP_C0", 0x71c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c0_field_info),
-	trq_sel_fmap_c0_field_info
-},
-{"TRQ_SEL_FMAP_C1", 0x720,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c1_field_info),
-	trq_sel_fmap_c1_field_info
-},
-{"TRQ_SEL_FMAP_C2", 0x734,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c2_field_info),
-	trq_sel_fmap_c2_field_info
-},
-{"TRQ_SEL_FMAP_C3", 0x748,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c3_field_info),
-	trq_sel_fmap_c3_field_info
-},
-{"TRQ_SEL_FMAP_C4", 0x74c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c4_field_info),
-	trq_sel_fmap_c4_field_info
-},
-{"TRQ_SEL_FMAP_C5", 0x750,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c5_field_info),
-	trq_sel_fmap_c5_field_info
-},
-{"TRQ_SEL_FMAP_C6", 0x754,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c6_field_info),
-	trq_sel_fmap_c6_field_info
-},
-{"TRQ_SEL_FMAP_C7", 0x758,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c7_field_info),
-	trq_sel_fmap_c7_field_info
-},
-{"TRQ_SEL_FMAP_C8", 0x75c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c8_field_info),
-	trq_sel_fmap_c8_field_info
-},
-{"TRQ_SEL_FMAP_C9", 0x760,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c9_field_info),
-	trq_sel_fmap_c9_field_info
-},
-{"TRQ_SEL_FMAP_CA", 0x764,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ca_field_info),
-	trq_sel_fmap_ca_field_info
-},
-{"TRQ_SEL_FMAP_CB", 0x768,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cb_field_info),
-	trq_sel_fmap_cb_field_info
-},
-{"TRQ_SEL_FMAP_CC", 0x76c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cc_field_info),
-	trq_sel_fmap_cc_field_info
-},
-{"TRQ_SEL_FMAP_CD", 0x770,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cd_field_info),
-	trq_sel_fmap_cd_field_info
-},
-{"TRQ_SEL_FMAP_CE", 0x774,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ce_field_info),
-	trq_sel_fmap_ce_field_info
-},
-{"TRQ_SEL_FMAP_CF", 0x778,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cf_field_info),
-	trq_sel_fmap_cf_field_info
-},
-{"TRQ_SEL_FMAP_D0", 0x77c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d0_field_info),
-	trq_sel_fmap_d0_field_info
-},
-{"TRQ_SEL_FMAP_D1", 0x780,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d1_field_info),
-	trq_sel_fmap_d1_field_info
-},
-{"TRQ_SEL_FMAP_D2", 0x784,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d2_field_info),
-	trq_sel_fmap_d2_field_info
-},
-{"TRQ_SEL_FMAP_D3", 0x788,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d3_field_info),
-	trq_sel_fmap_d3_field_info
-},
-{"TRQ_SEL_FMAP_D4", 0x78c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d4_field_info),
-	trq_sel_fmap_d4_field_info
-},
-{"TRQ_SEL_FMAP_D5", 0x790,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d5_field_info),
-	trq_sel_fmap_d5_field_info
-},
-{"TRQ_SEL_FMAP_D6", 0x794,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d6_field_info),
-	trq_sel_fmap_d6_field_info
-},
-{"TRQ_SEL_FMAP_D7", 0x798,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d7_field_info),
-	trq_sel_fmap_d7_field_info
-},
-{"TRQ_SEL_FMAP_D8", 0x79c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d8_field_info),
-	trq_sel_fmap_d8_field_info
-},
-{"TRQ_SEL_FMAP_D9", 0x7a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d9_field_info),
-	trq_sel_fmap_d9_field_info
-},
-{"TRQ_SEL_FMAP_DA", 0x7a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_da_field_info),
-	trq_sel_fmap_da_field_info
-},
-{"TRQ_SEL_FMAP_DB", 0x7a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_db_field_info),
-	trq_sel_fmap_db_field_info
-},
-{"TRQ_SEL_FMAP_DC", 0x7ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dc_field_info),
-	trq_sel_fmap_dc_field_info
-},
-{"TRQ_SEL_FMAP_DD", 0x7b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dd_field_info),
-	trq_sel_fmap_dd_field_info
-},
-{"TRQ_SEL_FMAP_DE", 0x7b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_de_field_info),
-	trq_sel_fmap_de_field_info
-},
-{"TRQ_SEL_FMAP_DF", 0x7b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_df_field_info),
-	trq_sel_fmap_df_field_info
-},
-{"TRQ_SEL_FMAP_E0", 0x7bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e0_field_info),
-	trq_sel_fmap_e0_field_info
-},
-{"TRQ_SEL_FMAP_E1", 0x7c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e1_field_info),
-	trq_sel_fmap_e1_field_info
-},
-{"TRQ_SEL_FMAP_E2", 0x7c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e2_field_info),
-	trq_sel_fmap_e2_field_info
-},
-{"TRQ_SEL_FMAP_E3", 0x7c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e3_field_info),
-	trq_sel_fmap_e3_field_info
-},
-{"TRQ_SEL_FMAP_E4", 0x7cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e4_field_info),
-	trq_sel_fmap_e4_field_info
-},
-{"TRQ_SEL_FMAP_E5", 0x7d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e5_field_info),
-	trq_sel_fmap_e5_field_info
-},
-{"TRQ_SEL_FMAP_E6", 0x7d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e6_field_info),
-	trq_sel_fmap_e6_field_info
-},
-{"TRQ_SEL_FMAP_E7", 0x7d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e7_field_info),
-	trq_sel_fmap_e7_field_info
-},
-{"TRQ_SEL_FMAP_E8", 0x7dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e8_field_info),
-	trq_sel_fmap_e8_field_info
-},
-{"TRQ_SEL_FMAP_E9", 0x7e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e9_field_info),
-	trq_sel_fmap_e9_field_info
-},
-{"TRQ_SEL_FMAP_EA", 0x7e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ea_field_info),
-	trq_sel_fmap_ea_field_info
-},
-{"TRQ_SEL_FMAP_EB", 0x7e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_eb_field_info),
-	trq_sel_fmap_eb_field_info
-},
-{"TRQ_SEL_FMAP_EC", 0x7ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ec_field_info),
-	trq_sel_fmap_ec_field_info
-},
-{"TRQ_SEL_FMAP_ED", 0x7f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ed_field_info),
-	trq_sel_fmap_ed_field_info
-},
-{"TRQ_SEL_FMAP_EE", 0x7f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ee_field_info),
-	trq_sel_fmap_ee_field_info
-},
-{"TRQ_SEL_FMAP_EF", 0x7f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ef_field_info),
-	trq_sel_fmap_ef_field_info
-},
-{"TRQ_SEL_FMAP_F0", 0x7fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f0_field_info),
-	trq_sel_fmap_f0_field_info
-},
-{"IND_CTXT_DATA_3", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_3_field_info),
-	ind_ctxt_data_3_field_info
-},
-{"IND_CTXT_DATA_2", 0x808,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_2_field_info),
-	ind_ctxt_data_2_field_info
-},
-{"IND_CTXT_DATA_1", 0x80c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_1_field_info),
-	ind_ctxt_data_1_field_info
-},
-{"IND_CTXT_DATA_0", 0x810,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_0_field_info),
-	ind_ctxt_data_0_field_info
-},
-{"IND_CTXT3", 0x814,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt3_field_info),
-	ind_ctxt3_field_info
-},
-{"IND_CTXT2", 0x818,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt2_field_info),
-	ind_ctxt2_field_info
-},
-{"IND_CTXT1", 0x81c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt1_field_info),
-	ind_ctxt1_field_info
-},
-{"IND_CTXT0", 0x820,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt0_field_info),
-	ind_ctxt0_field_info
-},
-{"IND_CTXT_CMD", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT_1", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_1_field_info),
-	c2h_timer_cnt_1_field_info
-},
-{"C2H_TIMER_CNT_2", 0xa04,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_2_field_info),
-	c2h_timer_cnt_2_field_info
-},
-{"C2H_TIMER_CNT_3", 0xa08,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_3_field_info),
-	c2h_timer_cnt_3_field_info
-},
-{"C2H_TIMER_CNT_4", 0xa0c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_4_field_info),
-	c2h_timer_cnt_4_field_info
-},
-{"C2H_TIMER_CNT_5", 0xa10,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_5_field_info),
-	c2h_timer_cnt_5_field_info
-},
-{"C2H_TIMER_CNT_6", 0xa14,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_6_field_info),
-	c2h_timer_cnt_6_field_info
-},
-{"C2H_TIMER_CNT_7", 0xa18,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_7_field_info),
-	c2h_timer_cnt_7_field_info
-},
-{"C2H_TIMER_CNT_8", 0xa1c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_8_field_info),
-	c2h_timer_cnt_8_field_info
-},
-{"C2H_TIMER_CNT_9", 0xa20,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_9_field_info),
-	c2h_timer_cnt_9_field_info
-},
-{"C2H_TIMER_CNT_A", 0xa24,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_a_field_info),
-	c2h_timer_cnt_a_field_info
-},
-{"C2H_TIMER_CNT_B", 0xa28,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_b_field_info),
-	c2h_timer_cnt_b_field_info
-},
-{"C2H_TIMER_CNT_C", 0xa2c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_c_field_info),
-	c2h_timer_cnt_c_field_info
-},
-{"C2H_TIMER_CNT_D", 0xa30,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_d_field_info),
-	c2h_timer_cnt_d_field_info
-},
-{"C2H_TIMER_CNT_E", 0xa34,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_e_field_info),
-	c2h_timer_cnt_e_field_info
-},
-{"C2H_TIMER_CNT_F", 0xa38,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_f_field_info),
-	c2h_timer_cnt_f_field_info
-},
-{"C2H_TIMER_CNT_10", 0xa3c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_10_field_info),
-	c2h_timer_cnt_10_field_info
-},
-{"C2H_CNT_TH_1", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_1_field_info),
-	c2h_cnt_th_1_field_info
-},
-{"C2H_CNT_TH_2", 0xa44,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_2_field_info),
-	c2h_cnt_th_2_field_info
-},
-{"C2H_CNT_TH_3", 0xa48,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_3_field_info),
-	c2h_cnt_th_3_field_info
-},
-{"C2H_CNT_TH_4", 0xa4c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_4_field_info),
-	c2h_cnt_th_4_field_info
-},
-{"C2H_CNT_TH_5", 0xa50,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_5_field_info),
-	c2h_cnt_th_5_field_info
-},
-{"C2H_CNT_TH_6", 0xa54,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_6_field_info),
-	c2h_cnt_th_6_field_info
-},
-{"C2H_CNT_TH_7", 0xa58,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_7_field_info),
-	c2h_cnt_th_7_field_info
-},
-{"C2H_CNT_TH_8", 0xa5c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_8_field_info),
-	c2h_cnt_th_8_field_info
-},
-{"C2H_CNT_TH_9", 0xa60,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_9_field_info),
-	c2h_cnt_th_9_field_info
-},
-{"C2H_CNT_TH_A", 0xa64,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_a_field_info),
-	c2h_cnt_th_a_field_info
-},
-{"C2H_CNT_TH_B", 0xa68,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_b_field_info),
-	c2h_cnt_th_b_field_info
-},
-{"C2H_CNT_TH_C", 0xa6c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_c_field_info),
-	c2h_cnt_th_c_field_info
-},
-{"C2H_CNT_TH_D", 0xa70,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_d_field_info),
-	c2h_cnt_th_d_field_info
-},
-{"C2H_CNT_TH_E", 0xa74,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_e_field_info),
-	c2h_cnt_th_e_field_info
-},
-{"C2H_CNT_TH_F", 0xa78,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_f_field_info),
-	c2h_cnt_th_f_field_info
-},
-{"C2H_CNT_TH_10", 0xa7c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_10_field_info),
-	c2h_cnt_th_10_field_info
-},
-{"C2H_QID2VEC_MAP_QID", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_qid_field_info),
-	c2h_qid2vec_map_qid_field_info
-},
-{"C2H_QID2VEC_MAP", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_field_info),
-	c2h_qid2vec_map_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ_0", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_0_field_info),
-	c2h_buf_sz_0_field_info
-},
-{"C2H_BUF_SZ_1", 0xab4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_1_field_info),
-	c2h_buf_sz_1_field_info
-},
-{"C2H_BUF_SZ_2", 0xab8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_2_field_info),
-	c2h_buf_sz_2_field_info
-},
-{"C2H_BUF_SZ_3", 0xabc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_3_field_info),
-	c2h_buf_sz_3_field_info
-},
-{"C2H_BUF_SZ_4", 0xac0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_4_field_info),
-	c2h_buf_sz_4_field_info
-},
-{"C2H_BUF_SZ_5", 0xac4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_5_field_info),
-	c2h_buf_sz_5_field_info
-},
-{"C2H_BUF_SZ_7", 0xac8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_7_field_info),
-	c2h_buf_sz_7_field_info
-},
-{"C2H_BUF_SZ_8", 0xacc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_8_field_info),
-	c2h_buf_sz_8_field_info
-},
-{"C2H_BUF_SZ_9", 0xad0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_9_field_info),
-	c2h_buf_sz_9_field_info
-},
-{"C2H_BUF_SZ_10", 0xad4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_10_field_info),
-	c2h_buf_sz_10_field_info
-},
-{"C2H_BUF_SZ_11", 0xad8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_11_field_info),
-	c2h_buf_sz_11_field_info
-},
-{"C2H_BUF_SZ_12", 0xae0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_12_field_info),
-	c2h_buf_sz_12_field_info
-},
-{"C2H_BUF_SZ_13", 0xae4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_13_field_info),
-	c2h_buf_sz_13_field_info
-},
-{"C2H_BUF_SZ_14", 0xae8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_14_field_info),
-	c2h_buf_sz_14_field_info
-},
-{"C2H_BUF_SZ_15", 0xaec,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_15_field_info),
-	c2h_buf_sz_15_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"C2H_CHANNEL_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_field_info),
-	c2h_channel_ctl_field_info
-},
-{"C2H_CHANNEL_CTL_1", 0x1008,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_1_field_info),
-	c2h_channel_ctl_1_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_CHANNEL_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_cmpl_desc_cnt_field_info),
-	c2h_channel_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_CHANNEL_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_field_info),
-	h2c_channel_ctl_field_info
-},
-{"H2C_CHANNEL_CTL_1", 0x1208,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_1_field_info),
-	h2c_channel_ctl_1_field_info
-},
-{"H2C_CHANNEL_CTL_2", 0x120c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_2_field_info),
-	h2c_channel_ctl_2_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_CHANNEL_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_cmpl_desc_cnt_field_info),
-	h2c_channel_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"FUNC_STATUS_REG", 0x2400,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_status_reg_field_info),
-	func_status_reg_field_info
-},
-{"FUNC_CMD_REG", 0x2404,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_cmd_reg_field_info),
-	func_cmd_reg_field_info
-},
-{"FUNC_INTERRUPT_VECTOR_REG", 0x2408,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_vector_reg_field_info),
-	func_interrupt_vector_reg_field_info
-},
-{"TARGET_FUNC_REG", 0x240c,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(target_func_reg_field_info),
-	target_func_reg_field_info
-},
-{"FUNC_INTERRUPT_CTL_REG", 0x2410,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_ctl_reg_field_info),
-	func_interrupt_ctl_reg_field_info
-},
-
-};
-
-uint32_t qdma_cpm4_config_num_regs_get(void)
-{
-	return (sizeof(qdma_cpm4_config_regs)/
-		sizeof(qdma_cpm4_config_regs[0]));
-}
-
-struct xreg_info *qdma_cpm4_config_regs_get(void)
-{
-	return qdma_cpm4_config_regs;
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.c
deleted file mode 100755
index 6cea8aa..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_list.h"
-
-void qdma_list_init_head(struct qdma_list_head *head)
-{
-	if (head)
-		head->prev = head->next = head;
-}
-
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head)
-{
-	head->prev->next = node;
-	node->next = head;
-	node->prev = head->prev;
-	head->prev = node;
-}
-
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node)
-{
-	node->prev->next = new_node;
-	new_node->prev = node->prev;
-	new_node->next = node;
-	node->prev = new_node;
-}
-
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node)
-{
-	new_node->prev = node;
-	new_node->next = node->next;
-	node->next->prev = new_node;
-	node->next = new_node;
-}
-
-
-void qdma_list_del(struct qdma_list_head *node)
-{
-	if (node) {
-		if (node->prev)
-			node->prev->next = node->next;
-		if (node->next)
-			node->next->prev = node->prev;
-	}
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.h
deleted file mode 100755
index f4224a4..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_list.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_LIST_H_
-#define __QDMA_LIST_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library provided list implementation definitions
- *
- * Header file *qdma_list.h* defines APIs for creating and managing list.
- */
-
-/**
- * struct qdma_list_head - data type for creating a list node
- */
-struct qdma_list_head {
-	struct qdma_list_head *prev;
-	struct qdma_list_head *next;
-	void *priv;
-};
-
-#define QDMA_LIST_HEAD_INIT(name) { &(name), &(name), NULL }
-
-#define QDMA_LIST_HEAD(name) \
-	struct qdma_list_head name = QDMA_LIST_HEAD_INIT(name)
-
-#define QDMA_LIST_GET_DATA(node) (node->priv)
-#define QDMA_LIST_SET_DATA(node, data) ((node)->priv = data)
-
-
-#define qdma_list_for_each_safe(pos, n, head) \
-	for (pos = (head)->next, n = pos->next; pos != (head); \
-		pos = n, n = pos->next)
-
-
-#define qdma_list_is_last_entry(entry, head) ((entry)->next == (head))
-
-#define qdma_list_is_empty(head) ((head)->next == (head))
-
-/*****************************************************************************/
-/**
- * qdma_list_init_head(): Init the list head
- *
- * @head:     head of the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_init_head(struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_add_tail(): add the given @node at the end of the list with @head
- *
- * @node:     new entry which has to be added at the end of the list with @head
- * @head:     head of the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_before(): add the given @node at the before a @node
- *
- * @new_node:     new entry which has to be added before @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_after(): add the given @node at the after a @node
- *
- * @new_node:     new entry which has to be added after @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_del(): delete an node from the list
- *
- * @node:     node in a list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_del(struct qdma_list_head *node);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_LIST_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.c
deleted file mode 100755
index 3dbae0d..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.c
+++ /dev/null
@@ -1,2156 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_mbox_protocol.h"
-
-/** mailbox function status */
-#define MBOX_FN_STATUS			0x0
-/** shift value for mailbox function status in msg */
-#define		S_MBOX_FN_STATUS_IN_MSG	0
-/** mask value for mailbox function status in msg*/
-#define		M_MBOX_FN_STATUS_IN_MSG	0x1
-/** face value for mailbox function status in msg */
-#define		F_MBOX_FN_STATUS_IN_MSG	0x1
-
-/** shift value for out msg */
-#define		S_MBOX_FN_STATUS_OUT_MSG	1
-/** mask value for out msg */
-#define		M_MBOX_FN_STATUS_OUT_MSG	0x1
-/** face value for out msg */
-#define		F_MBOX_FN_STATUS_OUT_MSG	(1 << S_MBOX_FN_STATUS_OUT_MSG)
-/** shift value for status ack */
-#define		S_MBOX_FN_STATUS_ACK	2	/* PF only, ack status */
-/** mask value for status ack */
-#define		M_MBOX_FN_STATUS_ACK	0x1
-/** face value for status ack */
-#define		F_MBOX_FN_STATUS_ACK	(1 << S_MBOX_FN_STATUS_ACK)
-/** shift value for status src */
-#define		S_MBOX_FN_STATUS_SRC	4	/* PF only, source func.*/
-/** mask value for status src */
-#define		M_MBOX_FN_STATUS_SRC	0xFFF
-/** face value for status src */
-#define		G_MBOX_FN_STATUS_SRC(x)	\
-		(((x) >> S_MBOX_FN_STATUS_SRC) & M_MBOX_FN_STATUS_SRC)
-/** face value for mailbox function status */
-#define MBOX_FN_STATUS_MASK \
-		(F_MBOX_FN_STATUS_IN_MSG | \
-		 F_MBOX_FN_STATUS_OUT_MSG | \
-		 F_MBOX_FN_STATUS_ACK)
-
-/** mailbox function commands register */
-#define MBOX_FN_CMD			0x4
-/** shift value for send command */
-#define		S_MBOX_FN_CMD_SND	0
-/** mask value for send command */
-#define		M_MBOX_FN_CMD_SND	0x1
-/** face value for send command */
-#define		F_MBOX_FN_CMD_SND	(1 << S_MBOX_FN_CMD_SND)
-/** shift value for receive command */
-#define		S_MBOX_FN_CMD_RCV	1
-/** mask value for receive command */
-#define		M_MBOX_FN_CMD_RCV	0x1
-/** face value for receive command */
-#define		F_MBOX_FN_CMD_RCV	(1 << S_MBOX_FN_CMD_RCV)
-/** shift value for vf reset */
-#define		S_MBOX_FN_CMD_VF_RESET	3	/* TBD PF only: reset VF */
-/** mask value for vf reset */
-#define		M_MBOX_FN_CMD_VF_RESET	0x1
-/** mailbox isr vector register */
-#define MBOX_ISR_VEC			0x8
-/** shift value for isr vector */
-#define		S_MBOX_ISR_VEC		0
-/** mask value for isr vector */
-#define		M_MBOX_ISR_VEC		0x1F
-/** face value for isr vector */
-#define		V_MBOX_ISR_VEC(x)	((x) & M_MBOX_ISR_VEC)
-/** mailbox FN target register */
-#define MBOX_FN_TARGET			0xC
-/** shift value for FN target id */
-#define		S_MBOX_FN_TARGET_ID	0
-/** mask value for FN target id */
-#define		M_MBOX_FN_TARGET_ID	0xFFF
-/** face value for FN target id */
-#define		V_MBOX_FN_TARGET_ID(x)	((x) & M_MBOX_FN_TARGET_ID)
-/** mailbox isr enable register */
-#define MBOX_ISR_EN			0x10
-/** shift value for isr enable */
-#define		S_MBOX_ISR_EN		0
-/** mask value for isr enable */
-#define		M_MBOX_ISR_EN		0x1
-/** face value for isr enable */
-#define		F_MBOX_ISR_EN		0x1
-/** pf acknowledge base */
-#define MBOX_PF_ACK_BASE		0x20
-/** pf acknowledge step */
-#define MBOX_PF_ACK_STEP		4
-/** pf acknowledge count */
-#define MBOX_PF_ACK_COUNT		8
-/** mailbox incoming msg base */
-#define MBOX_IN_MSG_BASE		0x800
-/** mailbox outgoing msg base */
-#define MBOX_OUT_MSG_BASE		0xc00
-/** mailbox msg step */
-#define MBOX_MSG_STEP			4
-/** mailbox register max */
-#define MBOX_MSG_REG_MAX		32
-
-/**
- * enum mbox_msg_op - mailbox messages opcode
- */
-#define MBOX_MSG_OP_RSP_OFFSET	0x80
-enum mbox_msg_op {
-	/** @MBOX_OP_BYE: vf offline, response not required*/
-	MBOX_OP_VF_BYE,
-	/** @MBOX_OP_HELLO: vf online */
-	MBOX_OP_HELLO,
-	/** @: FMAP programming request */
-	MBOX_OP_FMAP,
-	/** @MBOX_OP_CSR: global CSR registers request */
-	MBOX_OP_CSR,
-	/** @MBOX_OP_QREQ: request queues */
-	MBOX_OP_QREQ,
-	/** @MBOX_OP_QADD: notify of queue addition */
-	MBOX_OP_QNOTIFY_ADD,
-	/** @MBOX_OP_QNOTIFY_DEL: notify of queue deletion */
-	MBOX_OP_QNOTIFY_DEL,
-	/** @MBOX_OP_QACTIVE_CNT: get active q count */
-	MBOX_OP_GET_QACTIVE_CNT,
-	/** @MBOX_OP_QCTXT_WRT: queue context write */
-	MBOX_OP_QCTXT_WRT,
-	/** @MBOX_OP_QCTXT_RD: queue context read */
-	MBOX_OP_QCTXT_RD,
-	/** @MBOX_OP_QCTXT_CLR: queue context clear */
-	MBOX_OP_QCTXT_CLR,
-	/** @MBOX_OP_QCTXT_INV: queue context invalidate */
-	MBOX_OP_QCTXT_INV,
-	/** @MBOX_OP_INTR_CTXT_WRT: interrupt context write */
-	MBOX_OP_INTR_CTXT_WRT,
-	/** @MBOX_OP_INTR_CTXT_RD: interrupt context read */
-	MBOX_OP_INTR_CTXT_RD,
-	/** @MBOX_OP_INTR_CTXT_CLR: interrupt context clear */
-	MBOX_OP_INTR_CTXT_CLR,
-	/** @MBOX_OP_INTR_CTXT_INV: interrupt context invalidate */
-	MBOX_OP_INTR_CTXT_INV,
-	/** @MBOX_OP_RESET_PREPARE: PF to VF message for VF reset*/
-	MBOX_OP_RESET_PREPARE,
-	/** @MBOX_OP_RESET_DONE: PF reset done */
-	MBOX_OP_RESET_DONE,
-	/** @MBOX_OP_REG_LIST_READ: Read the register list */
-	MBOX_OP_REG_LIST_READ,
-	/** @MBOX_OP_PF_BYE: pf offline, response required */
-	MBOX_OP_PF_BYE,
-	/** @MBOX_OP_PF_RESET_VF_BYE: VF reset BYE, response required*/
-	MBOX_OP_PF_RESET_VF_BYE,
-
-	/** @MBOX_OP_HELLO_RESP: response to @MBOX_OP_HELLO */
-	MBOX_OP_HELLO_RESP = 0x81,
-	/** @MBOX_OP_FMAP_RESP: response to @MBOX_OP_FMAP */
-	MBOX_OP_FMAP_RESP,
-	/** @MBOX_OP_CSR_RESP: response to @MBOX_OP_CSR */
-	MBOX_OP_CSR_RESP,
-	/** @MBOX_OP_QREQ_RESP: response to @MBOX_OP_QREQ */
-	MBOX_OP_QREQ_RESP,
-	/** @MBOX_OP_QADD: notify of queue addition */
-	MBOX_OP_QNOTIFY_ADD_RESP,
-	/** @MBOX_OP_QNOTIFY_DEL: notify of queue deletion */
-	MBOX_OP_QNOTIFY_DEL_RESP,
-	/** @MBOX_OP_QACTIVE_CNT_RESP: get active q count */
-	MBOX_OP_GET_QACTIVE_CNT_RESP,
-	/** @MBOX_OP_QCTXT_WRT_RESP: response to @MBOX_OP_QCTXT_WRT */
-	MBOX_OP_QCTXT_WRT_RESP,
-	/** @MBOX_OP_QCTXT_RD_RESP: response to @MBOX_OP_QCTXT_RD */
-	MBOX_OP_QCTXT_RD_RESP,
-	/** @MBOX_OP_QCTXT_CLR_RESP: response to @MBOX_OP_QCTXT_CLR */
-	MBOX_OP_QCTXT_CLR_RESP,
-	/** @MBOX_OP_QCTXT_INV_RESP: response to @MBOX_OP_QCTXT_INV */
-	MBOX_OP_QCTXT_INV_RESP,
-	/** @MBOX_OP_INTR_CTXT_WRT_RESP: response to @MBOX_OP_INTR_CTXT_WRT */
-	MBOX_OP_INTR_CTXT_WRT_RESP,
-	/** @MBOX_OP_INTR_CTXT_RD_RESP: response to @MBOX_OP_INTR_CTXT_RD */
-	MBOX_OP_INTR_CTXT_RD_RESP,
-	/** @MBOX_OP_INTR_CTXT_CLR_RESP: response to @MBOX_OP_INTR_CTXT_CLR */
-	MBOX_OP_INTR_CTXT_CLR_RESP,
-	/** @MBOX_OP_INTR_CTXT_INV_RESP: response to @MBOX_OP_INTR_CTXT_INV */
-	MBOX_OP_INTR_CTXT_INV_RESP,
-	/** @MBOX_OP_RESET_PREPARE_RESP: response to @MBOX_OP_RESET_PREPARE */
-	MBOX_OP_RESET_PREPARE_RESP,
-	/** @MBOX_OP_RESET_DONE_RESP: response to @MBOX_OP_PF_VF_RESET */
-	MBOX_OP_RESET_DONE_RESP,
-	/** @MBOX_OP_REG_LIST_READ_RESP: response to @MBOX_OP_REG_LIST_READ */
-	MBOX_OP_REG_LIST_READ_RESP,
-	/** @MBOX_OP_PF_BYE_RESP: response to @MBOX_OP_PF_BYE */
-	MBOX_OP_PF_BYE_RESP,
-	/** @MBOX_OP_PF_RESET_VF_BYE_RESP:
-	 * response to @MBOX_OP_PF_RESET_VF_BYE
-	 */
-	MBOX_OP_PF_RESET_VF_BYE_RESP,
-	/** @MBOX_OP_MAX: total mbox opcodes*/
-	MBOX_OP_MAX
-};
-
-/**
- * struct mbox_msg_hdr - mailbox message header
- */
-struct mbox_msg_hdr {
-	/** @op: opcode */
-	uint8_t op;
-	/** @status: execution status */
-	char status;
-	/** @src_func_id: src function */
-	uint16_t src_func_id;
-	/** @dst_func_id: dst function */
-	uint16_t dst_func_id;
-};
-
-/**
- * struct mbox_msg_fmap - FMAP programming command
- */
-struct mbox_msg_hello {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qbase: start queue number in the queue range */
-	uint32_t qbase;
-	/** @qmax: max queue number in the queue range(0-2k) */
-	uint32_t qmax;
-	/** @dev_cap: device capability */
-	struct qdma_dev_attributes dev_cap;
-	/** @dma_device_index: dma_device_index */
-	uint32_t dma_device_index;
-};
-
-/**
- * struct mbox_msg_active_qcnt - get active queue count command
- */
-struct mbox_msg_active_qcnt {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @h2c_queues: number of h2c queues */
-	uint32_t h2c_queues;
-	/** @c2h_queues: number of c2h queues */
-	uint32_t c2h_queues;
-	/** @cmpt_queues: number of cmpt queues */
-	uint32_t cmpt_queues;
-};
-
-/**
- * struct mbox_msg_fmap - FMAP programming command
- */
-struct mbox_msg_fmap {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qbase: start queue number in the queue range */
-	int qbase;
-	/** @qmax: max queue number in the queue range(0-2k) */
-	uint32_t qmax;
-};
-
-/**
- * struct mbox_msg_csr - mailbox csr reading message
- */
-struct mbox_msg_csr {
-	/** @hdr - mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @csr_info: csr info data strucutre */
-	struct qdma_csr_info csr_info;
-};
-
-/**
- * struct mbox_msg_q_nitfy - queue add/del notify message
- */
-struct mbox_msg_q_nitfy {
-	/** @hdr - mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qid_hw: queue ID */
-	uint16_t qid_hw;
-	/** @q_type: type of q */
-	enum qdma_dev_q_type q_type;
-};
-
-/**
- * @struct - mbox_msg_qctxt
- * @brief queue context mailbox message header
- */
-struct mbox_msg_qctxt {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** @qid_hw: queue ID */
-	uint16_t qid_hw;
-	/** @st: streaming mode */
-	uint8_t st:1;
-	/** @c2h: c2h direction */
-	uint8_t c2h:1;
-	/** @cmpt_ctxt_type: completion context type */
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type:2;
-	/** @rsvd: reserved */
-	uint8_t rsvd:4;
-	/** union compiled_message - complete hw configuration */
-	union {
-		/** @descq_conf: mailbox message for queue context write*/
-		struct mbox_descq_conf descq_conf;
-		/** @descq_ctxt: mailbox message for queue context read*/
-		struct qdma_descq_context descq_ctxt;
-	};
-};
-
-/**
- * @struct - mbox_intr_ctxt
- * @brief queue context mailbox message header
- */
-struct mbox_intr_ctxt {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** interrupt context mailbox message */
-	struct mbox_msg_intr_ctxt ctxt;
-};
-
-/**
- * @struct - mbox_read_reg_list
- * @brief read register mailbox message header
- */
-struct mbox_read_reg_list {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** @group_num: reg group to read */
-	uint16_t group_num;
-	/** @num_regs: number of registers to read */
-	uint16_t num_regs;
-	/** @reg_list: register list */
-	struct qdma_reg_data reg_list[QDMA_MAX_REGISTER_DUMP];
-};
-
-union qdma_mbox_txrx {
-		/** mailbox message header*/
-		struct mbox_msg_hdr hdr;
-		/** hello mailbox message */
-		struct mbox_msg_hello hello;
-		/** fmap mailbox message */
-		struct mbox_msg_fmap fmap;
-		/** interrupt context mailbox message */
-		struct mbox_intr_ctxt intr_ctxt;
-		/** queue context mailbox message*/
-		struct mbox_msg_qctxt qctxt;
-		/** global csr mailbox message */
-		struct mbox_msg_csr csr;
-		/** acive q count */
-		struct mbox_msg_active_qcnt qcnt;
-		/** q add/del notify message */
-		struct mbox_msg_q_nitfy q_notify;
-		/** reg list mailbox message */
-		struct mbox_read_reg_list reg_read_list;
-		/** buffer to hold raw data between pf and vf */
-		uint32_t raw[MBOX_MSG_REG_MAX];
-};
-
-
-static inline uint32_t get_mbox_offset(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t mbox_base;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-	mbox_base = (is_vf) ?
-		hw->mbox_base_vf : hw->mbox_base_pf;
-
-	return mbox_base;
-}
-
-static inline void mbox_pf_hw_clear_func_ack(void *dev_hndl, uint16_t func_id)
-{
-	int idx = func_id / 32; /* bitmask, uint32_t reg */
-	int bit = func_id % 32;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, 0);
-
-	/* clear the function's ack status */
-	qdma_reg_write(dev_hndl,
-			mbox_base + MBOX_PF_ACK_BASE + idx * MBOX_PF_ACK_STEP,
-			(1 << bit));
-}
-
-static void qdma_mbox_memcpy(void *to, void *from, uint8_t size)
-{
-	uint8_t i;
-	uint8_t *_to = (uint8_t *)to;
-	uint8_t *_from = (uint8_t *)from;
-
-	for (i = 0; i < size; i++)
-		_to[i] = _from[i];
-}
-
-static void qdma_mbox_memset(void *to, uint8_t val, uint8_t size)
-{
-	uint8_t i;
-	uint8_t *_to = (uint8_t *)to;
-
-	for (i = 0; i < size; i++)
-		_to[i] = val;
-}
-
-static int get_ring_idx(void *dev_hndl, uint16_t ring_sz, uint16_t *rng_idx)
-{
-	uint32_t rng_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, rng_sz,
-			QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (ring_sz == (rng_sz[i] - 1)) {
-			*rng_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Ring size not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_RINGSZ);
-	return -QDMA_ERR_MBOX_INV_RINGSZ;
-}
-
-static int get_buf_idx(void *dev_hndl,  uint16_t buf_sz, uint16_t *buf_idx)
-{
-	uint32_t c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, c2h_buf_sz,
-			QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (c2h_buf_sz[i] == buf_sz) {
-			*buf_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Buf index not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_BUFSZ);
-	return -QDMA_ERR_MBOX_INV_BUFSZ;
-}
-
-static int get_cntr_idx(void *dev_hndl, uint8_t cntr_val, uint8_t *cntr_idx)
-{
-	uint32_t cntr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, cntr_th,
-			QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (cntr_th[i] == cntr_val) {
-			*cntr_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Counter val not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_CNTR_TH);
-	return -QDMA_ERR_MBOX_INV_CNTR_TH;
-}
-
-static int get_tmr_idx(void *dev_hndl, uint8_t tmr_val, uint8_t *tmr_idx)
-{
-	uint32_t tmr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, tmr_th,
-			QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (tmr_th[i] == tmr_val) {
-			*tmr_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Timer val not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_TMR_TH);
-	return -QDMA_ERR_MBOX_INV_TMR_TH;
-}
-
-static int mbox_compose_sw_context(void *dev_hndl,
-				   struct mbox_msg_qctxt *qctxt,
-				   struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	uint16_t rng_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !sw_ctxt) {
-		qdma_log_error("%s: qctxt=%p sw_ctxt=%p, err:%d\n",
-						__func__,
-						qctxt, sw_ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_ring_idx(dev_hndl, qctxt->descq_conf.ringsz, &rng_idx);
-	if (rv < 0) {
-		qdma_log_error("%s: failed to get ring index, err:%d\n",
-						__func__, rv);
-		return rv;
-	}
-	/* compose sw context */
-	sw_ctxt->vec = qctxt->descq_conf.intr_id;
-	sw_ctxt->intr_aggr = qctxt->descq_conf.intr_aggr;
-
-	sw_ctxt->ring_bs_addr = qctxt->descq_conf.ring_bs_addr;
-	sw_ctxt->wbi_chk = qctxt->descq_conf.wbi_chk;
-	sw_ctxt->wbi_intvl_en = qctxt->descq_conf.wbi_intvl_en;
-	sw_ctxt->rngsz_idx = rng_idx;
-	sw_ctxt->bypass = qctxt->descq_conf.en_bypass;
-	sw_ctxt->wbk_en = qctxt->descq_conf.wbk_en;
-	sw_ctxt->irq_en = qctxt->descq_conf.irq_en;
-	sw_ctxt->is_mm = ~qctxt->st;
-	sw_ctxt->mm_chn = 0;
-	sw_ctxt->qen = 1;
-	sw_ctxt->frcd_en = qctxt->descq_conf.forced_en;
-
-	sw_ctxt->desc_sz = qctxt->descq_conf.desc_sz;
-
-	/* pidx = 0; irq_ack = 0 */
-	sw_ctxt->fnc_id = qctxt->descq_conf.func_id;
-	sw_ctxt->irq_arm =  qctxt->descq_conf.irq_arm;
-
-	if (qctxt->st && qctxt->c2h) {
-		sw_ctxt->irq_en = 0;
-		sw_ctxt->irq_arm = 0;
-		sw_ctxt->wbk_en = 0;
-		sw_ctxt->wbi_chk = 0;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_compose_prefetch_context(void *dev_hndl,
-					 struct mbox_msg_qctxt *qctxt,
-				 struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	uint16_t buf_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !pfetch_ctxt) {
-		qdma_log_error("%s: qctxt=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__,
-					   qctxt,
-					   pfetch_ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	rv = get_buf_idx(dev_hndl, qctxt->descq_conf.bufsz, &buf_idx);
-	if (rv < 0) {
-		qdma_log_error("%s: failed to get buf index, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	/* prefetch context */
-	pfetch_ctxt->valid = 1;
-	pfetch_ctxt->bypass = qctxt->descq_conf.en_bypass_prefetch;
-	pfetch_ctxt->bufsz_idx = buf_idx;
-	pfetch_ctxt->pfch_en = qctxt->descq_conf.pfch_en;
-
-	return QDMA_SUCCESS;
-}
-
-
-static int mbox_compose_cmpt_context(void *dev_hndl,
-				     struct mbox_msg_qctxt *qctxt,
-				     struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	uint16_t rng_idx = 0;
-	uint8_t cntr_idx = 0, tmr_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !cmpt_ctxt) {
-		qdma_log_error("%s: qctxt=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, qctxt, cmpt_ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	rv = get_cntr_idx(dev_hndl, qctxt->descq_conf.cnt_thres, &cntr_idx);
-	if (rv < 0)
-		return rv;
-	rv = get_tmr_idx(dev_hndl, qctxt->descq_conf.timer_thres, &tmr_idx);
-	if (rv < 0)
-		return rv;
-	rv = get_ring_idx(dev_hndl, qctxt->descq_conf.cmpt_ringsz, &rng_idx);
-	if (rv < 0)
-		return rv;
-	/* writeback context */
-
-	cmpt_ctxt->bs_addr = qctxt->descq_conf.cmpt_ring_bs_addr;
-	cmpt_ctxt->en_stat_desc = qctxt->descq_conf.cmpl_stat_en;
-	cmpt_ctxt->en_int = qctxt->descq_conf.cmpt_int_en;
-	cmpt_ctxt->trig_mode = qctxt->descq_conf.triggermode;
-	cmpt_ctxt->fnc_id = qctxt->descq_conf.func_id;
-	cmpt_ctxt->timer_idx = tmr_idx;
-	cmpt_ctxt->counter_idx = cntr_idx;
-	cmpt_ctxt->color = 1;
-	cmpt_ctxt->ringsz_idx = rng_idx;
-
-	cmpt_ctxt->desc_sz = qctxt->descq_conf.cmpt_desc_sz;
-
-	cmpt_ctxt->valid = 1;
-
-	cmpt_ctxt->ovf_chk_dis = qctxt->descq_conf.dis_overflow_check;
-	cmpt_ctxt->vec = qctxt->descq_conf.intr_id;
-	cmpt_ctxt->int_aggr = qctxt->descq_conf.intr_aggr;
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_clear_queue_contexts(void *dev_hndl, uint8_t dma_device_index,
-			      uint16_t func_id, uint16_t qid_hw, uint8_t st,
-			      uint8_t c2h,
-			      enum mbox_cmpt_ctxt_type cmpt_ctxt_type)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	if (cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					    NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	} else {
-		rv = qdma_dev_qinfo_get(dma_device_index,
-				func_id, &qbase, &qmax);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to get qinfo, err:%d\n",
-					__func__, rv);
-			return rv;
-		}
-
-		q_range = qdma_dev_is_queue_in_range(dma_device_index,
-						func_id, qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE) {
-			qdma_log_error("%s: q_range invalid, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw,
-					  NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear sw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-					       QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear hw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-					       QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cr_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (st && c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						       NULL,
-						       QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				qdma_log_error("%s:clear pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						     NULL,
-						     QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-							__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_invalidate_queue_contexts(void *dev_hndl,
-		uint8_t dma_device_index, uint16_t func_id,
-		uint16_t qid_hw, uint8_t st,
-		uint8_t c2h, enum mbox_cmpt_ctxt_type cmpt_ctxt_type)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	if (cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw, NULL,
-					    QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: inv cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	} else {
-		rv = qdma_dev_qinfo_get(dma_device_index, func_id,
-				&qbase, &qmax);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to get qinfo, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		q_range = qdma_dev_is_queue_in_range(dma_device_index,
-						func_id, qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE) {
-			qdma_log_error("%s: Invalid qrange, err:%d\n",
-							__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw,
-					  NULL, QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: inv sw ctxt, err:%d\n",
-							__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-				QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: clear hw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-				QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cr_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (st && c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						NULL,
-						QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				qdma_log_error("%s: inv pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						NULL,
-						QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				qdma_log_error("%s: inv cmpt ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_write_queue_contexts(void *dev_hndl, uint8_t dma_device_index,
-				     struct mbox_msg_qctxt *qctxt)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_descq_context descq_ctxt;
-	uint16_t qid_hw = qctxt->qid_hw;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = qdma_dev_qinfo_get(dma_device_index, qctxt->descq_conf.func_id,
-				&qbase, &qmax);
-	if (rv < 0)
-		return rv;
-
-	q_range = qdma_dev_is_queue_in_range(dma_device_index,
-					     qctxt->descq_conf.func_id,
-					     qctxt->qid_hw);
-	if (q_range != QDMA_DEV_Q_IN_RANGE) {
-		qdma_log_error("%s: Invalid qrange, err:%d\n",
-							__func__, rv);
-		return rv;
-	}
-
-	qdma_mbox_memset(&descq_ctxt, 0, sizeof(struct qdma_descq_context));
-
-	if (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = mbox_compose_cmpt_context(dev_hndl, qctxt,
-			       &descq_ctxt.cmpt_ctxt);
-		if (rv < 0)
-			return rv;
-
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					    NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-								__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-			     &descq_ctxt.cmpt_ctxt, QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: write cmpt ctxt, err:%d\n",
-								__func__, rv);
-			return rv;
-		}
-
-	} else {
-		rv = mbox_compose_sw_context(dev_hndl, qctxt,
-				&descq_ctxt.sw_ctxt);
-		if (rv < 0)
-			return rv;
-
-		if (qctxt->st && qctxt->c2h) {
-			rv = mbox_compose_prefetch_context(dev_hndl, qctxt,
-						&descq_ctxt.pfetch_ctxt);
-			if (rv < 0)
-				return rv;
-		}
-
-		if ((qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = mbox_compose_cmpt_context(dev_hndl, qctxt,
-							&descq_ctxt.cmpt_ctxt);
-			if (rv < 0)
-				return rv;
-		}
-
-		rv = mbox_clear_queue_contexts(dev_hndl, dma_device_index,
-					qctxt->descq_conf.func_id,
-					qctxt->qid_hw,
-					qctxt->st,
-					qctxt->c2h,
-					qctxt->cmpt_ctxt_type);
-		if (rv < 0)
-			return rv;
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, qctxt->c2h, qid_hw,
-					   &descq_ctxt.sw_ctxt,
-					   QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: write sw ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (qctxt->st && qctxt->c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						       &descq_ctxt.pfetch_ctxt,
-						       QDMA_HW_ACCESS_WRITE);
-			if (rv < 0) {
-				qdma_log_error("%s:write pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						     &descq_ctxt.cmpt_ctxt,
-						     QDMA_HW_ACCESS_WRITE);
-			if (rv < 0) {
-				qdma_log_error("%s: write cmpt ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-	return QDMA_SUCCESS;
-}
-
-static int mbox_read_queue_contexts(void *dev_hndl, uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct qdma_descq_context *ctxt)
-{
-	int rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->sw_ctxt,
-				  QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read sw ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->hw_ctxt,
-				  QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read hw ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->cr_ctxt,
-				      QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read credit ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_fmap_conf(dev_hndl, func_id, &ctxt->fmap,
-				      QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read fmap ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	if (st && c2h) {
-		rv = hw->qdma_pfetch_ctx_conf(dev_hndl,
-					qid_hw, &ctxt->pfetch_ctxt,
-					QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s: read pfetch ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-
-	if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-	    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl,
-					qid_hw, &ctxt->cmpt_ctxt,
-					QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s: read cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_pf_rcv_msg_handler(void *dev_hndl, uint8_t dma_device_index,
-				 uint16_t func_id, uint32_t *rcv_msg,
-				 uint32_t *resp_msg)
-{
-	union qdma_mbox_txrx *rcv =  (union qdma_mbox_txrx *)rcv_msg;
-	union qdma_mbox_txrx *resp =  (union qdma_mbox_txrx *)resp_msg;
-	struct mbox_msg_hdr *hdr = &rcv->hdr;
-	struct qdma_hw_access *hw = NULL;
-	int rv = QDMA_SUCCESS;
-	int ret = 0;
-
-	if (!rcv) {
-		qdma_log_error("%s: rcv_msg=%p failure:%d\n",
-						__func__, rcv,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	switch (rcv->hdr.op) {
-	case MBOX_OP_VF_BYE:
-	{
-		struct qdma_fmap_cfg fmap;
-
-		fmap.qbase = 0;
-		fmap.qmax = 0;
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap,
-					QDMA_HW_ACCESS_WRITE);
-
-		qdma_dev_entry_destroy(dma_device_index, hdr->src_func_id);
-
-		ret = QDMA_MBOX_VF_OFFLINE;
-	}
-	break;
-	case MBOX_OP_PF_RESET_VF_BYE:
-	{
-		struct qdma_fmap_cfg fmap;
-
-		fmap.qbase = 0;
-		fmap.qmax = 0;
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap,
-					QDMA_HW_ACCESS_WRITE);
-
-		qdma_dev_entry_destroy(dma_device_index, hdr->src_func_id);
-
-		ret = QDMA_MBOX_VF_RESET_BYE;
-	}
-	break;
-	case MBOX_OP_HELLO:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-		struct qdma_fmap_cfg fmap_cfg;
-		struct mbox_msg_hello *rsp_hello = &resp->hello;
-
-		rv = qdma_dev_qinfo_get(dma_device_index, hdr->src_func_id,
-				&fmap->qbase, &fmap->qmax);
-		if (rv < 0)
-			rv = qdma_dev_entry_create(dma_device_index,
-					hdr->src_func_id);
-
-		if (!rv) {
-			rsp_hello->qbase = fmap->qbase;
-			rsp_hello->qmax = fmap->qmax;
-			rsp_hello->dma_device_index = dma_device_index;
-			hw->qdma_get_device_attributes(dev_hndl,
-						       &rsp_hello->dev_cap);
-		}
-		qdma_mbox_memset(&fmap_cfg, 0,
-				 sizeof(struct qdma_fmap_cfg));
-		hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap_cfg,
-				   QDMA_HW_ACCESS_WRITE);
-
-		ret = QDMA_MBOX_VF_ONLINE;
-	}
-	break;
-	case MBOX_OP_FMAP:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-		struct qdma_fmap_cfg fmap_cfg;
-
-		fmap_cfg.qbase = fmap->qbase;
-		fmap_cfg.qmax = fmap->qmax;
-
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id,
-				     &fmap_cfg, QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to write fmap, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-	break;
-	case MBOX_OP_CSR:
-	{
-		struct mbox_msg_csr *rsp_csr = &resp->csr;
-		struct qdma_dev_attributes dev_cap;
-
-		uint32_t ringsz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t bufsz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t tmr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t cntr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		int i;
-
-		rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, ringsz,
-				QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-		if (rv < 0)
-			goto exit_func;
-
-		hw->qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-		if (dev_cap.st_en) {
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, bufsz,
-				QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-		}
-
-		if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, tmr_th,
-				QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, cntr_th,
-				QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-		}
-
-		for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-			rsp_csr->csr_info.ringsz[i] = ringsz[i] &
-					0xFFFF;
-			if (!rv) {
-				rsp_csr->csr_info.bufsz[i] = bufsz[i] & 0xFFFF;
-				rsp_csr->csr_info.timer_cnt[i] = tmr_th[i] &
-						0xFF;
-				rsp_csr->csr_info.cnt_thres[i] = cntr_th[i] &
-						0xFF;
-			}
-		}
-
-		if (rv == -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)
-			rv = QDMA_SUCCESS;
-	}
-	break;
-	case MBOX_OP_QREQ:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-
-		rv = qdma_dev_update(dma_device_index,
-					  hdr->src_func_id,
-					  fmap->qmax, &fmap->qbase);
-		if (rv == 0)
-			rv = qdma_dev_qinfo_get(dma_device_index,
-						hdr->src_func_id,
-						&resp->fmap.qbase,
-						&resp->fmap.qmax);
-		if (rv < 0)
-			rv = -QDMA_ERR_MBOX_NUM_QUEUES;
-		else {
-			struct qdma_fmap_cfg fmap_cfg;
-
-			qdma_mbox_memset(&fmap_cfg, 0,
-					 sizeof(struct qdma_fmap_cfg));
-			hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id,
-					&fmap_cfg, QDMA_HW_ACCESS_WRITE);
-		}
-	}
-	break;
-	case MBOX_OP_QNOTIFY_ADD:
-	{
-		struct mbox_msg_q_nitfy *q_notify = &rcv->q_notify;
-		enum qdma_dev_q_range q_range;
-
-		q_range = qdma_dev_is_queue_in_range(
-				dma_device_index,
-				q_notify->hdr.src_func_id,
-				q_notify->qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE)
-			rv = -QDMA_ERR_MBOX_INV_QID;
-		else
-			rv = qdma_dev_increment_active_queue(
-					dma_device_index,
-					q_notify->hdr.src_func_id,
-					q_notify->q_type);
-	}
-	break;
-	case MBOX_OP_QNOTIFY_DEL:
-	{
-		struct mbox_msg_q_nitfy *q_notify = &rcv->q_notify;
-		enum qdma_dev_q_range q_range;
-
-		q_range = qdma_dev_is_queue_in_range(
-				dma_device_index,
-				q_notify->hdr.src_func_id,
-				q_notify->qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE)
-			rv = -QDMA_ERR_MBOX_INV_QID;
-		else
-			rv = qdma_dev_decrement_active_queue(
-					dma_device_index,
-					q_notify->hdr.src_func_id,
-					q_notify->q_type);
-	}
-	break;
-	case MBOX_OP_GET_QACTIVE_CNT:
-	{
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_H2C);
-
-		resp->qcnt.h2c_queues = rv;
-
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_C2H);
-
-		resp->qcnt.c2h_queues = rv;
-
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_CMPT);
-
-		resp->qcnt.cmpt_queues = rv;
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_WRT:
-	{
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-		struct qdma_indirect_intr_ctxt *ctxt;
-		uint8_t i;
-		uint32_t ring_index;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			ring_index = ictxt->ring_index_list[i];
-
-			ctxt = &ictxt->ictxt[i];
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index,
-						      NULL,
-						      QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0)
-				resp->hdr.status = rv;
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index, ctxt,
-						      QDMA_HW_ACCESS_WRITE);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_RD:
-	{
-		struct mbox_msg_intr_ctxt *rcv_ictxt = &rcv->intr_ctxt.ctxt;
-		struct mbox_msg_intr_ctxt *rsp_ictxt = &resp->intr_ctxt.ctxt;
-		uint8_t i;
-		uint32_t ring_index;
-
-		for (i = 0; i < rcv_ictxt->num_rings; i++) {
-			ring_index = rcv_ictxt->ring_index_list[i];
-
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index,
-						      &rsp_ictxt->ictxt[i],
-						      QDMA_HW_ACCESS_READ);
-			if (rv < 0)
-				resp->hdr.status = rv;
-
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_CLR:
-	{
-		int i;
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			rv = hw->qdma_indirect_intr_ctx_conf(
-					dev_hndl,
-					ictxt->ring_index_list[i],
-					NULL, QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_INV:
-	{
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-		int i;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			rv = hw->qdma_indirect_intr_ctx_conf(
-					dev_hndl,
-					ictxt->ring_index_list[i],
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_QCTXT_INV:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_invalidate_queue_contexts(dev_hndl,
-							dma_device_index,
-							hdr->src_func_id,
-							qctxt->qid_hw,
-							qctxt->st,
-							qctxt->c2h,
-							qctxt->cmpt_ctxt_type);
-	}
-	break;
-	case MBOX_OP_QCTXT_CLR:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_clear_queue_contexts(dev_hndl,
-						dma_device_index,
-						hdr->src_func_id,
-						qctxt->qid_hw,
-						qctxt->st,
-						qctxt->c2h,
-						qctxt->cmpt_ctxt_type);
-	}
-	break;
-	case MBOX_OP_QCTXT_RD:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_read_queue_contexts(dev_hndl, hdr->src_func_id,
-						qctxt->qid_hw,
-						qctxt->st,
-						qctxt->c2h,
-						qctxt->cmpt_ctxt_type,
-						&resp->qctxt.descq_ctxt);
-	}
-	break;
-	case MBOX_OP_QCTXT_WRT:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		qctxt->descq_conf.func_id = hdr->src_func_id;
-		rv = mbox_write_queue_contexts(dev_hndl,
-				dma_device_index, qctxt);
-	}
-	break;
-	case MBOX_OP_RESET_PREPARE_RESP:
-		return QDMA_MBOX_VF_RESET;
-	case MBOX_OP_RESET_DONE_RESP:
-		return QDMA_MBOX_PF_RESET_DONE;
-	case MBOX_OP_REG_LIST_READ:
-	{
-		struct mbox_read_reg_list *rcv_read_reg_list =
-						&rcv->reg_read_list;
-		struct mbox_read_reg_list *rsp_read_reg_list =
-						&resp->reg_read_list;
-
-		rv = hw->qdma_read_reg_list((void *)dev_hndl, 1,
-				 rcv_read_reg_list->group_num,
-				&rsp_read_reg_list->num_regs,
-				rsp_read_reg_list->reg_list);
-
-		if (rv < 0 || rsp_read_reg_list->num_regs == 0) {
-			rv = -QDMA_ERR_MBOX_REG_READ_FAILED;
-			goto exit_func;
-		}
-
-	}
-	break;
-	case MBOX_OP_PF_BYE_RESP:
-		return QDMA_MBOX_PF_BYE;
-	default:
-		qdma_log_error("%s: op=%d invalid, err:%d\n",
-						__func__,
-						rcv->hdr.op,
-						-QDMA_ERR_MBOX_INV_MSG);
-		return -QDMA_ERR_MBOX_INV_MSG;
-	break;
-	}
-
-exit_func:
-	resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-	resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-	resp->hdr.src_func_id = func_id;
-
-	resp->hdr.status = rv;
-
-	return ret;
-}
-
-int qmda_mbox_compose_vf_online(uint16_t func_id,
-				uint16_t qmax, int *qbase, uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_HELLO;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = (uint32_t)*qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_offline(uint16_t func_id,
-				 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_VF_BYE;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_reset_offline(uint16_t func_id,
-				 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_PF_RESET_VF_BYE;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-
-
-int qdma_mbox_compose_vf_qreq(uint16_t func_id,
-			      uint16_t qmax, int qbase, uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QREQ;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_notify_qadd(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QNOTIFY_ADD;
-	msg->hdr.src_func_id = func_id;
-	msg->q_notify.qid_hw = qid_hw;
-	msg->q_notify.q_type = q_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_get_device_active_qcnt(uint16_t func_id,
-		uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_GET_QACTIVE_CNT;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_notify_qdel(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				    uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QNOTIFY_DEL;
-	msg->hdr.src_func_id = func_id;
-	msg->q_notify.qid_hw = qid_hw;
-	msg->q_notify.q_type = q_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_fmap_prog(uint16_t func_id,
-				   uint16_t qmax, int qbase,
-				   uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-					__func__, raw_data,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_FMAP;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = (uint32_t)qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_write(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct mbox_descq_conf *descq_conf,
-			uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_WRT;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	qdma_mbox_memcpy(&msg->qctxt.descq_conf, descq_conf,
-	       sizeof(struct mbox_descq_conf));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_read(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_RD;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_invalidate(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_INV;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_clear(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_CLR;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_csr_read(uint16_t func_id,
-			       uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_CSR;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_reg_read(uint16_t func_id,
-					uint16_t group_num,
-					uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_REG_LIST_READ;
-	msg->hdr.src_func_id = func_id;
-	msg->reg_read_list.group_num = group_num;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_write(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_WRT;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_read(uint16_t func_id,
-					struct mbox_msg_intr_ctxt *intr_ctxt,
-					uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_RD;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_clear(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_CLR;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_invalidate(uint16_t func_id,
-				      struct mbox_msg_intr_ctxt *intr_ctxt,
-				      uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_INV;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-uint8_t qdma_mbox_is_msg_response(uint32_t *send_data, uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *tx_msg = (union qdma_mbox_txrx *)send_data;
-	union qdma_mbox_txrx *rx_msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return ((tx_msg->hdr.op + MBOX_MSG_OP_RSP_OFFSET) == rx_msg->hdr.op) ?
-			1 : 0;
-}
-
-int qdma_mbox_vf_response_status(uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return msg->hdr.status;
-}
-
-uint8_t qdma_mbox_vf_func_id_get(uint32_t *rcv_data, uint8_t is_vf)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-	uint16_t func_id;
-
-	if (is_vf)
-		func_id = msg->hdr.dst_func_id;
-	else
-		func_id = msg->hdr.src_func_id;
-
-	return func_id;
-}
-
-int qdma_mbox_vf_active_queues_get(uint32_t *rcv_data,
-		enum qdma_dev_q_type q_type)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-	int queues = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_H2C)
-		queues = msg->qcnt.h2c_queues;
-
-	if (q_type == QDMA_DEV_Q_TYPE_C2H)
-		queues = msg->qcnt.c2h_queues;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT)
-		queues = msg->qcnt.cmpt_queues;
-
-	return queues;
-}
-
-
-uint8_t qdma_mbox_vf_parent_func_id_get(uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return msg->hdr.src_func_id;
-}
-
-int qdma_mbox_vf_dev_info_get(uint32_t *rcv_data,
-	struct qdma_dev_attributes *dev_cap, uint32_t *dma_device_index)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*dev_cap = msg->hello.dev_cap;
-	*dma_device_index = msg->hello.dma_device_index;
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_qinfo_get(uint32_t *rcv_data, int *qbase, uint16_t *qmax)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*qbase = msg->fmap.qbase;
-	*qmax = msg->fmap.qmax;
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_csr_get(uint32_t *rcv_data, struct qdma_csr_info *csr)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(csr, &msg->csr.csr_info, sizeof(struct qdma_csr_info));
-
-	return msg->hdr.status;
-
-}
-
-int qdma_mbox_vf_reg_list_get(uint32_t *rcv_data,
-		uint16_t *num_regs, struct qdma_reg_data *reg_list)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*num_regs = msg->reg_read_list.num_regs;
-	qdma_mbox_memcpy(reg_list, &(msg->reg_read_list.reg_list),
-			(*num_regs * sizeof(struct qdma_reg_data)));
-
-	return msg->hdr.status;
-
-}
-
-int qdma_mbox_vf_context_get(uint32_t *rcv_data,
-			     struct qdma_descq_context *ctxt)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(ctxt, &msg->qctxt.descq_ctxt,
-			 sizeof(struct qdma_descq_context));
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_intr_context_get(uint32_t *rcv_data,
-				  struct mbox_msg_intr_ctxt *ictxt)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(ictxt, &msg->intr_ctxt.ctxt,
-			 sizeof(struct mbox_msg_intr_ctxt));
-
-	return msg->hdr.status;
-}
-
-void qdma_mbox_pf_hw_clear_ack(void *dev_hndl)
-{
-	uint32_t v;
-	uint32_t reg;
-	int i;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, 0);
-
-	reg = mbox_base + MBOX_PF_ACK_BASE;
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if ((v & F_MBOX_FN_STATUS_ACK) == 0)
-		return;
-
-	for (i = 0; i < MBOX_PF_ACK_COUNT; i++, reg += MBOX_PF_ACK_STEP) {
-		v = qdma_reg_read(dev_hndl, reg);
-
-		if (!v)
-			continue;
-
-		/* clear the ack status */
-		qdma_reg_write(dev_hndl, reg, v);
-	}
-}
-
-int qdma_mbox_send(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data)
-{
-	int i;
-	uint32_t reg = MBOX_OUT_MSG_BASE;
-	uint32_t v;
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-	uint16_t dst_func_id = msg->hdr.dst_func_id;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if (v & F_MBOX_FN_STATUS_OUT_MSG)
-		return -QDMA_ERR_MBOX_SEND_BUSY;
-
-	if (!is_vf)
-		qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_TARGET,
-				V_MBOX_FN_TARGET_ID(dst_func_id));
-
-	for (i = 0; i < MBOX_MSG_REG_MAX; i++, reg += MBOX_MSG_STEP)
-		qdma_reg_write(dev_hndl, mbox_base + reg, raw_data[i]);
-
-	/* clear the outgoing ack */
-	if (!is_vf)
-		mbox_pf_hw_clear_func_ack(dev_hndl, dst_func_id);
-
-
-	qdma_log_debug("%s %s tx from_id=%d, to_id=%d, opcode=0x%x\n", __func__,
-			is_vf?"VF":"PF", msg->hdr.src_func_id,
-			msg->hdr.dst_func_id, msg->hdr.op);
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD, F_MBOX_FN_CMD_SND);
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_rcv(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data)
-{
-	uint32_t reg = MBOX_IN_MSG_BASE;
-	uint32_t v = 0;
-	int all_zero_msg = 1;
-	int i;
-	uint32_t from_id = 0;
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-
-	if (!(v & M_MBOX_FN_STATUS_IN_MSG))
-		return -QDMA_ERR_MBOX_NO_MSG_IN;
-
-	if (!is_vf) {
-		from_id = G_MBOX_FN_STATUS_SRC(v);
-		qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_TARGET, from_id);
-	}
-
-	for (i = 0; i < MBOX_MSG_REG_MAX; i++, reg += MBOX_MSG_STEP) {
-		raw_data[i] = qdma_reg_read(dev_hndl, mbox_base + reg);
-		/* if rcv'ed message is all zero, stop and disable the mbox,
-		 * the h/w mbox is not working properly
-		 */
-		if (raw_data[i])
-			all_zero_msg = 0;
-	}
-
-	/* ack'ed the sender */
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD, F_MBOX_FN_CMD_RCV);
-	if (all_zero_msg) {
-		qdma_log_error("%s: Message recv'd is all zeros. failure:%d\n",
-					__func__,
-					-QDMA_ERR_MBOX_ALL_ZERO_MSG);
-		return -QDMA_ERR_MBOX_ALL_ZERO_MSG;
-	}
-
-
-	qdma_log_debug("%s %s fid=%d, opcode=0x%x\n", __func__,
-				   is_vf?"VF":"PF", msg->hdr.dst_func_id,
-				   msg->hdr.op);
-	if (!is_vf && (from_id != msg->hdr.src_func_id))
-		msg->hdr.src_func_id = from_id;
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_mbox_hw_init(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t v;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	if (is_vf) {
-		v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-		if (v & M_MBOX_FN_STATUS_IN_MSG)
-			qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD,
-				    F_MBOX_FN_CMD_RCV);
-	} else
-		qdma_mbox_pf_hw_clear_ack(dev_hndl);
-}
-
-void qdma_mbox_enable_interrupts(void *dev_hndl, uint8_t is_vf)
-{
-	int vector = 0x0;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_VEC, vector);
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_EN, 0x1);
-}
-
-void qdma_mbox_disable_interrupts(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_EN, 0x0);
-}
-
-
-int qdma_mbox_compose_vf_reset_message(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_RESET_PREPARE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_compose_pf_reset_done_message(uint32_t *raw_data,
-					uint8_t src_funcid, uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_RESET_DONE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_compose_pf_offline(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_PF_BYE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_vf_rcv_msg_handler(uint32_t *rcv_msg, uint32_t *resp_msg)
-{
-	union qdma_mbox_txrx *rcv =  (union qdma_mbox_txrx *)rcv_msg;
-	union qdma_mbox_txrx *resp =  (union qdma_mbox_txrx *)resp_msg;
-	int rv = 0;
-
-	switch (rcv->hdr.op) {
-	case MBOX_OP_RESET_PREPARE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_VF_RESET;
-		break;
-	case MBOX_OP_RESET_DONE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_PF_RESET_DONE;
-		break;
-	case MBOX_OP_PF_BYE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_PF_BYE;
-		break;
-	default:
-		break;
-	}
-	return rv;
-}
-
-uint8_t qdma_mbox_out_status(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t v;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if (v & F_MBOX_FN_STATUS_OUT_MSG)
-		return 1;
-	else
-		return 0;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.h
deleted file mode 100755
index 243ee75..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_mbox_protocol.h
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_MBOX_PROTOCOL_H_
-#define __QDMA_MBOX_PROTOCOL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA message box handling interface definitions
- *
- * Header file *qdma_mbox_protocol.h* defines data structures and function
- * signatures exported for QDMA Mbox message handling.
- */
-
-#include "qdma_platform.h"
-#include "qdma_resource_mgmt.h"
-
-
-#define QDMA_MBOX_VF_ONLINE			(1)
-#define QDMA_MBOX_VF_OFFLINE		(-1)
-#define QDMA_MBOX_VF_RESET			(2)
-#define QDMA_MBOX_PF_RESET_DONE		(3)
-#define QDMA_MBOX_PF_BYE			(4)
-#define QDMA_MBOX_VF_RESET_BYE            (5)
-
-/** mailbox register max */
-#define MBOX_MSG_REG_MAX		32
-
-#define mbox_invalidate_msg(m)	{ (m)->hdr.op = MBOX_OP_NOOP; }
-
-/**
- * struct mbox_descq_conf - collective bit-fields of all contexts
- */
-struct mbox_descq_conf {
-
-	/** @ring_bs_addr: ring base address */
-	uint64_t ring_bs_addr;
-	/** @cmpt_ring_bs_addr: completion ring base address */
-	uint64_t cmpt_ring_bs_addr;
-	/** @forced_en: enable fetch credit */
-	uint32_t forced_en:1;
-	/** @en_bypass: bypass enable */
-	uint32_t en_bypass:1;
-	/** @irq_arm: arm irq */
-	uint32_t irq_arm:1;
-	/** @wbi_intvl_en: writeback interval enable */
-	uint32_t wbi_intvl_en:1;
-	/** @wbi_chk: writeback pending check */
-	uint32_t wbi_chk:1;
-	/** @at: address translation */
-	uint32_t at:1;
-	/** @wbk_en: writeback enable */
-	uint32_t wbk_en:1;
-	/** @irq_en: irq enable */
-	uint32_t irq_en:1;
-	/** @pfch_en: prefetch enable */
-	uint32_t pfch_en:1;
-	/** @en_bypass_prefetch: prefetch bypass enable */
-	uint32_t en_bypass_prefetch:1;
-	/** @dis_overflow_check: disable overflow check */
-	uint32_t dis_overflow_check:1;
-	/** @cmpt_int_en: completion interrupt enable */
-	uint32_t cmpt_int_en:1;
-	/** @cmpt_at: completion address translation */
-	uint32_t cmpt_at:1;
-	/** @cmpt_color: completion ring initial color bit */
-	uint32_t cmpt_color:1;
-	/** @cmpt_full_upd: completion full update */
-	uint32_t cmpt_full_upd:1;
-	/** @cmpl_stat_en: completion status enable */
-	uint32_t cmpl_stat_en:1;
-	/** @desc_sz: descriptor size */
-	uint32_t desc_sz:2;
-	/** @cmpt_desc_sz: completion ring descriptor size */
-	uint32_t cmpt_desc_sz:2;
-	/** @triggermode: trigger mode */
-	uint32_t triggermode:3;
-	/** @rsvd: reserved */
-	uint32_t rsvd:9;
-	/** @func_id: function ID */
-	uint32_t func_id:16;
-	/** @cnt_thres: counter threshold */
-	uint32_t cnt_thres:8;
-	/** @timer_thres: timer threshold */
-	uint32_t timer_thres:8;
-	/** @intr_id: interrupt id */
-	uint16_t intr_id:11;
-	/** @intr_aggr: interrupt aggregation */
-	uint16_t intr_aggr:1;
-	/** @filler: filler bits */
-	uint16_t filler:4;
-	/** @ringsz: ring size */
-	uint16_t ringsz;
-	/** @bufsz: c2h buffer size */
-	uint16_t bufsz;
-	/** @cmpt_ringsz: completion ring size */
-	uint16_t cmpt_ringsz;
-};
-
-/**
- * @enum - mbox_cmpt_ctxt_type
- * @brief  specifies whether cmpt is enabled with MM/ST
- */
-enum mbox_cmpt_ctxt_type {
-	/** @QDMA_MBOX_CMPT_CTXT_ONLY: only cmpt context programming required */
-	QDMA_MBOX_CMPT_CTXT_ONLY,
-	/** @QDMA_MBOX_CMPT_WITH_MM: completion context with MM */
-	QDMA_MBOX_CMPT_WITH_MM,
-	/** @QDMA_MBOX_CMPT_WITH_ST: complete context with ST */
-	QDMA_MBOX_CMPT_WITH_ST,
-	/** @QDMA_MBOX_CMPT_CTXT_NONE: No completion context */
-	QDMA_MBOX_CMPT_CTXT_NONE
-};
-
-/**
- * @struct - mbox_msg_intr_ctxt
- * @brief	interrupt context mailbox message
- */
-struct mbox_msg_intr_ctxt {
-	/** @num_rings: number of intr context rings be assigned
-	 * for virtual function
-	 */
-	uint8_t num_rings;	/* 1 ~ 8 */
-	/** @ring_index_list: ring index associated for each vector */
-	uint32_t ring_index_list[QDMA_NUM_DATA_VEC_FOR_INTR_CXT];
-	/** @w: interrupt context data for all rings*/
-	struct qdma_indirect_intr_ctxt ictxt[QDMA_NUM_DATA_VEC_FOR_INTR_CXT];
-};
-
-/*****************************************************************************/
-/**
- * qdma_mbox_hw_init(): Initialize the mobx HW
- *
- * @dev_hndl:  device handle
- * @is_vf:  is VF mbox
- *
- * Return:	None
- *****************************************************************************/
-void qdma_mbox_hw_init(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_pf_rcv_msg_handler(): handles the raw message received in pf
- *
- * @dma_device_index:  pci bus number
- * @dev_hndl:  device handle
- * @func_id:   own function id
- * @rcv_msg:   received raw message
- * @resp_msg:  raw response message
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_pf_rcv_msg_handler(void *dev_hndl, uint8_t dma_device_index,
-				 uint16_t func_id, uint32_t *rcv_msg,
-				 uint32_t *resp_msg);
-
-/*****************************************************************************/
-/**
- * qmda_mbox_compose_vf_online(): compose VF online message
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qmda_mbox_compose_vf_online(uint16_t func_id,
-				uint16_t qmax, int *qbase, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_offline(): compose VF offline message
- *
- * @func_id:   destination function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_offline(uint16_t func_id,
-				 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_reset_message(): compose VF reset message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_reset_message(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_reset_offline(): compose VF BYE for PF initiated RESET
- *
- * @func_id: own function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_reset_offline(uint16_t func_id,
-				uint32_t *raw_data);
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_pf_reset_done_message(): compose PF reset done message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_pf_reset_done_message(uint32_t *raw_data,
-				uint8_t src_funcid, uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_pf_offline(): compose PF offline message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_pf_offline(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qreq(): compose message to request queues
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qreq(uint16_t func_id,
-			      uint16_t qmax, int qbase, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qadd(): compose message to notify queue add
- *
- * @func_id:	destination function id
- * @qid_hw:	number of queues being requested
- * @q_type:	direction of the of queue
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_notify_qadd(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qdel(): compose message to notify queue delete
- *
- * @func_id:	destination function id
- * @qid_hw:	number of queues being requested
- * @q_type:	direction of the of queue
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_notify_qdel(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qdel(): compose message to get the active
- * queue count
- *
- * @func_id:	destination function id
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_get_device_active_qcnt(uint16_t func_id,
-		uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_fmap_prog(): handles the raw message received
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_fmap_prog(uint16_t func_id,
-				   uint16_t qmax, int qbase,
-				   uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_write(): compose queue configuration data for
- * compose and program
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be read
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @descq_conf:   pointer to queue config data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_write(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct mbox_descq_conf *descq_conf,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_read(): compose message to read context data of a
- * queue
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be read
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_read(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_invalidate(): compose queue context invalidate
- * message
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be invalidated
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_invalidate(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_clear(): compose queue context clear message
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be cleared
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_clear(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_csr_read(): compose message to read csr info
- *
- * @func_id:   destination function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_csr_read(uint16_t func_id,
-			       uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_reg_read(): compose message to read the register values
- *
- * @func_id:   destination function id
- * @group_num:  group number for the registers to read
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_reg_read(uint16_t func_id, uint16_t group_num,
-			       uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_write(): compose interrupt ring context
- * programming message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_write(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_read(): handles the raw message received
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_read(uint16_t func_id,
-					struct mbox_msg_intr_ctxt *intr_ctxt,
-					uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_clear(): compose interrupt ring context
- * clear message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_clear(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_invalidate(): compose interrupt ring context
- * invalidate message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_invalidate(uint16_t func_id,
-				      struct mbox_msg_intr_ctxt *intr_ctxt,
-				      uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_is_msg_response(): check if the received msg opcode is response
- *                              sent message opcode
- *
- * @send_data: mbox message sent
- * @rcv_data: mbox message recieved
- *
- * Return:	1  : match and  0: does not match
- *****************************************************************************/
-uint8_t qdma_mbox_is_msg_response(uint32_t *send_data, uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_response_status(): return the response received for the sent msg
- *
- * @rcv_data: mbox message recieved
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_response_status(uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_func_id_get(): return the vf function id
- *
- * @rcv_data: mbox message recieved
- * @is_vf:  is VF mbox
- *
- * Return:	vf function id
- *****************************************************************************/
-uint8_t qdma_mbox_vf_func_id_get(uint32_t *rcv_data, uint8_t is_vf);
-
-int qdma_mbox_vf_active_queues_get(uint32_t *rcv_data,
-		enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_parent_func_id_get(): return the vf parent function id
- *
- * @rcv_data: mbox message recieved
- *
- * Return:	vf function id
- *****************************************************************************/
-uint8_t qdma_mbox_vf_parent_func_id_get(uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_dev_info_get(): get dev info from received message
- *
- * @rcv_data: mbox message recieved
- * @dev_cap: device capability information
- * @dma_device_index: DMA Identifier to be read using the mbox.
- *
- * Return:	response status with dev info received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_dev_info_get(uint32_t *rcv_data,
-		struct qdma_dev_attributes *dev_cap,
-		uint32_t *dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_qinfo_get(): get qinfo from received message
- *
- * @rcv_data: mbox message recieved
- * @qmax: number of queues
- * @qbase: q base at which queues are allocated
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_qinfo_get(uint32_t *rcv_data, int *qbase, uint16_t *qmax);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_csr_get(): get csr info from received message
- *
- * @rcv_data: mbox message recieved
- * @csr: pointer to the csr info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_csr_get(uint32_t *rcv_data, struct qdma_csr_info *csr);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_reg_list_get(): get reg info from received message
- *
- * @rcv_data: mbox message recieved
- * @num_regs: number of register read
- * @reg_list: pointer to the register info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_reg_list_get(uint32_t *rcv_data,
-		uint16_t *num_regs, struct qdma_reg_data *reg_list);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_context_get(): get queue context info from received message
- *
- * @rcv_data: mbox message recieved
- * @ctxt: pointer to the queue context info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_context_get(uint32_t *rcv_data,
-			     struct qdma_descq_context *ctxt);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_context_get(): get intr context info from received message
- *
- * @rcv_data: mbox message recieved
- * @ctxt: pointer to the intr context info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_intr_context_get(uint32_t *rcv_data,
-				  struct mbox_msg_intr_ctxt *ictxt);
-
-
-/*****************************************************************************/
-/**
- * qdma_mbox_pf_hw_clear_ack() - clear the HW ack
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_mbox_pf_hw_clear_ack(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_send() - function to send raw data via qdma mailbox
- *
- * @dev_hndl:   device handle
- * @is_vf:	     Whether PF or VF
- * @raw_data:   pointer to message being sent
- *
- * The function sends the raw_data to the outgoing mailbox memory and if PF,
- * then assert the acknowledge status register bit.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mbox_send(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_rcv() - function to receive raw data via qdma mailbox
- *
- * @dev_hndl: device handle
- * @is_vf: Whether PF or VF
- * @raw_data:  pointer to the message being received
- *
- * The function receives the raw_data from the incoming mailbox memory and
- * then acknowledge the sender by setting msg_rcv field in the command
- * register.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mbox_rcv(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_enable_interrupts() - Enable the QDMA mailbox interrupt
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * @return	none
- *****************************************************************************/
-void qdma_mbox_enable_interrupts(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_disable_interrupts() - Disable the QDMA mailbox interrupt
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * @return	none
- *****************************************************************************/
-void qdma_mbox_disable_interrupts(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_rcv_msg_handler(): handles the raw message received in VF
- *
- * @rcv_msg:   received raw message
- * @resp_msg:  raw response message
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_vf_rcv_msg_handler(uint32_t *rcv_msg, uint32_t *resp_msg);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_out_status():
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * Return:	0 if MBOX outbox is empty, 1 if MBOX is not empty
- *****************************************************************************/
-uint8_t qdma_mbox_out_status(void *dev_hndl, uint8_t is_vf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_MBOX_PROTOCOL_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_platform.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_platform.h
deleted file mode 100755
index f44bd59..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_platform.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_PLATFORM_H_
-#define __QDMA_PLATFORM_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA platform specific interface definitions
- *
- * Header file *qdma_platform_env.h* defines function signatures that are
- * required to be implemented by platform specific drivers.
- */
-
-#include "qdma_access_common.h"
-
-/*****************************************************************************/
-/**
- * qdma_calloc(): allocate memory and initialize with 0
- *
- * @num_blocks:  number of blocks of contiguous memory of @size
- * @size:    size of each chunk of memory
- *
- * Return: pointer to the memory block created on success and NULL on failure
- *****************************************************************************/
-void *qdma_calloc(uint32_t num_blocks, uint32_t size);
-
-/*****************************************************************************/
-/**
- * qdma_memfree(): free the memory
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_memfree(void *memptr);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_init() - Init lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-int qdma_resource_lock_init(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_take() - take lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_take(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_give() - release lock after accessing resource management
- * APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_give(void);
-
-/*****************************************************************************/
-/**
- * qdma_reg_write() - Register write API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to write
- * @val:	value to be written
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_reg_write(void *dev_hndl, uint32_t reg_offst, uint32_t val);
-
-/*****************************************************************************/
-/**
- * qdma_reg_read() - Register read API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to be read
- *
- * Return: Value read
- *****************************************************************************/
-uint32_t qdma_reg_read(void *dev_hndl, uint32_t reg_offst);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_lock() - Lock function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_lock(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_release() - Release function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_release(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_udelay() - delay function to be used in the common library
- *
- * @delay_usec:   delay in microseconds
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_udelay(uint32_t delay_usec);
-
-/*****************************************************************************/
-/**
- * qdma_get_hw_access() - function to get the qdma_hw_access
- *
- * @dev_hndl:   device handle
- * @dev_cap: pointer to hold qdma_hw_access structure
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_get_hw_access(void *dev_hndl, struct qdma_hw_access **hw);
-
-/*****************************************************************************/
-/**
- * qdma_strncpy(): copy n size string from source to destination buffer
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_strncpy(char *dest, const char *src, size_t n);
-
-
-/*****************************************************************************/
-/**
- * qdma_get_err_code() - function to get the qdma access mapped error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_err_code(int acc_err_code);
-
-/*****************************************************************************/
-/**
- * qdma_io_wmb() - Write memory barrier for IO device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_io_wmb(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_PLATFORM_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_reg_dump.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_reg_dump.h
deleted file mode 100755
index b1a63c0..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_reg_dump.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_REG_DUMP_H__
-#define __QDMA_REG_DUMP_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-#include "qdma_access_common.h"
-
-#define DEBUGFS_DEV_INFO_SZ		(300)
-
-#define QDMA_REG_NAME_LENGTH	64
-#define DEBUGFS_INTR_CNTX_SZ	(2048 * 2)
-#define DBGFS_ERR_BUFLEN		(64)
-#define DEBGFS_LINE_SZ			(81)
-#define DEBGFS_GEN_NAME_SZ		(40)
-#define REG_DUMP_SIZE_PER_LINE	(256)
-
-#define MAX_QDMA_CFG_REGS			(200)
-
-#define QDMA_MM_EN_SHIFT          0
-#define QDMA_CMPT_EN_SHIFT        1
-#define QDMA_ST_EN_SHIFT          2
-#define QDMA_MAILBOX_EN_SHIFT     3
-
-#define QDMA_MM_MODE              (1 << QDMA_MM_EN_SHIFT)
-#define QDMA_COMPLETION_MODE      (1 << QDMA_CMPT_EN_SHIFT)
-#define QDMA_ST_MODE              (1 << QDMA_ST_EN_SHIFT)
-#define QDMA_MAILBOX              (1 << QDMA_MAILBOX_EN_SHIFT)
-
-
-#define QDMA_MM_ST_MODE \
-	(QDMA_MM_MODE | QDMA_COMPLETION_MODE | QDMA_ST_MODE)
-
-#define GET_CAPABILITY_MASK(mm_en, st_en, mm_cmpt_en, mailbox_en)  \
-	((mm_en << QDMA_MM_EN_SHIFT) | \
-			((mm_cmpt_en | st_en) << QDMA_CMPT_EN_SHIFT) | \
-			(st_en << QDMA_ST_EN_SHIFT) | \
-			(mailbox_en << QDMA_MAILBOX_EN_SHIFT))
-
-
-struct regfield_info {
-		const char *field_name;
-		uint32_t field_mask;
-};
-
-struct xreg_info {
-	const char *name;
-	uint32_t addr;
-	uint32_t repeat;
-	uint32_t step;
-	uint8_t shift;
-	uint8_t len;
-	uint8_t is_debug_reg;
-	uint8_t mode;
-	uint8_t read_type;
-	uint8_t num_bitfields;
-	struct regfield_info *bitfields;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.c
deleted file mode 100755
index d903859..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.c
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_resource_mgmt.h"
-#include "qdma_platform.h"
-#include "qdma_list.h"
-#include "qdma_access_errors.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_resource_mgmt.tmh"
-#endif
-
-struct qdma_resource_entry {
-	int qbase;
-	uint32_t total_q;
-	struct qdma_list_head node;
-};
-
-/** per function entry */
-struct qdma_dev_entry {
-	uint16_t func_id;
-	uint32_t active_h2c_qcnt;
-	uint32_t active_c2h_qcnt;
-	uint32_t active_cmpt_qcnt;
-	struct qdma_resource_entry entry;
-};
-
-/** for hodling the qconf_entry structure */
-struct qdma_resource_master {
-	/** DMA device index this resource belongs to */
-	uint32_t dma_device_index;
-	/** starting pci bus number this resource belongs to */
-	uint32_t pci_bus_start;
-	/** ending pci bus number this resource belongs to */
-	uint32_t pci_bus_end;
-	/** total queue this resource manager handles */
-	uint32_t total_q;
-	/** queue base from which this resource manger handles */
-	int qbase;
-	/** for attaching to master resource list */
-	struct qdma_list_head node;
-	/** for holding device entries */
-	struct qdma_list_head dev_list;
-	/** for holding free resource list */
-	struct qdma_list_head free_list;
-	/** active queue count per resource*/
-	uint32_t active_qcnt;
-};
-
-static QDMA_LIST_HEAD(master_resource_list);
-
-static struct qdma_resource_master *qdma_find_master_resource_entry(
-		uint32_t bus_start, uint32_t bus_end)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->pci_bus_start == bus_start &&
-			q_resource->pci_bus_end == bus_end) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_master *qdma_get_master_resource_entry(
-		uint32_t dma_device_index)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-				QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->dma_device_index == dma_device_index) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_dev_entry *qdma_get_dev_entry(uint32_t dma_device_index,
-						uint16_t func_id)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-
-	if (!q_resource)
-		return NULL;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &q_resource->dev_list) {
-		struct qdma_dev_entry *dev_entry = (struct qdma_dev_entry *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (dev_entry->func_id == func_id) {
-			qdma_resource_lock_give();
-			return dev_entry;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_entry *qdma_free_entry_create(int q_base,
-							  uint32_t total_q)
-{
-	struct qdma_resource_entry *entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_master));
-	if (entry == NULL)
-		return NULL;
-
-	entry->total_q = total_q;
-	entry->qbase = q_base;
-
-	return entry;
-}
-
-static void qdma_submit_to_free_list(struct qdma_dev_entry *dev_entry,
-				     struct qdma_list_head *head)
-{
-	struct qdma_resource_entry *streach_node = NULL;
-	struct qdma_list_head *entry, *tmp;
-	/* create a new node to be added to empty free list */
-	struct qdma_resource_entry *new_node = NULL;
-
-	if (!dev_entry->entry.total_q)
-		return;
-
-	if (qdma_list_is_empty(head)) {
-		new_node = qdma_free_entry_create(dev_entry->entry.qbase,
-				dev_entry->entry.total_q);
-		if (new_node == NULL)
-			return;
-		QDMA_LIST_SET_DATA(&new_node->node, new_node);
-		qdma_list_add_tail(&new_node->node, head);
-		/* reset device entry q resource params */
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-	} else {
-		qdma_list_for_each_safe(entry, tmp, head) {
-			struct qdma_resource_entry *node =
-				(struct qdma_resource_entry *)
-					QDMA_LIST_GET_DATA(entry);
-
-			/* insert the free slot at appropriate place */
-			if ((node->qbase > dev_entry->entry.qbase) ||
-				qdma_list_is_last_entry(entry, head)) {
-				new_node = qdma_free_entry_create(
-						dev_entry->entry.qbase,
-						dev_entry->entry.total_q);
-				if (new_node == NULL)
-					return;
-				QDMA_LIST_SET_DATA(&new_node->node, new_node);
-				if (node->qbase > dev_entry->entry.qbase)
-					qdma_list_insert_before(&new_node->node,
-								&node->node);
-				else
-					qdma_list_add_tail(&new_node->node,
-							   head);
-				/* reset device entry q resource params */
-				dev_entry->entry.qbase = -1;
-				dev_entry->entry.total_q = 0;
-				break;
-			}
-		}
-	}
-
-	/* de-fragment (merge contiguous resource chunks) if possible */
-	qdma_list_for_each_safe(entry, tmp, head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (!streach_node)
-			streach_node = node;
-		else {
-			if ((streach_node->qbase + streach_node->total_q) ==
-					(uint32_t)node->qbase) {
-				streach_node->total_q += node->total_q;
-				qdma_list_del(&node->node);
-				qdma_memfree(node);
-			} else
-				streach_node = node;
-		}
-	}
-}
-
-/**
- * qdma_resource_entry() - return the best free list entry node that can
- *                         accommodate the new request
- */
-static struct qdma_resource_entry *qdma_get_resource_node(uint32_t qmax,
-							  int qbase,
-				   struct qdma_list_head *free_list_head)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_entry *best_fit_node = NULL;
-
-	/* try to honor requested qbase */
-	if (qbase >= 0) {
-		qdma_list_for_each_safe(entry, tmp, free_list_head) {
-			struct qdma_resource_entry *node =
-			(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-			if ((qbase >= node->qbase) &&
-					(node->qbase + node->total_q) >=
-					(qbase + qmax)) {
-				best_fit_node = node;
-				goto fragment_free_list;
-			}
-		}
-	}
-	best_fit_node = NULL;
-
-	/* find a best node to accommodate q resource request */
-	qdma_list_for_each_safe(entry, tmp, free_list_head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (node->total_q >= qmax) {
-			if (!best_fit_node || (best_fit_node->total_q >=
-					node->total_q)) {
-				best_fit_node = node;
-				qbase = best_fit_node->qbase;
-			}
-		}
-	}
-
-fragment_free_list:
-	if (!best_fit_node)
-		return NULL;
-
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax == best_fit_node->total_q))
-		return best_fit_node;
-
-	/* split free resource node accordingly */
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax != best_fit_node->total_q)) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase + qmax;
-		uint32_t lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q -= lqmax;
-	} else if ((qbase > best_fit_node->qbase) &&
-			((qbase + qmax) == (best_fit_node->qbase +
-					best_fit_node->total_q))) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-		best_fit_node->total_q = qmax;
-		best_fit_node->qbase = qbase;
-	} else {
-		/*
-		 * create two extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-
-		best_fit_node->qbase = qbase;
-		best_fit_node->total_q -= lqmax;
-
-		lqbase = best_fit_node->qbase + qmax;
-		lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q = qmax;
-	}
-
-	return best_fit_node;
-}
-
-static int qdma_request_q_resource(struct qdma_dev_entry *dev_entry,
-				    uint32_t new_qmax, int new_qbase,
-				    struct qdma_list_head *free_list_head)
-{
-	uint32_t qmax = dev_entry->entry.total_q;
-	int qbase = dev_entry->entry.qbase;
-	struct qdma_resource_entry *free_entry_node = NULL;
-	int rv = QDMA_SUCCESS;
-
-	/* submit already allocated queues back to free list before requesting
-	 * new resource
-	 */
-	qdma_submit_to_free_list(dev_entry, free_list_head);
-
-	if (!new_qmax)
-		return 0;
-	/* check if the request can be accomodated */
-	free_entry_node = qdma_get_resource_node(new_qmax, new_qbase,
-						 free_list_head);
-	if (free_entry_node == NULL) {
-		/* request cannot be accommodated. Restore the dev_entry */
-		free_entry_node = qdma_get_resource_node(qmax, qbase,
-							 free_list_head);
-		rv = -QDMA_ERR_RM_NO_QUEUES_LEFT;
-		qdma_log_error("%s: Not enough queues, err:%d\n", __func__,
-					   -QDMA_ERR_RM_NO_QUEUES_LEFT);
-		if (free_entry_node == NULL) {
-			dev_entry->entry.qbase = -1;
-			dev_entry->entry.total_q = 0;
-
-			return rv;
-		}
-	}
-
-	dev_entry->entry.qbase = free_entry_node->qbase;
-	dev_entry->entry.total_q = free_entry_node->total_q;
-
-	qdma_list_del(&free_entry_node->node);
-	qdma_memfree(free_entry_node);
-
-	return rv;
-}
-
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index)
-{
-	struct qdma_resource_master *q_resource;
-	struct qdma_resource_entry *free_entry;
-	static int index;
-
-	q_resource = qdma_find_master_resource_entry(bus_start, bus_end);
-	if (q_resource) {
-		*dma_device_index = q_resource->dma_device_index;
-		qdma_log_debug("%s: Resource already created", __func__);
-		qdma_log_debug("for this device(%d)\n",
-				q_resource->dma_device_index);
-		return -QDMA_ERR_RM_RES_EXISTS;
-	}
-
-	*dma_device_index = index;
-
-	q_resource = (struct qdma_resource_master *)qdma_calloc(1,
-		sizeof(struct qdma_resource_master));
-	if (!q_resource) {
-		qdma_log_error("%s: no memory for q_resource, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	free_entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_entry));
-	if (!free_entry) {
-		qdma_memfree(q_resource);
-		qdma_log_error("%s: no memory for free_entry, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_resource_lock_take();
-	q_resource->dma_device_index = index;
-	q_resource->pci_bus_start = bus_start;
-	q_resource->pci_bus_end = bus_end;
-	q_resource->total_q = total_q;
-	q_resource->qbase = q_base;
-	qdma_list_init_head(&q_resource->dev_list);
-	qdma_list_init_head(&q_resource->free_list);
-	QDMA_LIST_SET_DATA(&q_resource->node, q_resource);
-	QDMA_LIST_SET_DATA(&q_resource->free_list, q_resource);
-	qdma_list_add_tail(&q_resource->node, &master_resource_list);
-
-
-	free_entry->total_q = total_q;
-	free_entry->qbase = q_base;
-	QDMA_LIST_SET_DATA(&free_entry->node, free_entry);
-	qdma_list_add_tail(&free_entry->node, &q_resource->free_list);
-	qdma_resource_lock_give();
-
-	qdma_log_debug("%s: New master resource created at %d",
-		__func__, index);
-	++index;
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_master_resource_destroy(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_list_head *entry, *tmp;
-
-	if (!q_resource)
-		return;
-	qdma_resource_lock_take();
-	if (!qdma_list_is_empty(&q_resource->dev_list)) {
-		qdma_resource_lock_give();
-		return;
-	}
-	qdma_list_for_each_safe(entry, tmp, &q_resource->free_list) {
-		struct qdma_resource_entry *free_entry =
-			(struct qdma_resource_entry *)
-				QDMA_LIST_GET_DATA(entry);
-
-		qdma_list_del(&free_entry->node);
-		qdma_memfree(free_entry);
-	}
-	qdma_list_del(&q_resource->node);
-	qdma_memfree(q_resource);
-	qdma_resource_lock_give();
-}
-
-
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_resource_lock_take();
-		dev_entry = (struct qdma_dev_entry *)
-			qdma_calloc(1, sizeof(struct qdma_dev_entry));
-		if (dev_entry == NULL) {
-			qdma_resource_lock_give();
-			qdma_log_error("%s: Insufficient memory, err:%d\n",
-						__func__,
-						-QDMA_ERR_NO_MEM);
-			return -QDMA_ERR_NO_MEM;
-		}
-		dev_entry->func_id = func_id;
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-		QDMA_LIST_SET_DATA(&dev_entry->entry.node, dev_entry);
-		qdma_list_add_tail(&dev_entry->entry.node,
-				   &q_resource->dev_list);
-		qdma_resource_lock_give();
-		qdma_log_info("%s: Created the dev entry successfully\n",
-						__func__);
-	} else {
-		qdma_log_error("%s: Dev entry already created, err = %d\n",
-						__func__,
-						-QDMA_ERR_RM_DEV_EXISTS);
-		return -QDMA_ERR_RM_DEV_EXISTS;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found.\n", __func__);
-		return;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found\n", __func__);
-		return;
-	}
-	qdma_resource_lock_take();
-	qdma_submit_to_free_list(dev_entry, &q_resource->free_list);
-
-	qdma_list_del(&dev_entry->entry.node);
-	qdma_memfree(dev_entry);
-	qdma_resource_lock_give();
-}
-
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-
-	/* if any active queue on device, no more new qmax
-	 * configuration allowed
-	 */
-	if (dev_entry->active_h2c_qcnt ||
-			dev_entry->active_c2h_qcnt ||
-			dev_entry->active_cmpt_qcnt) {
-		qdma_resource_lock_give();
-		qdma_log_error("%s: Qs active. Config blocked, err: %d\n",
-				__func__, -QDMA_ERR_RM_QMAX_CONF_REJECTED);
-		return -QDMA_ERR_RM_QMAX_CONF_REJECTED;
-	}
-
-	rv = qdma_request_q_resource(dev_entry, qmax, *qbase,
-				&q_resource->free_list);
-
-	*qbase = dev_entry->entry.qbase;
-	qdma_resource_lock_give();
-
-
-	return rv;
-}
-
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_debug("%s: Dev Entry not created yet\n", __func__);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	*qbase = dev_entry->entry.qbase;
-	*qmax = dev_entry->entry.total_q;
-	qdma_resource_lock_give();
-
-	return QDMA_SUCCESS;
-}
-
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t qmax;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	qdma_resource_lock_take();
-	qmax = dev_entry->entry.qbase + dev_entry->entry.total_q;
-	if (dev_entry->entry.total_q && (qid_hw < qmax) &&
-			((int)qid_hw >= dev_entry->entry.qbase)) {
-		qdma_resource_lock_give();
-		return QDMA_DEV_Q_IN_RANGE;
-	}
-	qdma_resource_lock_give();
-
-	return QDMA_DEV_Q_OUT_OF_RANGE;
-}
-
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-	uint32_t *active_qcnt = NULL;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		active_qcnt = &dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		active_qcnt = &dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		active_qcnt = &dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	if (active_qcnt && (dev_entry->entry.total_q < ((*active_qcnt) + 1))) {
-		qdma_resource_lock_give();
-		return -QDMA_ERR_RM_NO_QUEUES_LEFT;
-	}
-
-	if (active_qcnt) {
-		*active_qcnt = (*active_qcnt) + 1;
-		q_resource->active_qcnt++;
-	}
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__,
-			   -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		if (dev_entry->active_h2c_qcnt)
-			dev_entry->active_h2c_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		if (dev_entry->active_c2h_qcnt)
-			dev_entry->active_c2h_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		if (dev_entry->active_cmpt_qcnt)
-			dev_entry->active_cmpt_qcnt--;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-	q_resource->active_qcnt--;
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	uint32_t q_cnt;
-
-	if (!q_resource)
-		return QDMA_SUCCESS;
-
-	qdma_resource_lock_take();
-	q_cnt = q_resource->active_qcnt;
-	qdma_resource_lock_give();
-
-	return q_cnt;
-}
-
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t dev_active_qcnt = 0;
-
-	if (!q_resource)
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry)
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		dev_active_qcnt = dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		dev_active_qcnt = dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		dev_active_qcnt = dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		dev_active_qcnt = 0;
-	}
-	qdma_resource_lock_give();
-
-	return dev_active_qcnt;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.h
deleted file mode 100755
index 3361f16..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_resource_mgmt.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_RESOURCE_MGMT_H_
-#define __QDMA_RESOURCE_MGMT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA resource management interface definitions
- *
- * Header file *qdma_resource_mgmt.h* defines data structures and function
- * signatures exported for QDMA queue management.
- */
-
-#include "qdma_platform_env.h"
-#include "qdma_access_export.h"
-
-/**
- * enum qdma_dev_q_range: Q ranage check
- */
-enum qdma_dev_q_range {
-	/** @QDMA_DEV_Q_IN_RANGE: Q belongs to dev */
-	QDMA_DEV_Q_IN_RANGE,
-	/** @QDMA_DEV_Q_OUT_OF_RANGE: Q does not belong to dev */
-	QDMA_DEV_Q_OUT_OF_RANGE,
-	/** @QDMA_DEV_Q_RANGE_MAX: total Q validity states */
-	QDMA_DEV_Q_RANGE_MAX
-};
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_create(): create the master q resource
- *
- * @bus_start:  Bus number of the device i.e. pdev->bus->number
- * @bus_end:    Ending bus number i.e. the subordinate bus number of the
- *              parent bridge
- * @q_base:     base from which this master resource needs to be created
- * @total_q:     total queues in this master resource
- * @dma_device_index: DMA device identifier assigned by resource manager to
- *                    track the number of devices
- *
- * A master resource per driver per board is created to manage the queues
- * allocated to this driver.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_destroy(): destroy the master q resource
- *
- * @dma_device_index:  DMA device identifier this master resource belongs to
- *
- * Return:	None
- *****************************************************************************/
-void qdma_master_resource_destroy(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_create(): create a device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * A device entry is to be created on every function probe.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_destroy(): destroy device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * Return:	None
- *****************************************************************************/
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_update(): update qmax for the device
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API is to be called for update request of qmax of any function.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase);
-
-/*****************************************************************************/
-/**
- * qdma_dev_qinfo_get(): get device info
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        output qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API can be used get the qbase and qmax for any function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax);
-
-/*****************************************************************************/
-/**
- * qdma_dev_is_queue_in_range(): check if queue belongs to this device
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @qid_hw:      hardware queue id
- *
- * This API checks if the queue ID is in valid range for function specified
- *
- * Return:	@QDMA_DEV_Q_IN_RANGE  : valid and
- * @QDMA_DEV_Q_OUT_OF_RANGE: invalid
- *****************************************************************************/
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw);
-
-/*****************************************************************************/
-/**
- * qdma_dev_increment_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_dev_decrement_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_is_active_queue(): check if any queue is active
- *
- * @dma_device_index:  DMA device identifier that this resource belongs to
- *
- * This API is used to check if any active queue is present.
- *
- * Return:	active queue count
- *****************************************************************************/
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_get_device_active_queue_count(): get device active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to get the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_RESOURCE_MGMT_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.c b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.c
deleted file mode 100755
index 2c14a85..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.c
+++ /dev/null
@@ -1,6255 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_soft_access.h"
-#include "qdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_soft_access.tmh"
-#endif
-
-/** QDMA Context array size */
-#define QDMA_FMAP_NUM_WORDS				2
-#define QDMA_SW_CONTEXT_NUM_WORDS			5
-#define QDMA_PFETCH_CONTEXT_NUM_WORDS			2
-#define QDMA_CMPT_CONTEXT_NUM_WORDS			5
-#define QDMA_HW_CONTEXT_NUM_WORDS			2
-#define QDMA_CR_CONTEXT_NUM_WORDS			1
-#define QDMA_IND_INTR_CONTEXT_NUM_WORDS			3
-#define QDMA_REG_IND_CTXT_REG_COUNT			8
-
-
-#define QDMA_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_REG_GROUP_4_START_ADDR	0x1014
-
-#define QDMA_DEFAULT_PFCH_STOP_THRESH            256
-
-static void qdma_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_hw_desc_err_process(void *dev_hndl);
-static void qdma_hw_trq_err_process(void *dev_hndl);
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct xreg_info qdma_config_regs[] = {
-
-	/* QDMA_TRQ_SEL_GLBL1 (0x00000) */
-	{"CFG_BLOCK_ID",
-		0x00, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_BUSDEV",
-		0x04, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_PL_SZ",
-		0x08, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_RDRQ_SZ",
-		0x0C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SYS_ID",
-		0x10, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MSI_EN",
-		0x14, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_DATA_WIDTH",
-		0x18, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_CTRL",
-		0x1C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_PL_SZ",
-		0x40, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_RDRQ_SZ",
-		0x44, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MISC_CTRL",
-		0x4C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SCRATCH_REG",
-		0x80, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_MSK_A",
-		0xF0, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_STS_A",
-		0xF4, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_MSK_A",
-		0xF8, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_STS_A",
-		0xFC, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL2 (0x00100) */
-	{"GLBL2_ID",
-		0x100, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_INT",
-		0x104, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_INT",
-		0x108, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_EXT",
-		0x10C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_EXT",
-		0x110, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_INST",
-		0x114, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_QDMA",
-		0x118, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_STRM",
-		0x11C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_QDMA_CAP",
-		0x120, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PASID_CAP",
-		0x128, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_FUNC_RET",
-		0x12C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_SYS_ID",
-		0x130, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_MISC_CAP",
-		0x134, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_PCIE_RQ",
-		0x1B8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_WR",
-		0x1C0, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_RD",
-		0x1C8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL (0x00200) */
-	{"GLBL_RNGSZ",
-		0x204, 16, 1, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL_ERR_STAT",
-		0x248, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_MASK",
-		0x24C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_CFG",
-		0x250, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_STS",
-		0x254, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_MSK",
-		0x258, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG",
-		0x25C, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_STS",
-		0x264, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_MSK",
-		0x268, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_LOG",
-		0x26C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_DBG_DAT",
-		0x270, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG2",
-		0x27C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_INTERRUPT_CFG",
-		0x288, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-
-	/* QDMA_TRQ_SEL_FMAP (0x00400 - 0x7FC) */
-	/* TODO: max 256, display 4 for now */
-	{"TRQ_SEL_FMAP",
-		0x400, 4, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_IND (0x00800) */
-	{"IND_CTXT_DATA",
-		0x804, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_MASK",
-		0x824, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_CMD",
-		0x844, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H (0x00A00) */
-	{"C2H_TIMER_CNT",
-	0xA00, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CNT_THRESH",
-	0xA40, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		0xA88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_S_AXIS_CMPT_ACCEPTED",
-		0xA8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED",
-		0xA90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_AXIS_PKG_CMP",
-		0xA94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ACCEPTED",
-		0xA98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_CMP",
-		0xA9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WRQ_OUT",
-		0xAA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		0xAA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		0xAA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		0xAAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_BUF_SZ",
-		0xAB0, 16, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_ERR_STAT",
-		0xAF0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_ERR_MASK",
-		0xAF4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_STAT",
-		0xAF8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_MASK",
-		0xAFC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_ENABLE",
-		0xB00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_INT",
-		0xB04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_PFCH_CFG",
-		0xB08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_TIMER_TICK",
-		0xB0C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED",
-		0xB10, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED",
-		0xB14, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_REQ",
-		0xB18, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG",
-		0xB1C, 4, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_ERR_CTXT",
-		0xB2C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_FIRST_ERR_QID",
-		0xB30, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"STAT_NUM_CMPT_IN",
-		0xB34, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_OUT",
-		0xB38, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_DRP",
-		0xB3C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_STAT_DESC_OUT",
-		0xB40, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_DSC_CRDT_SENT",
-		0xB44, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_FCH_DSC_RCVD",
-		0xB48, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_BYP_DSC_RCVD",
-		0xB4C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_CFG",
-		0xB50, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_REQ",
-		0xB54, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_MM_REQ",
-		0xB58, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_ERR_INT_REQ",
-		0xB5C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_REQ",
-		0xB60, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_ACK",
-		0xB64, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_FAIL",
-		0xB68, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_NO_MSIX",
-		0xB6C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_CTXT_INVAL",
-		0xB70, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_ACK",
-		0xB74, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL",
-		0xB78, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_NO_MSIX",
-		0xB7C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL",
-		0xB80, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WR_CMP",
-		0xB84, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_4",
-		0xB88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_5",
-		0xB8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_QID",
-		0xB90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH",
-		0xB94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_DEBUG",
-		0xB98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_IMM_ACCEPTED",
-		0xB9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_MARKER_ACCEPTED",
-		0xBA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED",
-		0xBA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_C2H_PAYLOAD_FIFO_CRDT_CNT",
-		0xBA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_REQ",
-		0xBAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_MSIX",
-		0xBB0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_LEN_MISMATCH",
-		0xBB4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_DESC_RSP_LEN",
-		0xBB8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_QID_FIFO_LEN",
-		0xBBC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_PAYLOAD_CNT",
-		0xBC0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_C2H_CMPT_FORMAT",
-		0xBC4, 7, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CACHE_DEPTH",
-		0xBE0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_BUF_DEPTH",
-		0xBE4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CRDT",
-		0xBE8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C(0x00E00) Register Space*/
-	{"H2C_ERR_STAT",
-		0xE00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_ERR_MASK",
-		0xE04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_FIRST_ERR_QID",
-		0xE08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_DBG_REG",
-		0xE0C, 5, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_FATAL_ERR_EN",
-		0xE20, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_REQ_THROT",
-		0xE24, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_ALN_DBG_REG0",
-		0xE28, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H_MM (0x1000) */
-	{"C2H_MM_CONTROL",
-		0x1004, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_STATUS",
-		0x1040, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_CMPL_DSC_CNT",
-		0x1048, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE_EN_MASK",
-		0x1054, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE",
-		0x1058, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_INFO",
-		0x105C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CTRL",
-		0x10C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CY_CNT",
-		0x10C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_DATA_CNT",
-		0x10CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_DBG_INFO",
-		0x10E8, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C_MM (0x1200)*/
-	{"H2C_MM_CONTROL",
-		0x1204, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_STATUS",
-		0x1240, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_CMPL_DSC_CNT",
-		0x1248, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE_EN_MASK",
-		0x1254, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE",
-		0x1258, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_INFO",
-		0x125C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CTRL",
-		0x12C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CY_CNT",
-		0x12C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_DATA_CNT",
-		0x12CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_DBG_INFO",
-		0x12E8, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_REQ_THROT",
-		0x12EC, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_PF_MAILBOX (0x2400) */
-	{"FUNC_STATUS",
-		0x2400, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_CMD",
-		 0x2404, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_INTR_VEC",
-		 0x2408, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"TARGET_FUNC",
-		 0x240C, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"INTR_CTRL",
-		 0x2410, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"PF_ACK",
-		 0x2420, 8, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FLR_CTRL_STATUS",
-		 0x2500, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_IN",
-		 0x2800, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_OUT",
-		0x2C00, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	{"", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }
-};
-
-
-static struct qdma_hw_err_info qdma_err_info[QDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_UR_CA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_PARAM_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ADDR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TAG_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DAT_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DMA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DSC_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_VF_ACCESS,
-		"Invalid VF access error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_DESC_RSP_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MSI_INT_FAIL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ERR_DESC_CNT_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass interface mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ZERO_LEN_DESC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_CSI_MOP,
-		"Non EOP descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_CSI_MOP_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_NO_DMA_DSC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_PEND_FIFO,
-		"H2C ST pending fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE Errors */
-	{
-		QDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_PEND_FIFO,
-		"H2C pending fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_hw_errs[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_DSC_ERR_ALL,
-	QDMA_TRQ_ERR_ALL,
-	QDMA_ST_C2H_ERR_ALL,
-	QDMA_ST_FATAL_ERR_ALL,
-	QDMA_ST_H2C_ERR_ALL,
-	QDMA_SBE_ERR_ALL,
-	QDMA_DBE_ERR_ALL
-};
-
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-
-static struct qctx_entry sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-};
-
-uint32_t qdma_soft_reg_dump_buf_len(void)
-{
-	uint32_t length = ((sizeof(qdma_config_regs) /
-			sizeof(qdma_config_regs[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-uint32_t qdma_get_config_num_regs(void)
-{
-	return (sizeof(qdma_config_regs)/
-		sizeof(qdma_config_regs[0]));
-}
-
-struct xreg_info *qdma_get_config_regs(void)
-{
-	return qdma_config_regs;
-}
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(cmpt_ctxt_entries) /
-			sizeof(cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(sw_ctxt_entries) /
-				sizeof(sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(hw_ctxt_entries) /
-			sizeof(hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(credit_ctxt_entries) /
-			sizeof(credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(fmap_ctxt_entries) /
-			sizeof(fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(cmpt_ctxt_entries) /
-				sizeof(cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(c2h_pftch_ctxt_entries) /
-				sizeof(c2h_pftch_ctxt_entries[0]))
-				+ 1) * REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return rv;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	sw_ctxt_entries[2].value = sw_ctxt->fnc_id;
-	sw_ctxt_entries[3].value = sw_ctxt->qen;
-	sw_ctxt_entries[4].value = sw_ctxt->frcd_en;
-	sw_ctxt_entries[5].value = sw_ctxt->wbi_chk;
-	sw_ctxt_entries[6].value = sw_ctxt->wbi_intvl_en;
-	sw_ctxt_entries[7].value = sw_ctxt->at;
-	sw_ctxt_entries[8].value = sw_ctxt->fetch_max;
-	sw_ctxt_entries[9].value = sw_ctxt->rngsz_idx;
-	sw_ctxt_entries[10].value = sw_ctxt->desc_sz;
-	sw_ctxt_entries[11].value = sw_ctxt->bypass;
-	sw_ctxt_entries[12].value = sw_ctxt->mm_chn;
-	sw_ctxt_entries[13].value = sw_ctxt->wbk_en;
-	sw_ctxt_entries[14].value = sw_ctxt->irq_en;
-	sw_ctxt_entries[15].value = sw_ctxt->port_id;
-	sw_ctxt_entries[16].value = sw_ctxt->irq_no_last;
-	sw_ctxt_entries[17].value = sw_ctxt->err;
-	sw_ctxt_entries[18].value = sw_ctxt->err_wb_sent;
-	sw_ctxt_entries[19].value = sw_ctxt->irq_req;
-	sw_ctxt_entries[20].value = sw_ctxt->mrkr_dis;
-	sw_ctxt_entries[21].value = sw_ctxt->is_mm;
-	sw_ctxt_entries[22].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	sw_ctxt_entries[23].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	sw_ctxt_entries[24].value = sw_ctxt->vec;
-	sw_ctxt_entries[25].value = sw_ctxt->intr_aggr;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	cmpt_ctxt_entries[9].value = cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-	cmpt_ctxt_entries[19].value = cmpt_ctxt->ovf_chk_dis;
-	cmpt_ctxt_entries[20].value = cmpt_ctxt->at;
-	cmpt_ctxt_entries[21].value = cmpt_ctxt->vec;
-	cmpt_ctxt_entries[22].value = cmpt_ctxt->int_aggr;
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-/*
- * qdma_acc_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void qdma_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * dump_soft_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_soft_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			qdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	qdma_fill_fmap_ctxt(&queue_context->fmap);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		/* SW context dump */
-		n = sizeof(sw_ctxt_entries) / sizeof((sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				sw_ctxt_entries[i].name,
-				sw_ctxt_entries[i].value,
-				sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(hw_ctxt_entries) / sizeof((hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				hw_ctxt_entries[i].name,
-				hw_ctxt_entries[i].value,
-				hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(credit_ctxt_entries) /
-			sizeof((credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				credit_ctxt_entries[i].name,
-				credit_ctxt_entries[i].value,
-				credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(cmpt_ctxt_entries) / sizeof((cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				cmpt_ctxt_entries[i].name,
-				cmpt_ctxt_entries[i].value,
-				cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(c2h_pftch_ctxt_entries) /
-			sizeof(c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				c2h_pftch_ctxt_entries[i].name,
-				c2h_pftch_ctxt_entries[i].value,
-				c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(fmap_ctxt_entries) /
-		sizeof(fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			fmap_ctxt_entries[i].name,
-			fmap_ctxt_entries[i].value,
-			fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_version() - Function to get the qdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_GLBL2_MISC_CAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, config->qmax);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, func_id,
-			QDMA_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(QDMA_FMAP_CTXT_W0_QID_MASK, fmap[0]);
-	config->qmax = FIELD_GET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return qdma_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W0_PIDX, ctxt->pidx) |
-		FIELD_SET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, ctxt->wbi_intvl_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_SW_CTXT_W1_BYP_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK, ctxt->irq_no_last) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK, ctxt->err_wb_sent) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK, ctxt->intr_aggr);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(QDMA_SW_CTXT_W0_PIDX, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(QDMA_SW_CTXT_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(QDMA_SW_CTXT_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		FIELD_GET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_BYP_MASK, sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MM_CHN_MASK, sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_WBK_EN_MASK, sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_PORT_ID_MASK, sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IS_MM_MASK, sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(QDMA_SW_CTXT_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK,
-			sw_ctxt[4]));
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK, ctxt->pfch) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK, ctxt->timer_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, baddr_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, pidx_l);
-
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, ctxt->full_upd) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, ctxt->int_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, cmpt_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_ERR_MASK, cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(QDMA_COMPL_CTXT_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, cmpt_ctxt[4]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK, (uint64_t)baddr_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK, (uint64_t)baddr_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[QDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(QDMA_HW_CTXT_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(QDMA_HW_CTXT_W0_CRD_USE_MASK, hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_DSC_PND_MASK, hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_EVENT_PEND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(QDMA_HW_CTXT_W1_FETCH_PEND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(QDMA_CR_CTXT_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_write(void *dev_hndl, uint16_t ring_index,
-		const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, baddr_h) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_AT_MASK, ctxt->at);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_read(void *dev_hndl, uint16_t ring_index,
-				   struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(QDMA_INTR_CTXT_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_COLOR_MASK,
-			intr_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(QDMA_INTR_CTXT_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W2_AT_MASK, intr_ctxt[2]));
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_clear(void *dev_hndl, uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_PFCH_FL_TH_MASK,
-					QDMA_DEFAULT_PFCH_STOP_THRESH) |
-			FIELD_SET(QDMA_C2H_NUM_PFCH_MASK,
-					DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-			FIELD_SET(QDMA_C2H_PFCH_QCNT_MASK, (cfg_val >> 1)) |
-			FIELD_SET(QDMA_C2H_EVT_QCNT_TH_MASK,
-					((cfg_val >> 1) - 2));
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_PFETCH_CFG, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_INT_TIMER_TICK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(QDMA_C2H_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(QDMA_C2H_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_WRB_COAL_CFG, reg_val);
-
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-					QDMA_H2C_THROT_DATA_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-					QDMA_THROT_EN_DATA) |
-			FIELD_SET(QDMA_H2C_REQ_THRESH_MASK,
-					QDMA_H2C_THROT_REQ_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_REQ_MASK,
-					QDMA_THROT_EN_REQ);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_hndl:(%p), reg_info:(%p), err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_DMA_SEL_DESC_PIDX_MASK, reg_info->pidx) |
-			  FIELD_SET(QDMA_DMA_SEL_IRQ_EN_MASK,
-			  reg_info->irq_en);
-
-	/* Make sure writes to the H2C/C2H descriptors are synchronized
-	 * before updating PIDX
-	 */
-	qdma_io_wmb();
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_handle (%p) reg_info (%p) , err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_info->irq_en);
-
-	/* Make sure writes to the CMPT ring are synchronized
-	 * before updating CIDX
-	 */
-	qdma_io_wmb();
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_intr_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_handle (%p) reg_info (%p), err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_DMA_SEL_INT_SW_CIDX_MASK, reg_info->sw_cidx) |
-		FIELD_SET(QDMA_DMA_SEL_INT_RING_IDX_MASK, reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_user_bar() - Function to get the
- *						AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_USER_BAR_ID :
-			QDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-
-	if (!is_vf)
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	else
-		user_bar_id = user_bar_id & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, vf:%d, usrbar:%d, err:%d\n",
-					   __func__,
-					   is_vf,
-					   *user_bar,
-					   -QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_attributes() - Function to get the qdma device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP);
-	dev_info->num_qs = FIELD_GET(QDMA_GLBL2_MULTQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_MISC_CAP);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = FIELD_GET(QDMA_GLBL2_MM_CMPT_EN_MASK, reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_MDMA);
-	dev_info->mm_en = (FIELD_GET(QDMA_GLBL2_MM_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_MM_H2C_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(QDMA_GLBL2_ST_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_ST_H2C_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_SBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_DBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_DSC_ERR_STS,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG0,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG1,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT0,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT1,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG2
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_TRQ_ERR_STS,
-		QDMA_OFFSET_GLBL_TRQ_ERR_LOG
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_OFFSET_H2C_FIRST_ERR_QID,
-		QDMA_OFFSET_H2C_DBG_REG0,
-		QDMA_OFFSET_H2C_DBG_REG1,
-		QDMA_OFFSET_H2C_DBG_REG2,
-		QDMA_OFFSET_H2C_DBG_REG3,
-		QDMA_OFFSET_H2C_DBG_REG4
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_OFFSET_C2H_FIRST_ERR_QID,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum qdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_err_info[(enum qdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_DSC_ERR_POISON,
-		QDMA_TRQ_ERR_UNMAPPED,
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("addr = 0x%08x val = 0x%08x",
-			QDMA_OFFSET_GLBL_ERR_STAT,
-			glbl_err_stat);
-	for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == QDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr);
-
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					qdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			qdma_err_info[bit].qdma_hw_err_process(
-						dev_hndl);
-
-			for (idx = bit; idx < all_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat & qdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s",
-						__func__,
-						qdma_hw_get_error_name(idx));
-			}
-
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr,
-				err_stat);
-
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-					   __func__, err_idx,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_ERRS_ALL) {
-		for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_ST_C2H_ERR_ALL ||
-					idx == QDMA_ST_FATAL_ERR_ALL ||
-					idx == QDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_OFFSET_GLBL_ERR_MASK);
-			reg_val |= FIELD_SET(
-				qdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs) / sizeof((qdma_config_regs)[0]);
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_soft_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_config_regs;
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*
- * qdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void qdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-	ind_intr_ctxt_entries[8].value = intr_ctxt->at;
-}
-
-
-static uint32_t qdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(ind_intr_ctxt_entries) /
-			sizeof(ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * dump_intr_context() - Helper function to dump interrupt context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	qdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(ind_intr_ctxt_entries) /
-			sizeof((ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			ind_intr_ctxt_entries[i].name,
-			ind_intr_ctxt_entries[i].value,
-			ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_dump_intr_context() - Function to get qdma interrupt context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = qdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode (ST or MM)
- * @q_type:		Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_soft_context(ctxt_data, st, q_type, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @is_vf:		VF or PF
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:sw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:hw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw,
-				&(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:cr ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_pfetch_ctx_conf(dev_hndl,
-				qid_hw, &(context.pfetch_ctxt),
-				QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s:pftch ctxt read fail, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-		(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					 &(context.cmpt_ctxt),
-					 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s:cmpt ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = qdma_fmap_conf(dev_hndl, func_id,
-				 &(context.fmap),
-				 QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s:fmap ctxt read fail, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_soft_context(&context, st, q_type, buf, buflen);
-
-	return rv;
-}
-/*****************************************************************************/
-/**
- * qdma_is_legacy_intr_pend() - function to get legacy_intr_pending status bit
- *
- * @dev_hndl: device handle
- *
- * Return: legacy interrupt pending status bit value
- *****************************************************************************/
-int qdma_is_legacy_intr_pend(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	if (FIELD_GET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, reg_val))
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: no pending legacy intr, err:%d\n",
-				   __func__, -QDMA_ERR_INV_PARAM);
-	return -QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR;
-}
-
-/*****************************************************************************/
-/**
- * qdma_clear_pend_legacy_intr() - function to clear legacy_intr_pending bit
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-int qdma_clear_pend_legacy_intr(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, 1);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_legacy_intr_conf() - function to disable/enable legacy interrupt
- *
- * @dev_hndl: device handle
- * @enable: enable/disable flag. 1 - enable, 0 - disable
- *
- * Return: void
- *****************************************************************************/
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK, enable);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    ((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = qdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-
-	reg_info = qdma_config_regs;
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_soft_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_config_regs;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid group received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &qdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_OFFSET_C2H_TIMER_CNT, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		reg_val |= FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_OFFSET_C2H_MM_CONTROL :
-			QDMA_OFFSET_H2C_MM_CONTROL;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_get_config_num_regs();
-	struct xreg_info *config_regs  = qdma_get_config_regs();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.h
deleted file mode 100755
index 6640987..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_access.h
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_SOFT_ACCESS_H_
-#define __QDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library interface definitions
- *
- * Header file *qdma_access.h* defines data structures and function signatures
- * exported by QDMA common library.
- */
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_error_idx {
-	/* Descriptor errors */
-	QDMA_DSC_ERR_POISON,
-	QDMA_DSC_ERR_UR_CA,
-	QDMA_DSC_ERR_PARAM,
-	QDMA_DSC_ERR_ADDR,
-	QDMA_DSC_ERR_TAG,
-	QDMA_DSC_ERR_FLR,
-	QDMA_DSC_ERR_TIMEOUT,
-	QDMA_DSC_ERR_DAT_POISON,
-	QDMA_DSC_ERR_FLR_CANCEL,
-	QDMA_DSC_ERR_DMA,
-	QDMA_DSC_ERR_DSC,
-	QDMA_DSC_ERR_RQ_CANCEL,
-	QDMA_DSC_ERR_DBE,
-	QDMA_DSC_ERR_SBE,
-	QDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_TRQ_ERR_UNMAPPED,
-	QDMA_TRQ_ERR_QID_RANGE,
-	QDMA_TRQ_ERR_VF_ACCESS,
-	QDMA_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	QDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	QDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	QDMA_ST_H2C_ERR_CSI_MOP,
-	QDMA_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_ST_H2C_ERR_SBE,
-	QDMA_ST_H2C_ERR_DBE,
-	QDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_SBE_ERR_MI_H2C0_DAT,
-	QDMA_SBE_ERR_MI_C2H0_DAT,
-	QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_SBE_ERR_FUNC_MAP,
-	QDMA_SBE_ERR_DSC_HW_CTXT,
-	QDMA_SBE_ERR_DSC_CRD_RCV,
-	QDMA_SBE_ERR_DSC_SW_CTXT,
-	QDMA_SBE_ERR_DSC_CPLI,
-	QDMA_SBE_ERR_DSC_CPLD,
-	QDMA_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_SBE_ERR_QID_FIFO_RAM,
-	QDMA_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_SBE_ERR_INT_CTXT_RAM,
-	QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_SBE_ERR_PFCH_LL_RAM,
-	QDMA_SBE_ERR_H2C_PEND_FIFO,
-	QDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_DBE_ERR_MI_H2C0_DAT,
-	QDMA_DBE_ERR_MI_C2H0_DAT,
-	QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_DBE_ERR_FUNC_MAP,
-	QDMA_DBE_ERR_DSC_HW_CTXT,
-	QDMA_DBE_ERR_DSC_CRD_RCV,
-	QDMA_DBE_ERR_DSC_SW_CTXT,
-	QDMA_DBE_ERR_DSC_CPLI,
-	QDMA_DBE_ERR_DSC_CPLD,
-	QDMA_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_DBE_ERR_QID_FIFO_RAM,
-	QDMA_DBE_ERR_TUSER_FIFO_RAM,
-	QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_DBE_ERR_INT_CTXT_RAM,
-	QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_DBE_ERR_PFCH_LL_RAM,
-	QDMA_DBE_ERR_H2C_PEND_FIFO,
-	QDMA_DBE_ERR_ALL,
-
-	QDMA_ERRS_ALL
-};
-
-struct qdma_hw_err_info {
-	enum qdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_set_default_global_csr(void *dev_hndl);
-
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_init_ctxt_memory(void *dev_hndl);
-
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable);
-
-int qdma_clear_pend_legacy_intr(void *dev_hndl);
-
-int qdma_is_legacy_intr_pend(void *dev_hndl);
-
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-uint32_t qdma_soft_reg_dump_buf_len(void);
-
-uint32_t qdma_get_config_num_regs(void);
-
-struct xreg_info *qdma_get_config_regs(void);
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-int qdma_hw_error_process(void *dev_hndl);
-
-const char *qdma_hw_get_error_name(uint32_t err_idx);
-
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int qdma_soft_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_reg.h b/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
deleted file mode 100755
index 53671a6..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * BSD LICENSE
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_SOFT_REG_H__
-#define __QDMA_SOFT_REG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * User defined helper macros for masks and shifts. If the same macros are
- * defined in linux kernel code , then undefined them and used the user
- * defined macros
- */
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-
-#define DEBGFS_LINE_SZ			(81)
-
-
-#define QDMA_H2C_THROT_DATA_THRESH       0x4000
-#define QDMA_THROT_EN_DATA               1
-#define QDMA_THROT_EN_REQ                0
-#define QDMA_H2C_THROT_REQ_THRESH        0x60
-
-/*
- * Q Context programming (indirect)
- */
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-#define QDMA_REG_IND_CTXT_WCNT_1                            1
-#define QDMA_REG_IND_CTXT_WCNT_2                            2
-#define QDMA_REG_IND_CTXT_WCNT_3                            3
-#define QDMA_REG_IND_CTXT_WCNT_4                            4
-#define QDMA_REG_IND_CTXT_WCNT_5                            5
-#define QDMA_REG_IND_CTXT_WCNT_6                            6
-#define QDMA_REG_IND_CTXT_WCNT_7                            7
-#define QDMA_REG_IND_CTXT_WCNT_8                            8
-
-/* ------------------------- QDMA_TRQ_SEL_IND (0x00800) ----------------*/
-#define QDMA_OFFSET_IND_CTXT_DATA                           0x804
-#define QDMA_OFFSET_IND_CTXT_MASK                           0x824
-#define QDMA_OFFSET_IND_CTXT_CMD                            0x844
-#define     QDMA_IND_CTXT_CMD_BUSY_MASK                     0x1
-
-/** QDMA_IND_REG_SEL_FMAP */
-#define QDMA_FMAP_CTXT_W1_QID_MAX_MASK                      GENMASK(11, 0)
-#define QDMA_FMAP_CTXT_W0_QID_MASK                          GENMASK(10, 0)
-
-/** QDMA_IND_REG_SEL_SW_C2H */
-/** QDMA_IND_REG_SEL_SW_H2C */
-#define QDMA_SW_CTXT_W4_INTR_AGGR_MASK                      BIT(11)
-#define QDMA_SW_CTXT_W4_VEC_MASK                            GENMASK(10, 0)
-#define QDMA_SW_CTXT_W3_DSC_H_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W2_DSC_L_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W1_IS_MM_MASK                          BIT(31)
-#define QDMA_SW_CTXT_W1_MRKR_DIS_MASK                       BIT(30)
-#define QDMA_SW_CTXT_W1_IRQ_REQ_MASK                        BIT(29)
-#define QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK                    BIT(28)
-#define QDMA_SW_CTXT_W1_ERR_MASK                            GENMASK(27, 26)
-#define QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK                    BIT(25)
-#define QDMA_SW_CTXT_W1_PORT_ID_MASK                        GENMASK(24, 22)
-#define QDMA_SW_CTXT_W1_IRQ_EN_MASK                         BIT(21)
-#define QDMA_SW_CTXT_W1_WBK_EN_MASK                         BIT(20)
-#define QDMA_SW_CTXT_W1_MM_CHN_MASK                         BIT(19)
-#define QDMA_SW_CTXT_W1_BYP_MASK                            BIT(18)
-#define QDMA_SW_CTXT_W1_DSC_SZ_MASK                         GENMASK(17, 16)
-#define QDMA_SW_CTXT_W1_RNG_SZ_MASK                         GENMASK(15, 12)
-#define QDMA_SW_CTXT_W1_FETCH_MAX_MASK                      GENMASK(7, 5)
-#define QDMA_SW_CTXT_W1_AT_MASK                             BIT(4)
-#define QDMA_SW_CTXT_W1_WB_INT_EN_MASK                      BIT(3)
-#define QDMA_SW_CTXT_W1_WBI_CHK_MASK                        BIT(2)
-#define QDMA_SW_CTXT_W1_FCRD_EN_MASK                        BIT(1)
-#define QDMA_SW_CTXT_W1_QEN_MASK                            BIT(0)
-#define QDMA_SW_CTXT_W0_FUNC_ID_MASK                        GENMASK(24, 17)
-#define QDMA_SW_CTXT_W0_IRQ_ARM_MASK                        BIT(16)
-#define QDMA_SW_CTXT_W0_PIDX                                GENMASK(15, 0)
-
-
-
-#define QDMA_PFTCH_CTXT_W1_VALID_MASK                       BIT(13)
-#define QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK                   GENMASK(12, 0)
-#define QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK                   GENMASK(31, 29)
-#define QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK                 BIT(28)
-#define QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK                   BIT(27)
-#define QDMA_PFTCH_CTXT_W0_ERR_MASK                         BIT(26)
-#define QDMA_PFTCH_CTXT_W0_PORT_ID_MASK                     GENMASK(7, 5)
-#define QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK                GENMASK(4, 1)
-#define QDMA_PFTCH_CTXT_W0_BYPASS_MASK                      BIT(0)
-
-
-
-
-#define QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK                   BIT(15)
-#define QDMA_COMPL_CTXT_W4_INTR_VEC_MASK                    GENMASK(14, 4)
-#define QDMA_COMPL_CTXT_W4_AT_MASK                          BIT(3)
-#define QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK                 BIT(2)
-#define QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK                   BIT(1)
-#define QDMA_COMPL_CTXT_W4_TMR_RUN_MASK                     BIT(0)
-#define QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK                 BIT(31)
-#define QDMA_COMPL_CTXT_W3_ERR_MASK                         GENMASK(30, 29)
-#define QDMA_COMPL_CTXT_W3_VALID_MASK                       BIT(28)
-#define QDMA_COMPL_CTXT_W3_CIDX_MASK                        GENMASK(27, 12)
-#define QDMA_COMPL_CTXT_W3_PIDX_H_MASK                      GENMASK(11, 0)
-#define QDMA_COMPL_CTXT_W2_PIDX_L_MASK                      GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK                   GENMASK(27, 26)
-#define QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK                  GENMASK(25, 0)
-#define QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK                  GENMASK(31, 6)
-#define QDMA_COMPL_CTXT_W0_RING_SZ_MASK                     GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W0_COLOR_MASK                       BIT(27)
-#define QDMA_COMPL_CTXT_W0_INT_ST_MASK                      GENMASK(26, 25)
-#define QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK                   GENMASK(24, 21)
-#define QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK                 GENMASK(20, 17)
-#define QDMA_COMPL_CTXT_W0_FNC_ID_MASK                      GENMASK(12, 5)
-#define QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK                   GENMASK(4, 2)
-#define QDMA_COMPL_CTXT_W0_EN_INT_MASK                      BIT(1)
-#define QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK                BIT(0)
-
-/** QDMA_IND_REG_SEL_HW_C2H */
-/** QDMA_IND_REG_SEL_HW_H2C */
-#define QDMA_HW_CTXT_W1_FETCH_PEND_MASK                     GENMASK(14, 11)
-#define QDMA_HW_CTXT_W1_EVENT_PEND_MASK                     BIT(10)
-#define QDMA_HW_CTXT_W1_IDL_STP_B_MASK                      BIT(9)
-#define QDMA_HW_CTXT_W1_DSC_PND_MASK                        BIT(8)
-#define QDMA_HW_CTXT_W0_CRD_USE_MASK                        GENMASK(31, 16)
-#define QDMA_HW_CTXT_W0_CIDX_MASK                           GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_CR_C2H */
-/** QDMA_IND_REG_SEL_CR_H2C */
-#define QDMA_CR_CTXT_W0_CREDT_MASK                          GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_INTR */
-
-
-#define QDMA_INTR_CTXT_W2_AT_MASK                           BIT(18)
-#define QDMA_INTR_CTXT_W2_PIDX_MASK                         GENMASK(17, 6)
-#define QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK                    GENMASK(5, 3)
-#define QDMA_INTR_CTXT_W2_BADDR_64_MASK                     GENMASK(2, 0)
-#define QDMA_INTR_CTXT_W1_BADDR_64_MASK                     GENMASK(31, 0)
-#define QDMA_INTR_CTXT_W0_BADDR_64_MASK                     GENMASK(31, 15)
-#define QDMA_INTR_CTXT_W0_COLOR_MASK                        BIT(14)
-#define QDMA_INTR_CTXT_W0_INT_ST_MASK                       BIT(13)
-#define QDMA_INTR_CTXT_W0_VEC_ID_MASK                       GENMASK(11, 1)
-#define QDMA_INTR_CTXT_W0_VALID_MASK                        BIT(0)
-
-
-
-
-
-/* ------------------------ QDMA_TRQ_SEL_GLBL (0x00200)-------------------*/
-#define QDMA_OFFSET_GLBL_RNG_SZ                             0x204
-#define QDMA_OFFSET_GLBL_SCRATCH                            0x244
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define QDMA_OFFSET_GLBL_DSC_CFG                            0x250
-#define     QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK               GENMASK(2, 0)
-#define     QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK            GENMASK(5, 3)
-#define QDMA_OFFSET_GLBL_DSC_ERR_STS                        0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MSK                        0x258
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG0                       0x25C
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG1                       0x260
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STS                        0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MSK                        0x268
-#define QDMA_OFFSET_GLBL_TRQ_ERR_LOG                        0x26C
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT0                       0x270
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT1                       0x274
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG2                       0x27C
-#define QDMA_OFFSET_GLBL_INTERRUPT_CFG                      0x2C4
-#define     QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK            BIT(0)
-#define     QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK              BIT(1)
-
-/* ------------------------- QDMA_TRQ_SEL_C2H (0x00A00) ------------------*/
-#define QDMA_OFFSET_C2H_TIMER_CNT                           0xA00
-#define QDMA_OFFSET_C2H_CNT_TH                              0xA40
-#define QDMA_OFFSET_C2H_QID2VEC_MAP_QID                     0xA80
-#define QDMA_OFFSET_C2H_QID2VEC_MAP                         0xA84
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED            0xA88
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED           0xA8C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED          0xA90
-#define QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP                   0xA94
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ACCEPTED              0xA98
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_CMP                   0xA9C
-#define QDMA_OFFSET_C2H_STAT_WRQ_OUT                        0xAA0
-#define QDMA_OFFSET_C2H_STAT_WPL_REN_ACCEPTED               0xAA4
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WRQ_LEN                  0xAA8
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WPL_LEN                  0xAAC
-#define QDMA_OFFSET_C2H_BUF_SZ                              0xAB0
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define QDMA_OFFSET_C2H_FATAL_ERR_ENABLE                    0xB00
-#define QDMA_OFFSET_C2H_ERR_INT                             0xB04
-#define QDMA_OFFSET_C2H_PFETCH_CFG                          0xB08
-#define     QDMA_C2H_EVT_QCNT_TH_MASK                       GENMASK(31, 25)
-#define     QDMA_C2H_PFCH_QCNT_MASK                         GENMASK(24, 18)
-#define     QDMA_C2H_NUM_PFCH_MASK                          GENMASK(17, 9)
-#define     QDMA_C2H_PFCH_FL_TH_MASK                        GENMASK(8, 0)
-#define QDMA_OFFSET_C2H_INT_TIMER_TICK                      0xB0C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED         0xB10
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED          0xB14
-#define QDMA_OFFSET_C2H_STAT_DESC_REQ                       0xB18
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0                0xB1C
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1                0xB20
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2                0xB24
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3                0xB28
-#define QDMA_OFFSET_C2H_DBG_PFCH_ERR_CTXT                   0xB2C
-#define QDMA_OFFSET_C2H_FIRST_ERR_QID                       0xB30
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_IN                    0xB34
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_OUT                   0xB38
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_DRP                   0xB3C
-#define QDMA_OFFSET_C2H_STAT_NUM_STAT_DESC_OUT              0xB40
-#define QDMA_OFFSET_C2H_STAT_NUM_DSC_CRDT_SENT              0xB44
-#define QDMA_OFFSET_C2H_STAT_NUM_FCH_DSC_RCVD               0xB48
-#define QDMA_OFFSET_C2H_STAT_NUM_BYP_DSC_RCVD               0xB4C
-#define QDMA_OFFSET_C2H_WRB_COAL_CFG                        0xB50
-#define     QDMA_C2H_MAX_BUF_SZ_MASK                        GENMASK(31, 26)
-#define     QDMA_C2H_TICK_VAL_MASK                          GENMASK(25, 14)
-#define     QDMA_C2H_TICK_CNT_MASK                          GENMASK(13, 2)
-#define     QDMA_C2H_SET_GLB_FLUSH_MASK                     BIT(1)
-#define     QDMA_C2H_DONE_GLB_FLUSH_MASK                    BIT(0)
-#define QDMA_OFFSET_C2H_INTR_H2C_REQ                        0xB54
-#define QDMA_OFFSET_C2H_INTR_C2H_MM_REQ                     0xB58
-#define QDMA_OFFSET_C2H_INTR_ERR_INT_REQ                    0xB5C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_REQ                     0xB60
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK        0xB64
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL       0xB68
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX    0xB6C
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL      0xB70
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_ACK                0xB74
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_FAIL               0xB78
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_NO_MSIX                 0xB7C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_CTXT_INVAL              0xB80
-#define QDMA_OFFSET_C2H_STAT_WR_CMP                         0xB84
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_4                0xB88
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_5                0xB8C
-#define QDMA_OFFSET_C2H_DBG_PFCH_QID                        0xB90
-#define QDMA_OFFSET_C2H_DBG_PFCH                            0xB94
-#define QDMA_OFFSET_C2H_INT_DEBUG                           0xB98
-#define QDMA_OFFSET_C2H_STAT_IMM_ACCEPTED                   0xB9C
-#define QDMA_OFFSET_C2H_STAT_MARKER_ACCEPTED                0xBA0
-#define QDMA_OFFSET_C2H_STAT_DISABLE_CMP_ACCEPTED           0xBA4
-#define QDMA_OFFSET_C2H_PAYLOAD_FIFO_CRDT_CNT               0xBA8
-#define QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH                  0xBE0
-#define QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH                 0xBE4
-
-/* ------------------------- QDMA_TRQ_SEL_H2C (0x00E00) ------------------*/
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define QDMA_OFFSET_H2C_FIRST_ERR_QID                       0xE08
-#define QDMA_OFFSET_H2C_DBG_REG0                            0xE0C
-#define QDMA_OFFSET_H2C_DBG_REG1                            0xE10
-#define QDMA_OFFSET_H2C_DBG_REG2                            0xE14
-#define QDMA_OFFSET_H2C_DBG_REG3                            0xE18
-#define QDMA_OFFSET_H2C_DBG_REG4                            0xE1C
-#define QDMA_OFFSET_H2C_FATAL_ERR_EN                        0xE20
-#define QDMA_OFFSET_H2C_REQ_THROT                           0xE24
-#define     QDMA_H2C_REQ_THROT_EN_REQ_MASK                  BIT(31)
-#define     QDMA_H2C_REQ_THRESH_MASK                        GENMASK(25, 17)
-#define     QDMA_H2C_REQ_THROT_EN_DATA_MASK                 BIT(16)
-#define     QDMA_H2C_DATA_THRESH_MASK                       GENMASK(15, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_H2C_MM (0x1200) ----------------*/
-#define QDMA_OFFSET_H2C_MM_CONTROL                          0x1204
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1S                      0x1208
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1C                      0x120C
-#define QDMA_OFFSET_H2C_MM_STATUS                           0x1240
-#define QDMA_OFFSET_H2C_MM_STATUS_RC                        0x1244
-#define QDMA_OFFSET_H2C_MM_COMPLETED_DESC_COUNT             0x1248
-#define QDMA_OFFSET_H2C_MM_ERR_CODE_EN_MASK                 0x1254
-#define QDMA_OFFSET_H2C_MM_ERR_CODE                         0x1258
-#define QDMA_OFFSET_H2C_MM_ERR_INFO                         0x125C
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CONTROL                 0x12C0
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_0           0x12C4
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_1           0x12C8
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_0            0x12CC
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_1            0x12D0
-#define QDMA_OFFSET_H2C_MM_DEBUG                            0x12E8
-
-/* ------------------------- QDMA_TRQ_SEL_C2H_MM (0x1000) ----------------*/
-#define QDMA_OFFSET_C2H_MM_CONTROL                          0x1004
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1S                      0x1008
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1C                      0x100C
-#define QDMA_OFFSET_C2H_MM_STATUS                           0x1040
-#define QDMA_OFFSET_C2H_MM_STATUS_RC                        0x1044
-#define QDMA_OFFSET_C2H_MM_COMPLETED_DESC_COUNT             0x1048
-#define QDMA_OFFSET_C2H_MM_ERR_CODE_EN_MASK                 0x1054
-#define QDMA_OFFSET_C2H_MM_ERR_CODE                         0x1058
-#define QDMA_OFFSET_C2H_MM_ERR_INFO                         0x105C
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CONTROL                 0x10C0
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_0           0x10C4
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_1           0x10C8
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_0            0x10CC
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_1            0x10D0
-#define QDMA_OFFSET_C2H_MM_DEBUG                            0x10E8
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL1 (0x0) -----------------*/
-#define QDMA_OFFSET_CONFIG_BLOCK_ID                         0x0
-#define     QDMA_CONFIG_BLOCK_ID_MASK                       GENMASK(31, 16)
-
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL2 (0x00100) ----------------*/
-#define QDMA_OFFSET_GLBL2_ID                                0x100
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT                    0x104
-#define     QDMA_GLBL2_PF3_BAR_MAP_MASK                     GENMASK(23, 18)
-#define     QDMA_GLBL2_PF2_BAR_MAP_MASK                     GENMASK(17, 12)
-#define     QDMA_GLBL2_PF1_BAR_MAP_MASK                     GENMASK(11, 6)
-#define     QDMA_GLBL2_PF0_BAR_MAP_MASK                     GENMASK(5, 0)
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_INT                 0x108
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_EXT                    0x10C
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_EXT                 0x110
-#define QDMA_OFFSET_GLBL2_CHANNEL_INST                      0x114
-#define QDMA_OFFSET_GLBL2_CHANNEL_MDMA                      0x118
-#define     QDMA_GLBL2_ST_C2H_MASK                          BIT(17)
-#define     QDMA_GLBL2_ST_H2C_MASK                          BIT(16)
-#define     QDMA_GLBL2_MM_C2H_MASK                          BIT(8)
-#define     QDMA_GLBL2_MM_H2C_MASK                          BIT(0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_STRM                      0x11C
-#define QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP                  0x120
-#define     QDMA_GLBL2_MULTQ_MAX_MASK                       GENMASK(11, 0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_PASID_CAP                 0x128
-#define QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET                  0x12C
-#define QDMA_OFFSET_GLBL2_SYSTEM_ID                         0x130
-#define QDMA_OFFSET_GLBL2_MISC_CAP                          0x134
-
-#define     QDMA_GLBL2_DEVICE_ID_MASK                       GENMASK(31, 28)
-#define     QDMA_GLBL2_VIVADO_RELEASE_MASK                  GENMASK(27, 24)
-#define     QDMA_GLBL2_VERSAL_IP_MASK                       GENMASK(23, 20)
-#define     QDMA_GLBL2_RTL_VERSION_MASK                     GENMASK(19, 16)
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ0                      0x1B8
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ1                      0x1BC
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR0                     0x1C0
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR1                     0x1C4
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD0                     0x1C8
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD1                     0x1CC
-
-/* used for VF bars identification */
-#define QDMA_OFFSET_VF_USER_BAR_ID                          0x1018
-#define QDMA_OFFSET_VF_CONFIG_BAR_ID                        0x1014
-
-/* FLR programming */
-#define QDMA_OFFSET_VF_REG_FLR_STATUS                       0x1100
-#define QDMA_OFFSET_PF_REG_FLR_STATUS                       0x2500
-#define     QDMA_FLR_STATUS_MASK                            0x1
-
-/* VF qdma version */
-#define QDMA_OFFSET_VF_VERSION                              0x1014
-#define QDMA_OFFSET_PF_VERSION                              0x2414
-#define     QDMA_GLBL2_VF_UNIQUE_ID_MASK                    GENMASK(31, 16)
-#define     QDMA_GLBL2_VF_DEVICE_ID_MASK                    GENMASK(15, 12)
-#define     QDMA_GLBL2_VF_VIVADO_RELEASE_MASK               GENMASK(11, 8)
-#define     QDMA_GLBL2_VF_VERSAL_IP_MASK                    GENMASK(7, 4)
-#define     QDMA_GLBL2_VF_RTL_VERSION_MASK                  GENMASK(3, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_QUEUE_PF (0x18000) ----------------*/
-
-#define QDMA_OFFSET_DMAP_SEL_INT_CIDX                       0x18000
-#define QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX                   0x18004
-#define QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX                   0x18008
-#define QDMA_OFFSET_DMAP_SEL_CMPT_CIDX                      0x1800C
-
-#define QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX                    0x3000
-#define QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX                0x3004
-#define QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX                0x3008
-#define QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX                   0x300C
-
-#define     QDMA_DMA_SEL_INT_SW_CIDX_MASK                   GENMASK(15, 0)
-#define     QDMA_DMA_SEL_INT_RING_IDX_MASK                  GENMASK(23, 16)
-#define     QDMA_DMA_SEL_DESC_PIDX_MASK                     GENMASK(15, 0)
-#define     QDMA_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define     QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK                  BIT(28)
-#define     QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK             BIT(27)
-#define     QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK                GENMASK(26, 24)
-#define     QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK                 GENMASK(23, 20)
-#define     QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK              GENMASK(19, 16)
-#define     QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK                GENMASK(15, 0)
-
-/* ------------------------- Hardware Errors ------------------------------ */
-#define TOTAL_LEAF_ERROR_AGGREGATORS                        7
-
-#define QDMA_OFFSET_GLBL_ERR_INT                            0xB04
-#define     QDMA_GLBL_ERR_FUNC_MASK                         GENMASK(7, 0)
-#define     QDMA_GLBL_ERR_VEC_MASK                          GENMASK(22, 12)
-#define     QDMA_GLBL_ERR_ARM_MASK                          BIT(24)
-
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define     QDMA_GLBL_ERR_RAM_SBE_MASK                      BIT(0)
-#define     QDMA_GLBL_ERR_RAM_DBE_MASK                      BIT(1)
-#define     QDMA_GLBL_ERR_DSC_MASK                          BIT(2)
-#define     QDMA_GLBL_ERR_TRQ_MASK                          BIT(3)
-#define     QDMA_GLBL_ERR_ST_C2H_MASK                       BIT(8)
-#define     QDMA_GLBL_ERR_ST_H2C_MASK                       BIT(11)
-
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define     QDMA_C2H_ERR_MTY_MISMATCH_MASK                  BIT(0)
-#define     QDMA_C2H_ERR_LEN_MISMATCH_MASK                  BIT(1)
-#define     QDMA_C2H_ERR_QID_MISMATCH_MASK                  BIT(3)
-#define     QDMA_C2H_ERR_DESC_RSP_ERR_MASK                  BIT(4)
-#define     QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK          BIT(6)
-#define     QDMA_C2H_ERR_MSI_INT_FAIL_MASK                  BIT(7)
-#define     QDMA_C2H_ERR_ERR_DESC_CNT_MASK                  BIT(9)
-#define     QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK          BIT(10)
-#define     QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK        BIT(11)
-#define     QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK                BIT(12)
-#define     QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK                BIT(13)
-#define     QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK                 BIT(14)
-#define     QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK                 BIT(15)
-#define     QDMA_C2H_ERR_ALL_MASK                           0xFEDB
-
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define     QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK            BIT(0)
-#define     QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK            BIT(1)
-#define     QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK            BIT(3)
-#define     QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK     BIT(4)
-#define     QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK        BIT(8)
-#define     QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK      BIT(9)
-#define     QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK      BIT(10)
-#define     QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK  BIT(11)
-#define     QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK       BIT(12)
-#define     QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK BIT(14)
-#define     QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK     BIT(15)
-#define     QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK       BIT(16)
-#define     QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK   BIT(17)
-#define     QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK            BIT(18)
-#define     QDMA_C2H_FATAL_ERR_ALL_MASK                     0x7DF1B
-
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define     QDMA_H2C_ERR_ZERO_LEN_DESC_MASK                 BIT(0)
-#define     QDMA_H2C_ERR_CSI_MOP_MASK                       BIT(1)
-#define     QDMA_H2C_ERR_NO_DMA_DSC_MASK                    BIT(2)
-#define     QDMA_H2C_ERR_SBE_MASK                           BIT(3)
-#define     QDMA_H2C_ERR_DBE_MASK                           BIT(4)
-#define     QDMA_H2C_ERR_ALL_MASK                           0x1F
-
-#define QDMA_OFFSET_GLBL_DSC_ERR_STAT                       0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MASK                       0x258
-#define     QDMA_GLBL_DSC_ERR_POISON_MASK                   BIT(0)
-#define     QDMA_GLBL_DSC_ERR_UR_CA_MASK                    BIT(1)
-#define     QDMA_GLBL_DSC_ERR_PARAM_MASK                    BIT(2)
-#define     QDMA_GLBL_DSC_ERR_ADDR_MASK                     BIT(3)
-#define     QDMA_GLBL_DSC_ERR_TAG_MASK                      BIT(4)
-#define     QDMA_GLBL_DSC_ERR_FLR_MASK                      BIT(5)
-#define     QDMA_GLBL_DSC_ERR_TIMEOUT_MASK                  BIT(9)
-#define     QDMA_GLBL_DSC_ERR_DAT_POISON_MASK               BIT(16)
-#define     QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK               BIT(19)
-#define     QDMA_GLBL_DSC_ERR_DMA_MASK                      BIT(20)
-#define     QDMA_GLBL_DSC_ERR_DSC_MASK                      BIT(21)
-#define     QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK                BIT(22)
-#define     QDMA_GLBL_DSC_ERR_DBE_MASK                      BIT(23)
-#define     QDMA_GLBL_DSC_ERR_SBE_MASK                      BIT(24)
-#define     QDMA_GLBL_DSC_ERR_ALL_MASK                      0x1F9023F
-
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STAT                       0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MASK                       0x268
-#define     QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK                 BIT(0)
-#define     QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK                BIT(1)
-#define     QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK                BIT(2)
-#define     QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK              BIT(3)
-#define     QDMA_GLBL_TRQ_ERR_ALL_MASK                      0xF
-
-#define QDMA_OFFSET_RAM_SBE_STAT                            0xF4
-#define QDMA_OFFSET_RAM_SBE_MASK                            0xF0
-#define     QDMA_SBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_SBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_SBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_SBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_SBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_SBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_SBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_SBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_SBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_SBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_SBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_SBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_SBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_SBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_SBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_RAM_DBE_STAT                            0xFC
-#define QDMA_OFFSET_RAM_DBE_MASK                            0xF8
-#define     QDMA_DBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_DBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_DBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_DBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_DBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_DBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_DBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_DBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_DBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_DBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_DBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_DBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_DBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_DBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_DBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_MBOX_BASE_VF                            0x1000
-#define QDMA_OFFSET_MBOX_BASE_PF                            0x2400
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_REG_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_common.c b/QDMA/DPDK/drivers/net/qdma/qdma_common.c
deleted file mode 100755
index a25127e..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_common.c
+++ /dev/null
@@ -1,657 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdint.h>
-#include <rte_malloc.h>
-#include <rte_common.h>
-#include <rte_cycles.h>
-#include <rte_kvargs.h>
-#include "qdma.h"
-#include "qdma_access_common.h"
-#include <fcntl.h>
-#include <unistd.h>
-
-/* Read register */
-uint32_t qdma_read_reg(uint64_t reg_addr)
-{
-	uint32_t val;
-
-	val = *((volatile uint32_t *)(reg_addr));
-	return val;
-}
-
-/* Write register */
-void qdma_write_reg(uint64_t reg_addr, uint32_t val)
-{
-	*((volatile uint32_t *)(reg_addr)) = val;
-}
-
-uint32_t qdma_pci_read_reg(struct rte_eth_dev *dev, uint32_t bar, uint32_t reg)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint64_t baseaddr;
-	uint32_t val;
-
-	if (bar >= (QDMA_NUM_BARS - 1)) {
-		printf("Error: PCI BAR number:%u not supported\n"
-			"Please enter valid BAR number\n", bar);
-		return -1;
-	}
-
-	baseaddr = (uint64_t)qdma_dev->bar_addr[bar];
-	if (!baseaddr) {
-		printf("Error: PCI BAR number:%u not mapped\n", bar);
-		return -1;
-	}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-	val = *((volatile uint64_t *)(baseaddr + reg));
-#else
-	val = *((volatile uint32_t *)(baseaddr + reg));
-#endif
-
-	return val;
-}
-
-void qdma_pci_write_reg(struct rte_eth_dev *dev, uint32_t bar,
-			uint32_t reg, uint32_t val)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint64_t baseaddr;
-
-	if (bar >= (QDMA_NUM_BARS - 1)) {
-		printf("Error: PCI BAR index:%u not supported\n"
-			"Please enter valid BAR index\n", bar);
-		return;
-	}
-
-	baseaddr = (uint64_t)qdma_dev->bar_addr[bar];
-	if (!baseaddr) {
-		printf("Error: PCI BAR number:%u not mapped\n", bar);
-		return;
-	}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-	*((volatile uint64_t *)(baseaddr + reg)) = val;
-#else
-	*((volatile uint32_t *)(baseaddr + reg)) = val;
-#endif
-}
-
-void qdma_reset_rx_queue(struct qdma_rx_queue *rxq)
-{
-	uint32_t i;
-	uint32_t sz;
-
-	rxq->rx_tail = 0;
-	rxq->q_pidx_info.pidx = 0;
-
-	/* Zero out HW ring memory, For MM Descriptor */
-	if (rxq->st_mode) {  /** if ST-mode **/
-		sz = rxq->cmpt_desc_len;
-		for (i = 0; i < (sz * rxq->nb_rx_cmpt_desc); i++)
-			((volatile char *)rxq->cmpt_ring)[i] = 0;
-
-		sz = sizeof(struct qdma_ul_st_c2h_desc);
-		for (i = 0; i < (sz * rxq->nb_rx_desc); i++)
-			((volatile char *)rxq->rx_ring)[i] = 0;
-
-	} else {
-		sz = sizeof(struct qdma_ul_mm_desc);
-		for (i = 0; i < (sz * rxq->nb_rx_desc); i++)
-			((volatile char *)rxq->rx_ring)[i] = 0;
-	}
-
-	/* Initialize SW ring entries */
-	for (i = 0; i < rxq->nb_rx_desc; i++)
-		rxq->sw_ring[i] = NULL;
-}
-
-void qdma_inv_rx_queue_ctxts(struct rte_eth_dev *dev,
-			     uint32_t qid, uint32_t mode)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_descq_prefetch_ctxt q_prefetch_ctxt;
-	struct qdma_descq_cmpt_ctxt q_cmpt_ctxt;
-	struct qdma_descq_hw_ctxt q_hw_ctxt;
-	struct qdma_descq_credit_ctxt q_credit_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	hw_access->qdma_sw_ctx_conf(dev, 1, qid, &q_sw_ctxt,
-			QDMA_HW_ACCESS_INVALIDATE);
-	hw_access->qdma_hw_ctx_conf(dev, 1, qid, &q_hw_ctxt,
-			QDMA_HW_ACCESS_INVALIDATE);
-	if (mode) {  /** ST-mode **/
-		hw_access->qdma_pfetch_ctx_conf(dev, qid,
-			&q_prefetch_ctxt, QDMA_HW_ACCESS_INVALIDATE);
-		hw_access->qdma_cmpt_ctx_conf(dev, qid,
-			&q_cmpt_ctxt, QDMA_HW_ACCESS_INVALIDATE);
-		hw_access->qdma_credit_ctx_conf(dev, 1, qid,
-			&q_credit_ctxt, QDMA_HW_ACCESS_INVALIDATE);
-	}
-}
-
-/**
- * Clears the Rx queue contexts.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   Nothing.
- */
-void qdma_clr_rx_queue_ctxts(struct rte_eth_dev *dev,
-			     uint32_t qid, uint32_t mode)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_descq_prefetch_ctxt q_prefetch_ctxt;
-	struct qdma_descq_cmpt_ctxt q_cmpt_ctxt;
-	struct qdma_descq_hw_ctxt q_hw_ctxt;
-	struct qdma_descq_credit_ctxt q_credit_ctxt;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	hw_access->qdma_sw_ctx_conf(dev, 1, qid, &q_sw_ctxt,
-			QDMA_HW_ACCESS_CLEAR);
-	hw_access->qdma_hw_ctx_conf(dev, 1, qid, &q_hw_ctxt,
-			QDMA_HW_ACCESS_CLEAR);
-	if (mode) {  /** ST-mode **/
-		hw_access->qdma_pfetch_ctx_conf(dev, qid,
-			&q_prefetch_ctxt, QDMA_HW_ACCESS_CLEAR);
-		hw_access->qdma_cmpt_ctx_conf(dev, qid,
-			&q_cmpt_ctxt, QDMA_HW_ACCESS_CLEAR);
-		hw_access->qdma_credit_ctx_conf(dev, 1, qid,
-			&q_credit_ctxt, QDMA_HW_ACCESS_CLEAR);
-	}
-}
-
-int qdma_init_rx_queue(struct qdma_rx_queue *rxq)
-{
-	struct rte_mbuf *mb;
-	void *obj = NULL;
-	uint64_t phys_addr;
-	uint16_t i;
-	struct qdma_ul_st_c2h_desc *rx_ring_st = NULL;
-
-	/* allocate new buffers for the Rx descriptor ring */
-	if (rxq->st_mode) {  /** ST-mode **/
-		rx_ring_st = (struct qdma_ul_st_c2h_desc *)rxq->rx_ring;
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: queue id %d, mbuf_avail_count =%d,"
-				"mbuf_in_use_count = %d",
-				__func__, __LINE__, rxq->queue_id,
-				rte_mempool_avail_count(rxq->mb_pool),
-				rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-		for (i = 0; i < (rxq->nb_rx_desc - 2); i++) {
-			if (rte_mempool_get(rxq->mb_pool, &obj) != 0) {
-				PMD_DRV_LOG(ERR, "qdma-start-rx-queue(): "
-						"rte_mempool_get: failed");
-				goto fail;
-			}
-
-			if (obj != NULL)
-				mb = obj;
-			else {
-				PMD_DRV_LOG(ERR, "%s(): %d: qid %d, rte_mempool_get failed",
-				__func__, __LINE__, rxq->queue_id);
-				goto fail;
-			}
-
-			phys_addr = (uint64_t)mb->buf_iova +
-				     RTE_PKTMBUF_HEADROOM;
-
-			mb->data_off = RTE_PKTMBUF_HEADROOM;
-			rxq->sw_ring[i] = mb;
-			rx_ring_st[i].dst_addr = phys_addr;
-		}
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: qid %d, mbuf_avail_count = %d,"
-				"mbuf_in_use_count = %d",
-				__func__, __LINE__, rxq->queue_id,
-				rte_mempool_avail_count(rxq->mb_pool),
-				rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-	}
-
-	/* initialize tail */
-	rxq->rx_tail = 0;
-
-	return 0;
-fail:
-	return -ENOMEM;
-}
-
-/*
- * Tx queue reset
- */
-void qdma_reset_tx_queue(struct qdma_tx_queue *txq)
-{
-	uint32_t i;
-	uint32_t sz;
-
-	txq->tx_fl_tail = 0;
-	if (txq->st_mode) {  /** ST-mode **/
-		sz = sizeof(struct qdma_ul_st_h2c_desc);
-		/* Zero out HW ring memory */
-		for (i = 0; i < (sz * (txq->nb_tx_desc)); i++)
-			((volatile char *)txq->tx_ring)[i] = 0;
-	} else {
-		sz = sizeof(struct qdma_ul_mm_desc);
-		/* Zero out HW ring memory */
-		for (i = 0; i < (sz * (txq->nb_tx_desc)); i++)
-			((volatile char *)txq->tx_ring)[i] = 0;
-	}
-
-	/* Initialize SW ring entries */
-	for (i = 0; i < txq->nb_tx_desc; i++)
-		txq->sw_ring[i] = NULL;
-}
-
-void qdma_inv_tx_queue_ctxts(struct rte_eth_dev *dev,
-			     uint32_t qid, uint32_t mode)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_descq_hw_ctxt q_hw_ctxt;
-	struct qdma_descq_credit_ctxt q_credit_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	hw_access->qdma_sw_ctx_conf(dev, 0, qid, &q_sw_ctxt,
-			QDMA_HW_ACCESS_INVALIDATE);
-	hw_access->qdma_hw_ctx_conf(dev, 0, qid, &q_hw_ctxt,
-			QDMA_HW_ACCESS_INVALIDATE);
-
-	if (mode) {  /** ST-mode **/
-		hw_access->qdma_credit_ctx_conf(dev, 0, qid,
-			&q_credit_ctxt, QDMA_HW_ACCESS_INVALIDATE);
-	}
-}
-
-/**
- * Clear Tx queue contexts
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   Nothing.
- */
-void qdma_clr_tx_queue_ctxts(struct rte_eth_dev *dev,
-			     uint32_t qid, uint32_t mode)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_descq_credit_ctxt q_credit_ctxt;
-	struct qdma_descq_hw_ctxt q_hw_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	hw_access->qdma_sw_ctx_conf(dev, 0, qid, &q_sw_ctxt,
-			QDMA_HW_ACCESS_CLEAR);
-	hw_access->qdma_hw_ctx_conf(dev, 0, qid, &q_hw_ctxt,
-			QDMA_HW_ACCESS_CLEAR);
-	if (mode) {  /** ST-mode **/
-		hw_access->qdma_credit_ctx_conf(dev, 0, qid,
-			&q_credit_ctxt, QDMA_HW_ACCESS_CLEAR);
-	}
-}
-
-/* Utility function to find index of an element in an array */
-int index_of_array(uint32_t *arr, uint32_t n, uint32_t element)
-{
-	int index = 0;
-
-	for (index = 0; (uint32_t)index < n; index++) {
-		if (*(arr + index) == element)
-			return index;
-	}
-	return -1;
-}
-
-static int pfetch_check_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-	uint8_t desc_prefetch;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs desc_prefetch is: %s\n", value);
-	desc_prefetch = (uint8_t)strtoul(value, &end, 10);
-	if (desc_prefetch > 1) {
-		PMD_DRV_LOG(INFO, "QDMA devargs prefetch should be 1 or 0,"
-						  " setting to 1.\n");
-	}
-	qdma_dev->en_desc_prefetch = desc_prefetch ? 1 : 0;
-	return 0;
-}
-
-static int cmpt_desc_len_check_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs cmpt_desc_len is: %s\n", value);
-	qdma_dev->cmpt_desc_len =  (uint8_t)strtoul(value, &end, 10);
-	if (qdma_dev->cmpt_desc_len != RTE_PMD_QDMA_CMPT_DESC_LEN_8B &&
-		qdma_dev->cmpt_desc_len != RTE_PMD_QDMA_CMPT_DESC_LEN_16B &&
-		qdma_dev->cmpt_desc_len != RTE_PMD_QDMA_CMPT_DESC_LEN_32B &&
-		(qdma_dev->cmpt_desc_len != RTE_PMD_QDMA_CMPT_DESC_LEN_64B ||
-		!qdma_dev->dev_cap.cmpt_desc_64b)) {
-		PMD_DRV_LOG(INFO, "QDMA devargs incorrect cmpt_desc_len = %d "
-						  "specified\n",
-						  qdma_dev->cmpt_desc_len);
-		return -1;
-	}
-
-	return 0;
-}
-
-static int trigger_mode_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs trigger mode: %s\n", value);
-	qdma_dev->trigger_mode =  (uint8_t)strtoul(value, &end, 10);
-
-	if (qdma_dev->trigger_mode >= RTE_PMD_QDMA_TRIG_MODE_MAX) {
-		qdma_dev->trigger_mode = RTE_PMD_QDMA_TRIG_MODE_MAX;
-		PMD_DRV_LOG(INFO, "QDMA devargs trigger mode invalid,"
-						  "reset to default: %d\n",
-						  qdma_dev->trigger_mode);
-	}
-	return 0;
-}
-
-static int config_bar_idx_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs trigger mode: %s\n", value);
-	qdma_dev->config_bar_idx =  (int)strtoul(value, &end, 10);
-
-	if (qdma_dev->config_bar_idx >= QDMA_NUM_BARS ||
-			qdma_dev->config_bar_idx < 0) {
-		PMD_DRV_LOG(INFO, "QDMA devargs config bar idx invalid: %d\n",
-				qdma_dev->config_bar_idx);
-		return -1;
-	}
-	return 0;
-}
-
-static int c2h_byp_mode_check_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs c2h_byp_mode is: %s\n", value);
-	qdma_dev->c2h_bypass_mode =  (uint8_t)strtoul(value, &end, 10);
-
-	if (qdma_dev->c2h_bypass_mode >= RTE_PMD_QDMA_RX_BYPASS_MAX) {
-		PMD_DRV_LOG(INFO, "QDMA devargs incorrect "
-				"c2h_byp_mode= %d specified\n",
-						qdma_dev->c2h_bypass_mode);
-		return -1;
-	}
-
-	return 0;
-}
-
-static int h2c_byp_mode_check_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs h2c_byp_mode is: %s\n", value);
-	qdma_dev->h2c_bypass_mode =  (uint8_t)strtoul(value, &end, 10);
-
-	if (qdma_dev->h2c_bypass_mode > 1) {
-		PMD_DRV_LOG(INFO, "QDMA devargs incorrect"
-				" h2c_byp_mode =%d specified\n",
-					qdma_dev->h2c_bypass_mode);
-		return -1;
-	}
-
-	return 0;
-}
-#ifdef TANDEM_BOOT_SUPPORTED
-static int en_st_mode_check_handler(__rte_unused const char *key,
-					const char *value,  void *opaque)
-{
-	struct qdma_pci_dev *qdma_dev = (struct qdma_pci_dev *)opaque;
-	char *end = NULL;
-
-	PMD_DRV_LOG(INFO, "QDMA devargs en_st is: %s\n", value);
-	qdma_dev->en_st_mode =  (uint8_t)strtoul(value, &end, 10);
-
-	if (qdma_dev->en_st_mode > 1) {
-		PMD_DRV_LOG(INFO, "QDMA devargs incorrect"
-				" en_st_mode =%d specified\n",
-					qdma_dev->en_st_mode);
-		return -1;
-	}
-
-	return 0;
-}
-#endif
-/* Process the all devargs */
-int qdma_check_kvargs(struct rte_devargs *devargs,
-						struct qdma_pci_dev *qdma_dev)
-{
-	struct rte_kvargs *kvlist;
-	const char *pfetch_key        = "desc_prefetch";
-	const char *cmpt_desc_len_key = "cmpt_desc_len";
-	const char *trigger_mode_key  = "trigger_mode";
-	const char *config_bar_key    = "config_bar";
-	const char *c2h_byp_mode_key  = "c2h_byp_mode";
-	const char *h2c_byp_mode_key  = "h2c_byp_mode";
-#ifdef TANDEM_BOOT_SUPPORTED
-	const char *en_st_key         = "en_st";
-#endif
-	int ret = 0;
-
-	if (!devargs)
-		return 0;
-
-	kvlist = rte_kvargs_parse(devargs->args, NULL);
-	if (!kvlist)
-		return 0;
-
-	/* process the desc_prefetch*/
-	if (rte_kvargs_count(kvlist, pfetch_key)) {
-		ret = rte_kvargs_process(kvlist, pfetch_key,
-						pfetch_check_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-	/* process the cmpt_desc_len*/
-	if (rte_kvargs_count(kvlist, cmpt_desc_len_key)) {
-		ret = rte_kvargs_process(kvlist, cmpt_desc_len_key,
-					 cmpt_desc_len_check_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-	/* process the trigger_mode*/
-	if (rte_kvargs_count(kvlist, trigger_mode_key)) {
-		ret = rte_kvargs_process(kvlist, trigger_mode_key,
-						trigger_mode_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-	/* process the config bar*/
-	if (rte_kvargs_count(kvlist, config_bar_key)) {
-		ret = rte_kvargs_process(kvlist, config_bar_key,
-					   config_bar_idx_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-	/* process c2h_byp_mode*/
-	if (rte_kvargs_count(kvlist, c2h_byp_mode_key)) {
-		ret = rte_kvargs_process(kvlist, c2h_byp_mode_key,
-					  c2h_byp_mode_check_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-	/* process h2c_byp_mode*/
-	if (rte_kvargs_count(kvlist, h2c_byp_mode_key)) {
-		ret = rte_kvargs_process(kvlist, h2c_byp_mode_key,
-					  h2c_byp_mode_check_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-	/* Enable ST */
-	if (rte_kvargs_count(kvlist, en_st_key)) {
-		ret = rte_kvargs_process(kvlist, en_st_key,
-					  en_st_mode_check_handler, qdma_dev);
-		if (ret) {
-			rte_kvargs_free(kvlist);
-			return ret;
-		}
-	}
-#endif
-
-	rte_kvargs_free(kvlist);
-	return ret;
-}
-
-int qdma_identify_bars(struct rte_eth_dev *dev)
-{
-	int      bar_len, i, ret;
-	uint8_t  usr_bar;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	struct qdma_pci_dev *dma_priv;
-
-	dma_priv = (struct qdma_pci_dev *)dev->data->dev_private;
-
-	/* Config bar */
-	bar_len = pci_dev->mem_resource[dma_priv->config_bar_idx].len;
-	if (!bar_len) {
-		PMD_DRV_LOG(INFO, "QDMA config BAR index :%d is not enabled",
-					dma_priv->config_bar_idx);
-		return -1;
-	}
-
-	/* Find AXI Master Lite(user bar) */
-	ret = dma_priv->hw_access->qdma_get_user_bar(dev,
-			dma_priv->is_vf, dma_priv->func_id, &usr_bar);
-	if ((ret != QDMA_SUCCESS) ||
-			(pci_dev->mem_resource[usr_bar].len == 0)) {
-		if (dma_priv->ip_type == QDMA_VERSAL_HARD_IP) {
-			if (pci_dev->mem_resource[1].len == 0)
-				dma_priv->user_bar_idx = 2;
-			else
-				dma_priv->user_bar_idx = 1;
-		} else {
-			dma_priv->user_bar_idx = -1;
-			PMD_DRV_LOG(INFO, "Cannot find AXI Master Lite BAR");
-		}
-	} else
-		dma_priv->user_bar_idx = usr_bar;
-
-	/* Find AXI Bridge Master bar(bypass bar) */
-	for (i = 0; i < QDMA_NUM_BARS; i++) {
-		bar_len = pci_dev->mem_resource[i].len;
-		if (!bar_len) /* Bar not enabled ? */
-			continue;
-		if (dma_priv->user_bar_idx != i &&
-				dma_priv->config_bar_idx != i) {
-			dma_priv->bypass_bar_idx = i;
-			break;
-		}
-	}
-
-	PMD_DRV_LOG(INFO, "QDMA config bar idx :%d\n",
-			dma_priv->config_bar_idx);
-	PMD_DRV_LOG(INFO, "QDMA AXI Master Lite bar idx :%d\n",
-			dma_priv->user_bar_idx);
-	PMD_DRV_LOG(INFO, "QDMA AXI Bridge Master bar idx :%d\n",
-			dma_priv->bypass_bar_idx);
-
-	return 0;
-}
-int qdma_get_hw_version(struct rte_eth_dev *dev)
-{
-	int ret;
-	struct qdma_pci_dev *dma_priv;
-	struct qdma_hw_version_info version_info;
-
-	dma_priv = (struct qdma_pci_dev *)dev->data->dev_private;
-	ret = dma_priv->hw_access->qdma_get_version(dev,
-			dma_priv->is_vf, &version_info);
-	if (ret < 0)
-		return dma_priv->hw_access->qdma_get_error_code(ret);
-
-	dma_priv->rtl_version = version_info.rtl_version;
-	dma_priv->vivado_rel = version_info.vivado_release;
-	dma_priv->device_type = version_info.device_type;
-	dma_priv->ip_type = version_info.ip_type;
-
-	PMD_DRV_LOG(INFO, "QDMA RTL VERSION : %s\n",
-		version_info.qdma_rtl_version_str);
-	PMD_DRV_LOG(INFO, "QDMA DEVICE TYPE : %s\n",
-		version_info.qdma_device_type_str);
-	PMD_DRV_LOG(INFO, "QDMA VIVADO RELEASE ID : %s\n",
-		version_info.qdma_vivado_release_id_str);
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-		PMD_DRV_LOG(INFO, "QDMA VERSAL IP TYPE : %s\n",
-			version_info.qdma_ip_type_str);
-	}
-
-	return 0;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_devops.c b/QDMA/DPDK/drivers/net/qdma/qdma_devops.c
deleted file mode 100755
index 45c9b4f..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_devops.c
+++ /dev/null
@@ -1,1984 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdint.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_alarm.h>
-#include <rte_cycles.h>
-#include <rte_atomic.h>
-#include <unistd.h>
-#include <string.h>
-#include "qdma.h"
-#include "qdma_access_common.h"
-#include "qdma_mbox_protocol.h"
-#include "qdma_mbox.h"
-#include "qdma_reg_dump.h"
-#include "qdma_platform.h"
-#include "qdma_devops.h"
-
-#ifdef QDMA_LATENCY_OPTIMIZED
-static void qdma_sort_c2h_cntr_th_values(struct qdma_pci_dev *qdma_dev)
-{
-	uint8_t i, idx = 0, j = 0;
-	uint8_t c2h_cntr_val = qdma_dev->g_c2h_cnt_th[0];
-	uint8_t least_max = 0;
-	int ref_idx = -1;
-
-get_next_idx:
-	for (i = 0; i < QDMA_NUM_C2H_COUNTERS; i++) {
-		if ((ref_idx >= 0) && (ref_idx == i))
-			continue;
-		if (qdma_dev->g_c2h_cnt_th[i] < least_max)
-			continue;
-		c2h_cntr_val = qdma_dev->g_c2h_cnt_th[i];
-		idx = i;
-		break;
-	}
-	for (; i < QDMA_NUM_C2H_COUNTERS; i++) {
-		if ((ref_idx >= 0) && (ref_idx == i))
-			continue;
-		if (qdma_dev->g_c2h_cnt_th[i] < least_max)
-			continue;
-		if (c2h_cntr_val >= qdma_dev->g_c2h_cnt_th[i]) {
-			c2h_cntr_val = qdma_dev->g_c2h_cnt_th[i];
-			idx = i;
-		}
-	}
-	qdma_dev->sorted_idx_c2h_cnt_th[j] = idx;
-	ref_idx = idx;
-	j++;
-	idx = j;
-	least_max = c2h_cntr_val;
-	if (j < QDMA_NUM_C2H_COUNTERS)
-		goto get_next_idx;
-}
-#endif //QDMA_LATENCY_OPTIMIZED
-
-int qdma_vf_csr_read(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv, i;
-	struct qdma_csr_info csr_info;
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_csr_read(qdma_dev->func_id, m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0)
-		goto free_msg;
-
-	rv = qdma_mbox_vf_csr_get(m->raw_data, &csr_info);
-	if (rv < 0)
-		goto free_msg;
-	for (i = 0; i < QDMA_NUM_RING_SIZES; i++) {
-		qdma_dev->g_ring_sz[i] = (uint32_t)csr_info.ringsz[i];
-		qdma_dev->g_c2h_buf_sz[i] = (uint32_t)csr_info.bufsz[i];
-		qdma_dev->g_c2h_timer_cnt[i] = (uint32_t)csr_info.timer_cnt[i];
-		qdma_dev->g_c2h_cnt_th[i] = (uint32_t)csr_info.cnt_thres[i];
-#ifdef QDMA_LATENCY_OPTIMIZED
-		qdma_sort_c2h_cntr_th_values(qdma_dev);
-#endif //QDMA_LATENCY_OPTIMIZED
-	}
-
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_pf_csr_read(struct rte_eth_dev *dev)
-{
-	int ret = 0;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	ret = hw_access->qdma_global_csr_conf(dev, 0,
-				QDMA_NUM_RING_SIZES, qdma_dev->g_ring_sz,
-		QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-	if (ret != QDMA_SUCCESS)
-		PMD_DRV_LOG(ERR, "qdma_global_csr_conf for ring size "
-				  "returned %d", ret);
-	if (qdma_dev->dev_cap.st_en || qdma_dev->dev_cap.mm_cmpt_en) {
-		ret = hw_access->qdma_global_csr_conf(dev, 0,
-				QDMA_NUM_C2H_TIMERS, qdma_dev->g_c2h_timer_cnt,
-		QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-		if (ret != QDMA_SUCCESS)
-			PMD_DRV_LOG(ERR, "qdma_global_csr_conf for timer count "
-					  "returned %d", ret);
-
-		ret = hw_access->qdma_global_csr_conf(dev, 0,
-				QDMA_NUM_C2H_COUNTERS, qdma_dev->g_c2h_cnt_th,
-		QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-		if (ret != QDMA_SUCCESS)
-			PMD_DRV_LOG(ERR, "qdma_global_csr_conf for counter threshold "
-					  "returned %d", ret);
-#ifdef QDMA_LATENCY_OPTIMIZED
-		qdma_sort_c2h_cntr_th_values(qdma_dev);
-#endif //QDMA_LATENCY_OPTIMIZED
-	}
-
-	if (qdma_dev->dev_cap.st_en) {
-		ret = hw_access->qdma_global_csr_conf(dev, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES,
-				qdma_dev->g_c2h_buf_sz,
-				QDMA_CSR_BUF_SZ,
-				QDMA_HW_ACCESS_READ);
-		if (ret != QDMA_SUCCESS)
-			PMD_DRV_LOG(ERR, "qdma_global_csr_conf for buffer sizes "
-					  "returned %d", ret);
-	}
-
-	if (ret < 0)
-		return qdma_dev->hw_access->qdma_get_error_code(ret);
-
-	return ret;
-}
-
-static int qdma_pf_fmap_prog(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_fmap_cfg fmap_cfg;
-	int ret = 0;
-
-	memset(&fmap_cfg, 0, sizeof(struct qdma_fmap_cfg));
-
-	/** FMAP configuration **/
-	fmap_cfg.qbase = qdma_dev->queue_base;
-	fmap_cfg.qmax = qdma_dev->qsets_en;
-	ret = qdma_dev->hw_access->qdma_fmap_conf(dev,
-			qdma_dev->func_id, &fmap_cfg, QDMA_HW_ACCESS_WRITE);
-	if (ret < 0)
-		return qdma_dev->hw_access->qdma_get_error_code(ret);
-
-	return ret;
-}
-
-int qdma_dev_notify_qadd(struct rte_eth_dev *dev, uint32_t qidx_hw,
-						enum qdma_dev_q_type q_type)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m;
-	int rv = 0;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_notify_qadd(qdma_dev->func_id, qidx_hw,
-					q_type, m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_dev_notify_qdel(struct rte_eth_dev *dev, uint32_t qidx_hw,
-						enum qdma_dev_q_type q_type)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m;
-	int rv = 0;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_notify_qdel(qdma_dev->func_id, qidx_hw,
-					q_type, m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-uint8_t qmda_get_desc_sz_idx(enum rte_pmd_qdma_bypass_desc_len size)
-{
-	return ((size == RTE_PMD_QDMA_BYPASS_DESC_LEN_64B) ? 3 :
-			(size == RTE_PMD_QDMA_BYPASS_DESC_LEN_32B) ? 2 :
-			(size == RTE_PMD_QDMA_BYPASS_DESC_LEN_16B) ? 1 :
-			/* (size == RTE_PMD_QDMA_BYPASS_DESC_LEN_8B) */0);
-}
-
-static inline int
-qdma_rxq_default_mbuf_init(struct qdma_rx_queue *rxq)
-{
-	uintptr_t p;
-	struct rte_mbuf mb = { .buf_addr = 0 };
-
-	mb.nb_segs = 1;
-	mb.data_off = RTE_PKTMBUF_HEADROOM;
-	mb.port = rxq->port_id;
-	rte_mbuf_refcnt_set(&mb, 1);
-
-	/* prevent compiler reordering */
-	rte_compiler_barrier();
-	p = (uintptr_t)&mb.rearm_data;
-	rxq->mbuf_initializer = *(uint64_t *)p;
-	return 0;
-}
-
-/**
- * DPDK callback to configure a RX queue.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param rx_queue_id
- *   RX queue index.
- * @param nb_rx_desc
- *   Number of descriptors to configure in queue.
- * @param socket_id
- *   NUMA socket on which memory must be allocated.
- * @param[in] rx_conf
- *   Thresholds parameters.
- * @param mp_pool
- *   Memory pool for buffer allocations.
- *
- * @return
- *   0 on success,
- *   -ENOMEM when memory allocation fails
- *   -ENOTSUP when HW doesn't support the required configuration
- *   -EINVAL on other failure.
- */
-int qdma_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
-				uint16_t nb_rx_desc, unsigned int socket_id,
-				const struct rte_eth_rxconf *rx_conf,
-				struct rte_mempool *mb_pool)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_rx_queue *rxq = NULL;
-	struct qdma_ul_mm_desc *rx_ring_mm;
-	uint32_t sz;
-	uint8_t  *rx_ring_bypass;
-	int err = 0;
-
-	PMD_DRV_LOG(INFO, "Configuring Rx queue id:%d\n", rx_queue_id);
-
-	if (nb_rx_desc == 0) {
-		PMD_DRV_LOG(ERR, "Invalid descriptor ring size %d\n",
-				nb_rx_desc);
-		return -EINVAL;
-	}
-
-	if (!qdma_dev->dev_configured) {
-		PMD_DRV_LOG(ERR,
-			"Device for Rx queue id %d is not configured yet\n",
-			rx_queue_id);
-		return -EINVAL;
-	}
-
-	if (!qdma_dev->is_vf) {
-		err = qdma_dev_increment_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_C2H);
-		if (err != QDMA_SUCCESS)
-			return -EINVAL;
-
-		if (qdma_dev->q_info[rx_queue_id].queue_mode ==
-				RTE_PMD_QDMA_STREAMING_MODE) {
-			err = qdma_dev_increment_active_queue(
-						qdma_dev->dma_device_index,
-						qdma_dev->func_id,
-						QDMA_DEV_Q_TYPE_CMPT);
-			if (err != QDMA_SUCCESS) {
-				qdma_dev_decrement_active_queue(
-						qdma_dev->dma_device_index,
-						qdma_dev->func_id,
-						QDMA_DEV_Q_TYPE_C2H);
-				return -EINVAL;
-			}
-		}
-	} else {
-		err = qdma_dev_notify_qadd(dev, rx_queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_C2H);
-		if (err < 0)
-			return -EINVAL;
-
-		if (qdma_dev->q_info[rx_queue_id].queue_mode ==
-				RTE_PMD_QDMA_STREAMING_MODE) {
-			err = qdma_dev_notify_qadd(dev, rx_queue_id +
-							qdma_dev->queue_base,
-							QDMA_DEV_Q_TYPE_CMPT);
-			if (err < 0) {
-				qdma_dev_notify_qdel(dev, rx_queue_id +
-							qdma_dev->queue_base,
-							QDMA_DEV_Q_TYPE_C2H);
-				return -EINVAL;
-			}
-		}
-	}
-	if (!qdma_dev->init_q_range) {
-		if (qdma_dev->is_vf) {
-			err = qdma_vf_csr_read(dev);
-			if (err < 0)
-				goto rx_setup_err;
-		} else {
-			err = qdma_pf_csr_read(dev);
-			if (err < 0)
-				goto rx_setup_err;
-		}
-		qdma_dev->init_q_range = 1;
-	}
-
-	/* allocate rx queue data structure */
-	rxq = rte_zmalloc_socket("QDMA_RxQ", sizeof(struct qdma_rx_queue),
-						RTE_CACHE_LINE_SIZE, socket_id);
-	if (!rxq) {
-		PMD_DRV_LOG(ERR, "Unable to allocate structure rxq of "
-				"size %d\n",
-				(int)(sizeof(struct qdma_rx_queue)));
-		err = -ENOMEM;
-		goto rx_setup_err;
-	}
-
-	rxq->queue_id = rx_queue_id;
-	rxq->port_id = dev->data->port_id;
-	rxq->func_id = qdma_dev->func_id;
-	rxq->mb_pool = mb_pool;
-	rxq->dev = dev;
-	rxq->st_mode = qdma_dev->q_info[rx_queue_id].queue_mode;
-
-	rxq->nb_rx_desc = (nb_rx_desc + 1);
-	/* <= 2018.2 IP
-	 * double the cmpl ring size to avoid run out of cmpl entry while
-	 * desc. ring still have free entries
-	 */
-	rxq->nb_rx_cmpt_desc = ((nb_rx_desc * 2) + 1);
-	rxq->en_prefetch = qdma_dev->q_info[rx_queue_id].en_prefetch;
-	rxq->cmpt_desc_len = qdma_dev->q_info[rx_queue_id].cmpt_desc_sz;
-	if ((rxq->cmpt_desc_len == RTE_PMD_QDMA_CMPT_DESC_LEN_64B) &&
-		!qdma_dev->dev_cap.cmpt_desc_64b) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) 64B completion entry size is "
-			"not supported in this design\n", qdma_dev->func_id);
-		return -ENOTSUP;
-	}
-	rxq->triggermode = qdma_dev->q_info[rx_queue_id].trigger_mode;
-	rxq->rx_deferred_start = rx_conf->rx_deferred_start;
-	rxq->dump_immediate_data =
-			qdma_dev->q_info[rx_queue_id].immediate_data_state;
-	rxq->dis_overflow_check =
-			qdma_dev->q_info[rx_queue_id].dis_cmpt_ovf_chk;
-
-	if (qdma_dev->q_info[rx_queue_id].rx_bypass_mode ==
-				RTE_PMD_QDMA_RX_BYPASS_CACHE ||
-			qdma_dev->q_info[rx_queue_id].rx_bypass_mode ==
-			 RTE_PMD_QDMA_RX_BYPASS_SIMPLE)
-		rxq->en_bypass = 1;
-	if (qdma_dev->q_info[rx_queue_id].rx_bypass_mode ==
-			RTE_PMD_QDMA_RX_BYPASS_SIMPLE)
-		rxq->en_bypass_prefetch = 1;
-
-	if (qdma_dev->ip_type == EQDMA_SOFT_IP &&
-			qdma_dev->vivado_rel >= QDMA_VIVADO_2020_2) {
-		if (qdma_dev->dev_cap.desc_eng_mode ==
-				QDMA_DESC_ENG_BYPASS_ONLY) {
-			PMD_DRV_LOG(ERR,
-				"Bypass only mode design "
-				"is not supported\n");
-			return -ENOTSUP;
-		}
-
-		if (rxq->en_bypass &&
-				(qdma_dev->dev_cap.desc_eng_mode ==
-				QDMA_DESC_ENG_INTERNAL_ONLY)) {
-			PMD_DRV_LOG(ERR,
-				"Rx qid %d config in bypass "
-				"mode not supported on "
-				"internal only mode design\n",
-				rx_queue_id);
-			return -ENOTSUP;
-		}
-	}
-
-	if (rxq->en_bypass) {
-		rxq->bypass_desc_sz =
-				qdma_dev->q_info[rx_queue_id].rx_bypass_desc_sz;
-		if ((rxq->bypass_desc_sz == RTE_PMD_QDMA_BYPASS_DESC_LEN_64B)
-			&&	!qdma_dev->dev_cap.sw_desc_64b) {
-			PMD_DRV_LOG(ERR, "PF-%d(DEVFN) C2H bypass descriptor "
-				"size of 64B is not supported in this design:\n",
-				qdma_dev->func_id);
-			return -ENOTSUP;
-		}
-	}
-	/* Calculate the ring index, completion queue ring size,
-	 * buffer index and threshold index.
-	 * If index is not found , by default use the index as 0
-	 */
-
-	/* Find C2H queue ring size index */
-	rxq->ringszidx = index_of_array(qdma_dev->g_ring_sz,
-					QDMA_NUM_RING_SIZES, rxq->nb_rx_desc);
-	if (rxq->ringszidx < 0) {
-		PMD_DRV_LOG(ERR, "Expected Ring size %d not found\n",
-				rxq->nb_rx_desc);
-		err = -EINVAL;
-		goto rx_setup_err;
-	}
-
-	/* Find completion ring size index */
-	rxq->cmpt_ringszidx = index_of_array(qdma_dev->g_ring_sz,
-						QDMA_NUM_RING_SIZES,
-						rxq->nb_rx_cmpt_desc);
-	if (rxq->cmpt_ringszidx < 0) {
-		PMD_DRV_LOG(ERR, "Expected completion ring size %d not found\n",
-				rxq->nb_rx_cmpt_desc);
-		err = -EINVAL;
-		goto rx_setup_err;
-	}
-
-	/* Find Threshold index */
-	rxq->threshidx = index_of_array(qdma_dev->g_c2h_cnt_th,
-					QDMA_NUM_C2H_COUNTERS,
-					rx_conf->rx_thresh.wthresh);
-	if (rxq->threshidx < 0) {
-		PMD_DRV_LOG(WARNING, "Expected Threshold %d not found,"
-				" using the value %d at index 7\n",
-				rx_conf->rx_thresh.wthresh,
-				qdma_dev->g_c2h_cnt_th[7]);
-		rxq->threshidx = 7;
-	}
-
-#ifdef QDMA_LATENCY_OPTIMIZED
-	uint8_t next_idx;
-
-	/* Initialize sorted_c2h_cntr_idx */
-	rxq->sorted_c2h_cntr_idx = index_of_array(
-					qdma_dev->sorted_idx_c2h_cnt_th,
-					QDMA_NUM_C2H_COUNTERS,
-					qdma_dev->g_c2h_cnt_th[rxq->threshidx]);
-
-	if (rxq->sorted_c2h_cntr_idx < 0) {
-		PMD_DRV_LOG(ERR,
-				"Expected counter threshold %d not found\n",
-				qdma_dev->g_c2h_cnt_th[rxq->threshidx]);
-		err = -EINVAL;
-		goto rx_setup_err;
-	}
-
-	/* Initialize pend_pkt_moving_avg */
-	rxq->pend_pkt_moving_avg = qdma_dev->g_c2h_cnt_th[rxq->threshidx];
-
-	/* Initialize pend_pkt_avg_thr_hi */
-	if (rxq->sorted_c2h_cntr_idx < (QDMA_NUM_C2H_COUNTERS - 1))
-		next_idx = qdma_dev->sorted_idx_c2h_cnt_th[
-						rxq->sorted_c2h_cntr_idx + 1];
-	else
-		next_idx = qdma_dev->sorted_idx_c2h_cnt_th[
-				rxq->sorted_c2h_cntr_idx];
-
-	rxq->pend_pkt_avg_thr_hi = qdma_dev->g_c2h_cnt_th[next_idx];
-
-	/* Initialize pend_pkt_avg_thr_lo */
-	if (rxq->sorted_c2h_cntr_idx > 0)
-		next_idx = qdma_dev->sorted_idx_c2h_cnt_th[
-						rxq->sorted_c2h_cntr_idx - 1];
-	else
-		next_idx = qdma_dev->sorted_idx_c2h_cnt_th[
-				rxq->sorted_c2h_cntr_idx];
-
-	rxq->pend_pkt_avg_thr_lo = qdma_dev->g_c2h_cnt_th[next_idx];
-#endif //QDMA_LATENCY_OPTIMIZED
-
-	/* Find Timer index */
-	rxq->timeridx = index_of_array(qdma_dev->g_c2h_timer_cnt,
-				QDMA_NUM_C2H_TIMERS,
-				qdma_dev->q_info[rx_queue_id].timer_count);
-	if (rxq->timeridx < 0) {
-		PMD_DRV_LOG(WARNING, "Expected timer %d not found, "
-				"using the value %d at index 1\n",
-				qdma_dev->q_info[rx_queue_id].timer_count,
-				qdma_dev->g_c2h_timer_cnt[1]);
-		rxq->timeridx = 1;
-	}
-
-	rxq->rx_buff_size = (uint16_t)
-				(rte_pktmbuf_data_room_size(rxq->mb_pool) -
-				RTE_PKTMBUF_HEADROOM);
-	/* Allocate memory for Rx descriptor ring */
-	if (rxq->st_mode) {
-		if (!qdma_dev->dev_cap.st_en) {
-			PMD_DRV_LOG(ERR, "Streaming mode not enabled "
-					"in the hardware\n");
-			err = -EINVAL;
-			goto rx_setup_err;
-		}
-		/* Find Buffer size index */
-		rxq->buffszidx = index_of_array(qdma_dev->g_c2h_buf_sz,
-						QDMA_NUM_C2H_BUFFER_SIZES,
-						rxq->rx_buff_size);
-		if (rxq->buffszidx < 0) {
-			PMD_DRV_LOG(ERR, "Expected buffer size %d not found\n",
-					rxq->rx_buff_size);
-			err = -EINVAL;
-			goto rx_setup_err;
-		}
-
-		if (rxq->en_bypass &&
-		     (rxq->bypass_desc_sz != 0))
-			sz = (rxq->nb_rx_desc) * (rxq->bypass_desc_sz);
-		else
-			sz = (rxq->nb_rx_desc) *
-					sizeof(struct qdma_ul_st_c2h_desc);
-
-		rxq->rx_mz = qdma_zone_reserve(dev, "RxHwRn", rx_queue_id,
-						sz, socket_id);
-		if (!rxq->rx_mz) {
-			PMD_DRV_LOG(ERR, "Unable to allocate rxq->rx_mz "
-					"of size %d\n", sz);
-			err = -ENOMEM;
-			goto rx_setup_err;
-		}
-		rxq->rx_ring = rxq->rx_mz->addr;
-		memset(rxq->rx_ring, 0, sz);
-
-		/* Allocate memory for Rx completion(CMPT) descriptor ring */
-		sz = (rxq->nb_rx_cmpt_desc) * rxq->cmpt_desc_len;
-		rxq->rx_cmpt_mz = qdma_zone_reserve(dev, "RxHwCmptRn",
-						    rx_queue_id, sz, socket_id);
-		if (!rxq->rx_cmpt_mz) {
-			PMD_DRV_LOG(ERR, "Unable to allocate rxq->rx_cmpt_mz "
-					"of size %d\n", sz);
-			err = -ENOMEM;
-			goto rx_setup_err;
-		}
-		rxq->cmpt_ring =
-			(union qdma_ul_st_cmpt_ring *)rxq->rx_cmpt_mz->addr;
-
-		/* Write-back status structure */
-		rxq->wb_status = (struct wb_status *)((uint64_t)rxq->cmpt_ring +
-				 (((uint64_t)rxq->nb_rx_cmpt_desc - 1) *
-				  rxq->cmpt_desc_len));
-		memset(rxq->cmpt_ring, 0, sz);
-	} else {
-		if (!qdma_dev->dev_cap.mm_en) {
-			PMD_DRV_LOG(ERR, "Memory mapped mode not enabled "
-					"in the hardware\n");
-			err = -EINVAL;
-			goto rx_setup_err;
-		}
-
-		if (rxq->en_bypass &&
-			(rxq->bypass_desc_sz != 0))
-			sz = (rxq->nb_rx_desc) * (rxq->bypass_desc_sz);
-		else
-			sz = (rxq->nb_rx_desc) * sizeof(struct qdma_ul_mm_desc);
-		rxq->rx_mz = qdma_zone_reserve(dev, "RxHwRn",
-						rx_queue_id, sz, socket_id);
-		if (!rxq->rx_mz) {
-			PMD_DRV_LOG(ERR, "Unable to allocate rxq->rx_mz "
-					"of size %d\n", sz);
-			err = -ENOMEM;
-			goto rx_setup_err;
-		}
-		rxq->rx_ring = rxq->rx_mz->addr;
-		rx_ring_mm = (struct qdma_ul_mm_desc *)rxq->rx_mz->addr;
-		memset(rxq->rx_ring, 0, sz);
-
-		rx_ring_bypass = (uint8_t *)rxq->rx_mz->addr;
-		if (rxq->en_bypass &&
-			(rxq->bypass_desc_sz != 0))
-			rxq->wb_status = (struct wb_status *)&
-					(rx_ring_bypass[(rxq->nb_rx_desc - 1) *
-							(rxq->bypass_desc_sz)]);
-		else
-			rxq->wb_status = (struct wb_status *)&
-					 (rx_ring_mm[rxq->nb_rx_desc - 1]);
-	}
-
-	/* allocate memory for RX software ring */
-	sz = (rxq->nb_rx_desc) * sizeof(struct rte_mbuf *);
-	rxq->sw_ring = rte_zmalloc_socket("RxSwRn", sz,
-					RTE_CACHE_LINE_SIZE, socket_id);
-	if (!rxq->sw_ring) {
-		PMD_DRV_LOG(ERR, "Unable to allocate rxq->sw_ring of size %d\n",
-									sz);
-		err = -ENOMEM;
-		goto rx_setup_err;
-	}
-
-	qdma_rxq_default_mbuf_init(rxq);
-
-	dev->data->rx_queues[rx_queue_id] = rxq;
-
-#ifdef LATENCY_MEASUREMENT
-	err = qdma_rx_qstats_clear(dev, rx_queue_id);
-	if (err) {
-		PMD_DRV_LOG(ERR,
-			"Failed to clear QDMA Rx queue stats for qid: %d\n",
-			rx_queue_id);
-		return err;
-	}
-#endif
-
-	return 0;
-
-rx_setup_err:
-	if (!qdma_dev->is_vf) {
-		qdma_dev_decrement_active_queue(qdma_dev->dma_device_index,
-						qdma_dev->func_id,
-						QDMA_DEV_Q_TYPE_C2H);
-
-		if (qdma_dev->q_info[rx_queue_id].queue_mode ==
-				RTE_PMD_QDMA_STREAMING_MODE)
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-	} else {
-		qdma_dev_notify_qdel(dev, rx_queue_id +
-				qdma_dev->queue_base, QDMA_DEV_Q_TYPE_C2H);
-
-		if (qdma_dev->q_info[rx_queue_id].queue_mode ==
-				RTE_PMD_QDMA_STREAMING_MODE)
-			qdma_dev_notify_qdel(dev, rx_queue_id +
-				qdma_dev->queue_base, QDMA_DEV_Q_TYPE_CMPT);
-	}
-
-	if (rxq) {
-		if (rxq->rx_mz)
-			rte_memzone_free(rxq->rx_mz);
-		if (rxq->sw_ring)
-			rte_free(rxq->sw_ring);
-		rte_free(rxq);
-	}
-	return err;
-}
-
-/**
- * DPDK callback to configure a TX queue.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param tx_queue_id
- *   TX queue index.
- * @param nb_tx_desc
- *   Number of descriptors to configure in queue.
- * @param socket_id
- *   NUMA socket on which memory must be allocated.
- * @param[in] tx_conf
- *   Thresholds parameters.
- *
- * @return
- *   0 on success
- *   -ENOMEM when memory allocation fails
- *   -EINVAL on other failure.
- */
-int qdma_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
-			    uint16_t nb_tx_desc, unsigned int socket_id,
-			    const struct rte_eth_txconf *tx_conf)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq = NULL;
-	struct qdma_ul_mm_desc *tx_ring_mm;
-	struct qdma_ul_st_h2c_desc *tx_ring_st;
-	uint32_t sz;
-	uint8_t  *tx_ring_bypass;
-	int err = 0;
-
-	PMD_DRV_LOG(INFO, "Configuring Tx queue id:%d with %d desc\n",
-		    tx_queue_id, nb_tx_desc);
-
-	if (!qdma_dev->is_vf) {
-		err = qdma_dev_increment_active_queue(
-				qdma_dev->dma_device_index,
-				qdma_dev->func_id,
-				QDMA_DEV_Q_TYPE_H2C);
-		if (err != QDMA_SUCCESS)
-			return -EINVAL;
-	} else {
-		err = qdma_dev_notify_qadd(dev, tx_queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_H2C);
-		if (err < 0)
-			return -EINVAL;
-	}
-	if (!qdma_dev->init_q_range) {
-		if (qdma_dev->is_vf) {
-			err = qdma_vf_csr_read(dev);
-			if (err < 0) {
-				PMD_DRV_LOG(ERR, "CSR read failed\n");
-				goto tx_setup_err;
-			}
-		} else {
-			err = qdma_pf_csr_read(dev);
-			if (err < 0) {
-				PMD_DRV_LOG(ERR, "CSR read failed\n");
-				goto tx_setup_err;
-			}
-		}
-		qdma_dev->init_q_range = 1;
-	}
-	/* allocate rx queue data structure */
-	txq = rte_zmalloc_socket("QDMA_TxQ", sizeof(struct qdma_tx_queue),
-						RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq == NULL) {
-		PMD_DRV_LOG(ERR, "Memory allocation failed for "
-				"Tx queue SW structure\n");
-		err = -ENOMEM;
-		goto tx_setup_err;
-	}
-
-	txq->st_mode = qdma_dev->q_info[tx_queue_id].queue_mode;
-
-	txq->en_bypass = (qdma_dev->q_info[tx_queue_id].tx_bypass_mode) ? 1 : 0;
-	txq->bypass_desc_sz = qdma_dev->q_info[tx_queue_id].tx_bypass_desc_sz;
-
-	txq->nb_tx_desc = (nb_tx_desc + 1);
-	txq->queue_id = tx_queue_id;
-	txq->dev = dev;
-	txq->port_id = dev->data->port_id;
-	txq->func_id = qdma_dev->func_id;
-	txq->num_queues = dev->data->nb_tx_queues;
-	txq->tx_deferred_start = tx_conf->tx_deferred_start;
-
-	txq->ringszidx = index_of_array(qdma_dev->g_ring_sz,
-					QDMA_NUM_RING_SIZES, txq->nb_tx_desc);
-	if (txq->ringszidx < 0) {
-		PMD_DRV_LOG(ERR, "Expected Ring size %d not found\n",
-				txq->nb_tx_desc);
-		err = -EINVAL;
-		goto tx_setup_err;
-	}
-
-	if (qdma_dev->ip_type == EQDMA_SOFT_IP &&
-			qdma_dev->vivado_rel >= QDMA_VIVADO_2020_2) {
-		if (qdma_dev->dev_cap.desc_eng_mode ==
-				QDMA_DESC_ENG_BYPASS_ONLY) {
-			PMD_DRV_LOG(ERR,
-				"Bypass only mode design "
-				"is not supported\n");
-			return -ENOTSUP;
-		}
-
-		if (txq->en_bypass &&
-				(qdma_dev->dev_cap.desc_eng_mode ==
-				QDMA_DESC_ENG_INTERNAL_ONLY)) {
-			PMD_DRV_LOG(ERR,
-				"Tx qid %d config in bypass "
-				"mode not supported on "
-				"internal only mode design\n",
-				tx_queue_id);
-			return -ENOTSUP;
-		}
-	}
-
-	/* Allocate memory for TX descriptor ring */
-	if (txq->st_mode) {
-		if (!qdma_dev->dev_cap.st_en) {
-			PMD_DRV_LOG(ERR, "Streaming mode not enabled "
-					"in the hardware\n");
-			err = -EINVAL;
-			goto tx_setup_err;
-		}
-
-		if (txq->en_bypass &&
-			(txq->bypass_desc_sz != 0))
-			sz = (txq->nb_tx_desc) * (txq->bypass_desc_sz);
-		else
-			sz = (txq->nb_tx_desc) *
-					sizeof(struct qdma_ul_st_h2c_desc);
-		txq->tx_mz = qdma_zone_reserve(dev, "TxHwRn", tx_queue_id, sz,
-						socket_id);
-		if (!txq->tx_mz) {
-			PMD_DRV_LOG(ERR, "Couldn't reserve memory for "
-					"ST H2C ring of size %d\n", sz);
-			err = -ENOMEM;
-			goto tx_setup_err;
-		}
-
-		txq->tx_ring = txq->tx_mz->addr;
-		tx_ring_st = (struct qdma_ul_st_h2c_desc *)txq->tx_ring;
-
-		tx_ring_bypass = (uint8_t *)txq->tx_ring;
-		/* Write-back status structure */
-		if (txq->en_bypass &&
-			(txq->bypass_desc_sz != 0))
-			txq->wb_status = (struct wb_status *)&
-					tx_ring_bypass[(txq->nb_tx_desc - 1) *
-					(txq->bypass_desc_sz)];
-		else
-			txq->wb_status = (struct wb_status *)&
-					tx_ring_st[txq->nb_tx_desc - 1];
-	} else {
-		if (!qdma_dev->dev_cap.mm_en) {
-			PMD_DRV_LOG(ERR, "Memory mapped mode not "
-					"enabled in the hardware\n");
-			err = -EINVAL;
-			goto tx_setup_err;
-		}
-
-		if (txq->en_bypass &&
-			(txq->bypass_desc_sz != 0))
-			sz = (txq->nb_tx_desc) * (txq->bypass_desc_sz);
-		else
-			sz = (txq->nb_tx_desc) * sizeof(struct qdma_ul_mm_desc);
-		txq->tx_mz = qdma_zone_reserve(dev, "TxHwRn", tx_queue_id,
-						sz, socket_id);
-		if (!txq->tx_mz) {
-			PMD_DRV_LOG(ERR, "Couldn't reserve memory for "
-					"MM H2C ring of size %d\n", sz);
-			err = -ENOMEM;
-			goto tx_setup_err;
-		}
-
-		txq->tx_ring = txq->tx_mz->addr;
-		tx_ring_mm = (struct qdma_ul_mm_desc *)txq->tx_ring;
-
-		/* Write-back status structure */
-
-		tx_ring_bypass = (uint8_t *)txq->tx_ring;
-		if (txq->en_bypass &&
-			(txq->bypass_desc_sz != 0))
-			txq->wb_status = (struct wb_status *)&
-				tx_ring_bypass[(txq->nb_tx_desc - 1) *
-				(txq->bypass_desc_sz)];
-		else
-			txq->wb_status = (struct wb_status *)&
-				tx_ring_mm[txq->nb_tx_desc - 1];
-	}
-
-	PMD_DRV_LOG(INFO, "Tx ring phys addr: 0x%lX, Tx Ring virt addr: 0x%lX",
-	    (uint64_t)txq->tx_mz->iova, (uint64_t)txq->tx_ring);
-
-	/* Allocate memory for TX software ring */
-	sz = txq->nb_tx_desc * sizeof(struct rte_mbuf *);
-	txq->sw_ring = rte_zmalloc_socket("TxSwRn", sz,
-				RTE_CACHE_LINE_SIZE, socket_id);
-	if (txq->sw_ring == NULL) {
-		PMD_DRV_LOG(ERR, "Memory allocation failed for "
-				 "Tx queue SW ring\n");
-		err = -ENOMEM;
-		goto tx_setup_err;
-	}
-
-	rte_spinlock_init(&txq->pidx_update_lock);
-	dev->data->tx_queues[tx_queue_id] = txq;
-
-#ifdef LATENCY_MEASUREMENT
-	err = qdma_tx_qstats_clear(dev, tx_queue_id);
-	if (err) {
-		PMD_DRV_LOG(ERR,
-			"Failed to clear QDMA Tx queue stats for qid: %d\n",
-			tx_queue_id);
-		return err;
-	}
-#endif
-
-	return 0;
-
-tx_setup_err:
-	PMD_DRV_LOG(ERR, " Tx queue setup failed");
-	if (!qdma_dev->is_vf)
-		qdma_dev_decrement_active_queue(qdma_dev->dma_device_index,
-						qdma_dev->func_id,
-						QDMA_DEV_Q_TYPE_H2C);
-	else
-		qdma_dev_notify_qdel(dev, tx_queue_id +
-				qdma_dev->queue_base, QDMA_DEV_Q_TYPE_H2C);
-	if (txq) {
-		if (txq->tx_mz)
-			rte_memzone_free(txq->tx_mz);
-		if (txq->sw_ring)
-			rte_free(txq->sw_ring);
-		rte_free(txq);
-	}
-	return err;
-}
-
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-void qdma_txq_pidx_update(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq;
-	uint32_t qid;
-
-	for (qid = 0; qid < dev->data->nb_tx_queues; qid++) {
-		txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-		if (txq->tx_desc_pend) {
-			rte_spinlock_lock(&txq->pidx_update_lock);
-			if (txq->tx_desc_pend) {
-				qdma_dev->hw_access->qdma_queue_pidx_update(dev,
-					qdma_dev->is_vf,
-					qid, 0, &txq->q_pidx_info);
-
-				txq->tx_desc_pend = 0;
-			}
-			rte_spinlock_unlock(&txq->pidx_update_lock);
-		}
-	}
-	rte_eal_alarm_set(QDMA_TXQ_PIDX_UPDATE_INTERVAL,
-			qdma_txq_pidx_update, (void *)arg);
-}
-#endif
-
-/**
- * DPDK callback to start the device.
- *
- * Start the device by configuring the Rx/Tx descriptor and device registers.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-int qdma_dev_start(struct rte_eth_dev *dev)
-{
-	struct qdma_tx_queue *txq;
-	struct qdma_rx_queue *rxq;
-	uint32_t qid;
-	int err;
-
-	PMD_DRV_LOG(INFO, "qdma-dev-start: Starting\n");
-
-	/* prepare descriptor rings for operation */
-	for (qid = 0; qid < dev->data->nb_tx_queues; qid++) {
-		txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-
-		/*Deferred Queues should not start with dev_start*/
-		if (!txq->tx_deferred_start) {
-			err = qdma_dev_tx_queue_start(dev, qid);
-			if (err != 0)
-				return err;
-		}
-	}
-
-	for (qid = 0; qid < dev->data->nb_rx_queues; qid++) {
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-		/*Deferred Queues should not start with dev_start*/
-		if (!rxq->rx_deferred_start) {
-			err = qdma_dev_rx_queue_start(dev, qid);
-			if (err != 0)
-				return err;
-		}
-	}
-
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	rte_eal_alarm_set(QDMA_TXQ_PIDX_UPDATE_INTERVAL,
-			qdma_txq_pidx_update, (void *)dev);
-#endif
-	return 0;
-}
-
-/**
- * DPDK callback to retrieve the physical link information.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param wait_to_complete
- *   wait_to_complete field is ignored.
- */
-int qdma_dev_link_update(struct rte_eth_dev *dev,
-				__rte_unused int wait_to_complete)
-{
-	dev->data->dev_link.link_status = ETH_LINK_UP;
-	dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX;
-
-	/* TODO: Configure link speed by reading hardware capabilities */
-	dev->data->dev_link.link_speed = ETH_SPEED_NUM_200G;
-
-	PMD_DRV_LOG(INFO, "Link update done\n");
-	return 0;
-}
-
-/**
- * DPDK callback to get information about the device.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param[out] dev_info
- *   Device information structure output buffer.
- */
-int qdma_dev_infos_get(struct rte_eth_dev *dev,
-				struct rte_eth_dev_info *dev_info)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	dev_info->max_rx_queues = qdma_dev->dev_cap.num_qs;
-	dev_info->max_tx_queues = qdma_dev->dev_cap.num_qs;
-
-	dev_info->min_rx_bufsize = QDMA_MIN_RXBUFF_SIZE;
-	dev_info->max_rx_pktlen = DMA_BRAM_SIZE;
-	dev_info->max_mac_addrs = 1;
-
-	return 0;
-}
-
-/**
- * DPDK callback to stop the device.
- *
- * Stop the device by clearing all configured Rx/Tx queue
- * descriptors and registers.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- */
-int qdma_dev_stop(struct rte_eth_dev *dev)
-{
-#ifdef RTE_LIBRTE_QDMA_DEBUG_DRIVER
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-#endif
-	uint32_t qid;
-
-	/* reset driver's internal queue structures to default values */
-	PMD_DRV_LOG(INFO, "PF-%d(DEVFN) Stop H2C & C2H queues",
-			qdma_dev->func_id);
-	for (qid = 0; qid < dev->data->nb_tx_queues; qid++)
-		qdma_dev_tx_queue_stop(dev, qid);
-	for (qid = 0; qid < dev->data->nb_rx_queues; qid++)
-		qdma_dev_rx_queue_stop(dev, qid);
-
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	/* Cancel pending PIDX updates */
-	rte_eal_alarm_cancel(qdma_txq_pidx_update, (void *)dev);
-#endif
-
-	return 0;
-}
-
-/**
- * DPDK callback to close the device.
- *
- * Destroy all queues and objects, free memory.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- */
-int qdma_dev_close(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq;
-	struct qdma_rx_queue *rxq;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t qid;
-	struct qdma_fmap_cfg fmap_cfg;
-	int ret = 0;
-
-	PMD_DRV_LOG(INFO, "PF-%d(DEVFN) DEV Close\n", qdma_dev->func_id);
-
-	if (dev->data->dev_started)
-		qdma_dev_stop(dev);
-
-	memset(&fmap_cfg, 0, sizeof(struct qdma_fmap_cfg));
-	qdma_dev->hw_access->qdma_fmap_conf(dev,
-		qdma_dev->func_id, &fmap_cfg, QDMA_HW_ACCESS_CLEAR);
-
-	/* iterate over rx queues */
-	for (qid = 0; qid < dev->data->nb_rx_queues; ++qid) {
-		rxq = dev->data->rx_queues[qid];
-		if (rxq) {
-			PMD_DRV_LOG(INFO, "Remove C2H queue: %d", qid);
-
-			if (rxq->sw_ring)
-				rte_free(rxq->sw_ring);
-			if (rxq->st_mode) { /** if ST-mode **/
-				if (rxq->rx_cmpt_mz)
-					rte_memzone_free(rxq->rx_cmpt_mz);
-			}
-
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_C2H);
-
-			if (rxq->st_mode)
-				qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-
-			if (rxq->rx_mz)
-				rte_memzone_free(rxq->rx_mz);
-			rte_free(rxq);
-			PMD_DRV_LOG(INFO, "C2H queue %d removed", qid);
-		}
-	}
-
-	/* iterate over tx queues */
-	for (qid = 0; qid < dev->data->nb_tx_queues; ++qid) {
-		txq = dev->data->tx_queues[qid];
-		if (txq) {
-			PMD_DRV_LOG(INFO, "Remove H2C queue: %d", qid);
-
-			if (txq->sw_ring)
-				rte_free(txq->sw_ring);
-			if (txq->tx_mz)
-				rte_memzone_free(txq->tx_mz);
-			rte_free(txq);
-			PMD_DRV_LOG(INFO, "H2C queue %d removed", qid);
-
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_H2C);
-		}
-	}
-	if (qdma_dev->dev_cap.mm_cmpt_en) {
-		/* iterate over cmpt queues */
-		for (qid = 0; qid < qdma_dev->qsets_en; ++qid) {
-			cmptq = qdma_dev->cmpt_queues[qid];
-			if (cmptq != NULL) {
-				PMD_DRV_LOG(INFO, "PF-%d(DEVFN) Remove CMPT queue: %d",
-						qdma_dev->func_id, qid);
-				if (cmptq->cmpt_mz)
-					rte_memzone_free(cmptq->cmpt_mz);
-				rte_free(cmptq);
-				PMD_DRV_LOG(INFO, "PF-%d(DEVFN) CMPT queue %d removed",
-						qdma_dev->func_id, qid);
-				qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-			}
-		}
-
-		if (qdma_dev->cmpt_queues != NULL) {
-			rte_free(qdma_dev->cmpt_queues);
-			qdma_dev->cmpt_queues = NULL;
-		}
-	}
-	qdma_dev->qsets_en = 0;
-	ret = qdma_dev_update(qdma_dev->dma_device_index, qdma_dev->func_id,
-			qdma_dev->qsets_en, (int *)&qdma_dev->queue_base);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) qmax update failed: %d\n",
-			qdma_dev->func_id, ret);
-		return 0;
-	}
-
-	qdma_dev->init_q_range = 0;
-	rte_free(qdma_dev->q_info);
-	qdma_dev->q_info = NULL;
-	qdma_dev->dev_configured = 0;
-
-	/* cancel pending polls*/
-	if (qdma_dev->is_master)
-		rte_eal_alarm_cancel(qdma_check_errors, (void *)dev);
-
-	return 0;
-}
-
-/**
- * DPDK callback to reset the device.
- *
- * Uninitialze PF device after waiting for all its VFs to shutdown.
- * Initialize back PF device and then send Reset done mailbox
- * message to all its VFs to come online again.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-int qdma_dev_reset(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	struct qdma_mbox_msg *m = NULL;
-	uint32_t vf_device_count = 0;
-	uint32_t i = 0;
-	int ret = 0;
-
-	/* Get the number of active VFs for this PF device */
-	vf_device_count = qdma_dev->vf_online_count;
-	qdma_dev->reset_in_progress = 1;
-
-	/* Uninitialze PCI device */
-	ret = qdma_eth_dev_uninit(dev);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) uninitialization failed: %d\n",
-			qdma_dev->func_id, ret);
-		return -1;
-	}
-
-	/* Initialize PCI device */
-	ret = qdma_eth_dev_init(dev);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) initialization failed: %d\n",
-			qdma_dev->func_id, ret);
-		return -1;
-	}
-
-	/* Send "PF_RESET_DONE" mailbox message from PF to all its VFs,
-	 * so that VFs can come online again
-	 */
-	for (i = 0; i < pci_dev->max_vfs; i++) {
-		if (qdma_dev->vfinfo[i].func_id == QDMA_FUNC_ID_INVALID)
-			continue;
-
-		m = qdma_mbox_msg_alloc();
-		if (!m)
-			return -ENOMEM;
-
-		qdma_mbox_compose_pf_reset_done_message(m->raw_data,
-				qdma_dev->func_id,
-				qdma_dev->vfinfo[i].func_id);
-		ret = qdma_mbox_msg_send(dev, m, 0);
-		if (ret < 0)
-			PMD_DRV_LOG(ERR, "Sending reset failed from PF:%d to VF:%d\n",
-				qdma_dev->func_id,
-				qdma_dev->vfinfo[i].func_id);
-
-		/* Mark VFs with invalid function id mapping,
-		 * and this gets updated when VF comes online again
-		 */
-		qdma_dev->vfinfo[i].func_id = QDMA_FUNC_ID_INVALID;
-	}
-
-	/* Start waiting for a maximum of 60 secs to get all its VFs
-	 * to come online that were active before PF reset
-	 */
-	i = 0;
-	while (i < RESET_TIMEOUT) {
-		if (qdma_dev->vf_online_count == vf_device_count) {
-			PMD_DRV_LOG(INFO,
-				"%s: Reset completed for PF-%d(DEVFN)\n",
-				__func__, qdma_dev->func_id);
-			break;
-		}
-		rte_delay_ms(1);
-		i++;
-	}
-
-	if (i >= RESET_TIMEOUT) {
-		PMD_DRV_LOG(ERR, "%s: Failed reset for PF-%d(DEVFN)\n",
-			__func__, qdma_dev->func_id);
-	}
-
-	return ret;
-}
-
-/**
- * DPDK callback for Ethernet device configuration.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-int qdma_dev_configure(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint16_t qid = 0;
-	int ret = 0, queue_base = -1;
-	uint8_t stat_id;
-
-	PMD_DRV_LOG(INFO, "Configure the qdma engines\n");
-
-	qdma_dev->qsets_en = RTE_MAX(dev->data->nb_rx_queues,
-					dev->data->nb_tx_queues);
-	if (qdma_dev->qsets_en > qdma_dev->dev_cap.num_qs) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) Error: Number of Queues to be"
-				" configured are greater than the queues"
-				" supported by the hardware\n",
-				qdma_dev->func_id);
-		qdma_dev->qsets_en = 0;
-		return -1;
-	}
-
-	/* Request queue base from the resource manager */
-	ret = qdma_dev_update(qdma_dev->dma_device_index, qdma_dev->func_id,
-			qdma_dev->qsets_en, &queue_base);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) queue allocation failed: %d\n",
-			qdma_dev->func_id, ret);
-		return -1;
-	}
-
-	ret = qdma_dev_qinfo_get(qdma_dev->dma_device_index, qdma_dev->func_id,
-				(int *)&qdma_dev->queue_base,
-				&qdma_dev->qsets_en);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "%s: Error %d querying qbase\n",
-				__func__, ret);
-		return -1;
-	}
-	PMD_DRV_LOG(INFO, "Bus: 0x%x, PF-%d(DEVFN) queue_base: %d\n",
-		qdma_dev->dma_device_index,
-		qdma_dev->func_id,
-		qdma_dev->queue_base);
-
-	qdma_dev->q_info = rte_zmalloc("qinfo", sizeof(struct queue_info) *
-					(qdma_dev->qsets_en), 0);
-	if (!qdma_dev->q_info) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) Cannot allocate "
-				"memory for queue info\n", qdma_dev->func_id);
-		return (-ENOMEM);
-	}
-
-	/* Reserve memory for cmptq ring pointers
-	 * Max completion queues can be maximum of rx and tx queues.
-	 */
-	qdma_dev->cmpt_queues = rte_zmalloc("cmpt_queues",
-					    sizeof(qdma_dev->cmpt_queues[0]) *
-						qdma_dev->qsets_en,
-						RTE_CACHE_LINE_SIZE);
-	if (qdma_dev->cmpt_queues == NULL) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) cmpt ring pointers memory "
-				"allocation failed:\n", qdma_dev->func_id);
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-		return -(ENOMEM);
-	}
-
-	for (qid = 0 ; qid < qdma_dev->qsets_en; qid++) {
-		/* Initialize queue_modes to all 1's ( i.e. Streaming) */
-		qdma_dev->q_info[qid].queue_mode = RTE_PMD_QDMA_STREAMING_MODE;
-
-		/* Disable the cmpt over flow check by default */
-		qdma_dev->q_info[qid].dis_cmpt_ovf_chk = 0;
-
-		qdma_dev->q_info[qid].trigger_mode = qdma_dev->trigger_mode;
-		qdma_dev->q_info[qid].timer_count =
-					qdma_dev->timer_count;
-	}
-
-	for (qid = 0 ; qid < dev->data->nb_rx_queues; qid++) {
-		qdma_dev->q_info[qid].cmpt_desc_sz = qdma_dev->cmpt_desc_len;
-		qdma_dev->q_info[qid].rx_bypass_mode =
-						qdma_dev->c2h_bypass_mode;
-		qdma_dev->q_info[qid].en_prefetch = qdma_dev->en_desc_prefetch;
-		qdma_dev->q_info[qid].immediate_data_state = 0;
-	}
-
-	for (qid = 0 ; qid < dev->data->nb_tx_queues; qid++)
-		qdma_dev->q_info[qid].tx_bypass_mode =
-						qdma_dev->h2c_bypass_mode;
-	for (stat_id = 0, qid = 0;
-		stat_id < RTE_ETHDEV_QUEUE_STAT_CNTRS;
-		stat_id++, qid++) {
-		/* Initialize map with qid same as stat_id */
-		qdma_dev->tx_qid_statid_map[stat_id] =
-			(qid < dev->data->nb_tx_queues) ? qid : -1;
-		qdma_dev->rx_qid_statid_map[stat_id] =
-			(qid < dev->data->nb_rx_queues) ? qid : -1;
-	}
-
-	ret = qdma_pf_fmap_prog(dev);
-	if (ret < 0) {
-		PMD_DRV_LOG(ERR, "FMAP programming failed\n");
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-		rte_free(qdma_dev->cmpt_queues);
-		qdma_dev->cmpt_queues = NULL;
-		return ret;
-	}
-
-	qdma_dev->dev_configured = 1;
-
-	return 0;
-}
-
-int qdma_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq;
-	uint32_t queue_base =  qdma_dev->queue_base;
-	int err, bypass_desc_sz_idx;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-
-	memset(&q_sw_ctxt, 0, sizeof(struct qdma_descq_sw_ctxt));
-
-	bypass_desc_sz_idx = qmda_get_desc_sz_idx(txq->bypass_desc_sz);
-
-	qdma_reset_tx_queue(txq);
-	qdma_clr_tx_queue_ctxts(dev, (qid + queue_base), txq->st_mode);
-
-	if (txq->st_mode) {
-		q_sw_ctxt.desc_sz = SW_DESC_CNTXT_H2C_STREAM_DMA;
-	} else {
-		q_sw_ctxt.desc_sz = SW_DESC_CNTXT_MEMORY_MAP_DMA;
-		q_sw_ctxt.is_mm = 1;
-	}
-	q_sw_ctxt.wbi_chk = 1;
-	q_sw_ctxt.wbi_intvl_en = 1;
-	q_sw_ctxt.fnc_id = txq->func_id;
-	q_sw_ctxt.qen = 1;
-	q_sw_ctxt.rngsz_idx = txq->ringszidx;
-	q_sw_ctxt.bypass = txq->en_bypass;
-	q_sw_ctxt.wbk_en = 1;
-	q_sw_ctxt.ring_bs_addr = (uint64_t)txq->tx_mz->iova;
-
-	if (txq->en_bypass &&
-		(txq->bypass_desc_sz != 0))
-		q_sw_ctxt.desc_sz = bypass_desc_sz_idx;
-
-	/* Set SW Context */
-	err = hw_access->qdma_sw_ctx_conf(dev, 0,
-			(qid + queue_base), &q_sw_ctxt,
-			QDMA_HW_ACCESS_WRITE);
-	if (err < 0)
-		return qdma_dev->hw_access->qdma_get_error_code(err);
-
-	txq->q_pidx_info.pidx = 0;
-	hw_access->qdma_queue_pidx_update(dev, qdma_dev->is_vf,
-		qid, 0, &txq->q_pidx_info);
-
-	dev->data->tx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STARTED;
-	txq->status = RTE_ETH_QUEUE_STATE_STARTED;
-	return 0;
-}
-
-
-int qdma_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_rx_queue *rxq;
-	uint32_t queue_base =  qdma_dev->queue_base;
-	uint8_t cmpt_desc_fmt;
-	int err, bypass_desc_sz_idx;
-	struct qdma_descq_sw_ctxt q_sw_ctxt;
-	struct qdma_descq_cmpt_ctxt q_cmpt_ctxt;
-	struct qdma_descq_prefetch_ctxt q_prefetch_ctxt;
-	struct qdma_hw_access *hw_access = qdma_dev->hw_access;
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-	memset(&q_sw_ctxt, 0, sizeof(struct qdma_descq_sw_ctxt));
-
-	qdma_reset_rx_queue(rxq);
-	qdma_clr_rx_queue_ctxts(dev, (qid + queue_base), rxq->st_mode);
-
-	bypass_desc_sz_idx = qmda_get_desc_sz_idx(rxq->bypass_desc_sz);
-
-	switch (rxq->cmpt_desc_len) {
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_8B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_16B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_16B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_32B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_32B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_64B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_64B;
-		break;
-	default:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	}
-
-	err = qdma_init_rx_queue(rxq);
-	if (err != 0)
-		return err;
-
-	if (rxq->st_mode) {
-		memset(&q_cmpt_ctxt, 0, sizeof(struct qdma_descq_cmpt_ctxt));
-		memset(&q_prefetch_ctxt, 0,
-				sizeof(struct qdma_descq_prefetch_ctxt));
-
-		q_prefetch_ctxt.bypass = (rxq->en_bypass_prefetch) ? 1 : 0;
-		q_prefetch_ctxt.bufsz_idx = rxq->buffszidx;
-		q_prefetch_ctxt.pfch_en = (rxq->en_prefetch) ? 1 : 0;
-		q_prefetch_ctxt.valid = 1;
-
-#ifdef QDMA_LATENCY_OPTIMIZED
-		q_cmpt_ctxt.full_upd = 1;
-#endif //QDMA_LATENCY_OPTIMIZED
-		q_cmpt_ctxt.en_stat_desc = 1;
-		q_cmpt_ctxt.trig_mode = rxq->triggermode;
-		q_cmpt_ctxt.fnc_id = rxq->func_id;
-		q_cmpt_ctxt.counter_idx = rxq->threshidx;
-		q_cmpt_ctxt.timer_idx = rxq->timeridx;
-		q_cmpt_ctxt.color = CMPT_DEFAULT_COLOR_BIT;
-		q_cmpt_ctxt.ringsz_idx = rxq->cmpt_ringszidx;
-		q_cmpt_ctxt.bs_addr = (uint64_t)rxq->rx_cmpt_mz->iova;
-		q_cmpt_ctxt.desc_sz = cmpt_desc_fmt;
-		q_cmpt_ctxt.valid = 1;
-		if (qdma_dev->dev_cap.cmpt_ovf_chk_dis)
-			q_cmpt_ctxt.ovf_chk_dis = rxq->dis_overflow_check;
-
-
-		q_sw_ctxt.desc_sz = SW_DESC_CNTXT_C2H_STREAM_DMA;
-		q_sw_ctxt.frcd_en = 1;
-	} else {
-		q_sw_ctxt.desc_sz = SW_DESC_CNTXT_MEMORY_MAP_DMA;
-		q_sw_ctxt.is_mm = 1;
-		q_sw_ctxt.wbi_chk = 1;
-		q_sw_ctxt.wbi_intvl_en = 1;
-	}
-
-	q_sw_ctxt.fnc_id = rxq->func_id;
-	q_sw_ctxt.qen = 1;
-	q_sw_ctxt.rngsz_idx = rxq->ringszidx;
-	q_sw_ctxt.bypass = rxq->en_bypass;
-	q_sw_ctxt.wbk_en = 1;
-	q_sw_ctxt.ring_bs_addr = (uint64_t)rxq->rx_mz->iova;
-
-	if (rxq->en_bypass &&
-		(rxq->bypass_desc_sz != 0))
-		q_sw_ctxt.desc_sz = bypass_desc_sz_idx;
-
-	/* Set SW Context */
-	err = hw_access->qdma_sw_ctx_conf(dev, 1, (qid + queue_base),
-			&q_sw_ctxt, QDMA_HW_ACCESS_WRITE);
-	if (err < 0)
-		return qdma_dev->hw_access->qdma_get_error_code(err);
-
-	if (rxq->st_mode) {
-		/* Set Prefetch Context */
-		err = hw_access->qdma_pfetch_ctx_conf(dev, (qid + queue_base),
-				&q_prefetch_ctxt, QDMA_HW_ACCESS_WRITE);
-		if (err < 0)
-			return qdma_dev->hw_access->qdma_get_error_code(err);
-
-		/* Set Completion Context */
-		err = hw_access->qdma_cmpt_ctx_conf(dev, (qid + queue_base),
-				&q_cmpt_ctxt, QDMA_HW_ACCESS_WRITE);
-		if (err < 0)
-			return qdma_dev->hw_access->qdma_get_error_code(err);
-
-		rte_wmb();
-		/* enable status desc , loading the triggermode,
-		 * thresidx and timeridx passed from the user
-		 */
-
-		rxq->cmpt_cidx_info.counter_idx = rxq->threshidx;
-		rxq->cmpt_cidx_info.timer_idx = rxq->timeridx;
-		rxq->cmpt_cidx_info.trig_mode = rxq->triggermode;
-		rxq->cmpt_cidx_info.wrb_en = 1;
-		rxq->cmpt_cidx_info.wrb_cidx = 0;
-		hw_access->qdma_queue_cmpt_cidx_update(dev, qdma_dev->is_vf,
-			qid, &rxq->cmpt_cidx_info);
-
-		rxq->q_pidx_info.pidx = (rxq->nb_rx_desc - 2);
-		hw_access->qdma_queue_pidx_update(dev, qdma_dev->is_vf, qid,
-				1, &rxq->q_pidx_info);
-	}
-
-	dev->data->rx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STARTED;
-	rxq->status = RTE_ETH_QUEUE_STATE_STARTED;
-	return 0;
-}
-
-int qdma_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_rx_queue *rxq;
-	uint32_t queue_base =  qdma_dev->queue_base;
-	int i = 0;
-	int cnt = 0;
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-	rxq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-
-	/* Wait for queue to recv all packets. */
-	if (rxq->st_mode) {  /** ST-mode **/
-		/* For eqdma, c2h marker takes care to drain the pipeline */
-		if (!(qdma_dev->ip_type == EQDMA_SOFT_IP)) {
-			while (rxq->wb_status->pidx !=
-					rxq->cmpt_cidx_info.wrb_cidx) {
-				rte_delay_us_block(10);
-				if (cnt++ > 10000)
-					break;
-			}
-		}
-	} else { /* MM mode */
-		while (rxq->wb_status->cidx != rxq->q_pidx_info.pidx) {
-			rte_delay_us_block(10);
-			if (cnt++ > 10000)
-				break;
-		}
-	}
-
-	qdma_inv_rx_queue_ctxts(dev, (qid + queue_base), rxq->st_mode);
-
-	if (rxq->st_mode) {  /** ST-mode **/
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: queue id %d,"
-		"mbuf_avail_count = %d, mbuf_in_use_count = %d",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-		for (i = 0; i < rxq->nb_rx_desc - 1; i++) {
-			rte_pktmbuf_free(rxq->sw_ring[i]);
-			rxq->sw_ring[i] = NULL;
-		}
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: queue id %d,"
-		"mbuf_avail_count = %d, mbuf_in_use_count = %d",
-			__func__, __LINE__, rxq->queue_id,
-			rte_mempool_avail_count(rxq->mb_pool),
-			rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-	}
-
-	qdma_reset_rx_queue(rxq);
-
-	dev->data->rx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STOPPED;
-
-	return 0;
-}
-
-int qdma_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t queue_base =  qdma_dev->queue_base;
-	struct qdma_tx_queue *txq;
-	int cnt = 0;
-	uint16_t count;
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-
-	txq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-	/* Wait for TXQ to send out all packets. */
-	while (txq->wb_status->cidx != txq->q_pidx_info.pidx) {
-		rte_delay_us_block(10);
-		if (cnt++ > 10000)
-			break;
-	}
-
-	qdma_inv_tx_queue_ctxts(dev, (qid + queue_base), txq->st_mode);
-
-	/* Relinquish pending mbufs */
-	for (count = 0; count < txq->nb_tx_desc - 1; count++) {
-		rte_pktmbuf_free(txq->sw_ring[count]);
-		txq->sw_ring[count] = NULL;
-	}
-	qdma_reset_tx_queue(txq);
-
-	dev->data->tx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STOPPED;
-
-	return 0;
-}
-
-/**
- * DPDK callback to retrieve device registers and
- * register attributes (number of registers and register size)
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param regs
- *   Pointer to rte_dev_reg_info structure to fill in. If regs->data is
- *   NULL the function fills in the width and length fields. If non-NULL
- *   the registers are put into the buffer pointed at by the data field.
- *
- * @return
- *   0 on success, -ENOTSUP on failure.
- */
-int
-qdma_dev_get_regs(struct rte_eth_dev *dev,
-	      struct rte_dev_reg_info *regs)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t *data = regs->data;
-	uint32_t reg_length = 0;
-	int ret = 0;
-
-	ret = qdma_acc_get_num_config_regs(dev,
-				(enum qdma_ip_type)qdma_dev->ip_type,
-				(enum qdma_device_type)qdma_dev->device_type,
-				&reg_length);
-	if (ret < 0 || reg_length == 0) {
-		PMD_DRV_LOG(ERR, "%s: Failed to get number of config registers\n",
-				__func__);
-		return ret;
-	}
-
-	if (data == NULL) {
-		regs->length = reg_length - 1;
-		regs->width = sizeof(uint32_t);
-		return 0;
-	}
-
-	/* Support only full register dump */
-	if ((regs->length == 0) ||
-	    (regs->length == (reg_length - 1))) {
-		regs->version = 1;
-		ret = qdma_acc_get_config_regs(dev, qdma_dev->is_vf,
-			(enum qdma_ip_type)qdma_dev->ip_type,
-			(enum qdma_device_type)qdma_dev->device_type, data);
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR, "%s: Failed to get config registers\n",
-					__func__);
-		}
-		return ret;
-	}
-
-	PMD_DRV_LOG(ERR, "%s: Unsupported length (0x%x) requested\n",
-				__func__, regs->length);
-	return -ENOTSUP;
-}
-
-/**
- * DPDK callback to set a queue statistics mapping for
- * a tx/rx queue of an Ethernet device.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param queue_id
- *   Index of the queue for which a queue stats mapping is required.
- * @param stat_idx
- *   The per-queue packet statistics functionality number that
- *   the queue_id is to be assigned.
- * @param is_rx
- *   Whether queue is a Rx or a Tx queue.
- *
- * @return
- *   0 on success, -EINVAL on failure.
- */
-int qdma_dev_queue_stats_mapping(struct rte_eth_dev *dev,
-					     uint16_t queue_id,
-					     uint8_t stat_idx,
-					     uint8_t is_rx)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (is_rx && (queue_id >= dev->data->nb_rx_queues)) {
-		PMD_DRV_LOG(ERR, "%s: Invalid Rx qid %d\n",
-			__func__, queue_id);
-		return -EINVAL;
-	}
-
-	if (!is_rx && (queue_id >= dev->data->nb_tx_queues)) {
-		PMD_DRV_LOG(ERR, "%s: Invalid Tx qid %d\n",
-			__func__, queue_id);
-		return -EINVAL;
-	}
-
-	if (stat_idx >= RTE_ETHDEV_QUEUE_STAT_CNTRS) {
-		PMD_DRV_LOG(ERR, "%s: Invalid stats index %d\n",
-			__func__, stat_idx);
-		return -EINVAL;
-	}
-
-	if (is_rx)
-		qdma_dev->rx_qid_statid_map[stat_idx] = queue_id;
-	else
-		qdma_dev->tx_qid_statid_map[stat_idx] = queue_id;
-
-	return 0;
-}
-
-/**
- * DPDK callback for retrieving Port statistics.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param eth_stats
- *   Pointer to structure containing statistics.
- *
- * @return
- *   Returns 0 i.e. success
- */
-int qdma_dev_stats_get(struct rte_eth_dev *dev,
-			      struct rte_eth_stats *eth_stats)
-{
-	uint32_t i;
-	int qid;
-	struct qdma_rx_queue *rxq;
-	struct qdma_tx_queue *txq;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	memset(eth_stats, 0, sizeof(struct rte_eth_stats));
-	for (i = 0; i < dev->data->nb_rx_queues; i++) {
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[i];
-		eth_stats->ipackets += rxq->stats.pkts;
-		eth_stats->ibytes += rxq->stats.bytes;
-	}
-
-	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
-		qid = qdma_dev->rx_qid_statid_map[i];
-		if (qid >= 0) {
-			rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-			eth_stats->q_ipackets[i] = rxq->stats.pkts;
-			eth_stats->q_ibytes[i] = rxq->stats.bytes;
-		}
-	}
-
-	for (i = 0; i < dev->data->nb_tx_queues; i++) {
-		txq = (struct qdma_tx_queue *)dev->data->tx_queues[i];
-		eth_stats->opackets += txq->stats.pkts;
-		eth_stats->obytes   += txq->stats.bytes;
-	}
-
-	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
-		qid = qdma_dev->tx_qid_statid_map[i];
-		if (qid >= 0) {
-			txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-			eth_stats->q_opackets[i] = txq->stats.pkts;
-			eth_stats->q_obytes[i] = txq->stats.bytes;
-		}
-	}
-	return 0;
-}
-
-/**
- * DPDK callback to reset Port statistics.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- */
-int qdma_dev_stats_reset(struct rte_eth_dev *dev)
-{
-	uint32_t i;
-
-	for (i = 0; i < dev->data->nb_rx_queues; i++) {
-		struct qdma_rx_queue *rxq =
-			(struct qdma_rx_queue *)dev->data->rx_queues[i];
-		rxq->stats.pkts = 0;
-		rxq->stats.bytes = 0;
-	}
-
-	for (i = 0; i < dev->data->nb_tx_queues; i++) {
-		struct qdma_tx_queue *txq =
-			(struct qdma_tx_queue *)dev->data->tx_queues[i];
-		txq->stats.pkts = 0;
-		txq->stats.bytes = 0;
-	}
-	return 0;
-}
-
-/**
- * DPDK callback to get Rx Queue info of an Ethernet device.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param rx_queue_id
- *   The RX queue on the Ethernet device for which information will be
- *   retrieved
- * @param qinfo
- *   A pointer to a structure of type rte_eth_rxq_info_info to be filled with
- *   the information of given Rx queue.
- */
-void
-qdma_dev_rxq_info_get(struct rte_eth_dev *dev, uint16_t rx_queue_id,
-		     struct rte_eth_rxq_info *qinfo)
-{
-	struct qdma_pci_dev *dma_priv;
-	struct qdma_rx_queue *rxq = NULL;
-
-	if (!qinfo)
-		return;
-
-	dma_priv = (struct qdma_pci_dev *)dev->data->dev_private;
-
-	rxq = dev->data->rx_queues[rx_queue_id];
-	memset(qinfo, 0, sizeof(struct rte_eth_rxq_info));
-	qinfo->mp = rxq->mb_pool;
-	qinfo->conf.rx_deferred_start = rxq->rx_deferred_start;
-	qinfo->conf.rx_drop_en = 1;
-	qinfo->conf.rx_thresh.wthresh = dma_priv->g_c2h_cnt_th[rxq->threshidx];
-	qinfo->scattered_rx = 1;
-	qinfo->nb_desc = rxq->nb_rx_desc - 1;
-}
-
-/**
- * DPDK callback to get Tx Queue info of an Ethernet device.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param tx_queue_id
- *   The TX queue on the Ethernet device for which information will be
- *   retrieved
- * @param qinfo
- *   A pointer to a structure of type rte_eth_txq_info_info to be filled with
- *   the information of given Tx queue.
- */
-void
-qdma_dev_txq_info_get(struct rte_eth_dev *dev, uint16_t tx_queue_id,
-		      struct rte_eth_txq_info *qinfo)
-{
-	struct qdma_tx_queue *txq = NULL;
-
-	if (!qinfo)
-		return;
-
-	txq = dev->data->tx_queues[tx_queue_id];
-	qinfo->conf.offloads = txq->offloads;
-	qinfo->conf.tx_deferred_start = txq->tx_deferred_start;
-	qinfo->conf.tx_rs_thresh = 0;
-	qinfo->nb_desc = txq->nb_tx_desc - 1;
-
-}
-
-static struct eth_dev_ops qdma_eth_dev_ops = {
-	.dev_configure            = qdma_dev_configure,
-	.dev_infos_get            = qdma_dev_infos_get,
-	.dev_start                = qdma_dev_start,
-	.dev_stop                 = qdma_dev_stop,
-	.dev_close                = qdma_dev_close,
-	.dev_reset                = qdma_dev_reset,
-	.link_update              = qdma_dev_link_update,
-	.rx_queue_setup           = qdma_dev_rx_queue_setup,
-	.tx_queue_setup           = qdma_dev_tx_queue_setup,
-	.rx_queue_release         = qdma_dev_rx_queue_release,
-	.tx_queue_release         = qdma_dev_tx_queue_release,
-	.rx_queue_start           = qdma_dev_rx_queue_start,
-	.rx_queue_stop            = qdma_dev_rx_queue_stop,
-	.tx_queue_start           = qdma_dev_tx_queue_start,
-	.tx_queue_stop            = qdma_dev_tx_queue_stop,
-	.tx_done_cleanup          = qdma_dev_tx_done_cleanup,
-	.queue_stats_mapping_set  = qdma_dev_queue_stats_mapping,
-	.get_reg                  = qdma_dev_get_regs,
-	.stats_get                = qdma_dev_stats_get,
-	.stats_reset              = qdma_dev_stats_reset,
-	.rxq_info_get             = qdma_dev_rxq_info_get,
-	.txq_info_get             = qdma_dev_txq_info_get,
-};
-
-void qdma_dev_ops_init(struct rte_eth_dev *dev)
-{
-	dev->dev_ops = &qdma_eth_dev_ops;
-	if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
-		qdma_set_rx_function(dev);
-		qdma_set_tx_function(dev);
-		dev->rx_queue_count = &qdma_dev_rx_queue_count;
-		dev->rx_descriptor_status = &qdma_dev_rx_descriptor_status;
-		dev->tx_descriptor_status = &qdma_dev_tx_descriptor_status;
-	}
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_devops.h b/QDMA/DPDK/drivers/net/qdma/qdma_devops.h
deleted file mode 100755
index 56c0d28..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_devops.h
+++ /dev/null
@@ -1,515 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2020-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_DEVOPS_H__
-#define __QDMA_DEVOPS_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @defgroup dpdk_devops_func Functions
- */
-
-/**
- * DPDK callback to register an Ethernet PCIe device.
- *
- * The Following actions are performed by this function:
- *  - Parse and validate device arguments
- *  - Identify PCIe BARs present in the device
- *  - Register device operations
- *  - Enable MM C2H and H2C channels
- *  - Register PCIe device with Queue Resource Manager
- *  - Program the QDMA IP global registers (by 1st PF that was probed)
- *  - Enable HW errors and launch QDMA HW error monitoring thread
- *    (by 1st PF that was probed)
- *  - If VF is enabled, then enable Mailbox interrupt and register
- *    Rx message handling function as interrupt handler
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_eth_dev_init(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback for Ethernet device configuration.
- *
- * This API requests the queue base from Queue Resource Manager and programs
- * the queue base and queue count in function map (FMAP)
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_configure(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to get information about the device
- *
- * @param dev Pointer to Ethernet device structure
- * @param dev_info: Pointer to Device information structure
- *
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_infos_get(struct rte_eth_dev *dev,
-				struct rte_eth_dev_info *dev_info);
-
-/**
- * DPDK callback to retrieve the physical link information
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param wait_to_complete
- *   wait_to_complete field is ignored
- *
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_link_update(struct rte_eth_dev *dev,
-				__rte_unused int wait_to_complete);
-
-/**
- * DPDK callback to configure a RX queue.
- *
- * This API validates queue parameters and allocates C2H ring and
- * Streaming CMPT ring from the DPDK reserved hugepage memory zones
- *
- * @param dev Pointer to Ethernet device structure.
- * @param rx_queue_id RX queue index relative to the PCIe function
- *                    pointed by dev
- * @param nb_rx_desc Number of C2H descriptors to configure for this queue
- * @param socket_id NUMA socket on which memory must be allocated
- * @param rx_conf Rx queue configuration parameters
- * @param mb_pool Memory pool to use for buffer allocations on this queue
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
-				uint16_t nb_rx_desc, unsigned int socket_id,
-				const struct rte_eth_rxconf *rx_conf,
-				struct rte_mempool *mb_pool);
-
-/**
- * DPDK callback to configure a TX queue.
- *
- * This API validates queue parameters and allocates H2C ring from the
- * DPDK reserved hugepage memory zone
- *
- * @param dev Pointer to Ethernet device structure
- * @param tx_queue_id TX queue index
- * @param nb_tx_desc Number of descriptors to configure in queue
- * @param socket_id NUMA socket on which memory must be allocated
- * @param tx_conf Tx queue configuration parameters
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
-			    uint16_t nb_tx_desc, unsigned int socket_id,
-			    const struct rte_eth_txconf *tx_conf);
-
-/**
- * DPDK callback to get Rx queue info of an Ethernet device
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param rx_queue_id
- *   The RX queue on the Ethernet device for which information will be
- *   retrieved
- * @param qinfo
- *   A pointer to a structure of type rte_eth_rxq_info_info to be filled with
- *   the information of given Rx queue
- *
- * @ingroup dpdk_devops_func
- */
-void
-qdma_dev_rxq_info_get(struct rte_eth_dev *dev, uint16_t rx_queue_id,
-		     struct rte_eth_rxq_info *qinfo);
-
-/**
- * DPDK callback to get Tx queue info of an Ethernet device
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param tx_queue_id
- *   The TX queue on the Ethernet device for which information will be
- *   retrieved
- * @param qinfo
- *   A pointer to a structure of type rte_eth_txq_info_info to be filled with
- *   the information of given Tx queue
- *
- * @ingroup dpdk_devops_func
- */
-void
-qdma_dev_txq_info_get(struct rte_eth_dev *dev, uint16_t tx_queue_id,
-		      struct rte_eth_txq_info *qinfo);
-
-/**
- * DPDK callback to start the device.
- *
- * This API starts the Ethernet device by initializing Rx, Tx descriptors
- * and device registers. For the Port queues whose start is not deferred,
- * it calls qdma_dev_tx_queue_start and qdma_dev_rx_queue_start to start
- * the queues for packet processing.
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_start(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to start a C2H queue which has been deferred start.
- *
- * This API clears and then programs the Software, Prefetch and
- * Completion context of the C2H queue
- *
- * @param dev Pointer to Ethernet device structure
- * @param qid Rx queue index
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t qid);
-
-/**
- * DPDK callback to start a H2C queue which has been deferred start.
- *
- * This API clears and then programs the Software context of the H2C queue
- *
- * @param dev Pointer to Ethernet device structure
- * @param qid Tx queue index
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t qid);
-
-/**
- * DPDK callback for receiving packets in burst.
- *
- * This API does following operations:
- *	- Process the Completion ring to determine and store packet information
- *	- Update CMPT CIDX
- *	- Process C2H ring to retrieve rte_mbuf pointers corresponding to
- *    received packets and store in rx_pkts array.
- *	- Populate C2H ring with new pointers for packet buffers
- *	- Update C2H ring PIDX
- *
- * @param rx_queue Generic pointer to Rx queue structure
- * @param rx_pkts The address of an array of pointers to rte_mbuf structures
- *                 that must be large enough to store nb_pkts pointers in it
- * @param nb_pkts Maximum number of packets to retrieve
- *
- * @return Number of packets successfully received (<= nb_pkts)
- * @ingroup dpdk_devops_func
- *
- */
-uint16_t qdma_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
-			uint16_t nb_pkts);
-
-/**
- * DPDK callback for transmitting packets in burst.
- *
- * This API does following operations:
- *	- Free rte_mbuf pointers to previous transmitted packets,
- *    back to the memory pool
- *	- Retrieve packet buffer pointer from tx_pkts and populate H2C ring
- *    with pointers to new packet buffers.
- *	- Update H2C ring PIDX
- *
- * @param tx_queue Generic pointer to Tx queue structure
- * @param tx_pkts The address of an array of nb_pkts pointers to
- *                rte_mbuf structures which contain the output packets
- * @param nb_pkts The maximum number of packets to transmit
- *
- * @return Number of packets successfully transmitted (<= nb_pkts)
- * @ingroup dpdk_devops_func
- *
- */
-uint16_t qdma_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
-			uint16_t nb_pkts);
-
-/**
- * DPDK callback for retrieving Port statistics.
- *
- * This API updates Port statistics in rte_eth_stats structure parameters
- *
- * @param dev Pointer to Ethernet device structure
- * @param eth_stats Pointer to structure containing statistics
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_stats_get(struct rte_eth_dev *dev,
-			      struct rte_eth_stats *eth_stats);
-
-/**
- * DPDK callback to reset Port statistics.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- *
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_stats_reset(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to set a queue statistics mapping for
- * a tx/rx queue of an Ethernet device.
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param queue_id
- *   Index of the queue for which a queue stats mapping is required
- * @param stat_idx
- *   The per-queue packet statistics functionality number that
- *   the queue_id is to be assigned
- * @param is_rx
- *   Whether queue is a Rx or a Tx queue
- *
- * @return
- *   0 on success, -EINVAL on failure
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_queue_stats_mapping(struct rte_eth_dev *dev,
-					     uint16_t queue_id,
-					     uint8_t stat_idx,
-					     uint8_t is_rx);
-
-
-/**
- * DPDK callback to check the status of a Rx descriptor in the queue
- *
- * @param rx_queue
- *   Pointer to Rx queue specific data structure
- * @param offset
- *   The offset of the descriptor starting from tail (0 is the next
- *   packet to be received by the driver)
- *
- * @return
- *  - (RTE_ETH_RX_DESC_AVAIL): Descriptor is available for the hardware to
- *    receive a packet.
- *  - (RTE_ETH_RX_DESC_DONE): Descriptor is done, it is filled by hw, but
- *    not yet processed by the driver (i.e. in the receive queue).
- *  - (RTE_ETH_RX_DESC_UNAVAIL): Descriptor is unavailable, either hold by
- *    the driver and not yet returned to hw, or reserved by the hw.
- *  - (-EINVAL) bad descriptor offset.
- * @ingroup dpdk_devops_func
- */
-int
-qdma_dev_rx_descriptor_status(void *rx_queue, uint16_t offset);
-
-/**
- * DPDK callback to check the status of a Tx descriptor in the queue
- *
- * @param tx_queue
- *   Pointer to Tx queue specific data structure
- * @param offset
- *   The offset of the descriptor starting from tail (0 is the place where
- *   the next packet will be send)
- *
- * @return
- *  - (RTE_ETH_TX_DESC_FULL) Descriptor is being processed by the hw, i.e.
- *    in the transmit queue.
- *  - (RTE_ETH_TX_DESC_DONE) Hardware is done with this descriptor, it can
- *    be reused by the driver.
- *  - (RTE_ETH_TX_DESC_UNAVAIL): Descriptor is unavailable, reserved by the
- *    driver or the hardware.
- *  - (-EINVAL) bad descriptor offset.
- * @ingroup dpdk_devops_func
- */
-int
-qdma_dev_tx_descriptor_status(void *tx_queue, uint16_t offset);
-
-/**
- * DPDK callback to request the driver to free mbufs
- * currently cached by the driver
- *
- * @param tx_queue
- *   Pointer to Tx queue specific data structure
- * @param free_cnt
- *   Maximum number of packets to free. Use 0 to indicate all possible packets
- *   should be freed. Note that a packet may be using multiple mbufs.
- *
- * @return
- *   - Failure: < 0
- *   - Success: >= 0
- *     0-n: Number of packets freed. More packets may still remain in ring that
- *     are in use.
- * @ingroup dpdk_devops_func
- */
-int
-qdma_dev_tx_done_cleanup(void *tx_queue, uint32_t free_cnt);
-
-/**
- * DPDK callback to retrieve device registers and
- * register attributes (number of registers and register size)
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param regs
- *   Pointer to rte_dev_reg_info structure to fill in. If regs->data is
- *   NULL the function fills in the width and length fields. If non-NULL
- *   the registers are put into the buffer pointed at by the data field.
- *
- * @return
- *   0 on success, -ENOTSUP on failure
- * @ingroup dpdk_devops_func
- */
-int
-qdma_dev_get_regs(struct rte_eth_dev *dev,
-	      struct rte_dev_reg_info *regs);
-
-/**
- * DPDK callback to stop a C2H queue
- *
- * This API invalidates Hardware, Software, Prefetch and completion contexts
- * of C2H queue. It also free the rte_mbuf pointers assigned to descriptors
- * prepared for packet reception.
- *
- * @param dev Pointer to Ethernet device structure
- * @param qid Rx queue index
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t qid);
-
-/**
- * qdma_dev_tx_queue_stop() - DPDK callback to stop a queue in H2C direction
- *
- * This API invalidates Hardware, Software contexts of H2C queue. It also free
- * the rte_mbuf pointers assigned to descriptors that are pending transmission.
- *
- * @param dev Pointer to Ethernet device structure
- * @param qid TX queue index
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t qid);
-
-
-/**
- * DPDK callback to stop the device.
- *
- * This API stops the device by invalidating all the contexts of all the queues
- * belonging to the port by calling qdma_dev_tx_queue_stop() and
- * qdma_dev_rx_queue_stop() for all the queues of the port.
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_dev_stop(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to close the device.
- *
- * This API frees the descriptor rings and objects beonging to all the queues
- * of the given port. It also clears the FMAP.
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_close(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to close the VF device.
- *
- * This API frees the descriptor rings and objects beonging to all the queues
- * of the given port. It also clears the FMAP.
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @ingroup dpdk_devops_func
- */
-int qdma_vf_dev_close(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to reset the device.
- *
- * This callback is invoked when applcation calls rte_eth_dev_reset() API
- * to reset a device. This callback uninitialzes PF device after waiting for
- * all its VFs to shutdown. It initialize back PF device and then send
- * Reset done mailbox message to all its VFs to come online again.
- *
- * @param dev
- *   Pointer to Ethernet device structure
- *
- * @return
- *   0 on success, negative errno value on failure
- * @ingroup dpdk_devops_func
- */
-int qdma_dev_reset(struct rte_eth_dev *dev);
-
-/**
- * DPDK callback to deregister a PCI device.
- *
- * The Following actions are performed by this function:
- *  - Flushes out pending actions from the Tx Mailbox List
- *  - Terminate Tx Mailbox thread
- *  - Disable Mailbox interrupt and unregister interrupt handler
- *  - Unregister PCIe device from Queue Resource Manager
- *  - Cancel QDMA HW error monitoring thread if created by this device
- *  - Disable MM C2H and H2C channels
- *
- * @param dev Pointer to Ethernet device structure
- *
- * @return 0 on success, < 0 on failure
- * @ingroup dpdk_devops_func
- *
- */
-int qdma_eth_dev_uninit(struct rte_eth_dev *dev);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* ifndef __QDMA_DEVOPS_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.c b/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.c
deleted file mode 100755
index 1b4e767..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.c
+++ /dev/null
@@ -1,316 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_alarm.h>
-#include <rte_cycles.h>
-#include <rte_atomic.h>
-#include <unistd.h>
-#include <string.h>
-#include "qdma.h"
-#include "qdma_access_common.h"
-#include "qdma_mbox_protocol.h"
-#include "qdma_mbox.h"
-#include "qdma_reg_dump.h"
-#include "qdma_platform.h"
-#include "qdma_devops.h"
-
-
-#if defined(QDMA_DPDK_21_11) || defined(QDMA_DPDK_22_11)
-
-void qdma_dev_tx_queue_release(struct rte_eth_dev *dev,
-			       uint16_t queue_id)
-{
-	struct qdma_tx_queue *txq =
-	       (struct qdma_tx_queue *)dev->data->tx_queues[queue_id];
-	struct qdma_pci_dev *qdma_dev;
-
-	if (txq != NULL) {
-		PMD_DRV_LOG(INFO, "Remove H2C queue: %d", txq->queue_id);
-		qdma_dev = txq->dev->data->dev_private;
-
-		if (!qdma_dev->is_vf)
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_H2C);
-		else
-			qdma_dev_notify_qdel(txq->dev, txq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_H2C);
-		if (txq->sw_ring)
-			rte_free(txq->sw_ring);
-		if (txq->tx_mz)
-			rte_memzone_free(txq->tx_mz);
-		rte_free(txq);
-		PMD_DRV_LOG(INFO, "H2C queue %d removed", txq->queue_id);
-	}
-}
-
-void qdma_dev_rx_queue_release(struct rte_eth_dev *dev,
-			       uint16_t queue_id)
-{
-	struct qdma_rx_queue *rxq =
-	       (struct qdma_rx_queue *)dev->data->rx_queues[queue_id];
-	struct qdma_pci_dev *qdma_dev = NULL;
-
-	if (rxq != NULL) {
-		PMD_DRV_LOG(INFO, "Remove C2H queue: %d", rxq->queue_id);
-		qdma_dev = rxq->dev->data->dev_private;
-
-		if (!qdma_dev->is_vf) {
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_C2H);
-
-			if (rxq->st_mode)
-				qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-		} else {
-			qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-					qdma_dev->queue_base,
-					QDMA_DEV_Q_TYPE_C2H);
-
-			if (rxq->st_mode)
-				qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_CMPT);
-		}
-
-		if (rxq->sw_ring)
-			rte_free(rxq->sw_ring);
-		if (rxq->st_mode) { /** if ST-mode **/
-			if (rxq->rx_cmpt_mz)
-				rte_memzone_free(rxq->rx_cmpt_mz);
-		}
-		if (rxq->rx_mz)
-			rte_memzone_free(rxq->rx_mz);
-		rte_free(rxq);
-		PMD_DRV_LOG(INFO, "C2H queue %d removed", rxq->queue_id);
-	}
-}
-
-/**
- * DPDK callback to get the number of receive queue.
- *
- * @param dev
- *   Generic pointer to receive queue
- *
- * @return
- *   The number of receieve queue count.
- */
-uint32_t
-qdma_dev_rx_queue_count(void *rx_queue)
-{
-	struct qdma_rx_queue *rxq = rx_queue;
-	return rx_queue_count(rxq);
-}
-
-#endif
-
-#ifdef QDMA_DPDK_20_11
-void qdma_dev_tx_queue_release(void *tqueue)
-{
-	struct qdma_tx_queue *txq = (struct qdma_tx_queue *)tqueue;
-	struct qdma_pci_dev *qdma_dev;
-	if (txq != NULL) {
-		PMD_DRV_LOG(INFO, "Remove H2C queue: %d", txq->queue_id);
-		qdma_dev = txq->dev->data->dev_private;
-		if (!qdma_dev->is_vf)
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_H2C);
-		else
-			qdma_dev_notify_qdel(txq->dev, txq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_H2C);
-		if (txq->sw_ring)
-			rte_free(txq->sw_ring);
-		if (txq->tx_mz)
-			rte_memzone_free(txq->tx_mz);
-		rte_free(txq);
-		PMD_DRV_LOG(INFO, "H2C queue %d removed", txq->queue_id);
-	}
-}
-
-void qdma_dev_rx_queue_release(void *rqueue)
-{
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)rqueue;
-	struct qdma_pci_dev *qdma_dev = NULL;
-	if (rxq != NULL) {
-		PMD_DRV_LOG(INFO, "Remove C2H queue: %d", rxq->queue_id);
-		qdma_dev = rxq->dev->data->dev_private;
-		if (!qdma_dev->is_vf) {
-			qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_C2H);
-			if (rxq->st_mode)
-				qdma_dev_decrement_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-		} else {
-			qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-					qdma_dev->queue_base,
-					QDMA_DEV_Q_TYPE_C2H);
-			if (rxq->st_mode)
-				qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_CMPT);
-		}
-		if (rxq->sw_ring)
-			rte_free(rxq->sw_ring);
-		if (rxq->st_mode) { /** if ST-mode **/
-			if (rxq->rx_cmpt_mz)
-				rte_memzone_free(rxq->rx_cmpt_mz);
-		}
-		if (rxq->rx_mz)
-			rte_memzone_free(rxq->rx_mz);
-		rte_free(rxq);
-		PMD_DRV_LOG(INFO, "C2H queue %d removed", rxq->queue_id);
-	}
-}
-
-/**
- * DPDK callback to get the number of used descriptors of a rx queue.
- *
- * @param dev
- *   Pointer to Ethernet device structure.
- * @param rx_queue_id
- *   The RX queue on the Ethernet device for which information will be
- *   retrieved
- *
- * @return
- *   The number of used descriptors in the specific queue.
- */
-uint32_t
-qdma_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id)
-{
-	return rx_queue_count(dev->data->rx_queues[rx_queue_id]);
-}
-
-#endif
-
-void rte_pmd_qdma_compat_memzone_reserve_aligned(void)
-{
-	const struct rte_memzone *mz = 0;
-
-	mz = rte_memzone_reserve_aligned("eth_devices", RTE_MAX_ETHPORTS *
-					  sizeof(*rte_eth_devices), 0, 0, 4096);
-
-	if (mz == NULL)
-		rte_exit(EXIT_FAILURE, "Failed to allocate aligned memzone\n");
-
-	memcpy(mz->addr, &rte_eth_devices[0], RTE_MAX_ETHPORTS *
-					sizeof(*rte_eth_devices));
-}
-
-void rte_pmd_qdma_get_bdf(uint32_t m_id, uint32_t *bus,
-		uint32_t *dev, uint32_t *fn)
-{
-	struct rte_pci_device *pci_dev;
-	pci_dev = RTE_ETH_DEV_TO_PCI(&rte_eth_devices[m_id]);
-	*bus = pci_dev->addr.bus;
-	*dev = pci_dev->addr.devid;
-	*fn = pci_dev->addr.function;
-}
-
-int rte_pmd_qdma_dev_remove(int port_id)
-{
-	struct rte_device *dev;
-	dev = rte_eth_devices[port_id].device;
-	return rte_dev_remove(dev);
-}
-
-struct rte_device *rte_pmd_qdma_get_device(int port_id)
-{
-	struct rte_device *dev;
-	dev = rte_eth_devices[port_id].device;
-	return dev;
-}
-
-bool rte_pmd_qdma_validate_dev(int port_id)
-{
-	struct rte_device *device = rte_pmd_qdma_get_device(port_id);
-
-	if (device && ((!strcmp(device->driver->name, "net_qdma")) ||
-	     (!strcmp(device->driver->name, "net_qdma_vf"))))
-		return true;
-	else
-		return false;
-}
-
-uint16_t rte_pmd_qdma_get_dev_id(int port_id)
-{
-	struct rte_pci_device *pci_dev;
-	pci_dev = RTE_ETH_DEV_TO_PCI(&rte_eth_devices[port_id]);
-	return pci_dev->id.device_id;
-}
-
-struct rte_pci_device *rte_pmd_qdma_eth_dev_to_pci(int port_id)
-{
-	return RTE_ETH_DEV_TO_PCI(&rte_eth_devices[port_id]);
-}
-
-unsigned int rte_pmd_qdma_compat_pci_read_reg(int port_id,
-		unsigned int bar, unsigned int offset)
-{
-	return qdma_pci_read_reg(&rte_eth_devices[port_id], bar, offset);
-}
-
-void rte_pmd_qdma_compat_pci_write_reg(int port_id, uint32_t bar,
-		uint32_t offset, uint32_t reg_val)
-{
-	qdma_pci_write_reg(&rte_eth_devices[port_id], bar, offset, reg_val);
-}
-
-void rte_pmd_qdma_dev_started(int port_id, bool status)
-{
-	struct rte_eth_dev *dev;
-	dev = &rte_eth_devices[port_id];
-	dev->data->dev_started = status;
-}
-
-int rte_pmd_qdma_dev_fp_ops_config(int port_id)
-{
-#if (defined(QDMA_DPDK_21_11) || defined(QDMA_DPDK_22_11))
-	struct rte_eth_dev *dev;
-	struct rte_eth_fp_ops *fpo = rte_eth_fp_ops;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR,
-			"%s:%d Wrong port id %d\n",
-			__func__, __LINE__, port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-
-	fpo[port_id].rx_pkt_burst = dev->rx_pkt_burst;
-	fpo[port_id].tx_pkt_burst = dev->tx_pkt_burst;
-	fpo[port_id].rx_queue_count = dev->rx_queue_count;
-	fpo[port_id].rx_descriptor_status = dev->rx_descriptor_status;
-	fpo[port_id].tx_descriptor_status = dev->tx_descriptor_status;
-	fpo[port_id].rxq.data = dev->data->rx_queues;
-	fpo[port_id].txq.data = dev->data->tx_queues;
-
-	return 0;
-#endif
-
-#ifdef QDMA_DPDK_20_11
-	RTE_SET_USED(port_id);
-	return 0;
-#endif
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.h b/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.h
deleted file mode 100755
index dfe3586..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_dpdk_compat.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef __QDMA_DPDK_COMPAT_H__
-#define __QDMA_DPDK_COMPAT_H__
-
-#if (defined(QDMA_DPDK_21_11) || defined(QDMA_DPDK_22_11))
-#include <ethdev_driver.h>
-#include <ethdev_pci.h>
-
-#define ETH_LINK_UP RTE_ETH_LINK_UP
-#define ETH_LINK_FULL_DUPLEX RTE_ETH_LINK_FULL_DUPLEX
-#define ETH_SPEED_NUM_200G RTE_ETH_SPEED_NUM_200G
-#define pci_dev_intr_handle pci_dev->intr_handle
-#define qdma_dev_rx_queue_count qdma_dev_rx_queue_count_v2122
-#define qdma_dev_rx_queue_release qdma_dev_rx_queue_release_v2122
-#define qdma_dev_tx_queue_release qdma_dev_tx_queue_release_v2122
-
-#ifdef QDMA_DPDK_21_11
-#include <rte_bus_pci.h>
-#else                            //QDMA_DPDK_22_11
-#include <bus_pci_driver.h>
-#endif
-
-/**
- * DPDK callback to get the number of rx_queue
- *
- * @param rx_queue
- *   Generic recieve queue pointer
- * @return
- *   The number of receive queues
- * @ingroup dpdk_devops_func
- */
-uint32_t
-qdma_dev_rx_queue_count(void *rx_queue);
-
-/**
- * DPDK callback to release a Rx queue.
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param rx_queue_id
- *   The RX queue on the Ethernet device for which information will be
- *   retrieved
- *
- * @ingroup dpdk_devops_func
- */
-void qdma_dev_rx_queue_release(struct rte_eth_dev *dev, uint16_t queue_id);
-
-/**
- * DPDK callback to release a Tx queue.
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param queue_id
- *   The Tx queue on the Ethernet device for which information will be
- *   retrieved
- *
- * @ingroup dpdk_devops_func
- */
-
-void qdma_dev_tx_queue_release(struct rte_eth_dev *dev, uint16_t queue_id);
-#endif
-
-#ifdef QDMA_DPDK_20_11
-
-#include <rte_ethdev_pci.h>
-#include <rte_ethdev_driver.h>
-#define pci_dev_intr_handle (&pci_dev->intr_handle)
-#define	qdma_dev_rx_queue_count qdma_dev_rx_queue_count_v2011
-#define qdma_dev_rx_queue_release qdma_dev_rx_queue_release_v2011
-#define qdma_dev_tx_queue_release qdma_dev_tx_queue_release_v2011
-
-/**
- * DPDK callback to get the number of used descriptors of a rx queue
- *
- * @param dev
- *   Pointer to Ethernet device structure
- * @param rx_queue_id
- *   The RX queue on the Ethernet device for which information will be
- *   retrieved
- *
- * @return
- *   The number of used descriptors in the specific queue
- * @ingroup dpdk_devops_func
- */
-uint32_t
-qdma_dev_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id);
-
-/**
- * DPDK callback to release a Tx queue.
- *
- * This API releases the descriptor rings and any additional memory allocated
- * for given H2C queue
- *
- * @param tqueue: Generic Tx queue pointer
- *
- * @ingroup dpdk_devops_func
- */
-void qdma_dev_tx_queue_release(void *tqueue);
-
-/**
- * DPDK callback to release a Rx queue.
- *
- * This API releases the descriptor rings and any additional memory allocated
- * for given C2H queue
- *
- * @param rqueue: Generic Rx queue pointer
- *
- * @ingroup dpdk_devops_func
- */
-void qdma_dev_rx_queue_release(void *rqueue);
-
-#endif
-
-
-#endif /* ifndef __QDMA_DPDK_COMPAT_H__ */
-
-
-
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_ethdev.c b/QDMA/DPDK/drivers/net/qdma/qdma_ethdev.c
deleted file mode 100755
index 6bd6147..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_ethdev.c
+++ /dev/null
@@ -1,976 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_alarm.h>
-#include <rte_cycles.h>
-#include <dirent.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "qdma.h"
-#include "version.h"
-#include "qdma_access_common.h"
-#include "qdma_access_export.h"
-#include "qdma_mbox.h"
-#include "qdma_devops.h"
-
-/* Poll for QDMA errors every 1 second */
-#define QDMA_ERROR_POLL_FRQ (1000000)
-
-#define PCI_CONFIG_BRIDGE_DEVICE              (6)
-#define PCI_CONFIG_CLASS_CODE_SHIFT        (16)
-
-#define MAX_PCIE_CAPABILITY    (48)
-
-#ifdef LATENCY_MEASUREMENT
-const struct rte_memzone *txq_lat_buf_mz;
-const struct rte_memzone *rxq_lat_buf_mz;
-double (*h2c_pidx_to_hw_cidx_lat)[LATENCY_CNT] = NULL;
-double (*c2h_pidx_to_cmpt_pidx_lat)[LATENCY_CNT] = NULL;
-#endif
-
-static void qdma_device_attributes_get(struct rte_eth_dev *dev);
-
-/* Poll for any QDMA errors */
-void qdma_check_errors(void *arg)
-{
-	struct qdma_pci_dev *qdma_dev;
-	qdma_dev = ((struct rte_eth_dev *)arg)->data->dev_private;
-	qdma_dev->hw_access->qdma_hw_error_process(arg);
-	rte_eal_alarm_set(QDMA_ERROR_POLL_FRQ, qdma_check_errors, arg);
-}
-
-/*
- * The set of PCI devices this driver supports
- */
-static struct rte_pci_id qdma_pci_id_tbl[] = {
-#define RTE_PCI_DEV_ID_DECL(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
-#ifndef PCI_VENDOR_ID_XILINX
-#define PCI_VENDOR_ID_XILINX 0x10ee
-#endif
-
-	/** Gen 1 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9011)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9111)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9211)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9311)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9014)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9114)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9214)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9314)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9018)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9118)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9218)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9318)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x901f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x911f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x921f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x931f)	/** PF 3 */
-
-	/** Gen 2 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9021)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9121)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9221)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9321)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9024)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9124)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9224)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9324)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9028)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9128)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9228)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9328)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x902f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x912f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x922f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x932f)	/** PF 3 */
-
-	/** Gen 3 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9031)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9131)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9231)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9331)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9034)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9134)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9234)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9334)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9038)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9138)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9238)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9338)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x903f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x913f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x923f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x933f)	/** PF 3 */
-
-	/** Gen 4 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9041)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9141)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9241)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9341)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9044)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9144)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9244)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9344)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9048)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9148)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9248)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0x9348)	/** PF 3 */
-
-	/** Versal */
-	/** Gen 1 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb011)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb111)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb211)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb311)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb014)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb114)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb214)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb314)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb018)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb118)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb218)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb318)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb01f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb11f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb21f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb31f)	/** PF 3 */
-
-	/** Gen 2 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb021)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb121)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb221)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb321)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb024)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb124)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb224)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb324)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb028)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb128)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb228)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb328)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb02f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb12f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb22f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb32f)	/** PF 3 */
-
-	/** Gen 3 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb031)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb131)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb231)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb331)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb034)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb134)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb234)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb334)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb038)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb138)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb238)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb338)	/** PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb03f)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb13f)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb23f)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb33f)	/** PF 3 */
-
-	/** Gen 4 PF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb041)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb141)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb241)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb341)	/** PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb044)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb144)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb244)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb344)	/** PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb048)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb148)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb248)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb348)	/** PF 3 */
-
-	/** Gen 5 PF */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb058)	/** PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb158)	/** PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb258)	/** PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xb358)	/** PF 3 */
-
-	{ .vendor_id = 0, /* sentinel */ },
-};
-
-static void qdma_device_attributes_get(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev;
-
-	qdma_dev = (struct qdma_pci_dev *)dev->data->dev_private;
-	qdma_dev->hw_access->qdma_get_device_attributes(dev,
-			&qdma_dev->dev_cap);
-
-	/* Check DPDK configured queues per port */
-	if (qdma_dev->dev_cap.num_qs > RTE_MAX_QUEUES_PER_PORT)
-		qdma_dev->dev_cap.num_qs = RTE_MAX_QUEUES_PER_PORT;
-
-	PMD_DRV_LOG(INFO, "qmax = %d, mm %d, st %d.\n",
-	qdma_dev->dev_cap.num_qs, qdma_dev->dev_cap.mm_en,
-	qdma_dev->dev_cap.st_en);
-}
-
-static inline uint8_t pcie_find_cap(const struct rte_pci_device *pci_dev,
-					uint8_t cap)
-{
-	uint8_t pcie_cap_pos = 0;
-	uint8_t pcie_cap_id = 0;
-	int ttl = MAX_PCIE_CAPABILITY;
-	int ret;
-
-	ret = rte_pci_read_config(pci_dev, &pcie_cap_pos, sizeof(uint8_t),
-		PCI_CAPABILITY_LIST);
-	if (ret < 0) {
-		PMD_DRV_LOG(ERR, "PCIe config space read failed..\n");
-		return 0;
-	}
-
-	while (ttl-- && pcie_cap_pos >= PCI_STD_HEADER_SIZEOF) {
-		pcie_cap_pos &= ~3;
-
-		ret = rte_pci_read_config(pci_dev,
-			&pcie_cap_id, sizeof(uint8_t),
-			(pcie_cap_pos + PCI_CAP_LIST_ID));
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR, "PCIe config space read failed..\n");
-			return 0;
-		}
-
-		if (pcie_cap_id == 0xff)
-			break;
-
-		if (pcie_cap_id == cap)
-			return pcie_cap_pos;
-
-		ret = rte_pci_read_config(pci_dev,
-			&pcie_cap_pos, sizeof(uint8_t),
-			(pcie_cap_pos + PCI_CAP_LIST_NEXT));
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR, "PCIe config space read failed..\n");
-			return 0;
-		}
-	}
-
-	return 0;
-}
-
-static void pcie_perf_enable(const struct rte_pci_device *pci_dev)
-{
-	uint16_t value;
-	uint8_t pcie_cap_pos = pcie_find_cap(pci_dev, PCI_CAP_ID_EXP);
-
-	if (!pcie_cap_pos)
-		return;
-
-	if (pcie_cap_pos > 0) {
-		if (rte_pci_read_config(pci_dev, &value, sizeof(uint16_t),
-					 pcie_cap_pos + PCI_EXP_DEVCTL) < 0) {
-			PMD_DRV_LOG(ERR, "PCIe config space read failed..\n");
-			return;
-		}
-
-		value |= (PCI_EXP_DEVCTL_EXT_TAG | PCI_EXP_DEVCTL_RELAX_EN);
-
-		if (rte_pci_write_config(pci_dev, &value, sizeof(uint16_t),
-					   pcie_cap_pos + PCI_EXP_DEVCTL) < 0) {
-			PMD_DRV_LOG(ERR, "PCIe config space write failed..\n");
-			return;
-		}
-	}
-}
-
-/* parse a sysfs file containing one integer value */
-static int parse_sysfs_value(const char *filename, uint32_t *val)
-{
-	FILE *f;
-	char buf[BUFSIZ];
-	char *end = NULL;
-
-	f = fopen(filename, "r");
-	if (f == NULL) {
-		PMD_DRV_LOG(ERR, "%s(): Failed to open sysfs file %s\n",
-				__func__, filename);
-		return -1;
-	}
-
-	if (fgets(buf, sizeof(buf), f) == NULL) {
-		PMD_DRV_LOG(ERR, "%s(): Failed to read sysfs value %s\n",
-			__func__, filename);
-		fclose(f);
-		return -1;
-	}
-	*val = (uint32_t)strtoul(buf, &end, 0);
-	if ((buf[0] == '\0') || (end == NULL) || (*end != '\n')) {
-		PMD_DRV_LOG(ERR, "%s(): Failed to parse sysfs value %s\n",
-				__func__, filename);
-		fclose(f);
-		return -1;
-	}
-	fclose(f);
-	return 0;
-}
-
-/* Split up a pci address into its constituent parts. */
-static int parse_pci_addr_format(const char *buf,
-		int bufsize, struct rte_pci_addr *addr)
-{
-	/* first split on ':' */
-	union splitaddr {
-		struct {
-			char *domain;
-			char *bus;
-			char *devid;
-			char *function;
-		};
-		/* last element-separator is "." not ":" */
-		char *str[PCI_FMT_NVAL];
-	} splitaddr;
-
-	char *buf_copy = strndup(buf, bufsize);
-	if (buf_copy == NULL) {
-		PMD_DRV_LOG(ERR, "Failed to get pci address duplicate copy\n");
-		return -1;
-	}
-
-	if (rte_strsplit(buf_copy, bufsize, splitaddr.str, PCI_FMT_NVAL, ':')
-			!= PCI_FMT_NVAL - 1) {
-		PMD_DRV_LOG(ERR, "Failed to split pci address string\n");
-		goto error;
-	}
-
-	/* final split is on '.' between devid and function */
-	splitaddr.function = strchr(splitaddr.devid, '.');
-	if (splitaddr.function == NULL) {
-		PMD_DRV_LOG(ERR, "Failed to split pci devid and function\n");
-		goto error;
-	}
-	*splitaddr.function++ = '\0';
-
-	/* now convert to int values */
-	addr->domain = strtoul(splitaddr.domain, NULL, 16);
-	addr->bus = strtoul(splitaddr.bus, NULL, 16);
-	addr->devid = strtoul(splitaddr.devid, NULL, 16);
-	addr->function = strtoul(splitaddr.function, NULL, 10);
-
-	free(buf_copy); /* free the copy made with strdup */
-	return 0;
-
-error:
-	free(buf_copy);
-	return -1;
-}
-
-/* Get max pci bus number from the corresponding pci bridge device */
-static int get_max_pci_bus_num(uint8_t start_bus, uint8_t *end_bus)
-{
-	char dirname[PATH_MAX];
-	char filename[PATH_MAX];
-	char cfgname[PATH_MAX];
-	struct rte_pci_addr addr;
-	struct dirent *dp;
-	uint32_t pci_class_code;
-	uint8_t sec_bus_num, sub_bus_num;
-	DIR *dir;
-	int ret, fd;
-
-	/* Initialize end bus number to zero */
-	*end_bus = 0;
-
-	/* Open pci devices directory */
-	dir = opendir(rte_pci_get_sysfs_path());
-	if (dir == NULL) {
-		PMD_DRV_LOG(ERR, "%s(): opendir failed\n",
-			__func__);
-		return -1;
-	}
-
-	while ((dp = readdir(dir)) != NULL) {
-		if (dp->d_name[0] == '.')
-			continue;
-
-		/* Split pci address to get bus, devid and function numbers */
-		if (parse_pci_addr_format(dp->d_name,
-				sizeof(dp->d_name), &addr) != 0)
-			continue;
-
-		snprintf(dirname, sizeof(dirname), "%s/%s",
-				rte_pci_get_sysfs_path(), dp->d_name);
-
-		/* get class code */
-		snprintf(filename, sizeof(filename), "%s/class", dirname);
-		if (parse_sysfs_value(filename, &pci_class_code) < 0) {
-			PMD_DRV_LOG(ERR, "Failed to get pci class code\n");
-			goto error;
-		}
-
-		/* Get max pci number from pci bridge device */
-		if ((((pci_class_code >> PCI_CONFIG_CLASS_CODE_SHIFT) & 0xFF) ==
-				PCI_CONFIG_BRIDGE_DEVICE)) {
-			snprintf(cfgname, sizeof(cfgname),
-					"%s/config", dirname);
-			fd = open(cfgname, O_RDWR);
-			if (fd < 0) {
-				PMD_DRV_LOG(ERR, "Failed to open %s\n",
-					cfgname);
-				goto error;
-			}
-
-			/* get secondary bus number */
-			ret = pread(fd, &sec_bus_num, sizeof(uint8_t),
-						PCI_SECONDARY_BUS);
-			if (ret == -1) {
-				PMD_DRV_LOG(ERR, "Failed to read secondary bus number\n");
-				close(fd);
-				goto error;
-			}
-
-			/* get subordinate bus number */
-			ret = pread(fd, &sub_bus_num, sizeof(uint8_t),
-						PCI_SUBORDINATE_BUS);
-			if (ret == -1) {
-				PMD_DRV_LOG(ERR, "Failed to read subordinate bus number\n");
-				close(fd);
-				goto error;
-			}
-
-			/* Get max bus number by checking if given bus number
-			 * falls in between secondary and subordinate bus
-			 * numbers of this pci bridge device.
-			 */
-			if ((start_bus >= sec_bus_num) &&
-					(start_bus <= sub_bus_num)) {
-				*end_bus = sub_bus_num;
-				close(fd);
-				closedir(dir);
-				return 0;
-			}
-
-			close(fd);
-		}
-	}
-
-error:
-	closedir(dir);
-	return -1;
-}
-
-/**
- * DPDK callback to register a PCI device.
- *
- * This function creates an Ethernet device for each port of a given
- * PCI device.
- *
- * @param[in] dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-int qdma_eth_dev_init(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *dma_priv;
-	uint8_t *baseaddr;
-	int i, idx, ret, qbase;
-	struct rte_pci_device *pci_dev;
-	uint16_t num_vfs;
-	uint8_t max_pci_bus = 0;
-
-	/* sanity checks */
-	if (dev == NULL)
-		return -EINVAL;
-	if (dev->data == NULL)
-		return -EINVAL;
-	if (dev->data->dev_private == NULL)
-		return -EINVAL;
-
-	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	if (pci_dev == NULL)
-		return -EINVAL;
-
-	/* for secondary processes, we don't initialise any further as primary
-	 * has already done this work.
-	 */
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
-		qdma_dev_ops_init(dev);
-		return 0;
-	}
-
-	/* allocate space for a single Ethernet MAC address */
-	dev->data->mac_addrs = rte_zmalloc("qdma", RTE_ETHER_ADDR_LEN * 1, 0);
-	if (dev->data->mac_addrs == NULL)
-		return -ENOMEM;
-
-	/* Copy some dummy Ethernet MAC address for QDMA device
-	 * This will change in real NIC device...
-	 */
-	for (i = 0; i < RTE_ETHER_ADDR_LEN; ++i)
-		dev->data->mac_addrs[0].addr_bytes[i] = 0x15 + i;
-
-	/* Init system & device */
-	dma_priv = (struct qdma_pci_dev *)dev->data->dev_private;
-	dma_priv->is_vf = 0;
-	dma_priv->is_master = 0;
-	dma_priv->vf_online_count = 0;
-	dma_priv->timer_count = DEFAULT_TIMER_CNT_TRIG_MODE_TIMER;
-
-	dma_priv->en_desc_prefetch = 0; //Keep prefetch default to 0
-	dma_priv->cmpt_desc_len = DEFAULT_QDMA_CMPT_DESC_LEN;
-	dma_priv->c2h_bypass_mode = RTE_PMD_QDMA_RX_BYPASS_NONE;
-	dma_priv->h2c_bypass_mode = 0;
-
-	dma_priv->config_bar_idx = DEFAULT_PF_CONFIG_BAR;
-	dma_priv->bypass_bar_idx = BAR_ID_INVALID;
-	dma_priv->user_bar_idx = BAR_ID_INVALID;
-
-	/* Check and handle device devargs*/
-	if (qdma_check_kvargs(dev->device->devargs, dma_priv)) {
-		PMD_DRV_LOG(INFO, "devargs failed\n");
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	/* Store BAR address and length of Config BAR */
-	baseaddr = (uint8_t *)
-			pci_dev->mem_resource[dma_priv->config_bar_idx].addr;
-	dma_priv->bar_addr[dma_priv->config_bar_idx] = baseaddr;
-
-	/*Assigning QDMA access layer function pointers based on the HW design*/
-	dma_priv->hw_access = rte_zmalloc("hwaccess",
-					sizeof(struct qdma_hw_access), 0);
-	if (dma_priv->hw_access == NULL) {
-		rte_free(dev->data->mac_addrs);
-		return -ENOMEM;
-	}
-	idx = qdma_hw_access_init(dev, dma_priv->is_vf, dma_priv->hw_access);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	idx = qdma_get_hw_version(dev);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	idx = qdma_identify_bars(dev);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	/* Store BAR address and length of AXI Master Lite BAR(user bar) */
-	if (dma_priv->user_bar_idx >= 0) {
-		baseaddr = (uint8_t *)
-			    pci_dev->mem_resource[dma_priv->user_bar_idx].addr;
-		dma_priv->bar_addr[dma_priv->user_bar_idx] = baseaddr;
-	}
-
-	PMD_DRV_LOG(INFO, "QDMA device driver probe:");
-
-	qdma_dev_ops_init(dev);
-
-	/* Getting the device attributes from the Hardware */
-	qdma_device_attributes_get(dev);
-
-	/* Setting default Mode to RTE_PMD_QDMA_TRIG_MODE_USER_TIMER */
-	dma_priv->trigger_mode = RTE_PMD_QDMA_TRIG_MODE_USER_TIMER;
-
-	/* Create master resource node for queue management on the given
-	 * bus number. Node will be created only once per bus number.
-	 */
-	qbase = DEFAULT_QUEUE_BASE;
-
-	ret = get_max_pci_bus_num(pci_dev->addr.bus, &max_pci_bus);
-	if ((ret != QDMA_SUCCESS) && !max_pci_bus) {
-		PMD_DRV_LOG(ERR, "Failed to get max pci bus number\n");
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-	PMD_DRV_LOG(INFO, "PCI max bus number : 0x%x", max_pci_bus);
-
-	ret = qdma_master_resource_create(pci_dev->addr.bus, max_pci_bus,
-				qbase, dma_priv->dev_cap.num_qs,
-				&dma_priv->dma_device_index);
-	if (ret == -QDMA_ERR_NO_MEM) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -ENOMEM;
-	}
-
-	dma_priv->hw_access->qdma_get_function_number(dev,
-			&dma_priv->func_id);
-	PMD_DRV_LOG(INFO, "PF function ID: %d", dma_priv->func_id);
-
-	/* CSR programming is done once per given board or bus number,
-	 * done by the master PF
-	 */
-	if (ret == QDMA_SUCCESS) {
-		RTE_LOG(INFO, PMD, "QDMA PMD VERSION: %s\n", QDMA_PMD_VERSION);
-		dma_priv->hw_access->qdma_set_default_global_csr(dev);
-		for (i = 0; i < dma_priv->dev_cap.mm_channel_max; i++) {
-			if (dma_priv->dev_cap.mm_en) {
-				/* Enable MM C2H Channel */
-				dma_priv->hw_access->qdma_mm_channel_conf(dev,
-							i, 1, 1);
-				/* Enable MM H2C Channel */
-				dma_priv->hw_access->qdma_mm_channel_conf(dev,
-							i, 0, 1);
-			} else {
-				/* Disable MM C2H Channel */
-				dma_priv->hw_access->qdma_mm_channel_conf(dev,
-							i, 1, 0);
-				/* Disable MM H2C Channel */
-				dma_priv->hw_access->qdma_mm_channel_conf(dev,
-							i, 0, 0);
-			}
-		}
-
-		ret = dma_priv->hw_access->qdma_init_ctxt_memory(dev);
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR,
-				"%s: Failed to initialize ctxt memory, err = %d\n",
-				__func__, ret);
-			return -EINVAL;
-		}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-		if (dma_priv->en_st_mode) {
-			ret = dma_priv->hw_access->qdma_init_st_ctxt(dev);
-			if (ret < 0) {
-				PMD_DRV_LOG(ERR,
-					"%s: Failed to initialize st ctxt memory, err = %d\n",
-					__func__, ret);
-				return -EINVAL;
-			}
-		}
-#endif
-		dma_priv->hw_access->qdma_hw_error_enable(dev,
-				dma_priv->hw_access->qdma_max_errors);
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR,
-				"%s: Failed to enable hw errors, err = %d\n",
-				__func__, ret);
-			return -EINVAL;
-		}
-
-		rte_eal_alarm_set(QDMA_ERROR_POLL_FRQ, qdma_check_errors,
-							(void *)dev);
-		dma_priv->is_master = 1;
-	}
-
-	/*
-	 * Create an entry for the device in board list if not already
-	 * created
-	 */
-	ret = qdma_dev_entry_create(dma_priv->dma_device_index,
-				dma_priv->func_id);
-	if ((ret != QDMA_SUCCESS) &&
-		(ret != -QDMA_ERR_RM_DEV_EXISTS)) {
-		PMD_DRV_LOG(ERR, "PF-%d(DEVFN) qdma_dev_entry_create failed: %d\n",
-			    dma_priv->func_id, ret);
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -ENOMEM;
-	}
-
-	pcie_perf_enable(pci_dev);
-	if (dma_priv->dev_cap.mailbox_en && pci_dev->max_vfs)
-		qdma_mbox_init(dev);
-
-	if (!dma_priv->reset_in_progress) {
-		num_vfs = pci_dev->max_vfs;
-		if (num_vfs) {
-			dma_priv->vfinfo = rte_zmalloc("vfinfo",
-				sizeof(struct qdma_vf_info) * num_vfs, 0);
-			if (dma_priv->vfinfo == NULL)
-				rte_panic("Cannot allocate memory for private VF info\n");
-
-			/* Mark all VFs with invalid function id mapping*/
-			for (i = 0; i < num_vfs; i++)
-				dma_priv->vfinfo[i].func_id =
-					QDMA_FUNC_ID_INVALID;
-		}
-	}
-
-#ifdef LATENCY_MEASUREMENT
-	/* Create txq and rxq latency measurement shared memory
-	 * if not already created by the VF
-	 */
-	if (!h2c_pidx_to_hw_cidx_lat) {
-		/* Create a shared memory zone for the txq latency buffer */
-		txq_lat_buf_mz = rte_memzone_reserve("TXQ_LAT_BUFFER_ZONE",
-			LATENCY_MAX_QUEUES * LATENCY_CNT * sizeof(double),
-			rte_socket_id(), 0);
-		if (txq_lat_buf_mz == NULL) {
-			PMD_DRV_LOG(ERR,
-				"Failed to allocate txq latency buffer memzone\n");
-			return -1;
-		}
-
-		/* Get the virtual address of the txq latency buffer */
-		h2c_pidx_to_hw_cidx_lat =
-			(double(*)[LATENCY_CNT])txq_lat_buf_mz->addr;
-	}
-
-	if (!c2h_pidx_to_cmpt_pidx_lat) {
-		/* Create a shared memory zone for the rxq latency buffer */
-		rxq_lat_buf_mz = rte_memzone_reserve("RXQ_LAT_BUFFER_ZONE",
-			LATENCY_MAX_QUEUES * LATENCY_CNT * sizeof(double),
-			rte_socket_id(), 0);
-		if (rxq_lat_buf_mz == NULL) {
-			PMD_DRV_LOG(ERR,
-				"Failed to allocate rxq latency buffer memzone\n");
-			return -1;
-		}
-
-		/* Get the virtual address of the rxq latency buffer */
-		c2h_pidx_to_cmpt_pidx_lat =
-			(double(*)[LATENCY_CNT])rxq_lat_buf_mz->addr;
-	}
-#endif
-
-	dma_priv->reset_in_progress = 0;
-
-	return 0;
-}
-
-/**
- * DPDK callback to deregister PCI device.
- *
- * @param[in] dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-int qdma_eth_dev_uninit(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	struct qdma_mbox_msg *m = NULL;
-	int i, rv;
-
-	/* only uninitialize in the primary process */
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		return -EPERM;
-
-	if (qdma_dev->vf_online_count) {
-		for (i = 0; i < pci_dev->max_vfs; i++) {
-			if (qdma_dev->vfinfo[i].func_id == QDMA_FUNC_ID_INVALID)
-				continue;
-
-			m = qdma_mbox_msg_alloc();
-			if (!m)
-				return -ENOMEM;
-
-			if (!qdma_dev->reset_in_progress)
-				qdma_mbox_compose_pf_offline(m->raw_data,
-						qdma_dev->func_id,
-						qdma_dev->vfinfo[i].func_id);
-			else
-				qdma_mbox_compose_vf_reset_message(m->raw_data,
-						qdma_dev->func_id,
-						qdma_dev->vfinfo[i].func_id);
-			rv = qdma_mbox_msg_send(dev, m, 0);
-			if (rv < 0)
-				PMD_DRV_LOG(ERR, "Send bye failed from PF:%d to VF:%d\n",
-					qdma_dev->func_id,
-					qdma_dev->vfinfo[i].func_id);
-		}
-
-		PMD_DRV_LOG(INFO,
-			"%s: Wait till all VFs shutdown for PF-%d(DEVFN)\n",
-			__func__, qdma_dev->func_id);
-
-		i = 0;
-		while (i < SHUTDOWN_TIMEOUT) {
-			if (!qdma_dev->vf_online_count) {
-				PMD_DRV_LOG(INFO,
-					"%s: VFs shutdown completed for PF-%d(DEVFN)\n",
-					__func__, qdma_dev->func_id);
-				break;
-			}
-			rte_delay_ms(1);
-			i++;
-		}
-
-		if (i >= SHUTDOWN_TIMEOUT) {
-			PMD_DRV_LOG(ERR, "%s: Failed VFs shutdown for PF-%d(DEVFN)\n",
-				__func__, qdma_dev->func_id);
-		}
-	}
-
-	if (qdma_dev->dev_configured)
-		qdma_dev_close(dev);
-
-	if (qdma_dev->dev_cap.mailbox_en && pci_dev->max_vfs)
-		qdma_mbox_uninit(dev);
-
-	/* cancel pending polls*/
-	if (qdma_dev->is_master)
-		rte_eal_alarm_cancel(qdma_check_errors, (void *)dev);
-
-	/* Remove the device node from the board list */
-	qdma_dev_entry_destroy(qdma_dev->dma_device_index,
-			qdma_dev->func_id);
-	qdma_master_resource_destroy(qdma_dev->dma_device_index);
-
-	dev->dev_ops = NULL;
-	dev->rx_pkt_burst = NULL;
-	dev->tx_pkt_burst = NULL;
-	dev->data->nb_rx_queues = 0;
-	dev->data->nb_tx_queues = 0;
-
-	if (!qdma_dev->reset_in_progress &&
-			qdma_dev->vfinfo != NULL) {
-		rte_free(qdma_dev->vfinfo);
-		qdma_dev->vfinfo = NULL;
-	}
-
-	if (dev->data->mac_addrs != NULL) {
-		rte_free(dev->data->mac_addrs);
-		dev->data->mac_addrs = NULL;
-	}
-
-	if (qdma_dev->q_info != NULL) {
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-	}
-
-	if (qdma_dev->hw_access != NULL) {
-		rte_free(qdma_dev->hw_access);
-		qdma_dev->hw_access = NULL;
-	}
-
-#ifdef LATENCY_MEASUREMENT
-	rte_memzone_free(txq_lat_buf_mz);
-	rte_memzone_free(rxq_lat_buf_mz);
-#endif
-
-	return 0;
-}
-
-static int eth_qdma_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
-				struct rte_pci_device *pci_dev)
-{
-	return rte_eth_dev_pci_generic_probe(pci_dev,
-						sizeof(struct qdma_pci_dev),
-						qdma_eth_dev_init);
-}
-
-/* Detach a ethdev interface */
-static int eth_qdma_pci_remove(struct rte_pci_device *pci_dev)
-{
-	return rte_eth_dev_pci_generic_remove(pci_dev, qdma_eth_dev_uninit);
-}
-
-static struct rte_pci_driver rte_qdma_pmd = {
-	.id_table = qdma_pci_id_tbl,
-	.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
-	.probe = eth_qdma_pci_probe,
-	.remove = eth_qdma_pci_remove,
-};
-
-bool
-is_pf_device_supported(struct rte_eth_dev *dev)
-{
-	if (strcmp(dev->device->driver->name, rte_qdma_pmd.driver.name))
-		return false;
-
-	return true;
-}
-
-bool is_qdma_supported(struct rte_eth_dev *dev)
-{
-	bool is_pf, is_vf;
-
-	is_pf = is_pf_device_supported(dev);
-	is_vf = is_vf_device_supported(dev);
-
-	if (!is_pf && !is_vf)
-		return false;
-
-	return true;
-}
-
-RTE_PMD_REGISTER_PCI(net_qdma, rte_qdma_pmd);
-RTE_PMD_REGISTER_PCI_TABLE(net_qdma, qdma_pci_id_tbl);
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_log.h b/QDMA/DPDK/drivers/net/qdma/qdma_log.h
deleted file mode 100755
index 6851db7..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_log.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_LOG_H__
-#define __QDMA_LOG_H__
-
-#include <rte_log.h>
-
-#ifdef RTE_LIBRTE_QDMA_DEBUG_DRIVER
-#define PMD_DRV_LOG(level, fmt, args...) \
-	RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args)
-#else
-#define PMD_DRV_LOG(level, fmt, args...)  do { } while (0)
-#endif
-
-
-#endif /* ifndef __QDMA_LOG_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_mbox.c b/QDMA/DPDK/drivers/net/qdma/qdma_mbox.c
deleted file mode 100755
index e1cd2a5..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_mbox.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma.h"
-#include "qdma_mbox.h"
-#include <rte_malloc.h>
-#include <rte_spinlock.h>
-#include <rte_alarm.h>
-
-/*
- * Get index from VF info array of PF device for a given VF funcion id.
- */
-static int qdma_get_internal_vf_index(struct rte_eth_dev *dev, uint8_t devfn)
-{
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint16_t  i;
-
-	for (i = 0; i < pci_dev->max_vfs; i++) {
-		if (qdma_dev->vfinfo[i].func_id == devfn)
-			return i;
-	}
-
-	return QDMA_FUNC_ID_INVALID;
-}
-
-static void qdma_mbox_process_msg_from_vf(void *arg)
-{
-	struct qdma_mbox_msg *mbox_msg_rsp = qdma_mbox_msg_alloc();
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	uint16_t vf_func_id;
-	uint16_t vf_index;
-	int i, rv;
-
-	if (mbox_msg_rsp == NULL)
-		return;
-
-	if (!qdma_dev)
-		return;
-
-	rv = qdma_mbox_pf_rcv_msg_handler(dev,
-					  qdma_dev->dma_device_index,
-					  qdma_dev->func_id,
-					  qdma_dev->mbox.rx_data,
-					  mbox_msg_rsp->raw_data);
-	if (rv != QDMA_MBOX_VF_OFFLINE &&
-			rv != QDMA_MBOX_VF_RESET &&
-			rv != QDMA_MBOX_PF_RESET_DONE &&
-			rv != QDMA_MBOX_PF_BYE)
-		qdma_mbox_msg_send(dev, mbox_msg_rsp, 0);
-	else
-		qdma_mbox_msg_free(mbox_msg_rsp);
-
-	if (rv == QDMA_MBOX_VF_ONLINE) {
-		vf_func_id = qdma_mbox_vf_func_id_get(qdma_dev->mbox.rx_data,
-			qdma_dev->is_vf);
-		/* Mapping internal VF function id to a valid VF function id */
-		for (i = 0; i < pci_dev->max_vfs; i++) {
-			if (qdma_dev->vfinfo[i].func_id ==
-					QDMA_FUNC_ID_INVALID) {
-				qdma_dev->vfinfo[i].func_id =
-					vf_func_id;
-				break;
-			}
-		}
-
-		if (i == pci_dev->max_vfs) {
-			PMD_DRV_LOG(INFO, "PF-%d  failed to create function id mapping VF func_id%d",
-					qdma_dev->func_id, vf_func_id);
-			return;
-		}
-
-		qdma_dev->vf_online_count++;
-	} else if (rv == QDMA_MBOX_VF_OFFLINE) {
-		if (!qdma_dev->reset_in_progress) {
-			vf_func_id =
-				qdma_mbox_vf_func_id_get(qdma_dev->mbox.rx_data,
-					qdma_dev->is_vf);
-			vf_index = qdma_get_internal_vf_index(dev, vf_func_id);
-			if (vf_index != QDMA_FUNC_ID_INVALID)
-				qdma_dev->vfinfo[vf_index].func_id =
-					QDMA_FUNC_ID_INVALID;
-		}
-		qdma_dev->vf_online_count--;
-	}
-}
-
-static void *qdma_reset_task(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (!qdma_dev)
-		return NULL;
-
-	rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET,
-					      NULL);
-
-	return NULL;
-}
-
-static void *qdma_remove_task(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (!qdma_dev)
-		return NULL;
-
-	rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RMV,
-					      NULL);
-
-	return NULL;
-}
-
-static void qdma_mbox_process_msg_from_pf(void *arg)
-{
-	struct qdma_mbox_msg *mbox_msg_rsp = NULL;
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	pthread_t thread;
-	pthread_attr_t tattr;
-	int rv;
-
-	if (!qdma_dev)
-		return;
-
-	mbox_msg_rsp = qdma_mbox_msg_alloc();
-	if (!mbox_msg_rsp)
-		return;
-
-	rv = qdma_mbox_vf_rcv_msg_handler(qdma_dev->mbox.rx_data,
-					  mbox_msg_rsp->raw_data);
-	if (rv)
-		qdma_mbox_msg_send(dev, mbox_msg_rsp, 0);
-	else {
-		qdma_mbox_msg_free(mbox_msg_rsp);
-		return;
-	}
-
-	if (rv == QDMA_MBOX_VF_RESET) {
-		qdma_dev->reset_state = RESET_STATE_RECV_PF_RESET_REQ;
-
-		rv = pthread_attr_init(&tattr);
-		if (rv)
-			PMD_DRV_LOG(ERR,
-				"Failed pthread_attr_init for PF reset\n");
-
-		rv = pthread_attr_setdetachstate(&tattr,
-					PTHREAD_CREATE_DETACHED);
-		if (rv)
-			PMD_DRV_LOG(ERR,
-				"Failed pthread_attr_setdetachstate for PF reset\n");
-
-		if (pthread_create(&thread, NULL,
-				qdma_reset_task, (void *)dev)) {
-			PMD_DRV_LOG(ERR, "Could not create qdma reset"
-					" starter thread\n");
-		}
-	} else if (rv == QDMA_MBOX_PF_RESET_DONE) {
-		qdma_dev->reset_state = RESET_STATE_RECV_PF_RESET_DONE;
-	} else if (rv == QDMA_MBOX_PF_BYE) {
-		rv = pthread_attr_init(&tattr);
-		if (rv)
-			PMD_DRV_LOG(ERR,
-				"Failed pthread_attr_init for PF shutdown\n");
-
-		rv = pthread_attr_setdetachstate(&tattr,
-					PTHREAD_CREATE_DETACHED);
-		if (rv)
-			PMD_DRV_LOG(ERR,
-				"Failed pthread_attr_setdetachstate for PF shutdown\n");
-
-		if (pthread_create(&thread, NULL,
-				qdma_remove_task, (void *)dev)) {
-			PMD_DRV_LOG(ERR,
-				"Could not create qdma remove"
-				" starter thread\n");
-		}
-	}
-}
-
-static void qdma_mbox_process_rsp_from_pf(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_list_head *entry = NULL;
-	struct qdma_list_head *tmp = NULL;
-
-	if (!qdma_dev)
-		return;
-
-	if ((qdma_dev->is_vf) && (qdma_dev->func_id == 0)) {
-		qdma_dev->func_id =
-			qdma_mbox_vf_func_id_get(qdma_dev->mbox.rx_data,
-					qdma_dev->is_vf);
-		PMD_DRV_LOG(INFO, "VF function ID: %d", qdma_dev->func_id);
-	}
-
-	rte_spinlock_lock(&qdma_dev->mbox.list_lock);
-	qdma_list_for_each_safe(entry, tmp,
-				&qdma_dev->mbox.rx_pend_list) {
-		struct qdma_mbox_msg *msg = QDMA_LIST_GET_DATA(entry);
-
-		if (qdma_mbox_is_msg_response(msg->raw_data,
-					      qdma_dev->mbox.rx_data)) {
-			/* copy response message back to tx buffer */
-			memcpy(msg->raw_data, qdma_dev->mbox.rx_data,
-			       MBOX_MSG_REG_MAX * sizeof(uint32_t));
-			msg->rsp_rcvd = 1;
-			qdma_list_del(entry);
-			break;
-		}
-	}
-	rte_spinlock_unlock(&qdma_dev->mbox.list_lock);
-}
-
-static void qdma_mbox_rcv_task(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	int rv;
-
-	if (!qdma_dev)
-		return;
-
-	do {
-		memset(qdma_dev->mbox.rx_data, 0,
-		       MBOX_MSG_REG_MAX * sizeof(uint32_t));
-		rv = qdma_mbox_rcv(dev, qdma_dev->is_vf,
-				   qdma_dev->mbox.rx_data);
-		if (rv < 0)
-			break;
-		if (qdma_dev->is_vf) {
-			qdma_mbox_process_msg_from_pf(arg);
-			qdma_mbox_process_rsp_from_pf(arg);
-		} else
-			qdma_mbox_process_msg_from_vf(arg);
-
-	} while (1);
-
-	if (!qdma_dev->dev_cap.mailbox_intr)
-		rte_eal_alarm_set(MBOX_POLL_FRQ, qdma_mbox_rcv_task, arg);
-}
-
-static void qdma_mbox_send_task(void *arg)
-{
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)arg;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_list_head *entry = NULL;
-	struct qdma_list_head *tmp = NULL;
-	int rv;
-
-	rte_spinlock_lock(&qdma_dev->mbox.list_lock);
-	qdma_list_for_each_safe(entry, tmp, &qdma_dev->mbox.tx_todo_list) {
-		struct qdma_mbox_msg *msg = QDMA_LIST_GET_DATA(entry);
-
-		rv = qdma_mbox_send(dev, qdma_dev->is_vf, msg->raw_data);
-		if (rv < 0) {
-			msg->retry_cnt--;
-			if (!msg->retry_cnt) {
-				qdma_list_del(entry);
-				if (msg->rsp_wait == QDMA_MBOX_RSP_NO_WAIT)
-					qdma_mbox_msg_free(msg);
-			}
-		} else {
-			qdma_list_del(entry);
-			if (msg->rsp_wait == QDMA_MBOX_RSP_WAIT)
-				qdma_list_add_tail(entry,
-					   &qdma_dev->mbox.rx_pend_list);
-			else
-				qdma_mbox_msg_free(msg);
-		}
-	}
-	if (!qdma_list_is_empty(&qdma_dev->mbox.tx_todo_list))
-		rte_eal_alarm_set(MBOX_POLL_FRQ, qdma_mbox_send_task, arg);
-	rte_spinlock_unlock(&qdma_dev->mbox.list_lock);
-}
-
-int qdma_mbox_msg_send(struct rte_eth_dev *dev, struct qdma_mbox_msg *msg,
-		       unsigned int timeout_ms)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (!msg)
-		return -EINVAL;
-
-	msg->retry_cnt = timeout_ms ? ((timeout_ms / MBOX_POLL_FRQ) + 1) :
-			MBOX_SEND_RETRY_COUNT;
-	QDMA_LIST_SET_DATA(&msg->node, msg);
-
-	rte_spinlock_lock(&qdma_dev->mbox.list_lock);
-	qdma_list_add_tail(&msg->node, &qdma_dev->mbox.tx_todo_list);
-	rte_spinlock_unlock(&qdma_dev->mbox.list_lock);
-
-	msg->rsp_wait = (!timeout_ms) ? QDMA_MBOX_RSP_NO_WAIT :
-			QDMA_MBOX_RSP_WAIT;
-	rte_eal_alarm_set(MBOX_POLL_FRQ, qdma_mbox_send_task, dev);
-
-	if (!timeout_ms)
-		return 0;
-
-	/* if code reached here, caller should free the buffer */
-	while (msg->retry_cnt && !msg->rsp_rcvd)
-		rte_delay_ms(1);
-
-	if (!msg->rsp_rcvd)
-		return  -EPIPE;
-
-	return 0;
-}
-
-void *qdma_mbox_msg_alloc(void)
-{
-	return rte_zmalloc(NULL, sizeof(struct qdma_mbox_msg), 0);
-}
-
-void qdma_mbox_msg_free(void *buffer)
-{
-	rte_free(buffer);
-}
-
-int qdma_mbox_init(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	uint32_t raw_data[MBOX_MSG_REG_MAX] = {0};
-	struct rte_intr_handle *intr_handle = pci_dev_intr_handle;
-
-	if (!qdma_dev->is_vf) {
-		int i;
-
-		for (i = 0; i < pci_dev->max_vfs; i++)
-			qdma_mbox_rcv(dev, 0, raw_data);
-	} else
-		qdma_mbox_rcv(dev, 1, raw_data);
-
-	qdma_mbox_hw_init(dev, qdma_dev->is_vf);
-	qdma_list_init_head(&qdma_dev->mbox.tx_todo_list);
-	qdma_list_init_head(&qdma_dev->mbox.rx_pend_list);
-	rte_spinlock_init(&qdma_dev->mbox.list_lock);
-
-	if (qdma_dev->dev_cap.mailbox_intr) {
-		/* Register interrupt call back handler */
-		rte_intr_callback_register(intr_handle,
-					qdma_mbox_rcv_task, dev);
-
-		/* enable uio/vfio intr/eventfd mapping */
-		rte_intr_enable(intr_handle);
-
-		/* enable qdma mailbox interrupt */
-		qdma_mbox_enable_interrupts((void *)dev, qdma_dev->is_vf);
-	} else {
-		rte_eal_alarm_set(MBOX_POLL_FRQ, qdma_mbox_rcv_task,
-				  (void *)dev);
-	}
-
-	return 0;
-}
-
-void qdma_mbox_uninit(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	struct rte_intr_handle *intr_handle = pci_dev_intr_handle;
-
-	do {
-		rte_spinlock_lock(&qdma_dev->mbox.list_lock);
-		if (!qdma_list_is_empty(&qdma_dev->mbox.tx_todo_list)) {
-			rte_spinlock_unlock(&qdma_dev->mbox.list_lock);
-			rte_delay_ms(100);
-			continue;
-		}
-		rte_spinlock_unlock(&qdma_dev->mbox.list_lock);
-		break;
-	} while (1);
-
-	rte_eal_alarm_cancel(qdma_mbox_send_task, (void *)dev);
-	if (qdma_dev->dev_cap.mailbox_intr) {
-		/* Disable the mailbox interrupt */
-		qdma_mbox_disable_interrupts((void *)dev, qdma_dev->is_vf);
-
-		/* Disable uio intr before callback unregister */
-		rte_intr_disable(intr_handle);
-
-		rte_intr_callback_unregister(intr_handle,
-				qdma_mbox_rcv_task, dev);
-	} else {
-		rte_eal_alarm_cancel(qdma_mbox_rcv_task, (void *)dev);
-	}
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_mbox.h b/QDMA/DPDK/drivers/net/qdma/qdma_mbox.h
deleted file mode 100755
index d861342..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_mbox.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-#ifndef QDMA_DPDK_MBOX_H_
-#define QDMA_DPDK_MBOX_H_
-
-#include "qdma_list.h"
-#include "qdma_mbox_protocol.h"
-#include <rte_ethdev.h>
-
-#define MBOX_POLL_FRQ 1000
-#define MBOX_OP_RSP_TIMEOUT (10000 * MBOX_POLL_FRQ) /* 10 sec */
-#define MBOX_SEND_RETRY_COUNT (MBOX_OP_RSP_TIMEOUT/MBOX_POLL_FRQ)
-
-enum qdma_mbox_rsp_state {
-	QDMA_MBOX_RSP_NO_WAIT,
-	QDMA_MBOX_RSP_WAIT
-};
-
-struct qdma_dev_mbox {
-	struct qdma_list_head tx_todo_list;
-	struct qdma_list_head rx_pend_list;
-	rte_spinlock_t list_lock;
-	uint32_t rx_data[MBOX_MSG_REG_MAX];
-};
-
-struct qdma_mbox_msg {
-	uint8_t rsp_rcvd;
-	uint32_t retry_cnt;
-	enum qdma_mbox_rsp_state rsp_wait;
-	uint32_t raw_data[MBOX_MSG_REG_MAX];
-	struct qdma_list_head node;
-};
-
-int qdma_mbox_init(struct rte_eth_dev *dev);
-void qdma_mbox_uninit(struct rte_eth_dev *dev);
-void *qdma_mbox_msg_alloc(void);
-void qdma_mbox_msg_free(void *buffer);
-int qdma_mbox_msg_send(struct rte_eth_dev *dev, struct qdma_mbox_msg *msg,
-		       unsigned int timeout_ms);
-int qdma_dev_notify_qadd(struct rte_eth_dev *dev, uint32_t qidx_hw,
-						enum qdma_dev_q_type q_type);
-int qdma_dev_notify_qdel(struct rte_eth_dev *dev, uint32_t qidx_hw,
-						enum qdma_dev_q_type q_type);
-
-#endif /* QDMA_DPDK_MBOX_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_platform.c b/QDMA/DPDK/drivers/net/qdma/qdma_platform.c
deleted file mode 100755
index 9abe8f6..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_platform.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include "qdma_access_common.h"
-#include "qdma_platform.h"
-#include "rte_pmd_qdma.h"
-#include "qdma.h"
-#include <rte_malloc.h>
-#include <rte_spinlock.h>
-
-static rte_spinlock_t resource_lock = RTE_SPINLOCK_INITIALIZER;
-static rte_spinlock_t reg_access_lock = RTE_SPINLOCK_INITIALIZER;
-
-struct err_code_map error_code_map_list[] = {
-	{QDMA_SUCCESS,				0},
-	{QDMA_ERR_INV_PARAM,			EINVAL},
-	{QDMA_ERR_NO_MEM,			ENOMEM},
-	{QDMA_ERR_HWACC_BUSY_TIMEOUT,		EBUSY},
-	{QDMA_ERR_HWACC_INV_CONFIG_BAR,		EINVAL},
-	{QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,	EINVAL},
-	{QDMA_ERR_HWACC_BAR_NOT_FOUND,		EINVAL},
-	{QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,	EINVAL},
-	{QDMA_ERR_RM_RES_EXISTS,		EPERM},
-	{QDMA_ERR_RM_RES_NOT_EXISTS,		EINVAL},
-	{QDMA_ERR_RM_DEV_EXISTS,		EPERM},
-	{QDMA_ERR_RM_DEV_NOT_EXISTS,		EINVAL},
-	{QDMA_ERR_RM_NO_QUEUES_LEFT,		EPERM},
-	{QDMA_ERR_RM_QMAX_CONF_REJECTED,	EPERM},
-	{QDMA_ERR_MBOX_FMAP_WR_FAILED,		EIO},
-	{QDMA_ERR_MBOX_NUM_QUEUES,		EINVAL},
-	{QDMA_ERR_MBOX_INV_QID,			EINVAL},
-	{QDMA_ERR_MBOX_INV_RINGSZ,		EINVAL},
-	{QDMA_ERR_MBOX_INV_BUFSZ,		EINVAL},
-	{QDMA_ERR_MBOX_INV_CNTR_TH,		EINVAL},
-	{QDMA_ERR_MBOX_INV_TMR_TH,		EINVAL},
-	{QDMA_ERR_MBOX_INV_MSG,			EINVAL},
-	{QDMA_ERR_MBOX_SEND_BUSY,		EBUSY},
-	{QDMA_ERR_MBOX_NO_MSG_IN,		EINVAL},
-	{QDMA_ERR_MBOX_ALL_ZERO_MSG,		EINVAL},
-};
-
-/*****************************************************************************/
-/**
- * qdma_calloc(): allocate memory and initialize with 0
- *
- * @num_blocks:  number of blocks of contiguous memory of @size
- * @size:    size of each chunk of memory
- *
- * Return: pointer to the memory block created on success and NULL on failure
- *****************************************************************************/
-void *qdma_calloc(uint32_t num_blocks, uint32_t size)
-{
-	return rte_calloc(NULL, num_blocks, size, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_memfree(): free the memory
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_memfree(void *memptr)
-{
-	return rte_free(memptr);
-}
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_take() - take lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_take(void)
-{
-	rte_spinlock_lock(&resource_lock);
-}
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_give() - release lock after accessing
- *                             resource management APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_give(void)
-{
-	rte_spinlock_unlock(&resource_lock);
-}
-
-/*****************************************************************************/
-/**
- * qdma_reg_write() - Register write API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to write
- * @val:	value to be written
- *
- * Return:	None
- *****************************************************************************/
-void qdma_reg_write(void *dev_hndl, uint32_t reg_offst, uint32_t val)
-{
-	struct qdma_pci_dev *qdma_dev;
-	uint64_t bar_addr;
-
-	qdma_dev = ((struct rte_eth_dev *)dev_hndl)->data->dev_private;
-	bar_addr = (uint64_t)qdma_dev->bar_addr[qdma_dev->config_bar_idx];
-	*((volatile uint32_t *)(bar_addr + reg_offst)) = val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_reg_read() - Register read API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to be read
- *
- * Return: Value read
- *****************************************************************************/
-uint32_t qdma_reg_read(void *dev_hndl, uint32_t reg_offst)
-{
-	struct qdma_pci_dev *qdma_dev;
-	uint64_t bar_addr;
-	uint32_t val;
-
-	qdma_dev = ((struct rte_eth_dev *)dev_hndl)->data->dev_private;
-	bar_addr = (uint64_t)qdma_dev->bar_addr[qdma_dev->config_bar_idx];
-	val = *((volatile uint32_t *)(bar_addr + reg_offst));
-
-	return val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_lock() - Lock function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_lock(void *dev_hndl)
-{
-	(void) dev_hndl;
-	rte_spinlock_lock(&reg_access_lock);
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_release() - Release function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_release(void *dev_hndl)
-{
-	(void) dev_hndl;
-	rte_spinlock_unlock(&reg_access_lock);
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_udelay() - delay function to be used in the common library
- *
- * @delay_usec:   delay in microseconds
- *
- * Return:	None
- *****************************************************************************/
-void qdma_udelay(uint32_t delay_usec)
-{
-	rte_delay_us(delay_usec);
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_hw_access() - function to get the qdma_hw_access
- *
- * @dev_hndl:   device handle
- * @dev_cap: pointer to hold qdma_hw_access structure
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_get_hw_access(void *dev_hndl, struct qdma_hw_access **hw)
-{
-	struct qdma_pci_dev *qdma_dev;
-	qdma_dev = ((struct rte_eth_dev *)dev_hndl)->data->dev_private;
-	*hw = qdma_dev->hw_access;
-}
-
-/*****************************************************************************/
-/**
- * qdma_strncpy(): copy n size string from source to destination buffer
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_strncpy(char *dest, const char *src, size_t n)
-{
-	strncpy(dest, src, n);
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_err_code() - function to get the qdma access mapped error code
- *
- * @acc_err_code: qdma access error code which is a negative input value
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_err_code(int acc_err_code)
-{
-	/* Multiply acc_err_code with -1 to convert it to a postive number
-	 * and use it as an array index for error codes.
-	 */
-	acc_err_code *= -1;
-
-	return -(error_code_map_list[acc_err_code].err_code);
-}
-
-/*****************************************************************************/
-/**
- * qdma_io_wmb() - Write memory barrier for IO device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_io_wmb(void)
-{
-	rte_io_wmb();
-	return 0;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_platform_env.h b/QDMA/DPDK/drivers/net/qdma/qdma_platform_env.h
deleted file mode 100755
index 69d5e59..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_platform_env.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef QDMA_PLATFORM_ENV_H_
-#define QDMA_PLATFORM_ENV_H_
-
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <rte_log.h>
-
-#define QDMA_SNPRINTF_S(arg1, arg2, arg3, ...) \
-		snprintf(arg1, arg3, ##__VA_ARGS__)
-
-#ifdef RTE_LIBRTE_QDMA_DEBUG_DRIVER
-#define qdma_log_info(x_, ...) rte_log(RTE_LOG_INFO,\
-		RTE_LOGTYPE_USER1, x_, ##__VA_ARGS__)
-#define qdma_log_warning(x_, ...) rte_log(RTE_LOG_WARNING,\
-		RTE_LOGTYPE_USER1, x_, ##__VA_ARGS__)
-#define qdma_log_debug(x_, ...) rte_log(RTE_LOG_DEBUG,\
-		RTE_LOGTYPE_USER1, x_, ##__VA_ARGS__)
-#define qdma_log_error(x_, ...) rte_log(RTE_LOG_ERR,\
-		RTE_LOGTYPE_USER1, x_, ##__VA_ARGS__)
-#else
-#define qdma_log_info(x_, ...) do { } while (0)
-#define qdma_log_warning(x_, ...) do { } while (0)
-#define qdma_log_debug(x_, ...) do { } while (0)
-#define qdma_log_error(x_, ...) do { } while (0)
-#endif
-
-#endif /* QDMA_PLATFORM_ENV_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c b/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c
deleted file mode 100755
index 186c1bb..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c
+++ /dev/null
@@ -1,1464 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <rte_mbuf.h>
-#include <rte_cycles.h>
-#include "qdma.h"
-#include "qdma_access_common.h"
-
-#include <fcntl.h>
-#include <unistd.h>
-#include "qdma_rxtx.h"
-#include "qdma_devops.h"
-
-#if defined RTE_ARCH_X86_64
-#include <immintrin.h>
-#include <emmintrin.h>
-#define RTE_QDMA_DESCS_PER_LOOP (2)
-#endif
-
-/**
- * Poll the QDMA engine for transfer completion.
- *
- * @param txq
- *   Generic pointer to either Rx/Tx queue structure based on the DMA direction.
- * @param expected_count
- *   expected transfer count.
- *
- * @return
- *   Number of packets transferred successfully by the engine.
- */
-static int dma_wb_monitor(void *xq, uint8_t dir, uint16_t expected_count)
-{
-	struct wb_status *wb_status;
-	uint16_t mode, wb_tail;
-	uint32_t i = 0;
-
-	if (dir == DMA_TO_DEVICE) {
-		struct qdma_tx_queue *txq = (struct qdma_tx_queue *)xq;
-		wb_status = txq->wb_status;
-
-		while (i < WB_TIMEOUT) {
-			if (expected_count == wb_status->cidx) {
-				PMD_DRV_LOG(DEBUG, "Poll writeback count "
-					    "matches to the expected count :%d",
-					    expected_count);
-				return 0;
-			}
-			PMD_DRV_LOG(DEBUG, "poll wait on wb-count:%d and "
-					"expected-count:%d\n",
-					wb_status->cidx, expected_count);
-			rte_delay_us(2);
-			i++;
-		}
-		PMD_DRV_LOG(DEBUG, "DMA Engine write-back monitor "
-				"timeout error occurred\n");
-		return -1;
-	}
-	/* dir == DMA_FROM_DEVICE */
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)xq;
-	wb_status = rxq->wb_status;
-	mode = rxq->st_mode;
-
-	/* Poll the writeback location until timeout Or, the expected
-	 * count matches to the writeback count
-	 */
-	while (i < WB_TIMEOUT) {
-		if (mode) {
-			wb_tail =
-			(rxq->cmpt_cidx_info.wrb_cidx + expected_count) %
-			(rxq->nb_rx_cmpt_desc - 1);
-			if (wb_tail == wb_status->pidx) {
-				PMD_DRV_LOG(DEBUG, "ST: Poll cmpt count matches"
-						" to the expected count :%d",
-						expected_count);
-				return 0;
-			}
-			PMD_DRV_LOG(DEBUG, "ST: poll wait on wb-count:%d and"
-					" expected-count:%d\n",
-					wb_status->pidx, expected_count);
-		} else {
-			if (expected_count == wb_status->cidx) {
-				PMD_DRV_LOG(DEBUG, "MM: Poll writeback count "
-						"matches to the expected count"
-						" :%d", expected_count);
-				return 0;
-			}
-			PMD_DRV_LOG(DEBUG, "MM: poll wait on wb-count:%d "
-					"and expected-count:%d\n",
-					wb_status->cidx, expected_count);
-		}
-		rte_delay_us(2);
-		i++;
-	}
-	return -1;
-}
-
-static int qdma_extract_st_cmpt_info(void *ul_cmpt_entry, void *cmpt_info)
-{
-	union qdma_ul_st_cmpt_ring *cmpt_data, *cmpt_desc;
-
-	cmpt_desc = (union qdma_ul_st_cmpt_ring *)(ul_cmpt_entry);
-	cmpt_data = (union qdma_ul_st_cmpt_ring *)(cmpt_info);
-
-	cmpt_data->data = cmpt_desc->data;
-	if (unlikely(!cmpt_desc->desc_used))
-		cmpt_data->length = 0;
-
-	return 0;
-}
-
-int reclaim_tx_mbuf(struct qdma_tx_queue *txq,
-			uint16_t cidx, uint16_t free_cnt)
-{
-	int fl_desc = 0;
-	uint16_t fl_desc_cnt;
-	uint16_t count;
-	int id;
-
-	id = txq->tx_fl_tail;
-	fl_desc = (int)cidx - id;
-
-	if (unlikely(!fl_desc))
-		return 0;
-
-	if (fl_desc < 0)
-		fl_desc += (txq->nb_tx_desc - 1);
-
-	if (free_cnt && (fl_desc > free_cnt))
-		fl_desc = free_cnt;
-
-	if ((id + fl_desc) < (txq->nb_tx_desc - 1)) {
-		fl_desc_cnt = ((uint16_t)fl_desc & 0xFFFF);
-		rte_pktmbuf_free_bulk(&txq->sw_ring[id], fl_desc_cnt);
-		for (count = 0; count < fl_desc_cnt; count++)
-			txq->sw_ring[id++] = NULL;
-
-		txq->tx_fl_tail = id;
-
-		return fl_desc;
-	}
-
-	txq->qstats.ring_wrap_cnt++;
-
-	/* Handle Tx queue ring wrap case */
-	fl_desc -= (txq->nb_tx_desc - 1 - id);
-	rte_pktmbuf_free_bulk(&txq->sw_ring[id], (txq->nb_tx_desc - 1 - id));
-	for (; id < (txq->nb_tx_desc - 1); id++)
-		txq->sw_ring[id] = NULL;
-
-	id -= (txq->nb_tx_desc - 1);
-	fl_desc_cnt = ((uint16_t)fl_desc & 0xFFFF);
-	rte_pktmbuf_free_bulk(&txq->sw_ring[id], fl_desc_cnt);
-	for (count = 0; count < fl_desc_cnt; count++)
-		txq->sw_ring[id++] = NULL;
-
-	txq->tx_fl_tail = id;
-
-	return fl_desc;
-}
-
-#ifdef TEST_64B_DESC_BYPASS
-uint16_t qdma_xmit_64B_desc_bypass(struct qdma_tx_queue *txq,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
-{
-	uint16_t count, id;
-	uint8_t *tx_ring_st_bypass = NULL;
-	int ofd = -1, ret = 0;
-	char fln[50];
-	struct qdma_pci_dev *qdma_dev = txq->dev->data->dev_private;
-
-	id = txq->q_pidx_info.pidx;
-
-	for (count = 0; count < nb_pkts; count++) {
-		tx_ring_st_bypass = (uint8_t *)txq->tx_ring;
-		memset(&tx_ring_st_bypass[id * (txq->bypass_desc_sz)],
-				((id  % 255) + 1), txq->bypass_desc_sz);
-
-		snprintf(fln, sizeof(fln), "q_%u_%s", txq->queue_id,
-				"h2c_desc_data.txt");
-		ofd = open(fln, O_RDWR | O_CREAT | O_APPEND | O_SYNC,
-				0666);
-		if (ofd < 0) {
-			PMD_DRV_LOG(INFO, " txq[%d] unable to create "
-					"outfile to dump descriptor"
-					" data", txq->queue_id);
-			return 0;
-		}
-		ret = write(ofd, &(tx_ring_st_bypass[id *
-					(txq->bypass_desc_sz)]),
-					txq->bypass_desc_sz);
-		if (ret < txq->bypass_desc_sz)
-			PMD_DRV_LOG(DEBUG, "Txq[%d] descriptor data "
-					"len: %d, written to inputfile"
-					" :%d bytes", txq->queue_id,
-					txq->bypass_desc_sz, ret);
-		close(ofd);
-
-		rte_pktmbuf_free(tx_pkts[count]);
-
-		id++;
-		if (unlikely(id >= (txq->nb_tx_desc - 1)))
-			id -= (txq->nb_tx_desc - 1);
-	}
-
-	/* Make sure writes to the H2C descriptors are synchronized
-	 * before updating PIDX
-	 */
-	rte_wmb();
-
-	txq->q_pidx_info.pidx = id;
-	qdma_dev->hw_access->qdma_queue_pidx_update(txq->dev, qdma_dev->is_vf,
-		txq->queue_id, 0, &txq->q_pidx_info);
-
-	PMD_DRV_LOG(DEBUG, " xmit completed with count:%d\n", count);
-
-	return count;
-}
-#endif
-
-uint16_t qdma_get_rx_queue_id(void *queue_hndl)
-{
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)queue_hndl;
-
-	return rxq->queue_id;
-}
-
-void qdma_get_device_info(void *queue_hndl,
-		enum qdma_device_type *device_type,
-		enum qdma_ip_type *ip_type)
-{
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)queue_hndl;
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-
-	*device_type = (enum qdma_device_type)qdma_dev->device_type;
-	*ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-}
-
-uint64_t get_mm_c2h_ep_addr(void *queue_hndl)
-{
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)queue_hndl;
-
-	return rxq->ep_addr;
-}
-
-uint32_t get_mm_buff_size(void *queue_hndl)
-{
-	struct qdma_rx_queue *rxq = (struct qdma_rx_queue *)queue_hndl;
-
-	return rxq->rx_buff_size;
-}
-
-struct qdma_ul_st_h2c_desc *get_st_h2c_desc(void *queue_hndl)
-{
-	volatile uint16_t id;
-	struct qdma_ul_st_h2c_desc *tx_ring_st;
-	struct qdma_ul_st_h2c_desc *desc;
-	struct qdma_tx_queue *txq = (struct qdma_tx_queue *)queue_hndl;
-
-	id = txq->q_pidx_info.pidx;
-	tx_ring_st = (struct qdma_ul_st_h2c_desc *)txq->tx_ring;
-	desc = (struct qdma_ul_st_h2c_desc *)&tx_ring_st[id];
-
-	id++;
-	if (unlikely(id >= (txq->nb_tx_desc - 1)))
-		id -= (txq->nb_tx_desc - 1);
-
-	txq->q_pidx_info.pidx = id;
-
-	return desc;
-}
-
-struct qdma_ul_mm_desc *get_mm_h2c_desc(void *queue_hndl)
-{
-	struct qdma_ul_mm_desc *desc;
-	struct qdma_tx_queue *txq = (struct qdma_tx_queue *)queue_hndl;
-	struct qdma_ul_mm_desc *tx_ring =
-					(struct qdma_ul_mm_desc *)txq->tx_ring;
-	uint32_t id;
-
-	id = txq->q_pidx_info.pidx;
-	desc =  (struct qdma_ul_mm_desc *)&tx_ring[id];
-
-	id = (id + 1) % (txq->nb_tx_desc - 1);
-	txq->q_pidx_info.pidx = id;
-
-	return desc;
-}
-
-uint64_t get_mm_h2c_ep_addr(void *queue_hndl)
-{
-	struct qdma_tx_queue *txq = (struct qdma_tx_queue *)queue_hndl;
-
-	return txq->ep_addr;
-}
-
-#ifdef QDMA_LATENCY_OPTIMIZED
-static void adjust_c2h_cntr_avgs(struct qdma_rx_queue *rxq)
-{
-	int i;
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-
-	if (rxq->sorted_c2h_cntr_idx < 0)
-		return;
-
-	rxq->pend_pkt_moving_avg =
-		qdma_dev->g_c2h_cnt_th[rxq->cmpt_cidx_info.counter_idx];
-
-	if (rxq->sorted_c2h_cntr_idx == (QDMA_GLOBAL_CSR_ARRAY_SZ - 1))
-		i = qdma_dev->sorted_idx_c2h_cnt_th[rxq->sorted_c2h_cntr_idx];
-	else
-		i = qdma_dev->sorted_idx_c2h_cnt_th[
-					rxq->sorted_c2h_cntr_idx + 1];
-
-	rxq->pend_pkt_avg_thr_hi = qdma_dev->g_c2h_cnt_th[i];
-
-	if (rxq->sorted_c2h_cntr_idx > 0)
-		i = qdma_dev->sorted_idx_c2h_cnt_th[
-					rxq->sorted_c2h_cntr_idx - 1];
-	else
-		i = qdma_dev->sorted_idx_c2h_cnt_th[rxq->sorted_c2h_cntr_idx];
-
-	rxq->pend_pkt_avg_thr_lo = qdma_dev->g_c2h_cnt_th[i];
-
-	PMD_DRV_LOG(DEBUG, "q%u: c2h_cntr_idx =  %u %u %u",
-		rxq->queue_id,
-		rxq->cmpt_cidx_info.counter_idx,
-		rxq->pend_pkt_avg_thr_lo,
-		rxq->pend_pkt_avg_thr_hi);
-}
-
-static void incr_c2h_cntr_th(struct qdma_rx_queue *rxq)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	unsigned char i, c2h_cntr_idx;
-	unsigned char c2h_cntr_val_new;
-	unsigned char c2h_cntr_val_curr;
-
-	if (rxq->sorted_c2h_cntr_idx ==
-			(QDMA_NUM_C2H_COUNTERS - 1))
-		return;
-
-	rxq->c2h_cntr_monitor_cnt = 0;
-	i = rxq->sorted_c2h_cntr_idx;
-	c2h_cntr_idx = qdma_dev->sorted_idx_c2h_cnt_th[i];
-	c2h_cntr_val_curr = qdma_dev->g_c2h_cnt_th[c2h_cntr_idx];
-	i++;
-	c2h_cntr_idx = qdma_dev->sorted_idx_c2h_cnt_th[i];
-	c2h_cntr_val_new = qdma_dev->g_c2h_cnt_th[c2h_cntr_idx];
-
-	/* Choose the closest counter value */
-	if ((c2h_cntr_val_new >= rxq->pend_pkt_moving_avg) &&
-		(c2h_cntr_val_new - rxq->pend_pkt_moving_avg) >=
-		(rxq->pend_pkt_moving_avg - c2h_cntr_val_curr))
-		return;
-
-	/* Do not allow c2h counter value go beyond half of C2H ring sz*/
-	if (c2h_cntr_val_new < (qdma_dev->g_ring_sz[rxq->ringszidx] >> 1)) {
-		rxq->cmpt_cidx_info.counter_idx = c2h_cntr_idx;
-		rxq->sorted_c2h_cntr_idx = i;
-		adjust_c2h_cntr_avgs(rxq);
-	}
-}
-
-static void decr_c2h_cntr_th(struct qdma_rx_queue *rxq)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	unsigned char i, c2h_cntr_idx;
-	unsigned char c2h_cntr_val_new;
-	unsigned char c2h_cntr_val_curr;
-
-	if (!rxq->sorted_c2h_cntr_idx)
-		return;
-	rxq->c2h_cntr_monitor_cnt = 0;
-	i = rxq->sorted_c2h_cntr_idx;
-	c2h_cntr_idx = qdma_dev->sorted_idx_c2h_cnt_th[i];
-	c2h_cntr_val_curr = qdma_dev->g_c2h_cnt_th[c2h_cntr_idx];
-	i--;
-	c2h_cntr_idx = qdma_dev->sorted_idx_c2h_cnt_th[i];
-
-	c2h_cntr_val_new = qdma_dev->g_c2h_cnt_th[c2h_cntr_idx];
-
-	/* Choose the closest counter value */
-	if ((c2h_cntr_val_new <= rxq->pend_pkt_moving_avg) &&
-		(rxq->pend_pkt_moving_avg - c2h_cntr_val_new) >=
-		(c2h_cntr_val_curr - rxq->pend_pkt_moving_avg))
-		return;
-
-	rxq->cmpt_cidx_info.counter_idx = c2h_cntr_idx;
-
-	rxq->sorted_c2h_cntr_idx = i;
-	adjust_c2h_cntr_avgs(rxq);
-}
-
-#define MAX_C2H_CNTR_STAGNANT_CNT 16
-static void adapt_update_counter(struct qdma_rx_queue *rxq,
-		uint16_t nb_pkts_avail)
-{
-	/* Add available pkt count and average */
-	rxq->pend_pkt_moving_avg += nb_pkts_avail;
-	rxq->pend_pkt_moving_avg >>= 1;
-
-	/* if avg > hi_th, increase the counter
-	 * if avg < lo_th, decrease the counter
-	 */
-	if (rxq->pend_pkt_avg_thr_hi <= rxq->pend_pkt_moving_avg)
-		incr_c2h_cntr_th(rxq);
-	else if (rxq->pend_pkt_avg_thr_lo >=
-				rxq->pend_pkt_moving_avg)
-		decr_c2h_cntr_th(rxq);
-	else {
-		rxq->c2h_cntr_monitor_cnt++;
-		if (rxq->c2h_cntr_monitor_cnt == MAX_C2H_CNTR_STAGNANT_CNT) {
-			/* go down on counter value to see if we actually are
-			 * increasing latency by setting
-			 * higher counter threshold
-			 */
-			decr_c2h_cntr_th(rxq);
-			rxq->c2h_cntr_monitor_cnt = 0;
-		} else
-			return;
-	}
-}
-#endif //QDMA_LATENCY_OPTIMIZED
-
-/* Process completion ring */
-static int process_cmpt_ring(struct qdma_rx_queue *rxq,
-		uint16_t num_cmpt_entries)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	union qdma_ul_st_cmpt_ring *user_cmpt_entry;
-	uint32_t count = 0;
-	int ret = 0;
-	uint16_t rx_cmpt_tail = rxq->cmpt_cidx_info.wrb_cidx;
-
-	if (likely(!rxq->dump_immediate_data)) {
-		if ((rx_cmpt_tail + num_cmpt_entries) <
-			(rxq->nb_rx_cmpt_desc - 1)) {
-			for (count = 0; count < num_cmpt_entries; count++) {
-				user_cmpt_entry =
-				(union qdma_ul_st_cmpt_ring *)
-				((uint64_t)rxq->cmpt_ring +
-				((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-				ret = qdma_extract_st_cmpt_info(
-						user_cmpt_entry,
-						&rxq->cmpt_data[count]);
-				if (ret != 0) {
-					PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-						"at index %d, queue_id = %d\n",
-						rx_cmpt_tail, rxq->queue_id);
-					rxq->err = 1;
-					return -1;
-				}
-				rx_cmpt_tail++;
-			}
-		} else {
-			while (count < num_cmpt_entries) {
-				user_cmpt_entry =
-				(union qdma_ul_st_cmpt_ring *)
-				((uint64_t)rxq->cmpt_ring +
-				((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-				ret = qdma_extract_st_cmpt_info(
-						user_cmpt_entry,
-						&rxq->cmpt_data[count]);
-				if (ret != 0) {
-					PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-						"at index %d, queue_id = %d\n",
-						rx_cmpt_tail, rxq->queue_id);
-					rxq->err = 1;
-					return -1;
-				}
-
-				rx_cmpt_tail++;
-				if (unlikely(rx_cmpt_tail >=
-					(rxq->nb_rx_cmpt_desc - 1)))
-					rx_cmpt_tail -=
-						(rxq->nb_rx_cmpt_desc - 1);
-				count++;
-			}
-		}
-	} else {
-		while (count < num_cmpt_entries) {
-			user_cmpt_entry =
-			(union qdma_ul_st_cmpt_ring *)
-			((uint64_t)rxq->cmpt_ring +
-			((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-			ret = qdma_ul_extract_st_cmpt_info(
-					user_cmpt_entry,
-					&rxq->cmpt_data[count]);
-			if (ret != 0) {
-				PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-					"at CMPT index %d, queue_id = %d\n",
-					rx_cmpt_tail, rxq->queue_id);
-				rxq->err = 1;
-				return -1;
-			}
-
-			ret = qdma_ul_process_immediate_data_st((void *)rxq,
-					user_cmpt_entry, rxq->cmpt_desc_len);
-			if (ret < 0) {
-				PMD_DRV_LOG(ERR, "Error processing immediate data "
-					"at CMPT index = %d, queue_id = %d\n",
-					rx_cmpt_tail, rxq->queue_id);
-				return -1;
-			}
-
-			rx_cmpt_tail++;
-			if (unlikely(rx_cmpt_tail >=
-				(rxq->nb_rx_cmpt_desc - 1)))
-				rx_cmpt_tail -= (rxq->nb_rx_cmpt_desc - 1);
-			count++;
-		}
-	}
-
-	// Update the CPMT CIDX
-	rxq->cmpt_cidx_info.wrb_cidx = rx_cmpt_tail;
-	qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(rxq->dev,
-		qdma_dev->is_vf,
-		rxq->queue_id, &rxq->cmpt_cidx_info);
-
-	return 0;
-}
-
-uint32_t rx_queue_count(void *rx_queue)
-{
-	struct qdma_rx_queue *rxq = rx_queue;
-	struct wb_status *wb_status;
-	uint16_t pkt_length;
-	uint16_t nb_pkts_avail = 0;
-	uint16_t rx_cmpt_tail = 0;
-	uint16_t cmpt_pidx;
-	uint32_t nb_desc_used = 0, count = 0;
-	union qdma_ul_st_cmpt_ring *user_cmpt_entry;
-	union qdma_ul_st_cmpt_ring cmpt_data;
-
-	wb_status = rxq->wb_status;
-	rx_cmpt_tail = rxq->cmpt_cidx_info.wrb_cidx;
-	cmpt_pidx = wb_status->pidx;
-
-	if (rx_cmpt_tail < cmpt_pidx)
-		nb_pkts_avail = cmpt_pidx - rx_cmpt_tail;
-	else if (rx_cmpt_tail > cmpt_pidx)
-		nb_pkts_avail = rxq->nb_rx_cmpt_desc - 1 - rx_cmpt_tail +
-				cmpt_pidx;
-
-	if (nb_pkts_avail == 0)
-		return 0;
-
-	while (count < nb_pkts_avail) {
-		user_cmpt_entry =
-		(union qdma_ul_st_cmpt_ring *)((uint64_t)rxq->cmpt_ring +
-		((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-		if (qdma_ul_extract_st_cmpt_info(user_cmpt_entry,
-				&cmpt_data)) {
-			break;
-		}
-
-		pkt_length = qdma_ul_get_cmpt_pkt_len(&cmpt_data);
-		if (unlikely(!pkt_length)) {
-			count++;
-			continue;
-		}
-
-		nb_desc_used += ((pkt_length/rxq->rx_buff_size) + 1);
-		rx_cmpt_tail++;
-		if (unlikely(rx_cmpt_tail >= (rxq->nb_rx_cmpt_desc - 1)))
-			rx_cmpt_tail -= (rxq->nb_rx_cmpt_desc - 1);
-		count++;
-	}
-	PMD_DRV_LOG(DEBUG, "%s: nb_desc_used = %d",
-			__func__, nb_desc_used);
-	return nb_desc_used;
-}
-
-/**
- * DPDK callback to check the status of a Rx descriptor in the queue.
- *
- * @param rx_queue
- *   Pointer to Rx queue specific data structure.
- * @param offset
- *   The offset of the descriptor starting from tail (0 is the next
- *   packet to be received by the driver).
- *
- * @return
- *  - (RTE_ETH_RX_DESC_AVAIL): Descriptor is available for the hardware to
- *    receive a packet.
- *  - (RTE_ETH_RX_DESC_DONE): Descriptor is done, it is filled by hw, but
- *    not yet processed by the driver (i.e. in the receive queue).
- *  - (RTE_ETH_RX_DESC_UNAVAIL): Descriptor is unavailable, either hold by
- *    the driver and not yet returned to hw, or reserved by the hw.
- *  - (-EINVAL) bad descriptor offset.
- */
-int
-qdma_dev_rx_descriptor_status(void *rx_queue, uint16_t offset)
-{
-	struct qdma_rx_queue *rxq = rx_queue;
-	uint32_t desc_used_count;
-	uint16_t rx_tail, c2h_pidx, pending_desc;
-
-	if (unlikely(offset >= (rxq->nb_rx_desc - 1)))
-		return -EINVAL;
-
-	/* One descriptor is reserved so that pidx is not same as tail */
-	if (offset == (rxq->nb_rx_desc - 2))
-		return RTE_ETH_RX_DESC_UNAVAIL;
-
-	desc_used_count = rx_queue_count(rxq);
-	if (offset < desc_used_count)
-		return RTE_ETH_RX_DESC_DONE;
-
-	/* If Tail is not same as PIDX, descriptors are held by the driver */
-	rx_tail = rxq->rx_tail;
-	c2h_pidx = rxq->q_pidx_info.pidx;
-
-	pending_desc = rx_tail - c2h_pidx - 1;
-	if (rx_tail < (c2h_pidx + 1))
-		pending_desc = rxq->nb_rx_desc - 2 + rx_tail -
-				c2h_pidx;
-
-	if (offset < (desc_used_count + pending_desc))
-		return RTE_ETH_RX_DESC_UNAVAIL;
-
-	return RTE_ETH_RX_DESC_AVAIL;
-}
-
-/* Update mbuf for a segmented packet */
-struct rte_mbuf *prepare_segmented_packet(struct qdma_rx_queue *rxq,
-		uint16_t pkt_length, uint16_t *tail)
-{
-	struct rte_mbuf *mb;
-	struct rte_mbuf *first_seg = NULL;
-	struct rte_mbuf *last_seg = NULL;
-	uint16_t id = *tail;
-	uint16_t length;
-	uint16_t rx_buff_size = rxq->rx_buff_size;
-
-	do {
-		mb = rxq->sw_ring[id];
-		rxq->sw_ring[id++] = NULL;
-		length = pkt_length;
-
-		if (unlikely(id >= (rxq->nb_rx_desc - 1)))
-			id -= (rxq->nb_rx_desc - 1);
-		if (pkt_length > rx_buff_size) {
-			rte_pktmbuf_data_len(mb) = rx_buff_size;
-			pkt_length -= rx_buff_size;
-		} else {
-			rte_pktmbuf_data_len(mb) = pkt_length;
-			pkt_length = 0;
-		}
-		rte_mbuf_refcnt_set(mb, 1);
-
-		if (first_seg == NULL) {
-			first_seg = mb;
-			first_seg->nb_segs = 1;
-			first_seg->pkt_len = length;
-			first_seg->packet_type = 0;
-			first_seg->ol_flags = 0;
-			first_seg->port = rxq->port_id;
-			first_seg->vlan_tci = 0;
-			first_seg->hash.rss = 0;
-		} else {
-			first_seg->nb_segs++;
-			if (last_seg != NULL)
-				last_seg->next = mb;
-		}
-
-		last_seg = mb;
-		mb->next = NULL;
-	} while (pkt_length);
-
-	*tail = id;
-	return first_seg;
-}
-
-/* Prepare mbuf for one packet */
-static inline
-struct rte_mbuf *prepare_single_packet(struct qdma_rx_queue *rxq,
-		uint16_t cmpt_idx)
-{
-	struct rte_mbuf *mb = NULL;
-	uint16_t id = rxq->rx_tail;
-	uint16_t pkt_length;
-
-	pkt_length = qdma_ul_get_cmpt_pkt_len(&rxq->cmpt_data[cmpt_idx]);
-
-	if (pkt_length) {
-		rxq->stats.pkts++;
-		rxq->stats.bytes += pkt_length;
-
-		if (likely(pkt_length <= rxq->rx_buff_size)) {
-			mb = rxq->sw_ring[id];
-			rxq->sw_ring[id++] = NULL;
-
-			if (unlikely(id >= (rxq->nb_rx_desc - 1)))
-				id -= (rxq->nb_rx_desc - 1);
-
-			rte_mbuf_refcnt_set(mb, 1);
-			mb->nb_segs = 1;
-			mb->port = rxq->port_id;
-			mb->ol_flags = 0;
-			mb->packet_type = 0;
-			mb->pkt_len = pkt_length;
-			mb->data_len = pkt_length;
-		} else {
-			mb = prepare_segmented_packet(rxq, pkt_length, &id);
-		}
-
-		rxq->rx_tail = id;
-	}
-	return mb;
-}
-
-/* Prepare mbufs with packet information */
-static uint16_t prepare_packets(struct qdma_rx_queue *rxq,
-			struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
-{
-	uint16_t count_pkts = 0;
-
-	struct rte_mbuf *mb;
-	uint16_t pkt_length;
-	uint16_t count = 0;
-	while (count < nb_pkts) {
-		pkt_length = qdma_ul_get_cmpt_pkt_len(
-					&rxq->cmpt_data[count]);
-		if (pkt_length) {
-			rxq->stats.pkts++;
-			rxq->stats.bytes += pkt_length;
-			mb = prepare_segmented_packet(rxq,
-					pkt_length, &rxq->rx_tail);
-			rx_pkts[count_pkts++] = mb;
-		}
-		count++;
-	}
-
-	return count_pkts;
-}
-
-/* Populate C2H ring with new buffers */
-static int rearm_c2h_ring(struct qdma_rx_queue *rxq, uint16_t num_desc)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	struct rte_mbuf *mb;
-	struct qdma_ul_st_c2h_desc *rx_ring_st =
-			(struct qdma_ul_st_c2h_desc *)rxq->rx_ring;
-	uint16_t mbuf_index = 0;
-	uint16_t id;
-	int rearm_descs;
-
-	id = rxq->q_pidx_info.pidx;
-
-	/* Split the C2H ring updation in two parts.
-	 * First handle till end of ring and then
-	 * handle from beginning of ring, if ring wraps
-	 */
-	if ((id + num_desc) < (rxq->nb_rx_desc - 1))
-		rearm_descs = num_desc;
-	else {
-		rearm_descs = (rxq->nb_rx_desc - 1) - id;
-		rxq->qstats.ring_wrap_cnt++;
-	}
-
-	/* allocate new buffer */
-	if (rte_mempool_get_bulk(rxq->mb_pool, (void *)&rxq->sw_ring[id],
-					rearm_descs) != 0){
-		PMD_DRV_LOG(ERR, "%s(): %d: No MBUFS, queue id = %d,"
-		"mbuf_avail_count = %d,"
-		" mbuf_in_use_count = %d, num_desc_req = %d\n",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool), rearm_descs);
-		return -1;
-	}
-
-	for (mbuf_index = 0; mbuf_index < rearm_descs;
-			mbuf_index++, id++) {
-		mb = rxq->sw_ring[id];
-		mb->data_off = RTE_PKTMBUF_HEADROOM;
-
-		/* rearm descriptor */
-		rx_ring_st[id].dst_addr =
-				(uint64_t)mb->buf_iova +
-					RTE_PKTMBUF_HEADROOM;
-	}
-
-	if (unlikely(id >= (rxq->nb_rx_desc - 1)))
-		id -= (rxq->nb_rx_desc - 1);
-
-	/* Handle from beginning of ring, if ring wrapped */
-	rearm_descs = num_desc - rearm_descs;
-	if (unlikely(rearm_descs)) {
-		/* allocate new buffer */
-		if (rte_mempool_get_bulk(rxq->mb_pool,
-			(void *)&rxq->sw_ring[id], rearm_descs) != 0) {
-			PMD_DRV_LOG(ERR, "%s(): %d: No MBUFS, queue id = %d,"
-			"mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d, num_desc_req = %d\n",
-			__func__, __LINE__, rxq->queue_id,
-			rte_mempool_avail_count(rxq->mb_pool),
-			rte_mempool_in_use_count(rxq->mb_pool), rearm_descs);
-
-			rxq->q_pidx_info.pidx = id;
-			qdma_dev->hw_access->qdma_queue_pidx_update(rxq->dev,
-				qdma_dev->is_vf,
-				rxq->queue_id, 1, &rxq->q_pidx_info);
-
-			return -1;
-		}
-
-		for (mbuf_index = 0;
-				mbuf_index < ((uint16_t)rearm_descs & 0xFFFF);
-				mbuf_index++, id++) {
-			mb = rxq->sw_ring[id];
-			mb->data_off = RTE_PKTMBUF_HEADROOM;
-
-			/* rearm descriptor */
-			rx_ring_st[id].dst_addr =
-					(uint64_t)mb->buf_iova +
-						RTE_PKTMBUF_HEADROOM;
-		}
-	}
-
-	PMD_DRV_LOG(DEBUG, "%s(): %d: PIDX Update: queue id = %d, "
-				"num_desc = %d",
-				__func__, __LINE__, rxq->queue_id,
-				num_desc);
-
-	/* Make sure writes to the C2H descriptors are
-	 * synchronized before updating PIDX
-	 */
-	rte_wmb();
-
-	rxq->q_pidx_info.pidx = id;
-	qdma_dev->hw_access->qdma_queue_pidx_update(rxq->dev,
-		qdma_dev->is_vf,
-		rxq->queue_id, 1, &rxq->q_pidx_info);
-
-	return 0;
-}
-
-/* Receive API for Streaming mode */
-uint16_t qdma_recv_pkts_st(struct qdma_rx_queue *rxq,
-		struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
-{
-	uint16_t count_pkts;
-	struct wb_status *wb_status;
-	uint16_t nb_pkts_avail = 0;
-	uint16_t rx_cmpt_tail = 0;
-	uint16_t cmpt_pidx, c2h_pidx;
-	uint16_t pending_desc;
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(rxq->bypass_desc_sz);
-#endif
-
-	if (unlikely(rxq->err))
-		return 0;
-
-	PMD_DRV_LOG(DEBUG, "recv start on rx queue-id :%d, on "
-			"tail index:%d number of pkts %d",
-			rxq->queue_id, rxq->rx_tail, nb_pkts);
-	wb_status = rxq->wb_status;
-	rx_cmpt_tail = rxq->cmpt_cidx_info.wrb_cidx;
-
-#ifdef TEST_64B_DESC_BYPASS
-	if (unlikely(rxq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		PMD_DRV_LOG(DEBUG, "For  RX ST-mode, example"
-				" design doesn't support 64byte descriptor\n");
-		return 0;
-	}
-#endif
-	cmpt_pidx = wb_status->pidx;
-
-#ifdef LATENCY_MEASUREMENT
-	if (cmpt_pidx != rxq->qstats.wrb_pidx) {
-		/* stop the timer */
-		rxq->qstats.pkt_lat.curr = rte_get_timer_cycles();
-		c2h_pidx_to_cmpt_pidx_lat[rxq->queue_id][rxq->qstats.lat_cnt] =
-			rxq->qstats.pkt_lat.curr - rxq->qstats.pkt_lat.prev;
-		rxq->qstats.lat_cnt = ((rxq->qstats.lat_cnt + 1) % LATENCY_CNT);
-	}
-#endif
-
-	if (rx_cmpt_tail < cmpt_pidx)
-		nb_pkts_avail = cmpt_pidx - rx_cmpt_tail;
-	else if (rx_cmpt_tail > cmpt_pidx)
-		nb_pkts_avail = rxq->nb_rx_cmpt_desc - 1 - rx_cmpt_tail +
-				cmpt_pidx;
-
-	if (nb_pkts_avail == 0) {
-		PMD_DRV_LOG(DEBUG, "%s(): %d: nb_pkts_avail = 0\n",
-				__func__, __LINE__);
-		return 0;
-	}
-
-	nb_pkts = RTE_MIN(nb_pkts, RTE_MIN(nb_pkts_avail, QDMA_MAX_BURST_SIZE));
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	PMD_DRV_LOG(DEBUG, "%s(): %d: queue id = %d, mbuf_avail_count = %d, "
-			"mbuf_in_use_count = %d",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-	/* Make sure reads to CMPT ring are synchronized before
-	 * accessing the ring
-	 */
-	rte_rmb();
-#ifdef QDMA_LATENCY_OPTIMIZED
-	adapt_update_counter(rxq, nb_pkts_avail);
-#endif //QDMA_LATENCY_OPTIMIZED
-
-	int ret = process_cmpt_ring(rxq, nb_pkts);
-	if (unlikely(ret))
-		return 0;
-
-	if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-		PMD_DRV_LOG(DEBUG, "%s(): %d: rxq->status = %d\n",
-				__func__, __LINE__, rxq->status);
-		return 0;
-	}
-
-	count_pkts = prepare_packets(rxq, rx_pkts, nb_pkts);
-
-	c2h_pidx = rxq->q_pidx_info.pidx;
-	pending_desc = rxq->rx_tail - c2h_pidx - 1;
-	if (rxq->rx_tail < (c2h_pidx + 1))
-		pending_desc = rxq->nb_rx_desc - 2 + rxq->rx_tail -
-				c2h_pidx;
-
-	rxq->qstats.pidx = rxq->q_pidx_info.pidx;
-	rxq->qstats.wrb_pidx = rxq->wb_status->pidx;
-	rxq->qstats.wrb_cidx = rxq->wb_status->cidx;
-	rxq->qstats.rxq_cmpt_tail = rx_cmpt_tail;
-	rxq->qstats.pending_desc = pending_desc;
-	rxq->qstats.mbuf_avail_cnt = rte_mempool_avail_count(rxq->mb_pool);
-	rxq->qstats.mbuf_in_use_cnt = rte_mempool_in_use_count(rxq->mb_pool);
-
-	/* Batch the PIDX updates, this minimizes overhead on
-	 * descriptor engine
-	 */
-	if (pending_desc >= MIN_RX_PIDX_UPDATE_THRESHOLD)
-		rearm_c2h_ring(rxq, pending_desc);
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	PMD_DRV_LOG(DEBUG, "%s(): %d: queue id = %d, mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d, count_pkts = %d",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool), count_pkts);
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-	PMD_DRV_LOG(DEBUG, " Recv complete with hw cidx :%d",
-				rxq->wb_status->cidx);
-	PMD_DRV_LOG(DEBUG, " Recv complete with hw pidx :%d\n",
-				rxq->wb_status->pidx);
-
-	return count_pkts;
-}
-
-/* Receive API for Memory mapped mode */
-uint16_t qdma_recv_pkts_mm(struct qdma_rx_queue *rxq,
-		struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
-{
-	struct rte_mbuf *mb;
-	uint32_t count, id;
-	struct qdma_ul_mm_desc *desc;
-	uint32_t len;
-	int ret;
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(rxq->bypass_desc_sz);
-#endif
-
-	if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED)
-		return 0;
-
-	id = rxq->q_pidx_info.pidx; /* Descriptor index */
-
-	PMD_DRV_LOG(DEBUG, "recv start on rx queue-id :%d, on tail index:%d\n",
-			rxq->queue_id, id);
-
-#ifdef TEST_64B_DESC_BYPASS
-	if (unlikely(rxq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		PMD_DRV_LOG(DEBUG, "For MM mode, example design doesn't "
-				"support 64byte descriptor\n");
-		return 0;
-	}
-#endif
-	/* Make 1 less available, otherwise if we allow all descriptors
-	 * to be filled,when nb_pkts = nb_tx_desc - 1, pidx will be same
-	 * as old pidx and HW will treat this as no new descriptors were added.
-	 * Hence, DMA won't happen with new descriptors.
-	 */
-	if (nb_pkts > rxq->nb_rx_desc - 2)
-		nb_pkts = rxq->nb_rx_desc - 2;
-
-	for (count = 0; count < nb_pkts; count++) {
-		/* allocate new buffer */
-		if (rte_mempool_get(rxq->mb_pool, (void *)&mb) != 0) {
-			PMD_DRV_LOG(ERR, "%s(): %d: No MBUFS, queue id = %d,"
-			"mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d\n",
-			__func__, __LINE__, rxq->queue_id,
-			rte_mempool_avail_count(rxq->mb_pool),
-			rte_mempool_in_use_count(rxq->mb_pool));
-			return 0;
-		}
-
-		desc = (struct qdma_ul_mm_desc *)rxq->rx_ring;
-		desc += id;
-		qdma_ul_update_mm_c2h_desc(rxq, mb, desc);
-
-		len = (int)rxq->rx_buff_size;
-		rte_pktmbuf_pkt_len(mb) = len;
-
-		rte_mbuf_refcnt_set(mb, 1);
-		mb->packet_type = 0;
-		mb->ol_flags = 0;
-		mb->next = 0;
-		mb->nb_segs = 1;
-		mb->port = rxq->port_id;
-		mb->vlan_tci = 0;
-		mb->hash.rss = 0;
-
-		rx_pkts[count] = mb;
-
-		rxq->ep_addr = (rxq->ep_addr + len) % DMA_BRAM_SIZE;
-		id = (id + 1) % (rxq->nb_rx_desc - 1);
-	}
-
-	/* Make sure writes to the C2H descriptors are synchronized
-	 * before updating PIDX
-	 */
-	rte_wmb();
-
-	/* update pidx pointer for MM-mode*/
-	if (count > 0) {
-		rxq->q_pidx_info.pidx = id;
-		qdma_dev->hw_access->qdma_queue_pidx_update(rxq->dev,
-			qdma_dev->is_vf,
-			rxq->queue_id, 1, &rxq->q_pidx_info);
-	}
-
-	ret = dma_wb_monitor(rxq, DMA_FROM_DEVICE, id);
-	if (ret) {//Error
-		PMD_DRV_LOG(ERR, "DMA Engine write-back monitor "
-				"timeout error occurred, wb-count:%d "
-				"and expected-count:%d\n",
-				rxq->wb_status->cidx, id);
-
-		return 0;
-	}
-	return count;
-}
-/**
- * DPDK callback for receiving packets in burst.
- *
- * @param rx_queue
- *   Generic pointer to Rx queue structure.
- * @param[out] rx_pkts
- *   Array to store received packets.
- * @param nb_pkts
- *   Maximum number of packets in array.
- *
- * @return
- *   Number of packets successfully received (<= nb_pkts).
- */
-uint16_t qdma_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
-			uint16_t nb_pkts)
-{
-	struct qdma_rx_queue *rxq = rx_queue;
-	uint32_t count;
-
-	if (rxq->st_mode)
-		count = qdma_recv_pkts_st(rxq, rx_pkts, nb_pkts);
-	else
-		count = qdma_recv_pkts_mm(rxq, rx_pkts, nb_pkts);
-
-	return count;
-}
-
-/**
- * DPDK callback to request the driver to free mbufs
- * currently cached by the driver.
- *
- * @param tx_queue
- *   Pointer to Tx queue specific data structure.
- * @param free_cnt
- *   Maximum number of packets to free. Use 0 to indicate all possible packets
- *   should be freed. Note that a packet may be using multiple mbufs.
- *
- * @return
- *   Failure: < 0
- *   Success: >= 0
- *     0-n: Number of packets freed. More packets may still remain in ring that
- *     are in use.
- */
-int
-qdma_dev_tx_done_cleanup(void *tx_queue, uint32_t free_cnt)
-{
-	struct qdma_tx_queue *txq = tx_queue;
-
-	if ((uint16_t)free_cnt >= (txq->nb_tx_desc - 1))
-		return -EINVAL;
-
-	/* Free transmitted mbufs back to pool */
-	return reclaim_tx_mbuf(txq, txq->wb_status->cidx, free_cnt);
-}
-
-/**
- * DPDK callback to check the status of a Tx descriptor in the queue.
- *
- * @param tx_queue
- *   Pointer to Tx queue specific data structure.
- * @param offset
- *   The offset of the descriptor starting from tail (0 is the place where
- *   the next packet will be send).
- *
- * @return
- *  - (RTE_ETH_TX_DESC_FULL) Descriptor is being processed by the hw, i.e.
- *    in the transmit queue.
- *  - (RTE_ETH_TX_DESC_DONE) Hardware is done with this descriptor, it can
- *    be reused by the driver.
- *  - (RTE_ETH_TX_DESC_UNAVAIL): Descriptor is unavailable, reserved by the
- *    driver or the hardware.
- *  - (-EINVAL) bad descriptor offset.
- */
-int
-qdma_dev_tx_descriptor_status(void *tx_queue, uint16_t offset)
-{
-	struct qdma_tx_queue *txq = tx_queue;
-	uint16_t id;
-	int avail, in_use;
-	uint16_t cidx = 0;
-
-	if (unlikely(offset >= (txq->nb_tx_desc - 1)))
-		return -EINVAL;
-
-	/* One descriptor is reserved so that pidx is not same as old pidx */
-	if (offset == (txq->nb_tx_desc - 2))
-		return RTE_ETH_TX_DESC_UNAVAIL;
-
-	id = txq->q_pidx_info.pidx;
-	cidx = txq->wb_status->cidx;
-
-	in_use = (int)id - cidx;
-	if (in_use < 0)
-		in_use += (txq->nb_tx_desc - 1);
-	avail = txq->nb_tx_desc - 2 - in_use;
-
-	if (offset < avail)
-		return RTE_ETH_TX_DESC_DONE;
-
-	return RTE_ETH_TX_DESC_FULL;
-}
-
-/* Transmit API for Streaming mode */
-uint16_t qdma_xmit_pkts_st(struct qdma_tx_queue *txq,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
-{
-	struct rte_mbuf *mb = NULL;
-	uint64_t pkt_len = 0;
-	int avail, in_use, ret, nsegs;
-	uint16_t cidx = 0;
-	uint16_t count = 0, id;
-	struct qdma_pci_dev *qdma_dev = txq->dev->data->dev_private;
-
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(txq->bypass_desc_sz);
-
-	if (unlikely(txq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		return qdma_xmit_64B_desc_bypass(txq, tx_pkts, nb_pkts);
-	}
-#endif
-
-	id = txq->q_pidx_info.pidx;
-
-	/* Make sure reads to Tx ring are synchronized before
-	 * accessing the status descriptor.
-	 */
-	rte_rmb();
-
-	cidx = txq->wb_status->cidx;
-
-#ifdef LATENCY_MEASUREMENT
-	if (cidx != txq->qstats.wrb_cidx) {
-		/* stop the timer */
-		txq->qstats.pkt_lat.curr = rte_get_timer_cycles();
-		h2c_pidx_to_hw_cidx_lat[txq->queue_id][txq->qstats.lat_cnt] =
-			txq->qstats.pkt_lat.curr - txq->qstats.pkt_lat.prev;
-		txq->qstats.lat_cnt = ((txq->qstats.lat_cnt + 1) % LATENCY_CNT);
-	}
-#endif
-
-	PMD_DRV_LOG(DEBUG, "Xmit start on tx queue-id:%d, tail index:%d\n",
-			txq->queue_id, id);
-
-	/* Free transmitted mbufs back to pool */
-	reclaim_tx_mbuf(txq, cidx, 0);
-
-	in_use = (int)id - cidx;
-	if (in_use < 0)
-		in_use += (txq->nb_tx_desc - 1);
-
-	/* Make 1 less available, otherwise if we allow all descriptors
-	 * to be filled, when nb_pkts = nb_tx_desc - 1, pidx will be same
-	 * as old pidx and HW will treat this as no new descriptors were added.
-	 * Hence, DMA won't happen with new descriptors.
-	 */
-	avail = txq->nb_tx_desc - 2 - in_use;
-
-	if (unlikely(!avail)) {
-		txq->qstats.txq_full_cnt++;
-		PMD_DRV_LOG(DEBUG, "Tx queue full, in_use = %d", in_use);
-		return 0;
-	}
-
-	for (count = 0; count < nb_pkts; count++) {
-		mb = tx_pkts[count];
-		nsegs = mb->nb_segs;
-		if (nsegs > avail) {
-			/* Number of segments in current mbuf are greater
-			 * than number of descriptors available,
-			 * hence update PIDX and return
-			 */
-			break;
-		}
-		avail -= nsegs;
-		id = txq->q_pidx_info.pidx;
-		txq->sw_ring[id] = mb;
-		pkt_len += rte_pktmbuf_pkt_len(mb);
-
-		ret = qdma_ul_update_st_h2c_desc(txq, txq->offloads, mb);
-		if (unlikely(ret < 0))
-			break;
-	}
-
-	txq->stats.pkts += count;
-	txq->stats.bytes += pkt_len;
-
-	txq->qstats.pidx = id;
-	txq->qstats.wrb_cidx = cidx;
-	txq->qstats.txq_tail = txq->tx_fl_tail;
-	txq->qstats.in_use_desc = in_use;
-	txq->qstats.nb_pkts = nb_pkts;
-
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	rte_spinlock_lock(&txq->pidx_update_lock);
-#endif
-	txq->tx_desc_pend += count;
-
-	/* Send PIDX update only if pending desc is more than threshold
-	 * Saves frequent Hardware transactions
-	 */
-	if (txq->tx_desc_pend >= MIN_TX_PIDX_UPDATE_THRESHOLD) {
-		qdma_dev->hw_access->qdma_queue_pidx_update(txq->dev,
-			qdma_dev->is_vf,
-			txq->queue_id, 0, &txq->q_pidx_info);
-
-		txq->tx_desc_pend = 0;
-#ifdef LATENCY_MEASUREMENT
-		/* start the timer */
-		txq->qstats.pkt_lat.prev = rte_get_timer_cycles();
-#endif
-	}
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	rte_spinlock_unlock(&txq->pidx_update_lock);
-#endif
-	PMD_DRV_LOG(DEBUG, " xmit completed with count:%d\n", count);
-
-	return count;
-}
-
-/* Transmit API for Memory mapped mode */
-uint16_t qdma_xmit_pkts_mm(struct qdma_tx_queue *txq,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
-{
-	struct rte_mbuf *mb;
-	uint32_t count, id;
-	uint64_t	len = 0;
-	int avail, in_use;
-	int ret;
-	struct qdma_pci_dev *qdma_dev = txq->dev->data->dev_private;
-	uint16_t cidx = 0;
-
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(txq->bypass_desc_sz);
-#endif
-
-	id = txq->q_pidx_info.pidx;
-	PMD_DRV_LOG(DEBUG, "Xmit start on tx queue-id:%d, tail index:%d\n",
-			txq->queue_id, id);
-
-#ifdef TEST_64B_DESC_BYPASS
-	if (unlikely(txq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		PMD_DRV_LOG(DEBUG, "For MM mode, example design doesn't "
-				"support 64B bypass testing\n");
-		return 0;
-	}
-#endif
-	cidx = txq->wb_status->cidx;
-	/* Free transmitted mbufs back to pool */
-	reclaim_tx_mbuf(txq, cidx, 0);
-	in_use = (int)id - cidx;
-	if (in_use < 0)
-		in_use += (txq->nb_tx_desc - 1);
-
-	/* Make 1 less available, otherwise if we allow all descriptors to be
-	 * filled, when nb_pkts = nb_tx_desc - 1, pidx will be same as old pidx
-	 * and HW will treat this as no new descriptors were added.
-	 * Hence, DMA won't happen with new descriptors.
-	 */
-	avail = txq->nb_tx_desc - 2 - in_use;
-	if (!avail) {
-		PMD_DRV_LOG(ERR, "Tx queue full, in_use = %d", in_use);
-		return 0;
-	}
-
-	if (nb_pkts > avail)
-		nb_pkts = avail;
-
-	// Set the xmit descriptors and control bits
-	for (count = 0; count < nb_pkts; count++) {
-
-		mb = tx_pkts[count];
-		txq->sw_ring[id] = mb;
-		/*Update the descriptor control feilds*/
-		qdma_ul_update_mm_h2c_desc(txq, mb);
-
-		len = rte_pktmbuf_data_len(mb);
-		PMD_DRV_LOG(DEBUG, "xmit number of bytes:%ld, count:%d ",
-				len, count);
-
-#ifndef TANDEM_BOOT_SUPPORTED
-		txq->ep_addr = (txq->ep_addr + len) % DMA_BRAM_SIZE;
-#endif
-		id = txq->q_pidx_info.pidx;
-	}
-
-	/* Make sure writes to the H2C descriptors are synchronized before
-	 * updating PIDX
-	 */
-	rte_wmb();
-
-	/* update pidx pointer */
-	if (count > 0) {
-		PMD_DRV_LOG(INFO, "tx PIDX=%d", txq->q_pidx_info.pidx);
-		qdma_dev->hw_access->qdma_queue_pidx_update(txq->dev,
-			qdma_dev->is_vf,
-			txq->queue_id, 0, &txq->q_pidx_info);
-	}
-
-	ret = dma_wb_monitor(txq, DMA_TO_DEVICE, id);
-	if (ret) {
-		PMD_DRV_LOG(ERR, "DMA Engine write-back monitor "
-				"timeout error occurred, wb-count:%d "
-				"and expected-count:%d\n",
-				txq->wb_status->cidx, id);
-		return 0;
-	}
-
-	PMD_DRV_LOG(DEBUG, " xmit completed with count:%d", count);
-	return count;
-}
-/**
- * DPDK callback for transmitting packets in burst.
- *
- * @param tx_queue
- *   Generic pointer to TX queue structure.
- * @param[in] tx_pkts
- *   Packets to transmit.
- * @param nb_pkts
- *   Number of packets in array.
- *
- * @return
- *   Number of packets successfully transmitted (<= nb_pkts).
- */
-uint16_t qdma_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
-			uint16_t nb_pkts)
-{
-	struct qdma_tx_queue *txq = tx_queue;
-	uint16_t count;
-
-	if (txq->status != RTE_ETH_QUEUE_STATE_STARTED)
-		return 0;
-
-	if (txq->st_mode)
-		count =	qdma_xmit_pkts_st(txq, tx_pkts, nb_pkts);
-	else
-		count =	qdma_xmit_pkts_mm(txq, tx_pkts, nb_pkts);
-
-	return count;
-}
-
-void __rte_cold
-qdma_set_tx_function(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
-		PMD_DRV_LOG(DEBUG, "Using Vector Tx (port %d).",
-			dev->data->port_id);
-		qdma_dev->tx_vec_allowed = true;
-		dev->tx_pkt_burst = qdma_xmit_pkts_vec;
-	} else {
-		PMD_DRV_LOG(DEBUG, "Normal Rx will be used on port %d.",
-				dev->data->port_id);
-		dev->tx_pkt_burst = qdma_xmit_pkts;
-	}
-}
-
-void __rte_cold
-qdma_set_rx_function(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	if (rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_128) {
-		PMD_DRV_LOG(DEBUG, "Using Vector Rx (port %d).",
-			dev->data->port_id);
-		qdma_dev->rx_vec_allowed = true;
-		dev->rx_pkt_burst = qdma_recv_pkts_vec;
-	} else {
-		PMD_DRV_LOG(DEBUG, "Normal Rx will be used on port %d.",
-				dev->data->port_id);
-		dev->rx_pkt_burst = qdma_recv_pkts;
-	}
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.h b/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.h
deleted file mode 100755
index 58ac9e5..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-#ifndef QDMA_DPDK_RXTX_H_
-#define QDMA_DPDK_RXTX_H_
-
-#include "qdma_access_export.h"
-
-/*Supporting functions for user logic pluggability*/
-uint16_t qdma_get_rx_queue_id(void *queue_hndl);
-void qdma_get_device_info(void *queue_hndl,
-		enum qdma_device_type *device_type,
-		enum qdma_ip_type *ip_type);
-struct qdma_ul_st_h2c_desc *get_st_h2c_desc(void *queue_hndl);
-struct qdma_ul_mm_desc *get_mm_h2c_desc(void *queue_hndl);
-uint64_t get_mm_c2h_ep_addr(void *queue_hndl);
-uint64_t get_mm_h2c_ep_addr(void *queue_hndl);
-uint32_t get_mm_buff_size(void *queue_hndl);
-
-uint32_t rx_queue_count(void *rx_queue);
-
-#endif /* QDMA_DPDK_RXTX_H_ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx_vec_sse.c b/QDMA/DPDK/drivers/net/qdma/qdma_rxtx_vec_sse.c
deleted file mode 100755
index 34809dd..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx_vec_sse.c
+++ /dev/null
@@ -1,851 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <rte_mbuf.h>
-#include <rte_cycles.h>
-#include "qdma.h"
-#include "qdma_access_common.h"
-
-#include <fcntl.h>
-#include <unistd.h>
-#include "qdma_rxtx.h"
-#include "qdma_devops.h"
-
-#if defined RTE_ARCH_X86_64
-#include <immintrin.h>
-#include <emmintrin.h>
-#define RTE_QDMA_DESCS_PER_LOOP (2)
-#endif
-
-/* Vector implementation to get packet length from two completion entries */
-static void qdma_ul_get_cmpt_pkt_len_vec(void *ul_cmpt_entry, __m128i *data)
-{
-	union qdma_ul_st_cmpt_ring *cmpt_entry1, *cmpt_entry2;
-	__m128i pkt_len_shift = _mm_set_epi64x(0, 4);
-
-	cmpt_entry1 = (union qdma_ul_st_cmpt_ring *)(ul_cmpt_entry);
-	cmpt_entry2 = cmpt_entry1 + 1;
-
-	/* Read desc statuses backwards to avoid race condition */
-	/* Load a pkt desc */
-	data[1] = _mm_set_epi64x(0, cmpt_entry2->data);
-	/* Find packet length, currently driver needs
-	 * only packet length from completion info
-	 */
-	data[1] = _mm_srl_epi32(data[1], pkt_len_shift);
-
-	/* Load a pkt desc */
-	data[0] = _mm_set_epi64x(0, cmpt_entry1->data);
-	/* Find packet length, currently driver needs
-	 * only packet length from completion info
-	 */
-	data[0] = _mm_srl_epi32(data[0], pkt_len_shift);
-}
-
-/* Vector implementation to update H2C descriptor */
-static int qdma_ul_update_st_h2c_desc_vec(void *qhndl, uint64_t q_offloads,
-				struct rte_mbuf *mb)
-{
-	(void)q_offloads;
-	int nsegs = mb->nb_segs;
-	uint16_t flags = S_H2C_DESC_F_SOP | S_H2C_DESC_F_EOP;
-	uint16_t id;
-	struct qdma_ul_st_h2c_desc *tx_ring_st;
-	struct qdma_tx_queue *txq = (struct qdma_tx_queue *)qhndl;
-
-	tx_ring_st = (struct qdma_ul_st_h2c_desc *)txq->tx_ring;
-	id = txq->q_pidx_info.pidx;
-
-	if (nsegs == 1) {
-		__m128i descriptor;
-		uint16_t datalen = mb->data_len;
-
-		descriptor = _mm_set_epi64x(mb->buf_iova + mb->data_off,
-				(uint64_t)datalen << 16 |
-				(uint64_t)datalen << 32 |
-				(uint64_t)flags << 48);
-		_mm_store_si128((__m128i *)&tx_ring_st[id], descriptor);
-
-		id++;
-		if (unlikely(id >= (txq->nb_tx_desc - 1)))
-			id -= (txq->nb_tx_desc - 1);
-	} else {
-		int pkt_segs = nsegs;
-		while (nsegs && mb) {
-			__m128i descriptor;
-			uint16_t datalen = mb->data_len;
-
-			flags = 0;
-			if (nsegs == pkt_segs)
-				flags |= S_H2C_DESC_F_SOP;
-			if (nsegs == 1)
-				flags |= S_H2C_DESC_F_EOP;
-
-			descriptor = _mm_set_epi64x(mb->buf_iova + mb->data_off,
-					(uint64_t)datalen << 16 |
-					(uint64_t)datalen << 32 |
-					(uint64_t)flags << 48);
-			_mm_store_si128((__m128i *)&tx_ring_st[id], descriptor);
-
-			nsegs--;
-			mb = mb->next;
-			id++;
-			if (unlikely(id >= (txq->nb_tx_desc - 1)))
-				id -= (txq->nb_tx_desc - 1);
-		}
-	}
-
-	txq->q_pidx_info.pidx = id;
-
-	return 0;
-}
-
-/* Process completion ring */
-static int process_cmpt_ring_vec(struct qdma_rx_queue *rxq,
-		uint16_t num_cmpt_entries)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	union qdma_ul_st_cmpt_ring *user_cmpt_entry;
-	uint32_t count = 0;
-	int ret = 0;
-	uint16_t rx_cmpt_tail = rxq->cmpt_cidx_info.wrb_cidx;
-
-	if (likely(!rxq->dump_immediate_data)) {
-		if ((rx_cmpt_tail + num_cmpt_entries) <
-			(rxq->nb_rx_cmpt_desc - 1)) {
-			for (count = 0; count < num_cmpt_entries; count++) {
-				user_cmpt_entry =
-				(union qdma_ul_st_cmpt_ring *)
-				((uint64_t)rxq->cmpt_ring +
-				((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-				ret = qdma_ul_extract_st_cmpt_info(
-						user_cmpt_entry,
-						&rxq->cmpt_data[count]);
-				if (ret != 0) {
-					PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-						"at index %d, queue_id = %d\n",
-						rx_cmpt_tail, rxq->queue_id);
-					rxq->err = 1;
-					return -1;
-				}
-				rx_cmpt_tail++;
-			}
-		} else {
-			while (count < num_cmpt_entries) {
-				user_cmpt_entry =
-				(union qdma_ul_st_cmpt_ring *)
-				((uint64_t)rxq->cmpt_ring +
-				((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-				ret = qdma_ul_extract_st_cmpt_info(
-						user_cmpt_entry,
-						&rxq->cmpt_data[count]);
-				if (ret != 0) {
-					PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-						"at index %d, queue_id = %d\n",
-						rx_cmpt_tail, rxq->queue_id);
-					rxq->err = 1;
-					return -1;
-				}
-
-				rx_cmpt_tail++;
-				if (unlikely(rx_cmpt_tail >=
-					(rxq->nb_rx_cmpt_desc - 1)))
-					rx_cmpt_tail -=
-						(rxq->nb_rx_cmpt_desc - 1);
-				count++;
-			}
-		}
-	} else {
-		while (count < num_cmpt_entries) {
-			user_cmpt_entry =
-			(union qdma_ul_st_cmpt_ring *)
-			((uint64_t)rxq->cmpt_ring +
-			((uint64_t)rx_cmpt_tail * rxq->cmpt_desc_len));
-
-			ret = qdma_ul_extract_st_cmpt_info(
-					user_cmpt_entry,
-					&rxq->cmpt_data[count]);
-			if (ret != 0) {
-				PMD_DRV_LOG(ERR, "Error detected on CMPT ring "
-					"at CMPT index %d, queue_id = %d\n",
-					rx_cmpt_tail, rxq->queue_id);
-				rxq->err = 1;
-				return -1;
-			}
-
-			ret = qdma_ul_process_immediate_data_st((void *)rxq,
-					user_cmpt_entry, rxq->cmpt_desc_len);
-			if (ret < 0) {
-				PMD_DRV_LOG(ERR, "Error processing immediate data "
-					"at CMPT index = %d, queue_id = %d\n",
-					rx_cmpt_tail, rxq->queue_id);
-				return -1;
-			}
-
-			rx_cmpt_tail++;
-			if (unlikely(rx_cmpt_tail >=
-				(rxq->nb_rx_cmpt_desc - 1)))
-				rx_cmpt_tail -= (rxq->nb_rx_cmpt_desc - 1);
-			count++;
-		}
-	}
-
-	// Update the CPMT CIDX
-	rxq->cmpt_cidx_info.wrb_cidx = rx_cmpt_tail;
-	qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(rxq->dev,
-		qdma_dev->is_vf,
-		rxq->queue_id, &rxq->cmpt_cidx_info);
-
-	return 0;
-}
-
-/* Prepare mbuf for one packet */
-static inline
-struct rte_mbuf *prepare_single_packet(struct qdma_rx_queue *rxq,
-		uint16_t cmpt_idx)
-{
-	struct rte_mbuf *mb = NULL;
-	uint16_t id = rxq->rx_tail;
-	uint16_t pkt_length;
-
-	pkt_length = qdma_ul_get_cmpt_pkt_len(&rxq->cmpt_data[cmpt_idx]);
-
-	if (pkt_length) {
-		rxq->stats.pkts++;
-		rxq->stats.bytes += pkt_length;
-
-		if (likely(pkt_length <= rxq->rx_buff_size)) {
-			mb = rxq->sw_ring[id];
-			rxq->sw_ring[id++] = NULL;
-
-			if (unlikely(id >= (rxq->nb_rx_desc - 1)))
-				id -= (rxq->nb_rx_desc - 1);
-
-			rte_mbuf_refcnt_set(mb, 1);
-			mb->nb_segs = 1;
-			mb->port = rxq->port_id;
-			mb->ol_flags = 0;
-			mb->packet_type = 0;
-			mb->pkt_len = pkt_length;
-			mb->data_len = pkt_length;
-		} else {
-			mb = prepare_segmented_packet(rxq, pkt_length, &id);
-		}
-
-		rxq->rx_tail = id;
-	}
-	return mb;
-}
-
-/* Vector implementation to prepare mbufs for packets.
- * Update this API if HW provides more information to be populated in mbuf.
- */
-static uint16_t prepare_packets_vec(struct qdma_rx_queue *rxq,
-			struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
-{
-	struct rte_mbuf *mb;
-	uint16_t count = 0, count_pkts = 0;
-	uint16_t n_pkts = nb_pkts & -2;
-	uint16_t id = rxq->rx_tail;
-	struct rte_mbuf **sw_ring = rxq->sw_ring;
-	uint16_t rx_buff_size = rxq->rx_buff_size;
-	/* mask to shuffle from desc. to mbuf */
-	__m128i shuf_msk = _mm_set_epi8(
-			0xFF, 0xFF, 0xFF, 0xFF,  /* skip 32bits rss */
-			0xFF, 0xFF,      /* skip low 16 bits vlan_macip */
-			1, 0,      /* octet 0~1, 16 bits data_len */
-			0xFF, 0xFF,  /* skip high 16 bits pkt_len, zero out */
-			1, 0,      /* octet 0~1, low 16 bits pkt_len */
-			0xFF, 0xFF,  /* skip 32 bit pkt_type */
-			0xFF, 0xFF
-			);
-	__m128i mbuf_init, pktlen, zero_data;
-
-	mbuf_init = _mm_set_epi64x(0, rxq->mbuf_initializer);
-	pktlen = _mm_setzero_si128();
-	zero_data = _mm_setzero_si128();
-
-	/* compile-time check */
-	RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, pkt_len) !=
-			offsetof(struct rte_mbuf, rx_descriptor_fields1) + 4);
-	RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, data_len) !=
-			offsetof(struct rte_mbuf, rx_descriptor_fields1) + 8);
-	RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, rearm_data) !=
-			RTE_ALIGN(offsetof(struct rte_mbuf, rearm_data), 16));
-
-	for (count = 0; count < n_pkts;
-		count += RTE_QDMA_DESCS_PER_LOOP) {
-		__m128i pkt_len[RTE_QDMA_DESCS_PER_LOOP];
-		__m128i pkt_mb1, pkt_mb2;
-		__m128i mbp1;
-		uint16_t pktlen1, pktlen2;
-
-		qdma_ul_get_cmpt_pkt_len_vec(
-			&rxq->cmpt_data[count], pkt_len);
-
-		pktlen1 = _mm_extract_epi16(pkt_len[0], 0);
-		pktlen2 = _mm_extract_epi16(pkt_len[1], 0);
-
-		/* Check if packets are segmented across descriptors */
-		if ((pktlen1 && (pktlen1 <= rx_buff_size)) &&
-			(pktlen2 && (pktlen2 <= rx_buff_size)) &&
-			((id + RTE_QDMA_DESCS_PER_LOOP) <
-				(rxq->nb_rx_desc - 1))) {
-			/* Load 2 (64 bit) mbuf pointers */
-			mbp1 = _mm_loadu_si128((__m128i *)&sw_ring[id]);
-
-			/* Copy 2 64 bit mbuf point into rx_pkts */
-			_mm_storeu_si128((__m128i *)&rx_pkts[count_pkts], mbp1);
-			_mm_storeu_si128((__m128i *)&sw_ring[id], zero_data);
-
-			/* Pkt 1,2 convert format from desc to pktmbuf */
-			/* We only have packet length to copy */
-			pkt_mb2 = _mm_shuffle_epi8(pkt_len[1], shuf_msk);
-			pkt_mb1 = _mm_shuffle_epi8(pkt_len[0], shuf_msk);
-
-			/* Write the rearm data and the olflags in one write */
-			_mm_store_si128(
-			(__m128i *)&rx_pkts[count_pkts]->rearm_data, mbuf_init);
-			_mm_store_si128(
-			(__m128i *)&rx_pkts[count_pkts + 1]->rearm_data,
-			mbuf_init);
-
-			/* Write packet length */
-			_mm_storeu_si128(
-			(void *)&rx_pkts[count_pkts]->rx_descriptor_fields1,
-			pkt_mb1);
-			_mm_storeu_si128(
-			(void *)&rx_pkts[count_pkts + 1]->rx_descriptor_fields1,
-			pkt_mb2);
-
-			/* Accumulate packet length counter */
-			pktlen = _mm_add_epi64(pktlen,
-				_mm_set_epi16(0, 0, 0, 0,
-					0, 0, 0, pktlen1));
-			pktlen = _mm_add_epi64(pktlen,
-				_mm_set_epi16(0, 0, 0, 0,
-					0, 0, 0, pktlen2));
-
-			count_pkts += RTE_QDMA_DESCS_PER_LOOP;
-			id += RTE_QDMA_DESCS_PER_LOOP;
-		} else {
-			/* Handle packets segmented
-			 * across multiple descriptors
-			 * or ring wrap
-			 */
-			if (pktlen1) {
-				mb = prepare_segmented_packet(rxq,
-					pktlen1, &id);
-				rx_pkts[count_pkts++] = mb;
-				pktlen = _mm_add_epi64(pktlen,
-					_mm_set_epi16(0, 0, 0, 0,
-						0, 0, 0, pktlen1));
-			}
-
-			if (pktlen2) {
-				mb = prepare_segmented_packet(rxq,
-					pktlen2, &id);
-				rx_pkts[count_pkts++] = mb;
-				pktlen = _mm_add_epi64(pktlen,
-					_mm_set_epi16(0, 0, 0, 0,
-						0, 0, 0, pktlen2));
-			}
-		}
-	}
-
-	rxq->stats.pkts += count_pkts;
-	rxq->stats.bytes += _mm_extract_epi64(pktlen, 0);
-	rxq->rx_tail = id;
-
-	/* Handle single packet, if any pending */
-	if (nb_pkts & 1) {
-		mb = prepare_single_packet(rxq, count);
-		if (mb)
-			rx_pkts[count_pkts++] = mb;
-	}
-
-	return count_pkts;
-}
-
-/* Populate C2H ring with new buffers */
-static int rearm_c2h_ring_vec(struct qdma_rx_queue *rxq, uint16_t num_desc)
-{
-	struct qdma_pci_dev *qdma_dev = rxq->dev->data->dev_private;
-	struct rte_mbuf *mb;
-	struct qdma_ul_st_c2h_desc *rx_ring_st =
-			(struct qdma_ul_st_c2h_desc *)rxq->rx_ring;
-	uint16_t mbuf_index = 0;
-	uint16_t id;
-	int rearm_descs;
-
-	id = rxq->q_pidx_info.pidx;
-
-	/* Split the C2H ring updation in two parts.
-	 * First handle till end of ring and then
-	 * handle from beginning of ring, if ring wraps
-	 */
-	if ((id + num_desc) < (rxq->nb_rx_desc - 1))
-		rearm_descs = num_desc;
-	else {
-		rearm_descs = (rxq->nb_rx_desc - 1) - id;
-		rxq->qstats.ring_wrap_cnt++;
-	}
-
-	/* allocate new buffer */
-	if (rte_mempool_get_bulk(rxq->mb_pool, (void *)&rxq->sw_ring[id],
-					rearm_descs) != 0){
-		PMD_DRV_LOG(ERR, "%s(): %d: No MBUFS, queue id = %d,"
-		"mbuf_avail_count = %d,"
-		" mbuf_in_use_count = %d, num_desc_req = %d\n",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool), rearm_descs);
-		return -1;
-	}
-
-	int rearm_cnt = rearm_descs & -2;
-	__m128i head_room = _mm_set_epi64x(RTE_PKTMBUF_HEADROOM,
-			RTE_PKTMBUF_HEADROOM);
-
-	for (mbuf_index = 0; mbuf_index < ((uint16_t)rearm_cnt  & 0xFFFF);
-			mbuf_index += RTE_QDMA_DESCS_PER_LOOP,
-			id += RTE_QDMA_DESCS_PER_LOOP) {
-		__m128i vaddr0, vaddr1;
-		__m128i dma_addr;
-
-		/* load buf_addr(lo 64bit) and buf_iova(hi 64bit) */
-		RTE_BUILD_BUG_ON(offsetof(struct rte_mbuf, buf_iova) !=
-				offsetof(struct rte_mbuf, buf_addr) + 8);
-
-		/* Load two mbufs data addresses */
-		vaddr0 = _mm_loadu_si128(
-				(__m128i *)&(rxq->sw_ring[id]->buf_addr));
-		vaddr1 = _mm_loadu_si128(
-				(__m128i *)&(rxq->sw_ring[id+1]->buf_addr));
-
-		/* Extract physical addresses of two mbufs */
-		dma_addr = _mm_unpackhi_epi64(vaddr0, vaddr1);
-
-		/* Add headroom to dma_addr */
-		dma_addr = _mm_add_epi64(dma_addr, head_room);
-
-		/* Write C2H desc with physical dma_addr */
-		_mm_storeu_si128((__m128i *)&rx_ring_st[id], dma_addr);
-	}
-
-	if (rearm_descs & 1) {
-		mb = rxq->sw_ring[id];
-
-		/* rearm descriptor */
-		rx_ring_st[id].dst_addr =
-				(uint64_t)mb->buf_iova +
-					RTE_PKTMBUF_HEADROOM;
-		id++;
-	}
-
-	if (unlikely(id >= (rxq->nb_rx_desc - 1)))
-		id -= (rxq->nb_rx_desc - 1);
-
-	/* Handle from beginning of ring, if ring wrapped */
-	rearm_descs = num_desc - rearm_descs;
-	if (unlikely(rearm_descs)) {
-		/* allocate new buffer */
-		if (rte_mempool_get_bulk(rxq->mb_pool,
-			(void *)&rxq->sw_ring[id], rearm_descs) != 0) {
-			PMD_DRV_LOG(ERR, "%s(): %d: No MBUFS, queue id = %d,"
-			"mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d, num_desc_req = %d\n",
-			__func__, __LINE__, rxq->queue_id,
-			rte_mempool_avail_count(rxq->mb_pool),
-			rte_mempool_in_use_count(rxq->mb_pool), rearm_descs);
-
-			rxq->q_pidx_info.pidx = id;
-			qdma_dev->hw_access->qdma_queue_pidx_update(rxq->dev,
-				qdma_dev->is_vf,
-				rxq->queue_id, 1, &rxq->q_pidx_info);
-#ifdef LATENCY_MEASUREMENT
-			/* start the timer */
-			rxq->qstats.pkt_lat.prev = rte_get_timer_cycles();
-#endif
-			return -1;
-		}
-
-		for (mbuf_index = 0;
-				mbuf_index < ((uint16_t)rearm_descs & 0xFFFF);
-				mbuf_index++, id++) {
-			mb = rxq->sw_ring[id];
-			mb->data_off = RTE_PKTMBUF_HEADROOM;
-
-			/* rearm descriptor */
-			rx_ring_st[id].dst_addr =
-					(uint64_t)mb->buf_iova +
-						RTE_PKTMBUF_HEADROOM;
-		}
-	}
-
-	PMD_DRV_LOG(DEBUG, "%s(): %d: PIDX Update: queue id = %d, "
-				"num_desc = %d",
-				__func__, __LINE__, rxq->queue_id,
-				num_desc);
-
-	/* Make sure writes to the C2H descriptors are
-	 * synchronized before updating PIDX
-	 */
-	rte_wmb();
-
-	rxq->q_pidx_info.pidx = id;
-	qdma_dev->hw_access->qdma_queue_pidx_update(rxq->dev,
-		qdma_dev->is_vf,
-		rxq->queue_id, 1, &rxq->q_pidx_info);
-
-#ifdef LATENCY_MEASUREMENT
-	/* start the timer */
-	rxq->qstats.pkt_lat.prev = rte_get_timer_cycles();
-#endif
-	return 0;
-}
-
-/* Receive API for Streaming mode */
-uint16_t qdma_recv_pkts_st_vec(struct qdma_rx_queue *rxq,
-		struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
-{
-	uint16_t count_pkts;
-	struct wb_status *wb_status;
-	uint16_t nb_pkts_avail = 0;
-	uint16_t rx_cmpt_tail = 0;
-	uint16_t cmpt_pidx, c2h_pidx;
-	uint16_t pending_desc;
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(rxq->bypass_desc_sz);
-#endif
-
-	if (unlikely(rxq->err))
-		return 0;
-
-	PMD_DRV_LOG(DEBUG, "recv start on rx queue-id :%d, on "
-			"tail index:%d number of pkts %d",
-			rxq->queue_id, rxq->rx_tail, nb_pkts);
-	wb_status = rxq->wb_status;
-	rx_cmpt_tail = rxq->cmpt_cidx_info.wrb_cidx;
-
-#ifdef TEST_64B_DESC_BYPASS
-	if (unlikely(rxq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		PMD_DRV_LOG(DEBUG, "For  RX ST-mode, example"
-				" design doesn't support 64byte descriptor\n");
-		return 0;
-	}
-#endif
-	cmpt_pidx = wb_status->pidx;
-
-#ifdef LATENCY_MEASUREMENT
-	if (cmpt_pidx != rxq->qstats.wrb_pidx) {
-		/* stop the timer */
-		rxq->qstats.pkt_lat.curr = rte_get_timer_cycles();
-		c2h_pidx_to_cmpt_pidx_lat[rxq->queue_id][rxq->qstats.lat_cnt] =
-			rxq->qstats.pkt_lat.curr - rxq->qstats.pkt_lat.prev;
-		rxq->qstats.lat_cnt = ((rxq->qstats.lat_cnt + 1) % LATENCY_CNT);
-	}
-#endif
-
-	if (rx_cmpt_tail < cmpt_pidx)
-		nb_pkts_avail = cmpt_pidx - rx_cmpt_tail;
-	else if (rx_cmpt_tail > cmpt_pidx)
-		nb_pkts_avail = rxq->nb_rx_cmpt_desc - 1 - rx_cmpt_tail +
-				cmpt_pidx;
-
-	if (nb_pkts_avail == 0) {
-		PMD_DRV_LOG(DEBUG, "%s(): %d: nb_pkts_avail = 0\n",
-				__func__, __LINE__);
-		return 0;
-	}
-
-	nb_pkts = RTE_MIN(nb_pkts, RTE_MIN(nb_pkts_avail, QDMA_MAX_BURST_SIZE));
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	PMD_DRV_LOG(DEBUG, "%s(): %d: queue id = %d, mbuf_avail_count = %d, "
-			"mbuf_in_use_count = %d",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-	/* Make sure reads to CMPT ring are synchronized before
-	 * accessing the ring
-	 */
-	rte_rmb();
-#ifdef QDMA_LATENCY_OPTIMIZED
-	adapt_update_counter(rxq, nb_pkts_avail);
-#endif //QDMA_LATENCY_OPTIMIZED
-
-	int ret = process_cmpt_ring_vec(rxq, nb_pkts);
-	if (unlikely(ret))
-		return 0;
-
-	if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-		PMD_DRV_LOG(DEBUG, "%s(): %d: rxq->status = %d\n",
-				__func__, __LINE__, rxq->status);
-		return 0;
-	}
-
-	count_pkts = prepare_packets_vec(rxq, rx_pkts, nb_pkts);
-
-	c2h_pidx = rxq->q_pidx_info.pidx;
-	pending_desc = rxq->rx_tail - c2h_pidx - 1;
-	if (rxq->rx_tail < (c2h_pidx + 1))
-		pending_desc = rxq->nb_rx_desc - 2 + rxq->rx_tail -
-				c2h_pidx;
-
-	rxq->qstats.pidx = rxq->q_pidx_info.pidx;
-	rxq->qstats.wrb_pidx = rxq->wb_status->pidx;
-	rxq->qstats.wrb_cidx = rxq->wb_status->cidx;
-	rxq->qstats.rxq_cmpt_tail = rx_cmpt_tail;
-	rxq->qstats.pending_desc = pending_desc;
-	rxq->qstats.mbuf_avail_cnt = rte_mempool_avail_count(rxq->mb_pool);
-	rxq->qstats.mbuf_in_use_cnt = rte_mempool_in_use_count(rxq->mb_pool);
-
-	/* Batch the PIDX updates, this minimizes overhead on
-	 * descriptor engine
-	 */
-	if (pending_desc >= MIN_RX_PIDX_UPDATE_THRESHOLD)
-		rearm_c2h_ring_vec(rxq, pending_desc);
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	PMD_DRV_LOG(DEBUG, "%s(): %d: queue id = %d, mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d, count_pkts = %d",
-		__func__, __LINE__, rxq->queue_id,
-		rte_mempool_avail_count(rxq->mb_pool),
-		rte_mempool_in_use_count(rxq->mb_pool), count_pkts);
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-	PMD_DRV_LOG(DEBUG, " Recv complete with hw cidx :%d",
-				rxq->wb_status->cidx);
-	PMD_DRV_LOG(DEBUG, " Recv complete with hw pidx :%d\n",
-				rxq->wb_status->pidx);
-
-	return count_pkts;
-}
-
-/**
- * DPDK callback for receiving packets in burst.
- *
- * @param rx_queue
- *   Generic pointer to Rx queue structure.
- * @param[out] rx_pkts
- *   Array to store received packets.
- * @param nb_pkts
- *   Maximum number of packets in array.
- *
- * @return
- *   Number of packets successfully received (<= nb_pkts).
- */
-uint16_t qdma_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts,
-			uint16_t nb_pkts)
-{
-	struct qdma_rx_queue *rxq = rx_queue;
-	uint32_t count;
-
-	if (rxq->st_mode)
-		count = qdma_recv_pkts_st_vec(rxq, rx_pkts, nb_pkts);
-	else
-		count = qdma_recv_pkts_mm(rxq, rx_pkts, nb_pkts);
-
-	return count;
-}
-
-/* Transmit API for Streaming mode */
-uint16_t qdma_xmit_pkts_st_vec(struct qdma_tx_queue *txq,
-		struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
-{
-	struct rte_mbuf *mb;
-	uint64_t pkt_len = 0;
-	int avail, in_use, ret, nsegs;
-	uint16_t cidx = 0;
-	uint16_t count = 0, id;
-	struct qdma_pci_dev *qdma_dev = txq->dev->data->dev_private;
-
-#ifdef TEST_64B_DESC_BYPASS
-	int bypass_desc_sz_idx = qmda_get_desc_sz_idx(txq->bypass_desc_sz);
-
-	if (unlikely(txq->en_bypass &&
-			bypass_desc_sz_idx == SW_DESC_CNTXT_64B_BYPASS_DMA)) {
-		return qdma_xmit_64B_desc_bypass(txq, tx_pkts, nb_pkts);
-	}
-#endif
-
-	id = txq->q_pidx_info.pidx;
-
-	/* Make sure reads to Tx ring are synchronized before
-	 * accessing the status descriptor.
-	 */
-	rte_rmb();
-
-	cidx = txq->wb_status->cidx;
-
-#ifdef LATENCY_MEASUREMENT
-	uint32_t cidx_cnt = 0;
-	if (cidx != txq->qstats.wrb_cidx) {
-		if ((cidx - txq->qstats.wrb_cidx) > 0) {
-			cidx_cnt = cidx - txq->qstats.wrb_cidx;
-
-			if (cidx_cnt <= 8)
-				txq->qstats.wrb_cidx_cnt_lt_8++;
-			else if (cidx_cnt > 8 && cidx_cnt <= 32)
-				txq->qstats.wrb_cidx_cnt_8_to_32++;
-			else if (cidx_cnt > 32 && cidx_cnt <= 64)
-				txq->qstats.wrb_cidx_cnt_32_to_64++;
-			else
-				txq->qstats.wrb_cidx_cnt_gt_64++;
-		}
-
-		/* stop the timer */
-		txq->qstats.pkt_lat.curr = rte_get_timer_cycles();
-		h2c_pidx_to_hw_cidx_lat[txq->queue_id][txq->qstats.lat_cnt] =
-			txq->qstats.pkt_lat.curr - txq->qstats.pkt_lat.prev;
-		txq->qstats.lat_cnt = ((txq->qstats.lat_cnt + 1) % LATENCY_CNT);
-	} else {
-		txq->qstats.wrb_cidx_cnt_no_change++;
-	}
-#endif
-
-	PMD_DRV_LOG(DEBUG, "Xmit start on tx queue-id:%d, tail index:%d\n",
-			txq->queue_id, id);
-
-	/* Free transmitted mbufs back to pool */
-	reclaim_tx_mbuf(txq, cidx, 0);
-
-	in_use = (int)id - cidx;
-	if (in_use < 0)
-		in_use += (txq->nb_tx_desc - 1);
-
-	/* Make 1 less available, otherwise if we allow all descriptors
-	 * to be filled, when nb_pkts = nb_tx_desc - 1, pidx will be same
-	 * as old pidx and HW will treat this as no new descriptors were added.
-	 * Hence, DMA won't happen with new descriptors.
-	 */
-	avail = txq->nb_tx_desc - 2 - in_use;
-
-	if (unlikely(!avail)) {
-		txq->qstats.txq_full_cnt++;
-		PMD_DRV_LOG(DEBUG, "Tx queue full, in_use = %d", in_use);
-		return 0;
-	}
-
-	for (count = 0; count < nb_pkts; count++) {
-		mb = tx_pkts[count];
-		nsegs = mb->nb_segs;
-		if (nsegs > avail) {
-			/* Number of segments in current mbuf are greater
-			 * than number of descriptors available,
-			 * hence update PIDX and return
-			 */
-			break;
-		}
-		avail -= nsegs;
-		id = txq->q_pidx_info.pidx;
-		txq->sw_ring[id] = mb;
-		pkt_len += rte_pktmbuf_pkt_len(mb);
-
-		ret = qdma_ul_update_st_h2c_desc_vec(txq, txq->offloads, mb);
-
-		if (unlikely(ret < 0))
-			break;
-	}
-
-	txq->stats.pkts += count;
-	txq->stats.bytes += pkt_len;
-
-	txq->qstats.pidx = id;
-	txq->qstats.wrb_cidx = cidx;
-	txq->qstats.txq_tail = txq->tx_fl_tail;
-	txq->qstats.in_use_desc = in_use;
-	txq->qstats.nb_pkts = nb_pkts;
-
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	rte_spinlock_lock(&txq->pidx_update_lock);
-#endif
-	txq->tx_desc_pend += count;
-
-	/* Send PIDX update only if pending desc is more than threshold
-	 * Saves frequent Hardware transactions
-	 */
-	if (txq->tx_desc_pend >= MIN_TX_PIDX_UPDATE_THRESHOLD) {
-		qdma_dev->hw_access->qdma_queue_pidx_update(txq->dev,
-			qdma_dev->is_vf,
-			txq->queue_id, 0, &txq->q_pidx_info);
-
-		txq->tx_desc_pend = 0;
-
-#ifdef LATENCY_MEASUREMENT
-		/* start the timer */
-		txq->qstats.pkt_lat.prev = rte_get_timer_cycles();
-#endif
-	}
-#if (MIN_TX_PIDX_UPDATE_THRESHOLD > 1)
-	rte_spinlock_unlock(&txq->pidx_update_lock);
-#endif
-	PMD_DRV_LOG(DEBUG, " xmit completed with count:%d\n", count);
-
-	return count;
-}
-
-/**
- * DPDK callback for transmitting packets in burst.
- *
- * @param tx_queue
- *   Generic pointer to TX queue structure.
- * @param[in] tx_pkts
- *   Packets to transmit.
- * @param nb_pkts
- *   Number of packets in array.
- *
- * @return
- *   Number of packets successfully transmitted (<= nb_pkts).
- */
-uint16_t qdma_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
-			uint16_t nb_pkts)
-{
-	struct qdma_tx_queue *txq = tx_queue;
-	uint16_t count;
-
-	if (txq->status != RTE_ETH_QUEUE_STATE_STARTED)
-		return 0;
-
-	if (txq->st_mode)
-		count =	qdma_xmit_pkts_st_vec(txq, tx_pkts, nb_pkts);
-	else
-		count =	qdma_xmit_pkts_mm(txq, tx_pkts, nb_pkts);
-
-	return count;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_user.c b/QDMA/DPDK/drivers/net/qdma/qdma_user.c
deleted file mode 100755
index a487de6..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_user.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <rte_mbuf.h>
-#include <rte_cycles.h>
-#include <rte_ethdev.h>
-#include "qdma_user.h"
-#include "qdma_access_common.h"
-#include "qdma_log.h"
-
-#include <fcntl.h>
-#include <unistd.h>
-
-/**
- * Extract the fields of given completion entry in the completion ring.
- *
- * @param ul_cmpt_entry
- *   Pointer to completion entry to be extracted.
- * @param cmpt_info
- *   Pointer to variable to which completion entry details to be extracted.
- *
- * @return
- *   0 on success and -1 on failure.
- */
-int qdma_ul_extract_st_cmpt_info(void *ul_cmpt_entry, void *cmpt_info)
-{
-	union qdma_ul_st_cmpt_ring *cmpt_data, *cmpt_desc;
-
-	cmpt_desc = (union qdma_ul_st_cmpt_ring *)(ul_cmpt_entry);
-	cmpt_data = (union qdma_ul_st_cmpt_ring *)(cmpt_info);
-
-	if (unlikely(cmpt_desc->err || cmpt_desc->data_frmt))
-		return -1;
-
-	cmpt_data->data = cmpt_desc->data;
-	if (unlikely(!cmpt_desc->desc_used))
-		cmpt_data->length = 0;
-
-	return 0;
-}
-
-/**
- * Extract the packet length from the given completion entry.
- *
- * @param ul_cmpt_entry
- *   Pointer to completion entry to be extracted.
- *
- * @return
- *   Packet length
- */
-uint16_t qdma_ul_get_cmpt_pkt_len(void *ul_cmpt_entry)
-{
-	return ((union qdma_ul_st_cmpt_ring *)ul_cmpt_entry)->length;
-}
-
-/**
- * Processes the immediate data for the given completion ring entry
- * and stores in a file.
- *
- * @param qhndl
- *   Pointer to RX queue handle.
- * @param cmpt_desc_len
- *   Completion descriptor length.
- * @param cmpt_entry
- *   Pointer to completion entry to be processed.
- *
- * @return
- *   None.
- */
-int qdma_ul_process_immediate_data_st(void *qhndl, void *cmpt_entry,
-			uint16_t cmpt_desc_len)
-{
-	int ofd;
-	char fln[50];
-#ifndef TEST_64B_DESC_BYPASS
-	uint16_t i = 0;
-	enum qdma_device_type dev_type;
-	enum qdma_ip_type ip_type;
-#else
-	int ret = 0;
-#endif
-	uint16_t queue_id = 0;
-
-	queue_id = qdma_get_rx_queue_id(qhndl);
-	snprintf(fln, sizeof(fln), "q_%d_%s", queue_id,
-			"immmediate_data.txt");
-	ofd = open(fln, O_RDWR | O_CREAT | O_APPEND |
-			O_SYNC, 0666);
-	if (ofd < 0) {
-		PMD_DRV_LOG(INFO, "recv on qhndl[%d] CMPT, "
-				"unable to create outfile "
-				" to dump immediate data",
-				queue_id);
-		return ofd;
-	}
-#ifdef TEST_64B_DESC_BYPASS
-	ret = write(ofd, cmpt_entry, cmpt_desc_len);
-	if (ret < cmpt_desc_len)
-		PMD_DRV_LOG(DEBUG, "recv on rxq[%d] CMPT, "
-			"immediate data len: %d, "
-			"written to outfile :%d bytes",
-			 queue_id, cmpt_desc_len,
-			 ret);
-#else
-	qdma_get_device_info(qhndl, &dev_type, &ip_type);
-
-	if (ip_type == QDMA_VERSAL_HARD_IP &&
-			dev_type == QDMA_DEVICE_VERSAL_CPM4) {
-		//Ignoring first 20 bits of length feild
-		dprintf(ofd, "%02x",
-			(*((uint8_t *)cmpt_entry + 2) & 0xF0));
-		for (i = 3; i < (cmpt_desc_len) ; i++)
-			dprintf(ofd, "%02x",
-				*((uint8_t *)cmpt_entry + i));
-	} else {
-		dprintf(ofd, "%02x",
-			(*((uint8_t *)cmpt_entry) & 0xF0));
-		for (i = 1; i < (cmpt_desc_len) ; i++)
-			dprintf(ofd, "%02x",
-				*((uint8_t *)cmpt_entry + i));
-	}
-#endif
-
-	close(ofd);
-	return 0;
-}
-
-/**
- * Updates the ST H2C descriptor.
- *
- * @param qhndl
- *   Pointer to TX queue handle.
- * @param q_offloads
- *   Offloads supported for the queue.
- * @param mb
- *   Pointer to memory buffer.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_st_h2c_desc(void *qhndl, uint64_t q_offloads,
-				struct rte_mbuf *mb)
-{
-	(void)q_offloads;
-	struct qdma_ul_st_h2c_desc *desc_info;
-	int nsegs = mb->nb_segs;
-	int pkt_segs = nsegs;
-
-	if (nsegs == 1) {
-		desc_info = get_st_h2c_desc(qhndl);
-		desc_info->len = rte_pktmbuf_data_len(mb);
-		desc_info->pld_len = desc_info->len;
-		desc_info->src_addr = mb->buf_iova + mb->data_off;
-		desc_info->flags = (S_H2C_DESC_F_SOP | S_H2C_DESC_F_EOP);
-		desc_info->cdh_flags = 0;
-		return 0;
-	}
-
-	while (nsegs && mb) {
-		desc_info = get_st_h2c_desc(qhndl);
-
-		desc_info->len = rte_pktmbuf_data_len(mb);
-		desc_info->pld_len = desc_info->len;
-		desc_info->src_addr = mb->buf_iova + mb->data_off;
-		desc_info->flags = 0;
-
-		desc_info->flags |= (nsegs == pkt_segs) ? S_H2C_DESC_F_SOP : 0;
-		desc_info->flags |= (nsegs == 1) ? S_H2C_DESC_F_EOP : 0;
-
-		desc_info->cdh_flags = 0;
-
-		nsegs--;
-		mb = mb->next;
-	}
-
-	return 0;
-}
-
-/**
- * updates the MM c2h descriptor.
- *
- * @param qhndl
- *   Pointer to RX queue handle.
- * @param mb
- *   Pointer to memory buffer.
- * @param desc
- *   Pointer to descriptor entry.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_mm_c2h_desc(void *qhndl, struct rte_mbuf *mb, void *desc)
-{
-	struct qdma_ul_mm_desc *desc_info = (struct qdma_ul_mm_desc *)desc;
-
-	desc_info->src_addr = get_mm_c2h_ep_addr(qhndl);
-	/* make it so the data pointer starts there too... */
-	mb->data_off = RTE_PKTMBUF_HEADROOM;
-	/* low 32-bits of phys addr must be 4KB aligned... */
-	desc_info->dst_addr = (uint64_t)mb->buf_iova + RTE_PKTMBUF_HEADROOM;
-	desc_info->dv = 1;
-	desc_info->eop = 1;
-	desc_info->sop = 1;
-	desc_info->len = (int)get_mm_buff_size(qhndl);
-
-	return 0;
-}
-
-/**
- * updates the MM h2c descriptor.
- *
- * @param qhndl
- *   Pointer to TX queue handle.
- * @param mb
- *   Pointer to memory buffer.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_mm_h2c_desc(void *qhndl, struct rte_mbuf *mb)
-{
-	struct qdma_ul_mm_desc *desc_info;
-
-	desc_info = (struct qdma_ul_mm_desc *)get_mm_h2c_desc(qhndl);
-	desc_info->src_addr = mb->buf_iova + mb->data_off;
-	desc_info->dst_addr = get_mm_h2c_ep_addr(qhndl);
-	desc_info->dv = 1;
-	desc_info->eop = 1;
-	desc_info->sop = 1;
-	desc_info->len = rte_pktmbuf_data_len(mb);
-
-	return 0;
-}
-
-/**
- * Processes the completion data from the given completion entry.
- *
- * @param cmpt_entry
- *   Pointer to completion entry to be processed.
- * @param cmpt_desc_len
- *   Completion descriptor length.
- * @param cmpt_buff
- *   Pointer to the data buffer to which the data will be extracted.
- *
- * @return
- *   None.
- */
-int qdma_ul_process_immediate_data(void *cmpt_entry, uint16_t cmpt_desc_len,
-				char *cmpt_buff)
-{
-	uint16_t i = 0;
-	char *cmpt_buff_ptr;
-	struct qdma_ul_cmpt_ring *cmpt_desc =
-			(struct qdma_ul_cmpt_ring *)(cmpt_entry);
-
-	if (unlikely(cmpt_desc->err || cmpt_desc->data_frmt))
-		return -1;
-
-	cmpt_buff_ptr = (char *)cmpt_buff;
-	*(cmpt_buff_ptr) = (*((uint8_t *)cmpt_desc) & 0xF0);
-	for (i = 1; i < (cmpt_desc_len); i++)
-		*(cmpt_buff_ptr + i) = (*((uint8_t *)cmpt_desc + i));
-
-	return 0;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_user.h b/QDMA/DPDK/drivers/net/qdma/qdma_user.h
deleted file mode 100755
index 9c3de6f..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_user.h
+++ /dev/null
@@ -1,253 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2018-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_USER_H__
-#define __QDMA_USER_H__
-/**
- * @file
- * @brief This file contains example design/user logic controlled
- * data structures and functions
- * The driver is specific to an example design, if the example design
- * changes user controlled parameters, this file needs to be modified
- * appropriately.
- * Structures for Completion entry, Descriptor bypass can be added here.
- */
-
-#include "qdma_rxtx.h"
- /**
-  * C2H Completion entry structure
-  * This structure is specific for the example design.
-  * Processing of this ring happens in qdma_rxtx.c.
-  */
-union qdma_ul_st_cmpt_ring {
-	volatile uint64_t data;
-	struct {
-		/* For 2018.2 IP, this field determines the
-		 * Standard or User format of completion entry
-		 */
-		volatile uint32_t	data_frmt:1;
-
-		/* This field inverts every time PIDX wraps
-		 * the completion ring
-		 */
-		volatile uint32_t	color:1;
-
-		/* Indicates that C2H engine encountered
-		 * a descriptor error
-		 */
-		volatile uint32_t	err:1;
-
-		/* Indicates that the completion packet
-		 * consumes descriptor in C2H ring
-		 */
-		volatile uint32_t	desc_used:1;
-
-		/* Indicates length of the data packet */
-		volatile uint32_t	length:16;
-
-		/* Reserved field */
-		volatile uint32_t	user_rsv:4;
-
-		/* User logic defined data of
-		 * length based on CMPT entry
-		 * length
-		 */
-		volatile uint8_t	user_def[];
-	};
-};
-
-
- /**
-  * Completion entry structure
-  * This structure is specific for the example design.
-  * Currently this structure is used for the processing
-  * of the MM completion ring in rte_pmd_qdma.c.
-  */
-struct __attribute__ ((packed)) qdma_ul_cmpt_ring
-{
-	volatile uint32_t	data_frmt:1; /* For 2018.2 IP, this field
-					      * determines the Standard or User
-					      * format of completion entry
-					      */
-	volatile uint32_t	color:1;     /* This field inverts every time
-					      * PIDX wraps the completion ring
-					      */
-	volatile uint32_t	err:1;       /* Indicates that C2H engine
-					      * encountered a descriptor
-					      * error
-					      */
-	volatile uint32_t	rsv:1;   /* Reserved */
-	volatile uint8_t	user_def[];    /* User logic defined data of
-						* length based on CMPT entry
-						* length
-						*/
-};
-
-/** ST C2H Descriptor **/
-struct __attribute__ ((packed)) qdma_ul_st_c2h_desc
-{
-	uint64_t	dst_addr;
-};
-
-#define S_H2C_DESC_F_SOP		1
-#define S_H2C_DESC_F_EOP		2
-
-/* pld_len and flags members are part of custom descriptor format needed
- * by example design for ST loopback and desc bypass
- */
-
-/** ST H2C Descriptor **/
-struct __attribute__ ((packed)) qdma_ul_st_h2c_desc
-{
-	volatile uint16_t	cdh_flags;
-	volatile uint16_t	pld_len;
-	volatile uint16_t	len;
-	volatile uint16_t	flags;
-	volatile uint64_t	src_addr;
-};
-
-/** MM Descriptor **/
-struct __attribute__ ((packed)) qdma_ul_mm_desc
-{
-	volatile uint64_t	src_addr;
-	volatile uint64_t	len:28;
-	volatile uint64_t	dv:1;
-	volatile uint64_t	sop:1;
-	volatile uint64_t	eop:1;
-	volatile uint64_t	rsvd:33;
-	volatile uint64_t	dst_addr;
-	volatile uint64_t	rsvd2;
-};
-
-/**
- * Extract the fields of given completion entry in the completion ring.
- *
- * @param ul_cmpt_entry
- *   Pointer to completion entry to be extracted.
- * @param cmpt_info
- *   Pointer to structure to which completion entry details needs to be filled.
- *
- * @return
- *   0 on success and -ve on error.
- */
-int qdma_ul_extract_st_cmpt_info(void *ul_cmpt_entry, void *cmpt_info);
-
-/**
- * Extract the packet length from the given completion entry.
- *
- * @param ul_cmpt_entry
- *   Pointer to completion entry to be extracted.
- *
- * @return
- *   Packet length
- */
-uint16_t qdma_ul_get_cmpt_pkt_len(void *ul_cmpt_entry);
-
-/**
- * Processes the immediate data for the given completion ring entry
- * and stores the immediate data in a file.
- *
- * @param qhndl
- *   Pointer to RX queue handle.
- * @param cmpt_entry
- *   Pointer to completion entry to be processed.
- * @param cmpt_desc_len
- *   Completion descriptor length.
- *
- * @return
- *   None.
- */
-int qdma_ul_process_immediate_data_st(void *qhndl, void *cmpt_entry,
-			uint16_t cmpt_desc_len);
-
-/**
- * Updates the ST H2C descriptor
- *
- * @param qhndl
- *   Pointer to TX queue handle.
- * @param q_offloads
- *   Offloads supported for the queue.
- * @param mb
- *   Pointer to memory buffer.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_st_h2c_desc(void *qhndl, uint64_t q_offloads,
-				struct rte_mbuf *mb);
-
-/**
- * Updates the MM c2h descriptor.
- *
- * @param qhndl
- *   Pointer to RX queue handle.
- * @param mb
- *   Pointer to memory buffer.
- * @param desc
- *   Pointer to descriptor entry.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_mm_c2h_desc(void *qhndl, struct rte_mbuf *mb, void *desc);
-
-/**
- * updates the MM h2c descriptor.
- *
- * @param qhndl
- *   Pointer to TX queue handle.
- * @param mb
- *   Pointer to memory buffer.
- *
- * @return
- *   None.
- */
-int qdma_ul_update_mm_h2c_desc(void *qhndl, struct rte_mbuf *mb);
-
-/**
- * Processes the completion data from the given completion entry.
- *
- * @param cmpt_entry
- *   Pointer to completion entry to be processed.
- * @param cmpt_desc_len
- *   Completion descriptor length.
- * @param cmpt_buff
- *   Pointer to the data buffer to which the data will be extracted.
- *
- * @return
- *   None.
- */
-int qdma_ul_process_immediate_data(void *cmpt_entry, uint16_t cmpt_desc_len,
-			char *cmpt_buff);
-
-#endif /* ifndef __QDMA_USER_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_vf_ethdev.c b/QDMA/DPDK/drivers/net/qdma/qdma_vf_ethdev.c
deleted file mode 100755
index 219af04..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_vf_ethdev.c
+++ /dev/null
@@ -1,1265 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_cycles.h>
-#include <rte_alarm.h>
-#include <unistd.h>
-#include <string.h>
-#include <linux/pci.h>
-#include "qdma.h"
-#include "version.h"
-#include "qdma_access_common.h"
-#include "qdma_mbox_protocol.h"
-#include "qdma_mbox.h"
-#include "qdma_devops.h"
-
-static int eth_qdma_vf_dev_init(struct rte_eth_dev *dev);
-static int eth_qdma_vf_dev_uninit(struct rte_eth_dev *dev);
-
-/*
- * The set of PCI devices this driver supports
- */
-static struct rte_pci_id qdma_vf_pci_id_tbl[] = {
-#define RTE_PCI_DEV_ID_DECL(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
-#ifndef PCI_VENDOR_ID_XILINX
-#define PCI_VENDOR_ID_XILINX 0x10ee
-#endif
-
-	/** Gen 1 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa011)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa111)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa211)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa311)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa014)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa114)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa214)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa314)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa018)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa118)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa218)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa318)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa01f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa11f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa21f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa31f)	/* VF on PF 3 */
-
-	/** Gen 2 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa021)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa121)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa221)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa321)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa024)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa124)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa224)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa324)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa028)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa128)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa228)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa328)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa02f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa12f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa22f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa32f)	/* VF on PF 3 */
-
-	/** Gen 3 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa031)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa131)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa231)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa331)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa034)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa134)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa234)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa334)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa038)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa138)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa238)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa338)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa03f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa13f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa23f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa33f)	/* VF on PF 3 */
-
-	/** Gen 4 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa041)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa141)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa241)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa341)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa044)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa144)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa244)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa344)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa048)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa148)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa248)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xa348)	/* VF on PF 3 */
-
-	/** Versal */
-	/** Gen 1 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc011)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc111)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc211)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc311)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc014)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc114)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc214)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc314)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc018)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc118)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc218)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc318)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc01f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc11f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc21f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc31f)	/* VF on PF 3 */
-
-	/** Gen 2 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc021)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc121)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc221)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc321)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc024)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc124)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc224)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc324)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc028)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc128)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc228)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc328)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc02f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc12f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc22f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc32f)	/* VF on PF 3 */
-
-	/** Gen 3 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc031)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc131)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc231)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc331)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc034)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc134)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc234)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc334)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc038)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc138)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc238)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc338)	/* VF on PF 3 */
-	/** PCIe lane width x16 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc03f)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc13f)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc23f)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc33f)	/* VF on PF 3 */
-
-	/** Gen 4 VF */
-	/** PCIe lane width x1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc041)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc141)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc241)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc341)	/* VF on PF 3 */
-	/** PCIe lane width x4 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc044)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc144)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc244)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc344)	/* VF on PF 3 */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc048)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc148)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc248)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc348)	/* VF on PF 3 */
-
-	/** Gen 5 VF */
-	/** PCIe lane width x8 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc058)	/* VF on PF 0 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc158)	/* VF on PF 1 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc258)	/* VF on PF 2 */
-	RTE_PCI_DEV_ID_DECL(PCI_VENDOR_ID_XILINX, 0xc358)	/* VF on PF 3 */
-
-	{ .vendor_id = 0, /* sentinel */ },
-};
-
-static int qdma_ethdev_online(struct rte_eth_dev *dev)
-{
-	int rv = 0;
-	int qbase = -1;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-
-	if (!m)
-		return -ENOMEM;
-
-	qmda_mbox_compose_vf_online(qdma_dev->func_id, 0, &qbase, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0)
-		PMD_DRV_LOG(ERR, "%x, send hello failed %d.\n",
-			    qdma_dev->func_id, rv);
-
-	rv = qdma_mbox_vf_dev_info_get(m->raw_data,
-				&qdma_dev->dev_cap,
-				&qdma_dev->dma_device_index);
-
-	if (rv < 0)
-		PMD_DRV_LOG(ERR, "%x, failed to get dev info %d.\n",
-				qdma_dev->func_id, rv);
-	else {
-		qdma_mbox_msg_free(m);
-	}
-	return rv;
-}
-
-static int qdma_ethdev_offline(struct rte_eth_dev *dev)
-{
-	int rv;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_offline(qdma_dev->func_id, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, 0);
-	if (rv < 0)
-		PMD_DRV_LOG(ERR, "%x, send bye failed %d.\n",
-			    qdma_dev->func_id, rv);
-
-	return rv;
-}
-
-static int qdma_vf_set_qrange(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m;
-	int rv = 0;
-
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_fmap_prog(qdma_dev->func_id,
-					(uint16_t)qdma_dev->qsets_en,
-					(int)qdma_dev->queue_base,
-					m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			PMD_DRV_LOG(ERR, "%x set q range (fmap) failed %d.\n",
-				    qdma_dev->func_id, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_set_qmax(struct rte_eth_dev *dev, int *qmax, int *qbase)
-{
-	struct qdma_mbox_msg *m;
-	int rv = 0;
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_qreq(qdma_dev->func_id, (uint16_t)*qmax & 0xFFFF,
-				  *qbase, m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		PMD_DRV_LOG(ERR, "%x set q max failed %d.\n",
-			qdma_dev->func_id, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_qinfo_get(m->raw_data, qbase, (uint16_t *)qmax);
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_rxq_context_setup(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t qid_hw;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	struct mbox_descq_conf descq_conf;
-	int rv, bypass_desc_sz_idx;
-	struct qdma_rx_queue *rxq;
-	uint8_t cmpt_desc_fmt;
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-
-	if (!m)
-		return -ENOMEM;
-	memset(&descq_conf, 0, sizeof(struct mbox_descq_conf));
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-	qid_hw =  qdma_dev->queue_base + rxq->queue_id;
-
-	switch (rxq->cmpt_desc_len) {
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_8B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_16B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_16B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_32B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_32B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_64B:
-		if (!qdma_dev->dev_cap.cmpt_desc_64b) {
-			PMD_DRV_LOG(ERR, "PF-%d(DEVFN) 64B is not supported in this "
-				"mode:\n", qdma_dev->func_id);
-			return -1;
-		}
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_64B;
-		break;
-	default:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	}
-	descq_conf.ring_bs_addr = rxq->rx_mz->iova;
-	descq_conf.en_bypass = rxq->en_bypass;
-	descq_conf.irq_arm = 0;
-	descq_conf.at = 0;
-	descq_conf.wbk_en = 1;
-	descq_conf.irq_en = 0;
-
-	bypass_desc_sz_idx = qmda_get_desc_sz_idx(rxq->bypass_desc_sz);
-
-	if (!rxq->st_mode) {/* mm c2h */
-		descq_conf.desc_sz = SW_DESC_CNTXT_MEMORY_MAP_DMA;
-		descq_conf.wbi_intvl_en = 1;
-		descq_conf.wbi_chk = 1;
-	} else {/* st c2h*/
-		descq_conf.desc_sz = SW_DESC_CNTXT_C2H_STREAM_DMA;
-		descq_conf.forced_en = 1;
-		descq_conf.cmpt_ring_bs_addr = rxq->rx_cmpt_mz->iova;
-		descq_conf.cmpt_desc_sz = cmpt_desc_fmt;
-		descq_conf.triggermode = rxq->triggermode;
-
-		descq_conf.cmpt_color = CMPT_DEFAULT_COLOR_BIT;
-		descq_conf.cmpt_full_upd = 0;
-		descq_conf.cnt_thres =
-				qdma_dev->g_c2h_cnt_th[rxq->threshidx];
-		descq_conf.timer_thres =
-				qdma_dev->g_c2h_timer_cnt[rxq->timeridx];
-		descq_conf.cmpt_ringsz =
-				qdma_dev->g_ring_sz[rxq->cmpt_ringszidx] - 1;
-		descq_conf.bufsz = qdma_dev->g_c2h_buf_sz[rxq->buffszidx];
-		descq_conf.cmpt_int_en = 0;
-		descq_conf.cmpl_stat_en = rxq->st_mode;
-		descq_conf.pfch_en = rxq->en_prefetch;
-		descq_conf.en_bypass_prefetch = rxq->en_bypass_prefetch;
-		if (qdma_dev->dev_cap.cmpt_ovf_chk_dis)
-			descq_conf.dis_overflow_check = rxq->dis_overflow_check;
-
-		cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	}
-
-	if (rxq->en_bypass &&
-			(rxq->bypass_desc_sz != 0))
-		descq_conf.desc_sz = bypass_desc_sz_idx;
-
-	descq_conf.func_id = rxq->func_id;
-	descq_conf.ringsz = qdma_dev->g_ring_sz[rxq->ringszidx] - 1;
-
-	qdma_mbox_compose_vf_qctxt_write(rxq->func_id, qid_hw, rxq->st_mode, 1,
-					 cmpt_ctxt_type,
-					 &descq_conf, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		PMD_DRV_LOG(ERR, "%x, qid_hw 0x%x, mbox failed %d.\n",
-			qdma_dev->func_id, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_txq_context_setup(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	struct mbox_descq_conf descq_conf;
-	int rv, bypass_desc_sz_idx;
-	struct qdma_tx_queue *txq;
-	uint32_t qid_hw;
-
-	if (!m)
-		return -ENOMEM;
-	memset(&descq_conf, 0, sizeof(struct mbox_descq_conf));
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-	qid_hw =  qdma_dev->queue_base + txq->queue_id;
-	descq_conf.ring_bs_addr = txq->tx_mz->iova;
-	descq_conf.en_bypass = txq->en_bypass;
-	descq_conf.wbi_intvl_en = 1;
-	descq_conf.wbi_chk = 1;
-	descq_conf.wbk_en = 1;
-
-	bypass_desc_sz_idx = qmda_get_desc_sz_idx(txq->bypass_desc_sz);
-
-	if (!txq->st_mode) /* mm h2c */
-		descq_conf.desc_sz = SW_DESC_CNTXT_MEMORY_MAP_DMA;
-	else /* st h2c */
-		descq_conf.desc_sz = SW_DESC_CNTXT_H2C_STREAM_DMA;
-	descq_conf.func_id = txq->func_id;
-	descq_conf.ringsz = qdma_dev->g_ring_sz[txq->ringszidx] - 1;
-
-	if (txq->en_bypass &&
-		(txq->bypass_desc_sz != 0))
-		descq_conf.desc_sz = bypass_desc_sz_idx;
-
-	qdma_mbox_compose_vf_qctxt_write(txq->func_id, qid_hw, txq->st_mode, 0,
-					 QDMA_MBOX_CMPT_CTXT_NONE,
-					 &descq_conf, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		PMD_DRV_LOG(ERR, "%x, qid_hw 0x%x, mbox failed %d.\n",
-			qdma_dev->func_id, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_queue_context_invalidate(struct rte_eth_dev *dev, uint32_t qid,
-				  bool st, bool c2h)
-{
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t qid_hw;
-	int rv;
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-
-	if (!m)
-		return -ENOMEM;
-
-	if (st && c2h)
-		cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	qid_hw = qdma_dev->queue_base + qid;
-	qdma_mbox_compose_vf_qctxt_invalidate(qdma_dev->func_id, qid_hw,
-					      st, c2h, cmpt_ctxt_type,
-					      m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			PMD_DRV_LOG(INFO, "%x, qid_hw 0x%x mbox failed %d.\n",
-				    qdma_dev->func_id, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_vf_dev_start(struct rte_eth_dev *dev)
-{
-	struct qdma_tx_queue *txq;
-	struct qdma_rx_queue *rxq;
-	uint32_t qid;
-	int err;
-
-	PMD_DRV_LOG(INFO, "qdma_dev_start: Starting\n");
-	/* prepare descriptor rings for operation */
-	for (qid = 0; qid < dev->data->nb_tx_queues; qid++) {
-		txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-
-		/*Deferred Queues should not start with dev_start*/
-		if (!txq->tx_deferred_start) {
-			err = qdma_vf_dev_tx_queue_start(dev, qid);
-			if (err != 0)
-				return err;
-		}
-	}
-
-	for (qid = 0; qid < dev->data->nb_rx_queues; qid++) {
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-		/*Deferred Queues should not start with dev_start*/
-		if (!rxq->rx_deferred_start) {
-			err = qdma_vf_dev_rx_queue_start(dev, qid);
-			if (err != 0)
-				return err;
-		}
-	}
-	return 0;
-}
-
-static int qdma_vf_dev_link_update(struct rte_eth_dev *dev,
-					__rte_unused int wait_to_complete)
-{
-	dev->data->dev_link.link_status = ETH_LINK_UP;
-	dev->data->dev_link.link_duplex = ETH_LINK_FULL_DUPLEX;
-
-	/* TODO: Configure link speed by reading hardware capabilities */
-	dev->data->dev_link.link_speed = ETH_SPEED_NUM_200G;
-
-	PMD_DRV_LOG(INFO, "Link update done\n");
-
-	return 0;
-}
-
-static int qdma_vf_dev_infos_get(__rte_unused struct rte_eth_dev *dev,
-					struct rte_eth_dev_info *dev_info)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	dev_info->max_rx_queues = qdma_dev->dev_cap.num_qs;
-	dev_info->max_tx_queues = qdma_dev->dev_cap.num_qs;
-
-	dev_info->min_rx_bufsize = QDMA_MIN_RXBUFF_SIZE;
-	dev_info->max_rx_pktlen = DMA_BRAM_SIZE;
-	dev_info->max_mac_addrs = 1;
-
-	return 0;
-}
-
-static int qdma_vf_dev_stop(struct rte_eth_dev *dev)
-{
-#ifdef RTE_LIBRTE_QDMA_DEBUG_DRIVER
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-#endif
-	uint32_t qid;
-
-	/* reset driver's internal queue structures to default values */
-	PMD_DRV_LOG(INFO, "VF-%d(DEVFN) Stop H2C & C2H queues",
-			qdma_dev->func_id);
-	for (qid = 0; qid < dev->data->nb_tx_queues; qid++)
-		qdma_vf_dev_tx_queue_stop(dev, qid);
-	for (qid = 0; qid < dev->data->nb_rx_queues; qid++)
-		qdma_vf_dev_rx_queue_stop(dev, qid);
-
-	return 0;
-}
-
-int qdma_vf_dev_close(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq;
-	struct qdma_rx_queue *rxq;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t qid;
-
-	PMD_DRV_LOG(INFO, "Closing all queues\n");
-
-	if (dev->data->dev_started)
-		qdma_vf_dev_stop(dev);
-
-	/* iterate over rx queues */
-	for (qid = 0; qid < dev->data->nb_rx_queues; ++qid) {
-		rxq = dev->data->rx_queues[qid];
-		if (rxq != NULL) {
-			PMD_DRV_LOG(INFO, "VF-%d(DEVFN) Remove C2H queue: %d",
-							qdma_dev->func_id, qid);
-
-			qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_C2H);
-
-			if (rxq->st_mode)
-				qdma_dev_notify_qdel(rxq->dev, rxq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_CMPT);
-
-			if (rxq->sw_ring)
-				rte_free(rxq->sw_ring);
-
-			if (rxq->st_mode) { /** if ST-mode **/
-				if (rxq->rx_cmpt_mz)
-					rte_memzone_free(rxq->rx_cmpt_mz);
-			}
-
-			if (rxq->rx_mz)
-				rte_memzone_free(rxq->rx_mz);
-			rte_free(rxq);
-			PMD_DRV_LOG(INFO, "VF-%d(DEVFN) C2H queue %d removed",
-							qdma_dev->func_id, qid);
-		}
-	}
-
-	/* iterate over tx queues */
-	for (qid = 0; qid < dev->data->nb_tx_queues; ++qid) {
-		txq = dev->data->tx_queues[qid];
-		if (txq != NULL) {
-			PMD_DRV_LOG(INFO, "VF-%d(DEVFN) Remove H2C queue: %d",
-							qdma_dev->func_id, qid);
-
-			qdma_dev_notify_qdel(txq->dev, txq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_H2C);
-			if (txq->sw_ring)
-				rte_free(txq->sw_ring);
-			if (txq->tx_mz)
-				rte_memzone_free(txq->tx_mz);
-			rte_free(txq);
-			PMD_DRV_LOG(INFO, "VF-%d(DEVFN) H2C queue %d removed",
-							qdma_dev->func_id, qid);
-		}
-	}
-	if (qdma_dev->dev_cap.mm_cmpt_en) {
-		/* iterate over cmpt queues */
-		for (qid = 0; qid < qdma_dev->qsets_en; ++qid) {
-			cmptq = qdma_dev->cmpt_queues[qid];
-			if (cmptq != NULL) {
-				PMD_DRV_LOG(INFO, "VF-%d(DEVFN) Remove CMPT queue: %d",
-						qdma_dev->func_id, qid);
-				qdma_dev_notify_qdel(cmptq->dev,
-						cmptq->queue_id +
-						qdma_dev->queue_base,
-						QDMA_DEV_Q_TYPE_CMPT);
-				if (cmptq->cmpt_mz)
-					rte_memzone_free(cmptq->cmpt_mz);
-				rte_free(cmptq);
-				PMD_DRV_LOG(INFO, "VF-%d(DEVFN) CMPT queue %d removed",
-						qdma_dev->func_id, qid);
-			}
-		}
-
-		if (qdma_dev->cmpt_queues != NULL) {
-			rte_free(qdma_dev->cmpt_queues);
-			qdma_dev->cmpt_queues = NULL;
-		}
-	}
-
-	qdma_dev->qsets_en = 0;
-	qdma_set_qmax(dev, (int *)&qdma_dev->qsets_en,
-		      (int *)&qdma_dev->queue_base);
-	qdma_dev->init_q_range = 0;
-	rte_free(qdma_dev->q_info);
-	qdma_dev->q_info = NULL;
-	qdma_dev->dev_configured = 0;
-
-	return 0;
-}
-
-static int qdma_vf_dev_reset(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t i = 0;
-	int ret;
-
-	PMD_DRV_LOG(INFO, "%s: Reset VF-%d(DEVFN)",
-			__func__, qdma_dev->func_id);
-
-	ret = eth_qdma_vf_dev_uninit(dev);
-	if (ret)
-		return ret;
-
-	if (qdma_dev->reset_state == RESET_STATE_IDLE) {
-		ret = eth_qdma_vf_dev_init(dev);
-	} else {
-
-		/* VFs do not stop mbox and start waiting for a
-		 * "PF_RESET_DONE" mailbox message from PF
-		 * for a maximum of 60 secs
-		 */
-		PMD_DRV_LOG(INFO,
-			"%s: Waiting for reset done message from PF",
-			__func__);
-		while (i < RESET_TIMEOUT) {
-			if (qdma_dev->reset_state ==
-					RESET_STATE_RECV_PF_RESET_DONE) {
-				qdma_mbox_uninit(dev);
-
-				ret = eth_qdma_vf_dev_init(dev);
-				return ret;
-			}
-
-			rte_delay_ms(1);
-			i++;
-		}
-	}
-
-	if (i >= RESET_TIMEOUT) {
-		PMD_DRV_LOG(ERR, "%s: Reset failed for VF-%d(DEVFN)\n",
-			__func__, qdma_dev->func_id);
-		return -ETIMEDOUT;
-	}
-
-	return ret;
-}
-
-static int qdma_vf_dev_configure(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	int32_t ret = 0, queue_base = -1;
-	uint32_t qid = 0;
-
-	/** FMAP configuration **/
-	qdma_dev->qsets_en = RTE_MAX(dev->data->nb_rx_queues,
-					dev->data->nb_tx_queues);
-
-	if (qdma_dev->qsets_en > qdma_dev->dev_cap.num_qs) {
-		PMD_DRV_LOG(INFO, "VF-%d(DEVFN) Error: Number of Queues to be "
-				"configured are greater than the queues "
-				"supported by the hardware\n",
-				qdma_dev->func_id);
-		qdma_dev->qsets_en = 0;
-		return -1;
-	}
-
-	/* Request queue base from the resource manager */
-	ret = qdma_set_qmax(dev, (int *)&qdma_dev->qsets_en,
-			    (int *)&queue_base);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR, "VF-%d(DEVFN) queue allocation failed: %d\n",
-			qdma_dev->func_id, ret);
-		return -1;
-	}
-	qdma_dev->queue_base = queue_base;
-
-	qdma_dev->q_info = rte_zmalloc("qinfo", sizeof(struct queue_info) *
-						qdma_dev->qsets_en, 0);
-	if (qdma_dev->q_info == NULL) {
-		PMD_DRV_LOG(INFO, "VF-%d fail to allocate queue info memory\n",
-						qdma_dev->func_id);
-		return (-ENOMEM);
-	}
-
-	/* Reserve memory for cmptq ring pointers
-	 * Max completion queues can be maximum of rx and tx queues.
-	 */
-	qdma_dev->cmpt_queues = rte_zmalloc("cmpt_queues",
-					    sizeof(qdma_dev->cmpt_queues[0]) *
-						qdma_dev->qsets_en,
-						RTE_CACHE_LINE_SIZE);
-	if (qdma_dev->cmpt_queues == NULL) {
-		PMD_DRV_LOG(ERR, "VF-%d(DEVFN) cmpt ring pointers memory "
-				"allocation failed:\n", qdma_dev->func_id);
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-		return -(ENOMEM);
-	}
-
-	/* Initialize queue_modes to all 1's ( i.e. Streaming) */
-	for (qid = 0 ; qid < qdma_dev->qsets_en; qid++)
-		qdma_dev->q_info[qid].queue_mode = RTE_PMD_QDMA_STREAMING_MODE;
-
-	for (qid = 0 ; qid < dev->data->nb_rx_queues; qid++) {
-		qdma_dev->q_info[qid].cmpt_desc_sz = qdma_dev->cmpt_desc_len;
-		qdma_dev->q_info[qid].rx_bypass_mode =
-						qdma_dev->c2h_bypass_mode;
-		qdma_dev->q_info[qid].trigger_mode = qdma_dev->trigger_mode;
-		qdma_dev->q_info[qid].timer_count =
-					qdma_dev->timer_count;
-	}
-
-	for (qid = 0 ; qid < dev->data->nb_tx_queues; qid++)
-		qdma_dev->q_info[qid].tx_bypass_mode =
-						qdma_dev->h2c_bypass_mode;
-
-	ret = qdma_vf_set_qrange(dev);
-	if (ret < 0) {
-		PMD_DRV_LOG(ERR, "FMAP programming failed\n");
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-		rte_free(qdma_dev->cmpt_queues);
-		qdma_dev->cmpt_queues = NULL;
-		return ret;
-	}
-
-	qdma_dev->dev_configured = 1;
-
-	return ret;
-}
-
-int qdma_vf_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_tx_queue *txq;
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-	qdma_reset_tx_queue(txq);
-
-	if (qdma_txq_context_setup(dev, qid) < 0)
-		return -1;
-
-	txq->q_pidx_info.pidx = 0;
-	qdma_dev->hw_access->qdma_queue_pidx_update(dev, qdma_dev->is_vf,
-			qid, 0, &txq->q_pidx_info);
-
-	dev->data->tx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STARTED;
-	txq->status = RTE_ETH_QUEUE_STATE_STARTED;
-
-	return 0;
-}
-
-int qdma_vf_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_rx_queue *rxq;
-	int err;
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-	qdma_reset_rx_queue(rxq);
-
-	err = qdma_init_rx_queue(rxq);
-	if (err != 0)
-		return err;
-	if (qdma_rxq_context_setup(dev, qid) < 0) {
-		PMD_DRV_LOG(ERR, "context_setup for qid - %u failed", qid);
-
-		return -1;
-	}
-
-	if (rxq->st_mode) {
-		rxq->cmpt_cidx_info.counter_idx = rxq->threshidx;
-		rxq->cmpt_cidx_info.timer_idx = rxq->timeridx;
-		rxq->cmpt_cidx_info.trig_mode = rxq->triggermode;
-		rxq->cmpt_cidx_info.wrb_en = 1;
-		qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(dev, 1,
-				qid, &rxq->cmpt_cidx_info);
-
-		rxq->q_pidx_info.pidx = (rxq->nb_rx_desc - 2);
-		qdma_dev->hw_access->qdma_queue_pidx_update(dev, 1,
-				qid, 1, &rxq->q_pidx_info);
-	}
-
-	dev->data->rx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STARTED;
-	rxq->status = RTE_ETH_QUEUE_STATE_STARTED;
-	return 0;
-}
-
-int qdma_vf_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_rx_queue *rxq;
-	int i = 0, cnt = 0;
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-	rxq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-
-	/* Wait for queue to recv all packets. */
-	if (rxq->st_mode) {  /** ST-mode **/
-		while (rxq->wb_status->pidx != rxq->cmpt_cidx_info.wrb_cidx) {
-			usleep(10);
-			if (cnt++ > 10000)
-				break;
-		}
-	} else { /* MM mode */
-		while (rxq->wb_status->cidx != rxq->q_pidx_info.pidx) {
-			usleep(10);
-			if (cnt++ > 10000)
-				break;
-		}
-	}
-
-	qdma_queue_context_invalidate(dev, qid, rxq->st_mode, 1);
-
-	if (rxq->st_mode) {  /** ST-mode **/
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: queue id = %d, mbuf_avail_count = "
-				"%d, mbuf_in_use_count = %d",
-				__func__, __LINE__, rxq->queue_id,
-				rte_mempool_avail_count(rxq->mb_pool),
-				rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-		for (i = 0; i < rxq->nb_rx_desc - 1; i++) {
-			rte_pktmbuf_free(rxq->sw_ring[i]);
-			rxq->sw_ring[i] = NULL;
-		}
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		PMD_DRV_LOG(INFO, "%s(): %d: queue id = %d, mbuf_avail_count = "
-				"%d, mbuf_in_use_count = %d",
-				__func__, __LINE__, rxq->queue_id,
-				rte_mempool_avail_count(rxq->mb_pool),
-				rte_mempool_in_use_count(rxq->mb_pool));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-	}
-
-	qdma_reset_rx_queue(rxq);
-	dev->data->rx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STOPPED;
-	return 0;
-}
-
-
-int qdma_vf_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_tx_queue *txq;
-	int i = 0, cnt = 0;
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-
-	txq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-	/* Wait for TXQ to send out all packets. */
-	while (txq->wb_status->cidx != txq->q_pidx_info.pidx) {
-		usleep(10);
-		if (cnt++ > 10000)
-			break;
-	}
-
-	qdma_queue_context_invalidate(dev, qid, txq->st_mode, 0);
-
-	/* Free mbufs if any pending in the ring */
-	for (i = 0; i < txq->nb_tx_desc; i++) {
-		rte_pktmbuf_free(txq->sw_ring[i]);
-		txq->sw_ring[i] = NULL;
-	}
-	qdma_reset_tx_queue(txq);
-	dev->data->tx_queue_state[qid] = RTE_ETH_QUEUE_STATE_STOPPED;
-	return 0;
-}
-
-static struct eth_dev_ops qdma_vf_eth_dev_ops = {
-	.dev_configure        = qdma_vf_dev_configure,
-	.dev_infos_get        = qdma_vf_dev_infos_get,
-	.dev_start            = qdma_vf_dev_start,
-	.dev_stop             = qdma_vf_dev_stop,
-	.dev_close            = qdma_vf_dev_close,
-	.dev_reset            = qdma_vf_dev_reset,
-	.link_update          = qdma_vf_dev_link_update,
-	.rx_queue_setup       = qdma_dev_rx_queue_setup,
-	.tx_queue_setup       = qdma_dev_tx_queue_setup,
-	.rx_queue_release     = qdma_dev_rx_queue_release,
-	.tx_queue_release     = qdma_dev_tx_queue_release,
-	.rx_queue_start       = qdma_vf_dev_rx_queue_start,
-	.rx_queue_stop        = qdma_vf_dev_rx_queue_stop,
-	.tx_queue_start       = qdma_vf_dev_tx_queue_start,
-	.tx_queue_stop        = qdma_vf_dev_tx_queue_stop,
-	.stats_get            = qdma_dev_stats_get,
-};
-
-/**
- * DPDK callback to register a PCI device.
- *
- * This function creates an Ethernet device for each port of a given
- * PCI device.
- *
- * @param[in] dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-static int eth_qdma_vf_dev_init(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *dma_priv;
-	uint8_t *baseaddr;
-	int i, idx;
-	static bool once = true;
-	struct rte_pci_device *pci_dev;
-
-	/* sanity checks */
-	if (dev == NULL)
-		return -EINVAL;
-	if (dev->data == NULL)
-		return -EINVAL;
-	if (dev->data->dev_private == NULL)
-		return -EINVAL;
-
-	pci_dev = RTE_ETH_DEV_TO_PCI(dev);
-	if (pci_dev == NULL)
-		return -EINVAL;
-
-	/* for secondary processes, we don't initialise any further as primary
-	 * has already done this work.
-	 */
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
-		dev->dev_ops = &qdma_vf_eth_dev_ops;
-		return 0;
-	}
-
-	if (once) {
-		RTE_LOG(INFO, PMD, "QDMA PMD VERSION: %s\n", QDMA_PMD_VERSION);
-		once = false;
-	}
-
-	/* allocate space for a single Ethernet MAC address */
-	dev->data->mac_addrs = rte_zmalloc("qdma_vf",
-			RTE_ETHER_ADDR_LEN * 1, 0);
-	if (dev->data->mac_addrs == NULL)
-		return -ENOMEM;
-
-	/* Copy some dummy Ethernet MAC address for XDMA device
-	 * This will change in real NIC device...
-	 */
-	for (i = 0; i < RTE_ETHER_ADDR_LEN; ++i)
-		dev->data->mac_addrs[0].addr_bytes[i] = 0x15 + i;
-
-	/* Init system & device */
-	dma_priv = (struct qdma_pci_dev *)dev->data->dev_private;
-	dma_priv->func_id = 0;
-	dma_priv->is_vf = 1;
-	dma_priv->timer_count = DEFAULT_TIMER_CNT_TRIG_MODE_TIMER;
-
-	dma_priv->en_desc_prefetch = 0;
-	dma_priv->cmpt_desc_len = DEFAULT_QDMA_CMPT_DESC_LEN;
-	dma_priv->c2h_bypass_mode = RTE_PMD_QDMA_RX_BYPASS_NONE;
-	dma_priv->h2c_bypass_mode = 0;
-
-	dev->dev_ops = &qdma_vf_eth_dev_ops;
-	dev->rx_pkt_burst = &qdma_recv_pkts;
-	dev->tx_pkt_burst = &qdma_xmit_pkts;
-
-	dma_priv->config_bar_idx = DEFAULT_VF_CONFIG_BAR;
-	dma_priv->bypass_bar_idx = BAR_ID_INVALID;
-	dma_priv->user_bar_idx = BAR_ID_INVALID;
-
-	if (qdma_check_kvargs(dev->device->devargs, dma_priv)) {
-		PMD_DRV_LOG(INFO, "devargs failed\n");
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	/* Store BAR address and length of Config BAR */
-	baseaddr = (uint8_t *)
-			pci_dev->mem_resource[dma_priv->config_bar_idx].addr;
-	dma_priv->bar_addr[dma_priv->config_bar_idx] = baseaddr;
-
-	/*Assigning QDMA access layer function pointers based on the HW design*/
-	dma_priv->hw_access = rte_zmalloc("vf_hwaccess",
-			sizeof(struct qdma_hw_access), 0);
-	if (dma_priv->hw_access == NULL) {
-		rte_free(dev->data->mac_addrs);
-		return -ENOMEM;
-	}
-	idx = qdma_hw_access_init(dev, dma_priv->is_vf, dma_priv->hw_access);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	idx = qdma_get_hw_version(dev);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	idx = qdma_identify_bars(dev);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	/* Store BAR address and length of AXI Master Lite BAR(user bar)*/
-	if (dma_priv->user_bar_idx >= 0) {
-		baseaddr = (uint8_t *)
-			     pci_dev->mem_resource[dma_priv->user_bar_idx].addr;
-		dma_priv->bar_addr[dma_priv->user_bar_idx] = baseaddr;
-	}
-
-	if (dma_priv->ip_type == QDMA_VERSAL_HARD_IP &&
-			dma_priv->device_type ==
-			QDMA_DEVICE_VERSAL_CPM4)
-		dma_priv->dev_cap.mailbox_intr = 0;
-	else
-		dma_priv->dev_cap.mailbox_intr = 1;
-
-	qdma_mbox_init(dev);
-	idx = qdma_ethdev_online(dev);
-	if (idx < 0) {
-		rte_free(dma_priv->hw_access);
-		rte_free(dev->data->mac_addrs);
-		return -EINVAL;
-	}
-
-	/* Setting default Mode to RTE_PMD_QDMA_TRIG_MODE_USER_TIMER */
-	dma_priv->trigger_mode = RTE_PMD_QDMA_TRIG_MODE_USER_TIMER;
-
-	dma_priv->reset_state = RESET_STATE_IDLE;
-
-#ifdef LATENCY_MEASUREMENT
-	/* Create txq and rxq latency measurement shared memory
-	 * if not already created by the PF
-	 */
-	if (!h2c_pidx_to_hw_cidx_lat) {
-		/* Create a shared memory zone for the txq latency buffer */
-		txq_lat_buf_mz = rte_memzone_reserve("TXQ_LAT_BUFFER_ZONE",
-			LATENCY_MAX_QUEUES * LATENCY_CNT * sizeof(double),
-			rte_socket_id(), 0);
-		if (txq_lat_buf_mz == NULL) {
-			PMD_DRV_LOG(ERR,
-				"Failed to allocate txq latency buffer memzone\n");
-			return -1;
-		}
-
-		/* Get the virtual address of the txq latency buffer */
-		h2c_pidx_to_hw_cidx_lat =
-			(double(*)[LATENCY_CNT])txq_lat_buf_mz->addr;
-	}
-
-	if (!c2h_pidx_to_cmpt_pidx_lat) {
-		/* Create a shared memory zone for the rxq latency buffer */
-		rxq_lat_buf_mz = rte_memzone_reserve("RXQ_LAT_BUFFER_ZONE",
-			LATENCY_MAX_QUEUES * LATENCY_CNT * sizeof(double),
-			rte_socket_id(), 0);
-		if (rxq_lat_buf_mz == NULL) {
-			PMD_DRV_LOG(ERR,
-				"Failed to allocate rxq latency buffer memzone\n");
-			return -1;
-		}
-
-		/* Get the virtual address of the rxq latency buffer */
-		c2h_pidx_to_cmpt_pidx_lat =
-			(double(*)[LATENCY_CNT])rxq_lat_buf_mz->addr;
-	}
-#endif
-
-	PMD_DRV_LOG(INFO, "VF-%d(DEVFN) QDMA device driver probe:",
-				dma_priv->func_id);
-
-	return 0;
-}
-
-/**
- * DPDK callback to deregister PCI device.
- *
- * @param[in] dev
- *   Pointer to Ethernet device structure.
- *
- * @return
- *   0 on success, negative errno value on failure.
- */
-static int eth_qdma_vf_dev_uninit(struct rte_eth_dev *dev)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-
-	/* only uninitialize in the primary process */
-	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
-		return -EPERM;
-
-	if (qdma_dev->dev_configured)
-		qdma_vf_dev_close(dev);
-
-	qdma_ethdev_offline(dev);
-
-	if (qdma_dev->reset_state != RESET_STATE_RECV_PF_RESET_REQ)
-		qdma_mbox_uninit(dev);
-
-	dev->dev_ops = NULL;
-	dev->rx_pkt_burst = NULL;
-	dev->tx_pkt_burst = NULL;
-	dev->data->nb_rx_queues = 0;
-	dev->data->nb_tx_queues = 0;
-
-	if (dev->data->mac_addrs != NULL) {
-		rte_free(dev->data->mac_addrs);
-		dev->data->mac_addrs = NULL;
-	}
-
-	if (qdma_dev->q_info != NULL) {
-		rte_free(qdma_dev->q_info);
-		qdma_dev->q_info = NULL;
-	}
-
-	return 0;
-}
-
-static int eth_qdma_vf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
-					struct rte_pci_device *pci_dev)
-{
-	return rte_eth_dev_pci_generic_probe(pci_dev,
-						sizeof(struct qdma_pci_dev),
-						eth_qdma_vf_dev_init);
-}
-
-/* Detach a ethdev interface */
-static int eth_qdma_vf_pci_remove(struct rte_pci_device *pci_dev)
-{
-	return rte_eth_dev_pci_generic_remove(pci_dev, eth_qdma_vf_dev_uninit);
-}
-
-static struct rte_pci_driver rte_qdma_vf_pmd = {
-	.id_table = qdma_vf_pci_id_tbl,
-	.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
-	.probe = eth_qdma_vf_pci_probe,
-	.remove = eth_qdma_vf_pci_remove,
-};
-
-bool
-is_vf_device_supported(struct rte_eth_dev *dev)
-{
-	if (strcmp(dev->device->driver->name, rte_qdma_vf_pmd.driver.name))
-		return false;
-
-	return true;
-}
-
-RTE_PMD_REGISTER_PCI(net_qdma_vf, rte_qdma_vf_pmd);
-RTE_PMD_REGISTER_PCI_TABLE(net_qdma_vf, qdma_vf_pci_id_tbl);
diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_xdebug.c b/QDMA/DPDK/drivers/net/qdma/qdma_xdebug.c
deleted file mode 100755
index 4cade04..0000000
--- a/QDMA/DPDK/drivers/net/qdma/qdma_xdebug.c
+++ /dev/null
@@ -1,1468 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdint.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_cycles.h>
-#include <unistd.h>
-#include <string.h>
-#include <rte_hexdump.h>
-
-#include "qdma.h"
-#include "rte_pmd_qdma.h"
-#include "qdma_access_common.h"
-#include "qdma_reg_dump.h"
-#include "qdma_mbox_protocol.h"
-#include "qdma_mbox.h"
-
-#define xdebug_info(args...) rte_log(RTE_LOG_INFO, RTE_LOGTYPE_USER1,\
-					## args)
-#define xdebug_error(args...) rte_log(RTE_LOG_ERR, RTE_LOGTYPE_USER1,\
-					## args)
-
-struct xdebug_desc_param {
-	uint16_t queue;
-	int start;
-	int end;
-	enum rte_pmd_qdma_xdebug_desc_type type;
-};
-
-const char *qdma_desc_eng_mode_info[QDMA_DESC_ENG_MODE_MAX] = {
-	"Internal and Bypass mode",
-	"Bypass only mode",
-	"Internal only mode"
-};
-
-static void print_header(const char *str)
-{
-	xdebug_info("\n\n%s\n\n", str);
-}
-
-static int qdma_h2c_struct_dump(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_tx_queue *tx_q;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	tx_q = (struct qdma_tx_queue *)dev->data->tx_queues[queue];
-
-	if (queue >= dev->data->nb_tx_queues) {
-		xdebug_info("TX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	if (tx_q) {
-		print_header("***********TX Queue struct************");
-		xdebug_info("\t\t wb_pidx             :%x\n",
-				tx_q->wb_status->pidx);
-		xdebug_info("\t\t wb_cidx             :%x\n",
-				tx_q->wb_status->cidx);
-		xdebug_info("\t\t h2c_pidx            :%x\n",
-				tx_q->q_pidx_info.pidx);
-		xdebug_info("\t\t tx_fl_tail          :%x\n",
-				tx_q->tx_fl_tail);
-		xdebug_info("\t\t tx_desc_pend        :%x\n",
-				tx_q->tx_desc_pend);
-		xdebug_info("\t\t nb_tx_desc          :%x\n",
-				tx_q->nb_tx_desc);
-		xdebug_info("\t\t st_mode             :%x\n",
-				tx_q->st_mode);
-		xdebug_info("\t\t tx_deferred_start   :%x\n",
-				tx_q->tx_deferred_start);
-		xdebug_info("\t\t en_bypass           :%x\n",
-				tx_q->en_bypass);
-		xdebug_info("\t\t bypass_desc_sz      :%x\n",
-				tx_q->bypass_desc_sz);
-		xdebug_info("\t\t func_id             :%x\n",
-				tx_q->func_id);
-		xdebug_info("\t\t port_id             :%x\n",
-				tx_q->port_id);
-		xdebug_info("\t\t ringszidx           :%x\n",
-				tx_q->ringszidx);
-		xdebug_info("\t\t ep_addr             :0x%" PRIx64 "\n",
-				tx_q->ep_addr);
-	}
-
-	return 0;
-}
-
-static int qdma_c2h_struct_dump(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_rx_queue *rx_q;
-	enum qdma_ip_type ip_type;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	rx_q = (struct qdma_rx_queue *)dev->data->rx_queues[queue];
-
-	if (queue >= dev->data->nb_rx_queues) {
-		xdebug_info("RX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	if (rx_q) {
-		print_header(" ***********RX Queue struct********** ");
-		xdebug_info("\t\t wb_pidx             :%x\n",
-				rx_q->wb_status->pidx);
-		xdebug_info("\t\t wb_cidx             :%x\n",
-				rx_q->wb_status->cidx);
-		xdebug_info("\t\t rx_tail (ST)        :%x\n",
-				rx_q->rx_tail);
-		xdebug_info("\t\t c2h_pidx            :%x\n",
-				rx_q->q_pidx_info.pidx);
-		xdebug_info("\t\t rx_cmpt_cidx        :%x\n",
-				rx_q->cmpt_cidx_info.wrb_cidx);
-		xdebug_info("\t\t cmpt_desc_len       :%x\n",
-				rx_q->cmpt_desc_len);
-		xdebug_info("\t\t rx_buff_size        :%x\n",
-				rx_q->rx_buff_size);
-		xdebug_info("\t\t nb_rx_desc          :%x\n",
-				rx_q->nb_rx_desc);
-		xdebug_info("\t\t nb_rx_cmpt_desc     :%x\n",
-				rx_q->nb_rx_cmpt_desc);
-		xdebug_info("\t\t ep_addr             :0x%" PRIx64 "\n",
-				rx_q->ep_addr);
-		xdebug_info("\t\t st_mode             :%x\n",
-				rx_q->st_mode);
-		xdebug_info("\t\t rx_deferred_start   :%x\n",
-				rx_q->rx_deferred_start);
-		xdebug_info("\t\t en_prefetch         :%x\n",
-				rx_q->en_prefetch);
-		xdebug_info("\t\t en_bypass           :%x\n",
-				rx_q->en_bypass);
-		xdebug_info("\t\t dump_immediate_data :%x\n",
-				rx_q->dump_immediate_data);
-		xdebug_info("\t\t en_bypass_prefetch  :%x\n",
-				rx_q->en_bypass_prefetch);
-
-		if (!(ip_type == QDMA_VERSAL_HARD_IP))
-			xdebug_info("\t\t dis_overflow_check  :%x\n",
-				rx_q->dis_overflow_check);
-
-		xdebug_info("\t\t bypass_desc_sz      :%x\n",
-				rx_q->bypass_desc_sz);
-		xdebug_info("\t\t ringszidx           :%x\n",
-				rx_q->ringszidx);
-		xdebug_info("\t\t cmpt_ringszidx      :%x\n",
-				rx_q->cmpt_ringszidx);
-		xdebug_info("\t\t buffszidx           :%x\n",
-				rx_q->buffszidx);
-		xdebug_info("\t\t threshidx           :%x\n",
-				rx_q->threshidx);
-		xdebug_info("\t\t timeridx            :%x\n",
-				rx_q->timeridx);
-		xdebug_info("\t\t triggermode         :%x\n",
-				rx_q->triggermode);
-	}
-
-	return 0;
-}
-
-static int qdma_config_read_reg_list(struct rte_eth_dev *dev,
-			uint16_t group_num,
-			uint16_t *num_regs, struct qdma_reg_data *reg_list)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv;
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_reg_read(qdma_dev->func_id, group_num, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			xdebug_error("reg read mbox failed with error = %d\n",
-				rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_reg_list_get(m->raw_data, num_regs, reg_list);
-	if (rv < 0) {
-		xdebug_error("qdma_mbox_vf_reg_list_get failed with error = %d\n",
-			rv);
-		goto err_out;
-	}
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_config_reg_dump(uint8_t port_id)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	enum qdma_ip_type ip_type;
-	enum qdma_device_type device_type;
-	char *buf = NULL;
-	int buflen;
-	int ret;
-	struct qdma_reg_data *reg_list;
-	uint16_t num_regs = 0, group_num = 0;
-	int len = 0, rcv_len = 0, reg_len = 0;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	device_type = (enum qdma_device_type)qdma_dev->device_type;
-
-	if (qdma_dev->is_vf) {
-		reg_len = (QDMA_MAX_REGISTER_DUMP *
-						sizeof(struct qdma_reg_data));
-		reg_list = (struct qdma_reg_data *)rte_zmalloc("QDMA_DUMP_REG_VF",
-				reg_len, RTE_CACHE_LINE_SIZE);
-		if (!reg_list) {
-			xdebug_error("Unable to allocate memory for VF dump for reglist "
-					"size %d\n", reg_len);
-			return -ENOMEM;
-		}
-
-		ret = qdma_acc_reg_dump_buf_len(dev, ip_type,
-				device_type, &buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to get register dump buffer length\n");
-			return ret;
-		}
-		/*allocate memory for register dump*/
-		buf = (char *)rte_zmalloc("QDMA_DUMP_BUF_VF", buflen,
-				RTE_CACHE_LINE_SIZE);
-		if (!buf) {
-			xdebug_error("Unable to allocate memory for reg dump "
-					"size %d\n", buflen);
-			rte_free(reg_list);
-			return -ENOMEM;
-		}
-		xdebug_info("FPGA Config Registers for port_id: %d\n--------\n",
-			port_id);
-		xdebug_info(" Offset       Name    "
-				"                                    Value(Hex) Value(Dec)\n");
-
-		for (group_num = 0; group_num < QDMA_REG_READ_GROUP_3;
-				group_num++) {
-			/** Reset the reg_list  with 0's */
-			memset(reg_list, 0, (QDMA_MAX_REGISTER_DUMP *
-					sizeof(struct qdma_reg_data)));
-			ret = qdma_config_read_reg_list(dev,
-						group_num, &num_regs, reg_list);
-			if (ret < 0) {
-				xdebug_error("Failed to read config registers "
-					"size %d, err = %d\n", buflen, ret);
-				rte_free(reg_list);
-				rte_free(buf);
-				return ret;
-			}
-
-			rcv_len = qdma_acc_dump_config_reg_list(dev,
-				ip_type, device_type, num_regs,
-				reg_list, buf + len, buflen - len);
-			if (len < 0) {
-				xdebug_error("Failed to dump config regs "
-					"size %d, err = %d\n", buflen, ret);
-				rte_free(reg_list);
-				rte_free(buf);
-				return ret;
-			}
-			len += rcv_len;
-		}
-		if (ret < 0) {
-			xdebug_error("Insufficient space to dump Config Bar register values\n");
-			rte_free(reg_list);
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-		xdebug_info("%s\n", buf);
-		rte_free(reg_list);
-		rte_free(buf);
-	} else {
-		ret = qdma_acc_reg_dump_buf_len(dev,
-			ip_type, device_type, &buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to get register dump buffer length\n");
-			return ret;
-		}
-
-		/*allocate memory for register dump*/
-		buf = (char *)rte_zmalloc("QDMA_REG_DUMP", buflen,
-					RTE_CACHE_LINE_SIZE);
-		if (!buf) {
-			xdebug_error("Unable to allocate memory for reg dump "
-					"size %d\n", buflen);
-			return -ENOMEM;
-		}
-		xdebug_info("FPGA Config Registers for port_id: %d\n--------\n",
-			port_id);
-		xdebug_info(" Offset       Name    "
-				"                                    Value(Hex) Value(Dec)\n");
-
-		ret = qdma_acc_dump_config_regs(dev, qdma_dev->is_vf,
-			ip_type, device_type, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Insufficient space to dump Config Bar register values\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-		xdebug_info("%s\n", buf);
-		rte_free(buf);
-	}
-
-	return 0;
-}
-
-static int qdma_device_dump(uint8_t port_id)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-
-	xdebug_info("\n*** QDMA Device struct for port_id: %d ***\n\n",
-		port_id);
-
-	xdebug_info("\t\t config BAR index         :%x\n",
-			qdma_dev->config_bar_idx);
-	xdebug_info("\t\t AXI Master Lite BAR index           :%x\n",
-			qdma_dev->user_bar_idx);
-	xdebug_info("\t\t AXI Bridge Master BAR index         :%x\n",
-			qdma_dev->bypass_bar_idx);
-	xdebug_info("\t\t qsets enable             :%x\n",
-			qdma_dev->qsets_en);
-	xdebug_info("\t\t queue base               :%x\n",
-			qdma_dev->queue_base);
-	xdebug_info("\t\t pf                       :%x\n",
-			qdma_dev->func_id);
-	xdebug_info("\t\t cmpt desc length         :%x\n",
-			qdma_dev->cmpt_desc_len);
-	xdebug_info("\t\t c2h bypass mode          :%x\n",
-			qdma_dev->c2h_bypass_mode);
-	xdebug_info("\t\t h2c bypass mode          :%x\n",
-			qdma_dev->h2c_bypass_mode);
-	xdebug_info("\t\t trigger mode             :%x\n",
-			qdma_dev->trigger_mode);
-	xdebug_info("\t\t timer count              :%x\n",
-			qdma_dev->timer_count);
-	xdebug_info("\t\t is vf                    :%x\n",
-			qdma_dev->is_vf);
-	xdebug_info("\t\t is master                :%x\n",
-			qdma_dev->is_master);
-	xdebug_info("\t\t enable desc prefetch     :%x\n",
-			qdma_dev->en_desc_prefetch);
-	xdebug_info("\t\t ip type                  :%x\n",
-			qdma_dev->ip_type);
-	xdebug_info("\t\t vivado release           :%x\n",
-			qdma_dev->vivado_rel);
-	xdebug_info("\t\t rtl version              :%x\n",
-			qdma_dev->rtl_version);
-	xdebug_info("\t\t is queue conigured       :%x\n",
-		qdma_dev->init_q_range);
-
-	xdebug_info("\n\t ***** Device Capabilities *****\n");
-	xdebug_info("\t\t number of PFs            :%x\n",
-			qdma_dev->dev_cap.num_pfs);
-	xdebug_info("\t\t number of Queues         :%x\n",
-			qdma_dev->dev_cap.num_qs);
-	xdebug_info("\t\t FLR present              :%x\n",
-			qdma_dev->dev_cap.flr_present);
-	xdebug_info("\t\t ST mode enable           :%x\n",
-			qdma_dev->dev_cap.st_en);
-	xdebug_info("\t\t MM mode enable           :%x\n",
-			qdma_dev->dev_cap.mm_en);
-	xdebug_info("\t\t MM with compt enable     :%x\n",
-			qdma_dev->dev_cap.mm_cmpt_en);
-	xdebug_info("\t\t Mailbox enable           :%x\n",
-			qdma_dev->dev_cap.mailbox_en);
-	xdebug_info("\t\t Num of MM channels       :%x\n",
-			qdma_dev->dev_cap.mm_channel_max);
-	xdebug_info("\t\t Descriptor engine mode   :%s\n",
-		qdma_desc_eng_mode_info[qdma_dev->dev_cap.desc_eng_mode]);
-	xdebug_info("\t\t Debug mode enable        :%x\n",
-			qdma_dev->dev_cap.debug_mode);
-
-	return 0;
-}
-
-static int qdma_tx_qstats_dump(struct qdma_tx_queue *txq)
-{
-	if (txq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n",
-			txq->queue_id);
-		return -1;
-	}
-
-	xdebug_info("\n***** QDMA Tx Qstats on port_id: %d for qid: %d *****\n",
-		txq->port_id, txq->queue_id);
-	xdebug_info("\t\t txq_pidx             :%u\n",
-			txq->qstats.pidx);
-	xdebug_info("\t\t txq_wrb_cidx         :%u\n",
-			txq->qstats.wrb_cidx);
-	xdebug_info("\t\t txq_tail             :%u\n",
-			txq->qstats.txq_tail);
-	xdebug_info("\t\t in_use_desc          :%u\n",
-			txq->qstats.in_use_desc);
-	xdebug_info("\t\t nb_pkts              :%u\n",
-			txq->qstats.nb_pkts);
-	xdebug_info("\t\t ring_wrap_cnt        :%u\n",
-			txq->qstats.ring_wrap_cnt);
-	xdebug_info("\t\t txq_full_cnt         :%u\n",
-			txq->qstats.txq_full_cnt);
-
-#ifdef LATENCY_MEASUREMENT
-	xdebug_info("\n\t***** wrb cidx counts *****\n");
-	xdebug_info("\t\t wrb_cidx_cnt_no_change     :%u\n",
-			txq->qstats.wrb_cidx_cnt_no_change);
-	xdebug_info("\t\t wrb_cidx_cnt_lt_8          :%u\n",
-			txq->qstats.wrb_cidx_cnt_lt_8);
-	xdebug_info("\t\t wrb_cidx_cnt_8_to_32       :%u\n",
-			txq->qstats.wrb_cidx_cnt_8_to_32);
-	xdebug_info("\t\t wrb_cidx_cnt_32_to_64      :%u\n",
-			txq->qstats.wrb_cidx_cnt_32_to_64);
-	xdebug_info("\t\t wrb_cidx_cnt_gt_64         :%u\n",
-			txq->qstats.wrb_cidx_cnt_gt_64);
-#endif
-
-	return 0;
-}
-
-static int qdma_tx_qstats_latency_dump(struct rte_eth_dev *dev, uint16_t queue)
-{
-	struct qdma_tx_queue *txq;
-	int ret;
-#ifdef LATENCY_MEASUREMENT
-	double pkt_lat_val_ms = 0;
-	double txq_avg_lat_ms = 0;
-	const struct rte_memzone *memzone;
-	double (*lat_data)[LATENCY_CNT] = NULL;
-	uint64_t hz;
-	int i;
-#endif
-
-	if (dev == NULL) {
-		xdebug_error("Caught NULL pointer for dev\n");
-		return -EINVAL;
-	}
-
-	if (queue >= dev->data->nb_tx_queues) {
-		xdebug_info("TX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[queue];
-	if (txq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n", queue);
-		return -1;
-	}
-
-	if (txq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-		xdebug_info("Queue_id %d is not yet started\n", txq->queue_id);
-		return -1;
-	}
-
-	ret = qdma_tx_qstats_dump(txq);
-	if (ret < 0) {
-		xdebug_info("Failed to dump Tx qstats for queue_id: %d\n",
-			queue);
-		return -1;
-	}
-
-#ifdef LATENCY_MEASUREMENT
-	/* Find the memzone created by the primary application */
-	memzone = rte_memzone_lookup("TXQ_LAT_BUFFER_ZONE");
-	if (memzone == NULL) {
-		/* Handle memzone lookup failure */
-		return -1;
-	}
-
-	/* Get the virtual address of the shared rxq latency buffer memory */
-	lat_data = memzone->addr;
-
-	xdebug_info("\n\t**** TxQ SW PIDX to HW CIDX Latency for qid: %d ****\n",
-			queue);
-	hz = rte_get_timer_hz();
-	for (i = 0; i < LATENCY_CNT; i++) {
-		pkt_lat_val_ms =
-			((double)lat_data[queue][i]*1000000/hz);
-		txq_avg_lat_ms += pkt_lat_val_ms;
-		xdebug_info("\t\t h2c_sw_pidx_to_hw_cidx_latency[%d][%d] : %f ms\n",
-			queue, i, pkt_lat_val_ms);
-	}
-
-	xdebug_info(
-			"\n\t Avg h2c_sw_pidx_to_hw_cidx_latency for qid:%d is %f ms\n",
-			queue, (txq_avg_lat_ms/LATENCY_CNT));
-#endif
-
-	return 0;
-}
-
-static int qdma_rx_qstats_dump(struct qdma_rx_queue *rxq)
-{
-	if (rxq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n",
-			rxq->queue_id);
-		return -1;
-	}
-
-	xdebug_info("\n***** QDMA Rx Qstats on port_id: %d for qid: %d *****\n",
-		rxq->port_id, rxq->queue_id);
-
-	xdebug_info("\t\t rxq_pidx             :%u\n",
-			rxq->qstats.pidx);
-	xdebug_info("\t\t rxq_wrb_pidx         :%u\n",
-			rxq->qstats.wrb_pidx);
-	xdebug_info("\t\t rxq_wrb_cidx         :%u\n",
-			rxq->qstats.wrb_cidx);
-	xdebug_info("\t\t rxq_cmpt_tail        :%u\n",
-			rxq->qstats.rxq_cmpt_tail);
-	xdebug_info("\t\t pending_desc         :%u\n",
-			rxq->qstats.pending_desc);
-	xdebug_info("\t\t ring_wrap_cnt        :%u\n",
-			rxq->qstats.ring_wrap_cnt);
-	xdebug_info("\t\t mbuf_avail_cnt       :%u\n",
-			rxq->qstats.mbuf_avail_cnt);
-	xdebug_info("\t\t mbuf_in_use_cnt      :%u\n",
-			rxq->qstats.mbuf_in_use_cnt);
-
-	return 0;
-}
-
-static int qdma_rx_qstats_latency_dump(struct rte_eth_dev *dev, uint16_t queue)
-{
-	struct qdma_rx_queue *rxq;
-	int ret;
-#ifdef LATENCY_MEASUREMENT
-	double pkt_lat_val_ms = 0;
-	double rxq_avg_lat_ms = 0;
-	const struct rte_memzone *memzone;
-	double (*lat_data)[LATENCY_CNT] = NULL;
-	uint64_t hz;
-	int i;
-#endif
-
-	if (dev == NULL) {
-		xdebug_error("Caught NULL pointer for dev\n");
-		return -EINVAL;
-	}
-
-	if (queue >= dev->data->nb_rx_queues) {
-		xdebug_info("RX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[queue];
-	if (rxq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n", queue);
-		return -1;
-	}
-
-	if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-		xdebug_info("Queue_id %d is not yet started\n", rxq->queue_id);
-		return -1;
-	}
-
-	ret = qdma_rx_qstats_dump(rxq);
-	if (ret < 0) {
-		xdebug_info("Failed to dump Rx qstats for queue_id: %d\n",
-			queue);
-		return -1;
-	}
-
-#ifdef LATENCY_MEASUREMENT
-	/* Find the memzone created by the primary application */
-	memzone = rte_memzone_lookup("RXQ_LAT_BUFFER_ZONE");
-	if (memzone == NULL) {
-		/* Handle memzone lookup failure */
-		return -1;
-	}
-
-	/* Get the virtual address of the shared txq latency buffer memory */
-	lat_data = memzone->addr;
-
-	xdebug_info("\n\t*** RxQ SW PIDX to CMPT PIDX Latency for qid: %d ***\n",
-		queue);
-	hz = rte_get_timer_hz();
-	for (i = 0; i < LATENCY_CNT; i++) {
-		pkt_lat_val_ms =
-			((double)lat_data[queue][i]*1000000/hz);
-		rxq_avg_lat_ms += pkt_lat_val_ms;
-		xdebug_info("\t\t c2h_sw_pidx_to_cmpt_pidx_latency[%d][%d] : %f ms\n",
-			queue, i, pkt_lat_val_ms);
-	}
-
-	xdebug_info(
-			"\n\t Avg c2h_sw_pidx_to_cmpt_pidx_latency for qid:%d is %f ms\n",
-			queue, (rxq_avg_lat_ms/LATENCY_CNT));
-#endif
-
-	return 0;
-}
-
-static int qdma_descq_context_read_vf(struct rte_eth_dev *dev,
-	unsigned int qid_hw, bool st_mode,
-	enum qdma_dev_q_type q_type,
-	struct qdma_descq_context *context)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-	int rv;
-
-	if (!m)
-		return -ENOMEM;
-
-	if (!st_mode) {
-		if (q_type == QDMA_DEV_Q_TYPE_CMPT)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_ONLY;
-		else
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-	} else {
-		if (q_type == QDMA_DEV_Q_TYPE_C2H)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	}
-
-	qdma_mbox_compose_vf_qctxt_read(qdma_dev->func_id,
-		qid_hw, st_mode, q_type, cmpt_ctxt_type, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		xdebug_error("%x, qid_hw 0x%x, mbox failed for vf q context %d.\n",
-			qdma_dev->func_id, qid_hw, rv);
-		goto free_msg;
-	}
-
-	rv = qdma_mbox_vf_context_get(m->raw_data, context);
-	if (rv < 0) {
-		xdebug_error("%x, failed to get vf queue context info %d.\n",
-				qdma_dev->func_id, rv);
-		goto free_msg;
-	}
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_c2h_context_dump(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_descq_context queue_context;
-	enum qdma_dev_q_type q_type;
-	enum qdma_ip_type ip_type;
-	enum qdma_device_type device_type;
-	uint16_t qid;
-	uint8_t st_mode;
-	char *buf = NULL;
-	uint32_t buflen = 0;
-	int ret = 0;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	qid = qdma_dev->queue_base + queue;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	device_type = (enum qdma_device_type)qdma_dev->device_type;
-	st_mode = qdma_dev->q_info[qid].queue_mode;
-	q_type = QDMA_DEV_Q_TYPE_C2H;
-
-	if (queue >= dev->data->nb_rx_queues) {
-		xdebug_info("RX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	xdebug_info(
-		"\n ***** C2H Queue Contexts on port_id: %d for q_id: %d *****\n",
-		port_id, qid);
-
-	ret = qdma_acc_context_buf_len(dev, ip_type, device_type, st_mode,
-			q_type, &buflen);
-	if (ret < 0) {
-		xdebug_error("Failed to get context buffer length,\n");
-		return ret;
-	}
-
-	/*allocate memory for csr dump*/
-	buf = (char *)rte_zmalloc("QDMA_C2H_CONTEXT_DUMP",
-				buflen, RTE_CACHE_LINE_SIZE);
-	if (!buf) {
-		xdebug_error("Unable to allocate memory for c2h context dump "
-				"size %d\n", buflen);
-		return -ENOMEM;
-	}
-
-	if (qdma_dev->is_vf) {
-		ret = qdma_descq_context_read_vf(dev, qid,
-				st_mode, q_type, &queue_context);
-		if (ret < 0) {
-			xdebug_error("Failed to read c2h queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-
-		ret = qdma_acc_dump_queue_context(dev, ip_type, device_type,
-			st_mode, q_type, &queue_context, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to dump c2h queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	} else {
-		ret = qdma_acc_read_dump_queue_context(dev,
-				ip_type, device_type, qdma_dev->func_id, qid,
-				st_mode, q_type, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to read and dump c2h queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	}
-
-	xdebug_info("%s\n", buf);
-	rte_free(buf);
-
-	return 0;
-}
-
-static int qdma_h2c_context_dump(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_descq_context queue_context;
-	enum qdma_dev_q_type q_type;
-	enum qdma_ip_type ip_type;
-	enum qdma_device_type device_type;
-	uint32_t buflen = 0;
-	uint16_t qid;
-	uint8_t st_mode;
-	char *buf = NULL;
-	int ret = 0;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	qid = qdma_dev->queue_base + queue;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	device_type = (enum qdma_device_type)qdma_dev->device_type;
-	st_mode = qdma_dev->q_info[qid].queue_mode;
-	q_type = QDMA_DEV_Q_TYPE_H2C;
-
-	if (queue >= dev->data->nb_tx_queues) {
-		xdebug_info("TX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	xdebug_info(
-		"\n ***** H2C Queue Contexts on port_id: %d for q_id: %d *****\n",
-		port_id, qid);
-
-	ret = qdma_acc_context_buf_len(dev, ip_type, device_type, st_mode,
-			q_type, &buflen);
-	if (ret < 0) {
-		xdebug_error("Failed to get context buffer length,\n");
-		return ret;
-	}
-
-	/*allocate memory for csr dump*/
-	buf = (char *)rte_zmalloc("QDMA_H2C_CONTEXT_DUMP",
-			buflen, RTE_CACHE_LINE_SIZE);
-	if (!buf) {
-		xdebug_error("Unable to allocate memory for h2c context dump "
-				"size %d\n", buflen);
-		return -ENOMEM;
-	}
-
-	if (qdma_dev->is_vf) {
-		ret = qdma_descq_context_read_vf(dev, qid,
-				st_mode, q_type, &queue_context);
-		if (ret < 0) {
-			xdebug_error("Failed to read h2c queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-
-		ret = qdma_acc_dump_queue_context(dev, ip_type,
-				device_type, st_mode, q_type,
-				&queue_context, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to dump h2c queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	} else {
-		ret = qdma_acc_read_dump_queue_context(dev,
-				ip_type, device_type, qdma_dev->func_id, qid,
-				st_mode, q_type, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to read and dump h2c queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	}
-
-	xdebug_info("%s\n", buf);
-	rte_free(buf);
-
-	return 0;
-}
-
-static int qdma_cmpt_context_dump(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_descq_context queue_context;
-	enum qdma_dev_q_type q_type;
-	enum qdma_ip_type ip_type;
-	enum qdma_device_type device_type;
-	uint32_t buflen;
-	uint16_t qid;
-	uint8_t st_mode;
-	char *buf = NULL;
-	int ret = 0;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	qid = qdma_dev->queue_base + queue;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	device_type = (enum qdma_device_type)qdma_dev->device_type;
-	st_mode = qdma_dev->q_info[qid].queue_mode;
-	q_type = QDMA_DEV_Q_TYPE_CMPT;
-
-	if (queue >= dev->data->nb_rx_queues) {
-		xdebug_info("RX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	xdebug_info(
-		"\n ***** CMPT Queue Contexts on port_id: %d for q_id: %d *****\n",
-		port_id, qid);
-
-	ret = qdma_acc_context_buf_len(dev, ip_type, device_type,
-			st_mode, q_type, &buflen);
-	if (ret < 0) {
-		xdebug_error("Failed to get context buffer length\n");
-		return ret;
-	}
-
-	/*allocate memory for csr dump*/
-	buf = (char *)rte_zmalloc("QDMA_CMPT_CONTEXT_DUMP",
-			buflen, RTE_CACHE_LINE_SIZE);
-	if (!buf) {
-		xdebug_error("Unable to allocate memory for cmpt context dump "
-				"size %d\n", buflen);
-		return -ENOMEM;
-	}
-
-	if (qdma_dev->is_vf) {
-		ret = qdma_descq_context_read_vf(dev, qid,
-			st_mode, q_type, &queue_context);
-		if (ret < 0) {
-			xdebug_error("Failed to read cmpt queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-
-		ret = qdma_acc_dump_queue_context(dev, ip_type,
-			device_type, st_mode, q_type,
-			&queue_context, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to dump cmpt queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	} else {
-		ret = qdma_acc_read_dump_queue_context(dev,
-			ip_type, device_type, qdma_dev->func_id, qid, st_mode,
-			q_type, buf, buflen);
-		if (ret < 0) {
-			xdebug_error("Failed to read and dump cmpt queue context\n");
-			rte_free(buf);
-			return qdma_get_error_code(ret);
-		}
-	}
-
-	xdebug_info("%s\n", buf);
-	rte_free(buf);
-
-	return 0;
-}
-
-static int qdma_queue_desc_dump(uint8_t port_id,
-		struct xdebug_desc_param *param)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_rx_queue *rxq;
-	struct qdma_tx_queue *txq;
-	uint8_t *rx_ring_bypass = NULL;
-	uint8_t *tx_ring_bypass = NULL;
-	char str[50];
-	int x;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-
-	switch (param->type) {
-	case RTE_PMD_QDMA_XDEBUG_DESC_C2H:
-
-		if (param->queue >= dev->data->nb_rx_queues) {
-			xdebug_info("queue_id=%d not configured",
-					param->queue);
-			return -1;
-		}
-
-		rxq = (struct qdma_rx_queue *)
-			dev->data->rx_queues[param->queue];
-
-		if (rxq == NULL) {
-			xdebug_info("Caught NULL pointer for queue_id: %d\n",
-				param->queue);
-			return -1;
-		}
-
-		if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-			xdebug_info("Queue_id %d is not yet started\n",
-				param->queue);
-			return -1;
-		}
-
-		if (param->start < 0 || param->start > rxq->nb_rx_desc)
-			param->start = 0;
-		if (param->end <= param->start ||
-				param->end > rxq->nb_rx_desc)
-			param->end = rxq->nb_rx_desc;
-
-		if ((rxq->en_bypass) && (rxq->bypass_desc_sz != 0)) {
-			rx_ring_bypass = (uint8_t *)rxq->rx_ring;
-
-			xdebug_info("\n===== C2H bypass descriptors=====\n");
-			for (x = param->start; x < param->end; x++) {
-				uint8_t *rx_bypass =
-						&rx_ring_bypass[x];
-				snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-				rte_hexdump(stdout, str,
-					(const void *)rx_bypass,
-					rxq->bypass_desc_sz);
-			}
-		} else {
-			if (rxq->st_mode) {
-				struct qdma_ul_st_c2h_desc *rx_ring_st =
-				(struct qdma_ul_st_c2h_desc *)rxq->rx_ring;
-
-				xdebug_info("\n===== C2H ring descriptors=====\n");
-				for (x = param->start; x < param->end; x++) {
-					struct qdma_ul_st_c2h_desc *rx_st =
-						&rx_ring_st[x];
-					snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-					rte_hexdump(stdout, str,
-					(const void *)rx_st,
-					sizeof(struct qdma_ul_st_c2h_desc));
-				}
-			} else {
-				struct qdma_ul_mm_desc *rx_ring_mm =
-					(struct qdma_ul_mm_desc *)rxq->rx_ring;
-				xdebug_info("\n====== C2H ring descriptors======\n");
-				for (x = param->start; x < param->end; x++) {
-					snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-					rte_hexdump(stdout, str,
-						(const void *)&rx_ring_mm[x],
-						sizeof(struct qdma_ul_mm_desc));
-				}
-			}
-		}
-		break;
-	case RTE_PMD_QDMA_XDEBUG_DESC_CMPT:
-
-		if (param->queue >= dev->data->nb_rx_queues) {
-			xdebug_info("queue_id=%d not configured",
-					param->queue);
-			return -1;
-		}
-
-		rxq = (struct qdma_rx_queue *)
-			dev->data->rx_queues[param->queue];
-
-		if (rxq) {
-			if (rxq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-				xdebug_info("Queue_id %d is not yet started\n",
-						param->queue);
-				return -1;
-			}
-
-			if (param->start < 0 ||
-					param->start > rxq->nb_rx_cmpt_desc)
-				param->start = 0;
-			if (param->end <= param->start ||
-					param->end > rxq->nb_rx_cmpt_desc)
-				param->end = rxq->nb_rx_cmpt_desc;
-
-			if (!rxq->st_mode) {
-				xdebug_info("Queue_id %d is not initialized "
-					"in Stream mode\n", param->queue);
-				return -1;
-			}
-
-			xdebug_info("\n===== CMPT ring descriptors=====\n");
-			for (x = param->start; x < param->end; x++) {
-				uint32_t *cmpt_ring = (uint32_t *)
-					((uint64_t)(rxq->cmpt_ring) +
-					((uint64_t)x * rxq->cmpt_desc_len));
-				snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-				rte_hexdump(stdout, str,
-						(const void *)cmpt_ring,
-						rxq->cmpt_desc_len);
-			}
-		}
-		break;
-	case RTE_PMD_QDMA_XDEBUG_DESC_H2C:
-
-		if (param->queue >= dev->data->nb_tx_queues) {
-			xdebug_info("queue_id=%d not configured",
-				param->queue);
-			return -1;
-		}
-
-		txq = (struct qdma_tx_queue *)
-			dev->data->tx_queues[param->queue];
-
-		if (txq == NULL) {
-			xdebug_info("Caught NULL pointer for queue_id: %d\n",
-				param->queue);
-			return -1;
-		}
-
-		if (txq->status != RTE_ETH_QUEUE_STATE_STARTED) {
-			xdebug_info("Queue_id %d is not yet started\n",
-				param->queue);
-			return -1;
-		}
-
-		if (param->start < 0 || param->start > txq->nb_tx_desc)
-			param->start = 0;
-		if (param->end <= param->start ||
-				param->end > txq->nb_tx_desc)
-			param->end = txq->nb_tx_desc;
-
-		if ((txq->en_bypass) && (txq->bypass_desc_sz != 0)) {
-			tx_ring_bypass = (uint8_t *)txq->tx_ring;
-
-			xdebug_info("\n====== H2C bypass descriptors=====\n");
-			for (x = param->start; x < param->end; x++) {
-				uint8_t *tx_bypass =
-					&tx_ring_bypass[x];
-				snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-				rte_hexdump(stdout, str,
-					(const void *)tx_bypass,
-					txq->bypass_desc_sz);
-			}
-		} else {
-			if (txq->st_mode) {
-				struct qdma_ul_st_h2c_desc *qdma_h2c_ring =
-				(struct qdma_ul_st_h2c_desc *)txq->tx_ring;
-				xdebug_info("\n====== H2C ring descriptors=====\n");
-				for (x = param->start; x < param->end; x++) {
-					snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-					rte_hexdump(stdout, str,
-					(const void *)&qdma_h2c_ring[x],
-					sizeof(struct qdma_ul_st_h2c_desc));
-				}
-			} else {
-				struct qdma_ul_mm_desc *tx_ring_mm =
-					(struct qdma_ul_mm_desc *)txq->tx_ring;
-				xdebug_info("\n===== H2C ring descriptors=====\n");
-				for (x = param->start; x < param->end; x++) {
-					snprintf(str, sizeof(str),
-						"\nDescriptor ID %d\t", x);
-					rte_hexdump(stdout, str,
-						(const void *)&tx_ring_mm[x],
-						sizeof(struct qdma_ul_mm_desc));
-				}
-			}
-		}
-		break;
-	default:
-		xdebug_info("Invalid ring selected\n");
-		break;
-	}
-	return 0;
-}
-
-int rte_pmd_qdma_dbg_regdump(uint8_t port_id)
-{
-	int err;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	err = qdma_config_reg_dump(port_id);
-	if (err) {
-		xdebug_error("Error dumping Global registers\n");
-		return err;
-	}
-	return 0;
-}
-
-int rte_pmd_qdma_dbg_reg_info_dump(uint8_t port_id,
-	uint32_t num_regs, uint32_t reg_addr)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	enum qdma_ip_type ip_type;
-	enum qdma_device_type device_type;
-	char *buf = NULL;
-	int buflen = QDMA_MAX_BUFLEN;
-	int ret;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	ip_type = (enum qdma_ip_type)qdma_dev->ip_type;
-	device_type = (enum qdma_device_type)qdma_dev->device_type;
-
-	/*allocate memory for register dump*/
-	buf = (char *)rte_zmalloc("QDMA_DUMP_BUF_REG_INFO", buflen,
-			RTE_CACHE_LINE_SIZE);
-	if (!buf) {
-		xdebug_error("Unable to allocate memory for reg info dump "
-				"size %d\n", buflen);
-		return -ENOMEM;
-	}
-
-	ret = qdma_acc_dump_reg_info(dev, ip_type, device_type,
-		reg_addr, num_regs, buf, buflen);
-	if (ret < 0) {
-		xdebug_error("Failed to dump reg field values\n");
-		rte_free(buf);
-		return qdma_get_error_code(ret);
-	}
-	xdebug_info("%s\n", buf);
-	rte_free(buf);
-
-	return 0;
-}
-
-int rte_pmd_qdma_dbg_qdevice(uint8_t port_id)
-{
-	int err;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	err = qdma_device_dump(port_id);
-	if (err) {
-		xdebug_error("Error dumping QDMA device\n");
-		return err;
-	}
-	return 0;
-}
-
-int rte_pmd_qdma_qstats(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	int ret;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	if (dev == NULL) {
-		xdebug_error("Caught NULL pointer for dev\n");
-		return -EINVAL;
-	}
-
-	ret = qdma_tx_qstats_latency_dump(dev, queue);
-	if (ret) {
-		xdebug_error("Error dumping QDMA Tx queue stats\n");
-		return ret;
-	}
-
-	ret = qdma_rx_qstats_latency_dump(dev, queue);
-	if (ret) {
-		xdebug_error("Error dumping QDMA Rx queue stats\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-int qdma_tx_qstats_clear(struct rte_eth_dev *dev, uint16_t queue)
-{
-	struct qdma_tx_queue *txq;
-	int ret;
-#ifdef LATENCY_MEASUREMENT
-	int i;
-#endif
-
-	if (queue >= dev->data->nb_tx_queues) {
-		xdebug_info("TX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	txq = (struct qdma_tx_queue *)dev->data->tx_queues[queue];
-	if (txq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n", queue);
-		return -EINVAL;
-	}
-
-	memset(&txq->qstats, 0, sizeof(struct qdma_txq_stats));
-
-#ifdef LATENCY_MEASUREMENT
-	for (i = 0; i < LATENCY_CNT; i++)
-		h2c_pidx_to_hw_cidx_lat[queue][i] = 0;
-#endif
-
-	xdebug_info("\nCleared Tx queue stats for  qid: %d\n",
-		queue);
-
-	ret = qdma_tx_qstats_dump(txq);
-	if (ret < 0) {
-		xdebug_info("Failed to dump Tx qstats for queue_id: %d\n",
-			queue);
-		return -1;
-	}
-
-	return 0;
-}
-
-int qdma_rx_qstats_clear(struct rte_eth_dev *dev, uint16_t queue)
-{
-	struct qdma_rx_queue *rxq;
-	int ret;
-#ifdef LATENCY_MEASUREMENT
-	int i;
-#endif
-
-	if (queue >= dev->data->nb_rx_queues) {
-		xdebug_info("RX queue_id=%d not configured\n", queue);
-		return -EINVAL;
-	}
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[queue];
-	if (rxq == NULL) {
-		xdebug_info("Caught NULL pointer for queue_id: %d\n", queue);
-		return -EINVAL;
-	}
-
-	memset(&rxq->qstats, 0, sizeof(struct qdma_rxq_stats));
-
-#ifdef LATENCY_MEASUREMENT
-	for (i = 0; i < LATENCY_CNT; i++)
-		c2h_pidx_to_cmpt_pidx_lat[queue][i] = 0;
-#endif
-
-	xdebug_info("\nCleared Rx queue stats for  qid: %d\n",
-		queue);
-
-	ret = qdma_rx_qstats_dump(rxq);
-	if (ret < 0) {
-		xdebug_info("Failed to dump Rx qstats for queue_id: %d\n",
-			queue);
-		return -1;
-	}
-
-	return 0;
-}
-
-int rte_pmd_qdma_qstats_clear(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	int ret;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-
-	ret = qdma_tx_qstats_clear(dev, queue);
-	if (ret) {
-		xdebug_error("Failed to clear QDMA Tx queue stats\n");
-		return ret;
-	}
-
-	ret = qdma_rx_qstats_clear(dev, queue);
-	if (ret) {
-		xdebug_error("Failed to clear QDMA Rx queue stats\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-int rte_pmd_qdma_dbg_qinfo(uint8_t port_id, uint16_t queue)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	uint16_t qid;
-	uint8_t st_mode;
-	int err;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	qid = qdma_dev->queue_base + queue;
-	st_mode = qdma_dev->q_info[qid].queue_mode;
-
-	err = qdma_h2c_context_dump(port_id, queue);
-	if (err) {
-		xdebug_error("Error dumping %d: %d\n",
-				queue, err);
-		return err;
-	}
-
-	err = qdma_c2h_context_dump(port_id, queue);
-	if (err) {
-		xdebug_error("Error dumping %d: %d\n",
-				queue, err);
-		return err;
-	}
-
-	if (!st_mode && qdma_dev->dev_cap.mm_cmpt_en) {
-		err = qdma_cmpt_context_dump(port_id, queue);
-		if (err) {
-			xdebug_error("Error dumping %d: %d\n",
-					queue, err);
-			return err;
-		}
-	}
-
-	err = qdma_h2c_struct_dump(port_id, queue);
-	if (err) {
-		xdebug_error("Error dumping %d: %d\n",
-				queue, err);
-		return err;
-	}
-
-	err = qdma_c2h_struct_dump(port_id, queue);
-	if (err) {
-		xdebug_error("Error dumping %d: %d\n",
-				queue, err);
-		return err;
-	}
-
-	return 0;
-}
-
-int rte_pmd_qdma_dbg_qdesc(uint8_t port_id, uint16_t queue, int start,
-		int end, enum rte_pmd_qdma_xdebug_desc_type type)
-{
-	struct xdebug_desc_param param;
-	int err;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		xdebug_error("Wrong port id %d\n", port_id);
-		return -EINVAL;
-	}
-
-	param.queue = queue;
-	param.start = start;
-	param.end = end;
-	param.type = type;
-
-	err = qdma_queue_desc_dump(port_id, &param);
-	if (err) {
-		xdebug_error("Error dumping %d: %d\n",
-			queue, err);
-		return err;
-	}
-	return 0;
-}
diff --git a/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.c b/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.c
deleted file mode 100755
index d2b93ba..0000000
--- a/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.c
+++ /dev/null
@@ -1,1821 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-
-#include <stdint.h>
-#include <sys/mman.h>
-#include <sys/fcntl.h>
-#include <rte_memzone.h>
-#include <rte_string_fns.h>
-#include <rte_malloc.h>
-#include <rte_dev.h>
-#include <rte_pci.h>
-#include <rte_ether.h>
-#include <rte_ethdev.h>
-#include <rte_alarm.h>
-#include <rte_cycles.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "qdma.h"
-#include "qdma_access_common.h"
-#include "rte_pmd_qdma.h"
-#include "qdma_devops.h"
-
-
-static int validate_qdma_dev_info(int port_id, uint16_t qid)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "Wrong port id %d\n", port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (!is_qdma_supported(dev)) {
-		PMD_DRV_LOG(ERR, "Device is not supported\n");
-		return -ENOTSUP;
-	}
-
-	if (qid >= qdma_dev->qsets_en) {
-		PMD_DRV_LOG(ERR, "Invalid Queue id passed, queue ID = %d\n",
-					qid);
-		return -EINVAL;
-	}
-
-	if (!qdma_dev->dev_configured) {
-		PMD_DRV_LOG(ERR,
-			"Device for port id %d is not configured yet\n",
-			port_id);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static int8_t qdma_get_trigger_mode(enum rte_pmd_qdma_tigger_mode_t mode)
-{
-	int8_t ret;
-	switch (mode) {
-	case RTE_PMD_QDMA_TRIG_MODE_DISABLE:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_DIS;
-		break;
-	case RTE_PMD_QDMA_TRIG_MODE_EVERY:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_EVERY;
-		break;
-	case RTE_PMD_QDMA_TRIG_MODE_USER_COUNT:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT;
-		break;
-	case RTE_PMD_QDMA_TRIG_MODE_USER:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_USR;
-		break;
-	case RTE_PMD_QDMA_TRIG_MODE_USER_TIMER:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR;
-		break;
-	case RTE_PMD_QDMA_TRIG_MODE_USER_TIMER_COUNT:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR;
-		break;
-	default:
-		ret = QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR;
-		break;
-	}
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_get_bar_details
- * Description:		Returns the BAR indices of the QDMA BARs
- *
- * @param	port_id : Port ID
- * @param	config_bar_idx : Config BAR index
- * @param	user_bar_idx   : AXI Master Lite BAR(user bar) index
- * @param	bypass_bar_idx : AXI Bridge Master BAR(bypass bar) index
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note   None.
- ******************************************************************************/
-int rte_pmd_qdma_get_bar_details(int port_id, int32_t *config_bar_idx,
-			int32_t *user_bar_idx, int32_t *bypass_bar_idx)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *dma_priv;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "Wrong port id %d\n", port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	dma_priv = dev->data->dev_private;
-	if (!is_qdma_supported(dev)) {
-		PMD_DRV_LOG(ERR, "Device is not supported\n");
-		return -ENOTSUP;
-	}
-
-	if (config_bar_idx != NULL)
-		*(config_bar_idx) = dma_priv->config_bar_idx;
-
-	if (user_bar_idx != NULL)
-		*(user_bar_idx) = dma_priv->user_bar_idx;
-
-	if (bypass_bar_idx != NULL)
-		*(bypass_bar_idx) = dma_priv->bypass_bar_idx;
-
-	return 0;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_get_queue_base
- * Description:		Returns queue base for given port
- *
- * @param	port_id : Port ID.
- * @param	queue_base : queue base.
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note    Application can call this API only after successful
- *          call to rte_eh_dev_configure() API.
- ******************************************************************************/
-int rte_pmd_qdma_get_queue_base(int port_id, uint32_t *queue_base)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *dma_priv;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "Wrong port id %d\n", port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	dma_priv = dev->data->dev_private;
-	if (!is_qdma_supported(dev)) {
-		PMD_DRV_LOG(ERR, "Device is not supported\n");
-		return -ENOTSUP;
-	}
-
-	if (queue_base == NULL) {
-		PMD_DRV_LOG(ERR, "Caught NULL pointer for queue base\n");
-		return -EINVAL;
-	}
-
-	*(queue_base) = dma_priv->queue_base;
-
-	return 0;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_get_pci_func_type
- * Description:		Retrieves pci function type i.e. PF or VF
- *
- * @param	port_id : Port ID.
- * @param	func_type : Indicates pci function type.
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note    Returns the PCIe function type i.e. PF or VF of the given port.
- ******************************************************************************/
-int rte_pmd_qdma_get_pci_func_type(int port_id,
-		enum rte_pmd_qdma_pci_func_type *func_type)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *dma_priv;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "Wrong port id %d\n", port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	dma_priv = dev->data->dev_private;
-	if (!is_qdma_supported(dev)) {
-		PMD_DRV_LOG(ERR, "Device is not supported\n");
-		return -ENOTSUP;
-	}
-
-	if (func_type == NULL) {
-		PMD_DRV_LOG(ERR, "Caught NULL pointer for function type\n");
-		return -EINVAL;
-	}
-
-	*((enum rte_pmd_qdma_pci_func_type *)func_type) = (dma_priv->is_vf) ?
-			RTE_PMD_QDMA_PCI_FUNC_VF : RTE_PMD_QDMA_PCI_FUNC_PF;
-
-	return 0;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_get_immediate_data_state
- * Description:		Returns immediate data state
- *			i.e. whether enabled or disabled, for the specified
- *			queue
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	state : Pointer to the state specifying whether
- *			immediate data is enabled or not
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note	Application can call this function after
- *		rte_eth_tx_queue_setup() or
- *		rte_eth_rx_queue_setup() is called.
- *		API is applicable for streaming queues only.
- ******************************************************************************/
-int rte_pmd_qdma_get_immediate_data_state(int port_id, uint32_t qid,
-		int *state)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_rx_queue *rxq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qid >= dev->data->nb_rx_queues) {
-		PMD_DRV_LOG(ERR, "Invalid Q-id passed qid %d max en_qid %d\n",
-				qid, dev->data->nb_rx_queues);
-		return -EINVAL;
-	}
-
-	if (state == NULL) {
-		PMD_DRV_LOG(ERR, "Invalid state for qid %d\n", qid);
-		return -EINVAL;
-	}
-
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-		if (rxq != NULL) {
-			*((int *)state) = rxq->dump_immediate_data;
-		} else {
-			PMD_DRV_LOG(ERR, "Qid %d is not setup\n", qid);
-			return -EINVAL;
-		}
-
-	} else {
-		PMD_DRV_LOG(ERR, "Qid %d is not setup in Streaming mode\n",
-				qid);
-		return -EINVAL;
-	}
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_queue_mode
- * Description:		Sets queue mode for the specified queue
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	mode : Queue mode to be set
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before
- *		rte_eth_tx_queue_setup/rte_eth_rx_queue_setup() API.
- *		By default, all queues are setup in streaming mode.
- ******************************************************************************/
-int rte_pmd_qdma_set_queue_mode(int port_id, uint32_t qid,
-		enum rte_pmd_qdma_queue_mode_t mode)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (mode >= RTE_PMD_QDMA_QUEUE_MODE_MAX) {
-		PMD_DRV_LOG(ERR, "Invalid Queue mode passed,Mode = %d\n", mode);
-		return -EINVAL;
-	}
-
-	qdma_dev->q_info[qid].queue_mode = mode;
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- *Function Name:	rte_pmd_qdma_set_immediate_data_state
- *Description:		Sets immediate data state
- *			i.e. enable or disable, for the specified queue.
- *			If enabled, the user defined data in the completion
- *			ring are dumped in to a queue specific file
- *			"q_<qid>_immmediate_data.txt" in the local directory.
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	value :	Immediate data state to be set
- *			Set '0' to disable and '1' to enable
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note	Application can call this API after successful
- *		call to rte_eth_dev_configure() API. Application can
- *		also call this API after successful call to
- *		rte_eth_rx_queue_setup() only if rx queue is not in
- *		start state. This API is applicable for
- *		streaming queues only.
- ******************************************************************************/
-int rte_pmd_qdma_set_immediate_data_state(int port_id, uint32_t qid,
-		uint8_t state)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_rx_queue *rxq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qid >= dev->data->nb_rx_queues) {
-		PMD_DRV_LOG(ERR, "Invalid RX Queue id passed for %s,"
-				"Queue ID = %d\n", __func__, qid);
-		return -EINVAL;
-	}
-
-	if (state > 1) {
-		PMD_DRV_LOG(ERR, "Invalid value specified for immediate data "
-				"state %s, Queue ID = %d\n", __func__, qid);
-		return -EINVAL;
-	}
-
-	if (qdma_dev->q_info[qid].queue_mode !=
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		PMD_DRV_LOG(ERR, "Qid %d is not setup in ST mode\n", qid);
-		return -EINVAL;
-	}
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-	if (rxq == NULL) {
-		/* Update the configuration in q_info structure
-		 * if rx queue is not setup.
-		 */
-		qdma_dev->q_info[qid].immediate_data_state = state;
-	} else if (dev->data->rx_queue_state[qid] ==
-			RTE_ETH_QUEUE_STATE_STOPPED) {
-		/* Update the config in both q_info and rxq structures,
-		 * only if rx queue is setup but not yet started.
-		 */
-		qdma_dev->q_info[qid].immediate_data_state = state;
-		rxq->dump_immediate_data = state;
-	} else {
-		PMD_DRV_LOG(ERR,
-			"Cannot configure when Qid %d is in start state\n",
-			qid);
-		return -EINVAL;
-	}
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_cmpt_overflow_check
- * Description:		Enables or disables the overflow check
- *			(whether PIDX is overflowing the CIDX) performed by
- *			QDMA on the completion descriptor ring of specified
- *			queue.
- *
- * @param	port_id : Port ID.
- * @param	qid	   : Queue ID.
- * @param	enable :  '1' to enable and '0' to disable the overflow check
- *
- * @return	'0' on success and '< 0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() API. Application can also call this
- *		API after successful call to rte_eth_rx_queue_setup()/
- *		rte_pmd_qdma_dev_cmptq_setup() API only if
- *		rx/cmpt queue is not in start state.
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_overflow_check(int port_id, uint32_t qid,
-		uint8_t enable)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_cmpt_queue *cmptq;
-	struct qdma_rx_queue *rxq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (enable > 1)
-		return -EINVAL;
-
-	if (!qdma_dev->dev_cap.cmpt_ovf_chk_dis) {
-		PMD_DRV_LOG(ERR, "%s: Completion overflow check disable is "
-			"not supported in the current design\n", __func__);
-			return -EINVAL;
-	}
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		if (qid >= dev->data->nb_rx_queues) {
-			PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s,"
-					"Queue ID(ST-mode) = %d\n", __func__,
-					qid);
-			return -EINVAL;
-		}
-
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-		if (rxq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if rx queue is not setup.
-			 */
-			qdma_dev->q_info[qid].dis_cmpt_ovf_chk =
-					(enable == 1) ? 0 : 1;
-		} else if (dev->data->rx_queue_state[qid] ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the config in both q_info and rxq structures,
-			 * only if rx queue is setup but not yet started.
-			 */
-			qdma_dev->q_info[qid].dis_cmpt_ovf_chk =
-					(enable == 1) ? 0 : 1;
-			rxq->dis_overflow_check =
-					qdma_dev->q_info[qid].dis_cmpt_ovf_chk;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	} else {
-		cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-		if (cmptq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if cmpt queue is not setup.
-			 */
-			qdma_dev->q_info[qid].dis_cmpt_ovf_chk =
-					(enable == 1) ? 0 : 1;
-		} else if (cmptq->status ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the configuration in both q_info and cmptq
-			 * structures if cmpt queue is already setup.
-			 */
-			qdma_dev->q_info[qid].dis_cmpt_ovf_chk =
-					(enable == 1) ? 0 : 1;
-			cmptq->dis_overflow_check =
-					qdma_dev->q_info[qid].dis_cmpt_ovf_chk;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	}
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_cmpt_descriptor_size
- * Description:		Configures the completion ring descriptor size
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	size : Descriptor size to be configured
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API
- *		when queue is in streaming mode, and before
- *		rte_pmd_qdma_dev_cmptq_setup when queue is in memory mapped
- *		mode.
- *		By default, the completion desciptor size is set to 8 bytes.
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_descriptor_size(int port_id, uint32_t qid,
-		enum rte_pmd_qdma_cmpt_desc_len size)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		if (qid >= dev->data->nb_rx_queues) {
-			PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s,"
-					"Queue ID(ST-mode) = %d\n", __func__,
-					qid);
-			return -EINVAL;
-		}
-	}
-
-	if (size != RTE_PMD_QDMA_CMPT_DESC_LEN_8B &&
-			size != RTE_PMD_QDMA_CMPT_DESC_LEN_16B &&
-			size != RTE_PMD_QDMA_CMPT_DESC_LEN_32B &&
-			(size != RTE_PMD_QDMA_CMPT_DESC_LEN_64B ||
-			!qdma_dev->dev_cap.cmpt_desc_64b)) {
-
-		PMD_DRV_LOG(ERR, "Invalid Size passed for %s, Size = %d\n",
-				__func__, size);
-		return -EINVAL;
-	}
-
-	qdma_dev->q_info[qid].cmpt_desc_sz = size;
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_cmpt_trigger_mode
- * Description:		Configures the trigger mode for completion ring CIDX
- *			updates
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	mode : Trigger mode to be configured
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful
- *		call to rte_eth_dev_configure() API. Application can
- *		also call this API after successful call to
- *		rte_eth_rx_queue_setup()/rte_pmd_qdma_dev_cmptq_setup()
- *		API only if rx/cmpt queue is not in start state.
- *		By default, trigger mode is set to Counter + Timer.
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_trigger_mode(int port_id, uint32_t qid,
-				enum rte_pmd_qdma_tigger_mode_t mode)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_cmpt_queue *cmptq;
-	struct qdma_rx_queue *rxq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (mode >= RTE_PMD_QDMA_TRIG_MODE_MAX) {
-		PMD_DRV_LOG(ERR, "Invalid Trigger mode passed\n");
-		return -EINVAL;
-	}
-
-	if ((mode == RTE_PMD_QDMA_TRIG_MODE_USER_TIMER_COUNT) &&
-		!qdma_dev->dev_cap.cmpt_trig_count_timer) {
-		PMD_DRV_LOG(ERR, "%s: Trigger mode %d is "
-			"not supported in the current design\n",
-			__func__, mode);
-			return -EINVAL;
-	}
-
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		if (qid >= dev->data->nb_rx_queues) {
-			PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s,"
-					"Queue ID(ST-mode) = %d\n", __func__,
-					qid);
-			return -EINVAL;
-		}
-
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-		if (rxq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if rx queue is not setup.
-			 */
-			qdma_dev->q_info[qid].trigger_mode =
-					qdma_get_trigger_mode(mode);
-		} else if (dev->data->rx_queue_state[qid] ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the config in both q_info and rxq structures,
-			 * only if rx queue is setup but not yet started.
-			 */
-			qdma_dev->q_info[qid].trigger_mode =
-					qdma_get_trigger_mode(mode);
-			rxq->triggermode = qdma_dev->q_info[qid].trigger_mode;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	} else if (qdma_dev->dev_cap.mm_cmpt_en) {
-		cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-		if (cmptq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if cmpt queue is not setup.
-			 */
-			qdma_dev->q_info[qid].trigger_mode =
-					qdma_get_trigger_mode(mode);
-		} else if (cmptq->status ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the configuration in both q_info and cmptq
-			 * structures if cmpt queue is already setup.
-			 */
-			qdma_dev->q_info[qid].trigger_mode =
-					qdma_get_trigger_mode(mode);
-			cmptq->triggermode =
-					qdma_dev->q_info[qid].trigger_mode;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	} else {
-		PMD_DRV_LOG(ERR, "Unable to set trigger mode for %s,"
-					"Queue ID = %d, Queue Mode = %d\n",
-					__func__,
-					qid, qdma_dev->q_info[qid].queue_mode);
-	}
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_cmpt_timer
- * Description:		Configures the timer interval in microseconds to trigger
- *			the completion ring CIDX updates
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	value : Timer interval for completion trigger to be configured
- *
- * @return	'0' on success and "<0" on failure.
- *
- * @note	Application can call this API after successful
- *		call to rte_eth_dev_configure() API. Application can
- *		also call this API after successful call to
- *		rte_eth_rx_queue_setup()/rte_pmd_qdma_dev_cmptq_setup() API
- *		only if rx/cmpt queue is not in start state.
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_timer(int port_id, uint32_t qid, uint32_t value)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_cmpt_queue *cmptq;
-	struct qdma_rx_queue *rxq;
-	int8_t timer_index;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	timer_index = index_of_array(qdma_dev->g_c2h_timer_cnt,
-			QDMA_NUM_C2H_TIMERS,
-			value);
-
-	if (timer_index < 0) {
-		PMD_DRV_LOG(ERR, "Expected timer %d not found\n", value);
-		return -ENOTSUP;
-	}
-
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_STREAMING_MODE) {
-		if (qid >= dev->data->nb_rx_queues) {
-			PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s,"
-					"Queue ID(ST-mode) = %d\n", __func__,
-					qid);
-			return -EINVAL;
-		}
-
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-		if (rxq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if rx queue is not setup.
-			 */
-			qdma_dev->q_info[qid].timer_count = value;
-		} else if (dev->data->rx_queue_state[qid] ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the config in both q_info and rxq structures,
-			 * only if rx queue is setup but not yet started.
-			 */
-			qdma_dev->q_info[qid].timer_count = value;
-			rxq->timeridx = timer_index;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	} else if (qdma_dev->dev_cap.mm_cmpt_en) {
-		cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-		if (cmptq == NULL) {
-			/* Update the configuration in q_info structure
-			 * if cmpt queue is not setup.
-			 */
-			qdma_dev->q_info[qid].timer_count = value;
-		} else if (cmptq->status ==
-				RTE_ETH_QUEUE_STATE_STOPPED) {
-			/* Update the configuration in both q_info and cmptq
-			 * structures if cmpt queue is already setup.
-			 */
-			qdma_dev->q_info[qid].timer_count = value;
-			cmptq->timeridx = timer_index;
-		} else {
-			PMD_DRV_LOG(ERR,
-				"Cannot configure when Qid %d is in start state\n",
-				qid);
-			return -EINVAL;
-		}
-	} else {
-		PMD_DRV_LOG(ERR, "Unable to set trigger mode for %s,"
-					"Queue ID = %d, Queue Mode = %d\n",
-					__func__,
-					qid, qdma_dev->q_info[qid].queue_mode);
-	}
-	return ret;
-}
-
-/******************************************************************************/
-/**
- *Function Name:	rte_pmd_qdma_set_c2h_descriptor_prefetch
- *Description:		Enables or disables prefetch of the descriptors by
- *			prefetch engine
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	enable:'1' to enable and '0' to disable the descriptor prefetch
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful
- *		call to rte_eth_dev_configure() API. Application can
- *		also call this API after successful call to
- *		rte_eth_rx_queue_setup() API, only if rx queue
- *		is not in start state.
- ******************************************************************************/
-int rte_pmd_qdma_set_c2h_descriptor_prefetch(int port_id, uint32_t qid,
-		uint8_t enable)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_rx_queue *rxq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qid >= dev->data->nb_rx_queues) {
-		PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s, "
-				"Queue ID = %d\n", __func__, qid);
-		return -EINVAL;
-	}
-
-	if (qdma_dev->q_info[qid].queue_mode ==
-			RTE_PMD_QDMA_MEMORY_MAPPED_MODE) {
-		PMD_DRV_LOG(ERR, "%s() not supported for qid %d in MM mode",
-				__func__, qid);
-		return -ENOTSUP;
-	}
-
-	rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-
-	if (rxq == NULL) {
-		/* Update the configuration in q_info structure
-		 * if rx queue is not setup.
-		 */
-		qdma_dev->q_info[qid].en_prefetch = (enable > 0) ? 1 : 0;
-	} else if (dev->data->rx_queue_state[qid] ==
-			RTE_ETH_QUEUE_STATE_STOPPED) {
-		/* Update the config in both q_info and rxq structures,
-		 * only if rx queue is setup but not yet started.
-		 */
-		qdma_dev->q_info[qid].en_prefetch = (enable > 0) ? 1 : 0;
-		rxq->en_prefetch = qdma_dev->q_info[qid].en_prefetch;
-	} else {
-		PMD_DRV_LOG(ERR,
-			"Cannot configure when Qid %d is in start state\n",
-			qid);
-		return -EINVAL;
-	}
-
-	return ret;
-}
-
-/*****************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_set_mm_endpoint_addr
- * Description:		Sets the PCIe endpoint memory offset at which to
- *			perform DMA operation for the specified queue operating
- *			in memory mapped mode.
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	dir : direction i.e. TX or RX.
- * @param	addr : Destination address for TX , Source address for RX
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	This API can be called before TX/RX burst API's
- *		(rte_eth_tx_burst() and rte_eth_rx_burst()) are called.
- *****************************************************************************/
-int rte_pmd_qdma_set_mm_endpoint_addr(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_dir_type dir, uint64_t addr)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_rx_queue *rxq;
-	struct qdma_tx_queue *txq;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qdma_dev->q_info[qid].queue_mode !=
-		RTE_PMD_QDMA_MEMORY_MAPPED_MODE) {
-		PMD_DRV_LOG(ERR, "Invalid Queue mode for %s, Queue ID = %d,"
-				"mode = %d\n", __func__, qid,
-				qdma_dev->q_info[qid].queue_mode);
-		return -EINVAL;
-	}
-
-	if (dir == RTE_PMD_QDMA_TX) {
-		txq = (struct qdma_tx_queue *)dev->data->tx_queues[qid];
-		if (txq != NULL)
-			txq->ep_addr = addr;
-		else {
-			PMD_DRV_LOG(ERR, "Qid %d is not setup\n", qid);
-			return -EINVAL;
-		}
-	} else if (dir == RTE_PMD_QDMA_RX) {
-		rxq = (struct qdma_rx_queue *)dev->data->rx_queues[qid];
-		if (rxq != NULL)
-			rxq->ep_addr = addr;
-		else {
-			PMD_DRV_LOG(ERR, "Qid %d is not setup\n", qid);
-			return -EINVAL;
-		}
-	} else {
-		PMD_DRV_LOG(ERR, "Invalid direction specified,"
-			"Direction is %d\n", dir);
-		return -EINVAL;
-	}
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_configure_tx_bypass
- * Description:		Sets the TX bypass mode and bypass descriptor size
- *			for the specified queue
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	bypass_mode : Bypass mode to be set
- * @param	size : Bypass descriptor size to be set
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before tx_setup() API.
- *		By default, all queues are configured in internal mode
- *		i.e. bypass disabled.
- *		If size is specified zero, then the bypass descriptor size is
- *		set to the one used in internal mode.
- ******************************************************************************/
-int rte_pmd_qdma_configure_tx_bypass(int port_id, uint32_t qid,
-		enum rte_pmd_qdma_tx_bypass_mode bypass_mode,
-		enum rte_pmd_qdma_bypass_desc_len size)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qid < dev->data->nb_tx_queues) {
-		if (bypass_mode >= RTE_PMD_QDMA_TX_BYPASS_MAX) {
-			PMD_DRV_LOG(ERR, "Invalid Tx Bypass mode : %d\n",
-					bypass_mode);
-			return -EINVAL;
-		}
-		if (qdma_dev->dev_cap.sw_desc_64b) {
-			/*64byte descriptor size supported
-			 *in >2018.3 Example Design Only
-			 */
-			if ((size  != 0) && (size  != 64)) {
-				PMD_DRV_LOG(ERR, "%s: Descriptor size %d not supported."
-				"64B and internal "
-				"mode descriptor sizes (size = 0) "
-				"are only supported by the driver in > 2018.3 "
-				"example design\n", __func__, size);
-				return -EINVAL;
-			}
-		} else {
-			/*In 2018.2 design, internal mode descriptor
-			 *sizes are only supported.Hence not allowing
-			 *to configure bypass descriptor size.
-			 *Size 0 indicates internal mode descriptor size.
-			 */
-			if (size  != 0) {
-				PMD_DRV_LOG(ERR, "%s: Descriptor size %d not supported.Only "
-				"Internal mode descriptor sizes (size = 0)"
-				"are supported in the current design.\n",
-				__func__, size);
-				return -EINVAL;
-			}
-		}
-		qdma_dev->q_info[qid].tx_bypass_mode = bypass_mode;
-
-		qdma_dev->q_info[qid].tx_bypass_desc_sz = size;
-	} else {
-		PMD_DRV_LOG(ERR, "Invalid queue ID specified, Queue ID = %d\n",
-				qid);
-		return -EINVAL;
-	}
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_configure_rx_bypass
- * Description:		Sets the RX bypass mode and bypass descriptor size for
- *			the specified queue
- *
- * @param	port_id : Port ID.
- * @param	qid : Queue ID.
- * @param	bypass_mode : Bypass mode to be set
- * @param	size : Bypass descriptor size to be set
- *
- * @return	'0' on success and '<0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API.
- *		By default, all queues are configured in internal mode
- *		i.e. bypass disabled.
- *		If size is specified zero, then the bypass descriptor size is
- *		set to the one used in internal mode.
- ******************************************************************************/
-int rte_pmd_qdma_configure_rx_bypass(int port_id, uint32_t qid,
-		enum rte_pmd_qdma_rx_bypass_mode bypass_mode,
-		enum rte_pmd_qdma_bypass_desc_len size)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qid < dev->data->nb_rx_queues) {
-		if (bypass_mode >= RTE_PMD_QDMA_RX_BYPASS_MAX) {
-			PMD_DRV_LOG(ERR, "Invalid Rx Bypass mode : %d\n",
-					bypass_mode);
-			return -EINVAL;
-		}
-
-		if (qdma_dev->dev_cap.sw_desc_64b) {
-			/*64byte descriptor size supported
-			 *in >2018.3 Example Design Only
-			 */
-			if ((size  != 0) && (size  != 64)) {
-				PMD_DRV_LOG(ERR, "%s: Descriptor size %d not supported."
-				"64B and internal "
-				"mode descriptor sizes (size = 0) "
-				"are only supported by the driver in > 2018.3 "
-				"example design\n", __func__, size);
-				return -EINVAL;
-			}
-		} else {
-			/*In 2018.2 design, internal mode descriptor
-			 *sizes are only supported.Hence not allowing
-			 *to configure bypass descriptor size.
-			 *Size 0 indicates internal mode descriptor size.
-			 */
-			if (size  != 0) {
-				PMD_DRV_LOG(ERR, "%s: Descriptor size %d not supported.Only "
-				"Internal mode descriptor sizes (size = 0)"
-				"are supported in the current design.\n",
-				__func__, size);
-				return -EINVAL;
-			}
-		}
-
-		qdma_dev->q_info[qid].rx_bypass_mode = bypass_mode;
-
-		qdma_dev->q_info[qid].rx_bypass_desc_sz = size;
-	} else {
-		PMD_DRV_LOG(ERR, "Invalid queue ID specified, Queue ID = %d\n",
-				qid);
-		return -EINVAL;
-	}
-
-	return ret;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_get_device_capabilities
- * Description:		Retrive the device capabilities
- *
- * @param   port_id : Port ID.
- * @param   dev_attr:Pointer to the device capabilities structure
- *
- * @return  '0' on success and '< 0' on failure.
- *
- * @note	None.
- ******************************************************************************/
-int rte_pmd_qdma_get_device_capabilities(int port_id,
-		struct rte_pmd_qdma_dev_attributes *dev_attr)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-
-	if (port_id < 0 || port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "Wrong port id %d\n", port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (!is_qdma_supported(dev)) {
-		PMD_DRV_LOG(ERR, "Device is not supported\n");
-		return -ENOTSUP;
-	}
-
-	if (dev_attr == NULL) {
-		PMD_DRV_LOG(ERR, "Caught NULL pointer for dev_attr\n");
-		return -EINVAL;
-	}
-
-	dev_attr->num_pfs = qdma_dev->dev_cap.num_pfs;
-	dev_attr->num_qs = qdma_dev->dev_cap.num_qs;
-	dev_attr->flr_present = qdma_dev->dev_cap.flr_present;
-	dev_attr->st_en = qdma_dev->dev_cap.st_en;
-	dev_attr->mm_en = qdma_dev->dev_cap.mm_en;
-	dev_attr->mm_cmpt_en = qdma_dev->dev_cap.mm_cmpt_en;
-	dev_attr->mailbox_en = qdma_dev->dev_cap.mailbox_en;
-	dev_attr->mm_channel_max = qdma_dev->dev_cap.mm_channel_max;
-	dev_attr->debug_mode = qdma_dev->dev_cap.debug_mode;
-	dev_attr->desc_eng_mode = qdma_dev->dev_cap.desc_eng_mode;
-	dev_attr->cmpt_ovf_chk_dis = qdma_dev->dev_cap.cmpt_ovf_chk_dis;
-	dev_attr->sw_desc_64b = qdma_dev->dev_cap.sw_desc_64b;
-	dev_attr->cmpt_desc_64b = qdma_dev->dev_cap.cmpt_desc_64b;
-	dev_attr->cmpt_trig_count_timer =
-				qdma_dev->dev_cap.cmpt_trig_count_timer;
-
-	switch (qdma_dev->device_type) {
-	case QDMA_DEVICE_SOFT:
-		dev_attr->device_type = RTE_PMD_QDMA_DEVICE_SOFT;
-		break;
-	case QDMA_DEVICE_VERSAL_CPM4:
-		dev_attr->device_type = RTE_PMD_QDMA_DEVICE_VERSAL_CPM4;
-		break;
-	case QDMA_DEVICE_VERSAL_CPM5:
-		dev_attr->device_type = RTE_PMD_QDMA_DEVICE_VERSAL_CPM5;
-		break;
-	default:
-		PMD_DRV_LOG(ERR, "%s: Invalid device type "
-			"Id = %d\n",	__func__, qdma_dev->device_type);
-		return -EINVAL;
-	}
-
-	switch (qdma_dev->ip_type) {
-	case QDMA_VERSAL_HARD_IP:
-		dev_attr->ip_type =
-			RTE_PMD_QDMA_VERSAL_HARD_IP;
-		break;
-	case QDMA_VERSAL_SOFT_IP:
-		dev_attr->ip_type =
-			RTE_PMD_QDMA_VERSAL_SOFT_IP;
-		break;
-	case QDMA_SOFT_IP:
-		dev_attr->ip_type =
-			RTE_PMD_QDMA_SOFT_IP;
-		break;
-	case EQDMA_SOFT_IP:
-		dev_attr->ip_type =
-			RTE_PMD_EQDMA_SOFT_IP;
-		break;
-	default:
-		dev_attr->ip_type = RTE_PMD_QDMA_NONE_IP;
-		PMD_DRV_LOG(ERR, "%s: Invalid IP type "
-			"ip_type = %d\n", __func__,
-			qdma_dev->ip_type);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-/******************************************************************************/
-/**
- * Function Name:	rte_pmd_qdma_dev_cmptq_setup
- * Description:		Allocate and set up a completion queue for
- *			memory mapped mode.
- *
- * @param   port_id : Port ID.
- * @param   qid : Queue ID.
- * @param   nb_cmpt_desc:	Completion queue ring size.
- * @param   socket_id :	The socket_id argument is the socket identifier
- *			in case of NUMA. Its value can be SOCKET_ID_ANY
- *			if there is no NUMA constraint for the DMA memory
- *			allocated for the transmit descriptors of the ring.
- *
- * @return  '0' on success and '< 0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() and rte_pmd_qdma_set_queue_mode()
- *		for queues in memory mapped mode.
- ******************************************************************************/
-
-int rte_pmd_qdma_dev_cmptq_setup(int port_id, uint32_t cmpt_queue_id,
-				 uint16_t nb_cmpt_desc,
-				 unsigned int socket_id)
-{
-	struct rte_eth_dev *dev;
-	uint32_t sz;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_cmpt_queue *cmptq = NULL;
-	int err;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, cmpt_queue_id);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (nb_cmpt_desc == 0) {
-		PMD_DRV_LOG(ERR, "Invalid descriptor ring size %d\n",
-				nb_cmpt_desc);
-		return -EINVAL;
-	}
-
-	if (!qdma_dev->dev_cap.mm_cmpt_en) {
-		PMD_DRV_LOG(ERR, "Completion Queue support for MM-mode "
-					"not enabled");
-		return -EINVAL;
-	}
-
-	if (!qdma_dev->is_vf) {
-		err = qdma_dev_increment_active_queue(
-					qdma_dev->dma_device_index,
-					qdma_dev->func_id,
-					QDMA_DEV_Q_TYPE_CMPT);
-		if (err != QDMA_SUCCESS)
-			return -EINVAL;
-	} else {
-		err = qdma_dev_notify_qadd(dev, cmpt_queue_id +
-				qdma_dev->queue_base, QDMA_DEV_Q_TYPE_CMPT);
-
-		if (err < 0) {
-			PMD_DRV_LOG(ERR, "%s: Queue addition failed for CMPT Queue ID "
-				"%d\n",	__func__, cmpt_queue_id);
-			return -EINVAL;
-		}
-	}
-
-	if (!qdma_dev->init_q_range) {
-		if (qdma_dev->is_vf) {
-			err = qdma_vf_csr_read(dev);
-			if (err < 0)
-				goto cmptq_setup_err;
-		} else {
-			err = qdma_pf_csr_read(dev);
-			if (err < 0)
-				goto cmptq_setup_err;
-		}
-		qdma_dev->init_q_range = 1;
-	}
-
-	/* Allocate cmpt queue data structure */
-	cmptq = rte_zmalloc("QDMA_CmptQ", sizeof(struct qdma_cmpt_queue),
-						RTE_CACHE_LINE_SIZE);
-
-	if (!cmptq) {
-		PMD_DRV_LOG(ERR, "Unable to allocate structure cmptq of "
-				"size %d\n",
-				(int)(sizeof(struct qdma_cmpt_queue)));
-		err = -ENOMEM;
-		goto cmptq_setup_err;
-	}
-
-	cmptq->queue_id = cmpt_queue_id;
-	cmptq->port_id = dev->data->port_id;
-	cmptq->func_id = qdma_dev->func_id;
-	cmptq->dev = dev;
-	cmptq->st_mode = qdma_dev->q_info[cmpt_queue_id].queue_mode;
-	cmptq->triggermode = qdma_dev->q_info[cmpt_queue_id].trigger_mode;
-	cmptq->nb_cmpt_desc = nb_cmpt_desc + 1;
-	cmptq->cmpt_desc_len = qdma_dev->q_info[cmpt_queue_id].cmpt_desc_sz;
-	if ((cmptq->cmpt_desc_len == RTE_PMD_QDMA_CMPT_DESC_LEN_64B) &&
-		!qdma_dev->dev_cap.cmpt_desc_64b) {
-		PMD_DRV_LOG(ERR, "%s: PF-%d(DEVFN) CMPT of 64B is not supported in the "
-			"current design\n",  __func__, qdma_dev->func_id);
-		return -ENOTSUP;
-	}
-	/* Find completion ring size index */
-	cmptq->ringszidx = index_of_array(qdma_dev->g_ring_sz,
-			QDMA_NUM_RING_SIZES,
-			cmptq->nb_cmpt_desc);
-	if (cmptq->ringszidx < 0) {
-		PMD_DRV_LOG(ERR, "Expected completion ring size %d not found\n",
-				cmptq->nb_cmpt_desc);
-		err = -EINVAL;
-		goto cmptq_setup_err;
-	}
-
-	/* Find Threshold index */
-	cmptq->threshidx = index_of_array(qdma_dev->g_c2h_cnt_th,
-						QDMA_NUM_C2H_COUNTERS,
-						DEFAULT_MM_CMPT_CNT_THRESHOLD);
-	if (cmptq->threshidx < 0) {
-		PMD_DRV_LOG(ERR, "Expected Threshold %d not found,"
-				" using the value %d at index 0\n",
-				DEFAULT_MM_CMPT_CNT_THRESHOLD,
-				qdma_dev->g_c2h_cnt_th[0]);
-		cmptq->threshidx = 0;
-	}
-
-	/* Find Timer index */
-	cmptq->timeridx = index_of_array(qdma_dev->g_c2h_timer_cnt,
-			QDMA_NUM_C2H_TIMERS,
-			qdma_dev->q_info[cmpt_queue_id].timer_count);
-	if (cmptq->timeridx < 0) {
-		PMD_DRV_LOG(ERR, "Expected timer %d not found, "
-				"using the value %d at index 1\n",
-				qdma_dev->q_info[cmpt_queue_id].timer_count,
-				qdma_dev->g_c2h_timer_cnt[1]);
-		cmptq->timeridx = 1;
-	}
-
-	cmptq->dis_overflow_check =
-			qdma_dev->q_info[cmpt_queue_id].dis_cmpt_ovf_chk;
-
-	/* Allocate memory for completion(CMPT) descriptor ring */
-	sz = (cmptq->nb_cmpt_desc) * cmptq->cmpt_desc_len;
-	cmptq->cmpt_mz = qdma_zone_reserve(dev, "RxHwCmptRn",
-			cmpt_queue_id, sz, socket_id);
-	if (!cmptq->cmpt_mz) {
-		PMD_DRV_LOG(ERR, "Unable to allocate cmptq->cmpt_mz "
-				"of size %d\n", sz);
-		err = -ENOMEM;
-		goto cmptq_setup_err;
-	}
-	cmptq->cmpt_ring = (struct qdma_ul_cmpt_ring *)cmptq->cmpt_mz->addr;
-
-	/* Write-back status structure */
-	cmptq->wb_status = (struct wb_status *)((uint64_t)cmptq->cmpt_ring +
-			(((uint64_t)cmptq->nb_cmpt_desc - 1) *
-			 cmptq->cmpt_desc_len));
-	memset(cmptq->cmpt_ring, 0, sz);
-	qdma_dev->cmpt_queues[cmpt_queue_id] = cmptq;
-	return ret;
-
-cmptq_setup_err:
-	if (!qdma_dev->is_vf)
-		qdma_dev_decrement_active_queue(qdma_dev->dma_device_index,
-				qdma_dev->func_id, QDMA_DEV_Q_TYPE_CMPT);
-	else
-		qdma_dev_notify_qdel(dev, cmpt_queue_id +
-				qdma_dev->queue_base, QDMA_DEV_Q_TYPE_CMPT);
-
-	if (cmptq) {
-		if (cmptq->cmpt_mz)
-			rte_memzone_free(cmptq->cmpt_mz);
-		rte_free(cmptq);
-	}
-	return err;
-}
-
-static int qdma_vf_cmptq_context_write(struct rte_eth_dev *dev, uint16_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	uint32_t qid_hw;
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	struct mbox_descq_conf descq_conf;
-	int rv;
-	struct qdma_cmpt_queue *cmptq;
-	uint8_t cmpt_desc_fmt;
-
-	if (!m)
-		return -ENOMEM;
-	memset(&descq_conf, 0, sizeof(struct mbox_descq_conf));
-	cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-	qid_hw =  qdma_dev->queue_base + cmptq->queue_id;
-
-	switch (cmptq->cmpt_desc_len) {
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_8B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_16B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_16B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_32B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_32B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_64B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_64B;
-		break;
-	default:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	}
-
-	descq_conf.irq_arm = 0;
-	descq_conf.at = 0;
-	descq_conf.wbk_en = 1;
-	descq_conf.irq_en = 0;
-	descq_conf.desc_sz = SW_DESC_CNTXT_MEMORY_MAP_DMA;
-	descq_conf.forced_en = 1;
-	descq_conf.cmpt_ring_bs_addr = cmptq->cmpt_mz->iova;
-	descq_conf.cmpt_desc_sz = cmpt_desc_fmt;
-	descq_conf.triggermode = cmptq->triggermode;
-
-	descq_conf.cmpt_color = CMPT_DEFAULT_COLOR_BIT;
-	descq_conf.cmpt_full_upd = 0;
-	descq_conf.cnt_thres = qdma_dev->g_c2h_cnt_th[cmptq->threshidx];
-	descq_conf.timer_thres = qdma_dev->g_c2h_timer_cnt[cmptq->timeridx];
-	descq_conf.cmpt_ringsz = qdma_dev->g_ring_sz[cmptq->ringszidx] - 1;
-	descq_conf.cmpt_int_en = 0;
-	descq_conf.cmpl_stat_en = 1; /* Enable stats for MM-CMPT */
-
-	if (qdma_dev->dev_cap.cmpt_ovf_chk_dis)
-		descq_conf.dis_overflow_check = cmptq->dis_overflow_check;
-
-	descq_conf.func_id = cmptq->func_id;
-
-	qdma_mbox_compose_vf_qctxt_write(cmptq->func_id, qid_hw,
-						cmptq->st_mode, 1,
-						QDMA_MBOX_CMPT_CTXT_ONLY,
-						&descq_conf, m->raw_data);
-
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		PMD_DRV_LOG(ERR, "%x, qid_hw 0x%x, mbox failed %d.\n",
-				qdma_dev->func_id, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-	cmptq->cmpt_cidx_info.counter_idx = cmptq->threshidx;
-	cmptq->cmpt_cidx_info.timer_idx = cmptq->timeridx;
-	cmptq->cmpt_cidx_info.trig_mode = cmptq->triggermode;
-	cmptq->cmpt_cidx_info.wrb_en = 1;
-	cmptq->cmpt_cidx_info.wrb_cidx = 0;
-	qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(dev, qdma_dev->is_vf,
-			qid, &cmptq->cmpt_cidx_info);
-	cmptq->status = RTE_ETH_QUEUE_STATE_STARTED;
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_pf_cmptq_context_write(struct rte_eth_dev *dev, uint32_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t queue_base =  qdma_dev->queue_base;
-	uint8_t cmpt_desc_fmt;
-	int err = 0;
-	struct qdma_descq_cmpt_ctxt q_cmpt_ctxt;
-
-	cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-	memset(&q_cmpt_ctxt, 0, sizeof(struct qdma_descq_cmpt_ctxt));
-	/* Clear Completion Context */
-	qdma_dev->hw_access->qdma_cmpt_ctx_conf(dev, qid,
-				&q_cmpt_ctxt, QDMA_HW_ACCESS_CLEAR);
-
-	switch (cmptq->cmpt_desc_len) {
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_8B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_16B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_16B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_32B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_32B;
-		break;
-	case RTE_PMD_QDMA_CMPT_DESC_LEN_64B:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_64B;
-		break;
-	default:
-		cmpt_desc_fmt = CMPT_CNTXT_DESC_SIZE_8B;
-		break;
-	}
-
-	q_cmpt_ctxt.en_stat_desc = 1;
-	q_cmpt_ctxt.trig_mode = cmptq->triggermode;
-	q_cmpt_ctxt.fnc_id = cmptq->func_id;
-	q_cmpt_ctxt.counter_idx = cmptq->threshidx;
-	q_cmpt_ctxt.timer_idx = cmptq->timeridx;
-	q_cmpt_ctxt.color = CMPT_DEFAULT_COLOR_BIT;
-	q_cmpt_ctxt.ringsz_idx = cmptq->ringszidx;
-	q_cmpt_ctxt.bs_addr = (uint64_t)cmptq->cmpt_mz->iova;
-	q_cmpt_ctxt.desc_sz = cmpt_desc_fmt;
-	q_cmpt_ctxt.valid = 1;
-
-	if (qdma_dev->dev_cap.cmpt_ovf_chk_dis)
-		q_cmpt_ctxt.ovf_chk_dis = cmptq->dis_overflow_check;
-
-	/* Set Completion Context */
-	err = qdma_dev->hw_access->qdma_cmpt_ctx_conf(dev, (qid + queue_base),
-				&q_cmpt_ctxt, QDMA_HW_ACCESS_WRITE);
-	if (err < 0)
-		return qdma_dev->hw_access->qdma_get_error_code(err);
-
-	cmptq->cmpt_cidx_info.counter_idx = cmptq->threshidx;
-	cmptq->cmpt_cidx_info.timer_idx = cmptq->timeridx;
-	cmptq->cmpt_cidx_info.trig_mode = cmptq->triggermode;
-	cmptq->cmpt_cidx_info.wrb_en = 1;
-	cmptq->cmpt_cidx_info.wrb_cidx = 0;
-	qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(dev, qdma_dev->is_vf,
-			qid, &cmptq->cmpt_cidx_info);
-	cmptq->status = RTE_ETH_QUEUE_STATE_STARTED;
-
-	return 0;
-}
-
-/******************************************************************************/
-/*
- * Function Name:   rte_pmd_qdma_dev_cmptq_start
- * Description:     Start the MM completion queue.
- *
- * @param   port_id : Port ID.
- * @param   qid : Queue ID.
- *
- * @return  '0' on success and '< 0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_pmd_qdma_dev_cmptq_setup() API when queue is in
- *		memory mapped mode.
- ******************************************************************************/
-int rte_pmd_qdma_dev_cmptq_start(int port_id, uint32_t qid)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qdma_dev->q_info[qid].queue_mode !=
-			RTE_PMD_QDMA_MEMORY_MAPPED_MODE) {
-		PMD_DRV_LOG(ERR, "Qid %d is not configured in MM-mode\n", qid);
-		return -EINVAL;
-	}
-
-	if (qid >= qdma_dev->qsets_en) {
-		PMD_DRV_LOG(ERR, "Invalid Queue id passed for %s,"
-				"Queue ID(MM-mode) = %d\n", __func__,
-				qid);
-		return -EINVAL;
-	}
-
-	if (qdma_dev->is_vf)
-		return qdma_vf_cmptq_context_write(dev, qid);
-	else
-		return qdma_pf_cmptq_context_write(dev, qid);
-}
-
-static int qdma_pf_cmptq_context_invalidate(struct rte_eth_dev *dev,
-		uint32_t qid)
-{
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t sz, i = 0;
-	struct qdma_descq_cmpt_ctxt q_cmpt_ctxt;
-
-	cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-	qdma_dev->hw_access->qdma_cmpt_ctx_conf(dev,
-			(qid + qdma_dev->queue_base),
-			&q_cmpt_ctxt, QDMA_HW_ACCESS_INVALIDATE);
-
-	/* Zero the cmpt-ring entries*/
-	sz = cmptq->cmpt_desc_len;
-	for (i = 0; i < (sz * cmptq->nb_cmpt_desc); i++)
-		((volatile char *)cmptq->cmpt_ring)[i] = 0;
-
-	cmptq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-
-	return 0;
-}
-
-static int qdma_vf_cmptq_context_invalidate(struct rte_eth_dev *dev,
-						uint32_t qid)
-{
-	struct qdma_mbox_msg *m = qdma_mbox_msg_alloc();
-	struct qdma_pci_dev *qdma_dev = dev->data->dev_private;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t qid_hw;
-	int rv;
-
-	if (!m)
-		return -ENOMEM;
-
-	qid_hw = qdma_dev->queue_base + qid;
-	qdma_mbox_compose_vf_qctxt_invalidate(qdma_dev->func_id, qid_hw,
-					      0, 0, QDMA_MBOX_CMPT_CTXT_ONLY,
-					      m->raw_data);
-	rv = qdma_mbox_msg_send(dev, m, MBOX_OP_RSP_TIMEOUT);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			PMD_DRV_LOG(INFO, "%x, qid_hw 0x%x mbox failed %d.\n",
-				    qdma_dev->func_id, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw_data);
-
-	cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-	cmptq->status = RTE_ETH_QUEUE_STATE_STOPPED;
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-/******************************************************************************/
-/*
- * Function Name:   rte_pmd_qdma_dev_cmptq_stop
- * Description:     Stop the MM completion queue.
- *
- * @param   port_id : Port ID.
- * @param   qid : Queue ID.
- *
- * @return  '0' on success and '< 0' on failure.
- *
- * @note	Application can call this API after successful call to
- *		rte_pmd_qdma_dev_cmptq_start() API when queue is in
- *		memory mapped mode.
- ******************************************************************************/
-int rte_pmd_qdma_dev_cmptq_stop(int port_id, uint32_t qid)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qdma_dev->q_info[qid].queue_mode !=
-			RTE_PMD_QDMA_MEMORY_MAPPED_MODE) {
-		PMD_DRV_LOG(ERR, "Qid %d is not configured in MM-mode\n", qid);
-		return -EINVAL;
-	}
-
-	if (qdma_dev->is_vf)
-		return qdma_vf_cmptq_context_invalidate(dev, qid);
-	else
-		return qdma_pf_cmptq_context_invalidate(dev, qid);
-}
-
-/*****************************************************************************/
-/**
- * Function Name:   rte_pmd_qdma_mm_cmpt_process
- * Description:     Process the MM Completion queue entries.
- *
- * @param   port_id : Port ID.
- * @param   qid : Queue ID.
- * @param   cmpt_buff : User buffer pointer to store the completion data.
- * @param   nb_entries: Number of compeltion entries to process.
- *
- * @return  'number of entries processed' on success and '< 0' on failure.
- *
- * @note    Application can call this API after successful call to
- *	    rte_pmd_qdma_dev_cmptq_start() API.
- ******************************************************************************/
-
-uint16_t rte_pmd_qdma_mm_cmpt_process(int port_id, uint32_t qid,
-					void *cmpt_buff, uint16_t nb_entries)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-	struct qdma_cmpt_queue *cmptq;
-	uint32_t count = 0;
-	struct qdma_ul_cmpt_ring *cmpt_entry;
-	struct wb_status *wb_status;
-	uint16_t nb_entries_avail = 0;
-	uint16_t cmpt_tail = 0;
-	uint16_t cmpt_pidx;
-	int ret = 0;
-
-	ret = validate_qdma_dev_info(port_id, qid);
-	if (ret != QDMA_SUCCESS) {
-		PMD_DRV_LOG(ERR,
-			"QDMA device validation failed for port id %d\n",
-			port_id);
-		return ret;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-	if (qdma_dev->q_info[qid].queue_mode !=
-			RTE_PMD_QDMA_MEMORY_MAPPED_MODE) {
-		PMD_DRV_LOG(ERR, "Qid %d is not configured in MM-mode\n", qid);
-		return -EINVAL;
-	}
-
-	cmptq = (struct qdma_cmpt_queue *)qdma_dev->cmpt_queues[qid];
-
-	if (cmpt_buff == NULL) {
-		PMD_DRV_LOG(ERR, "Invalid user buffer pointer from user");
-		return 0;
-	}
-
-	wb_status = cmptq->wb_status;
-	cmpt_tail = cmptq->cmpt_cidx_info.wrb_cidx;
-	cmpt_pidx = wb_status->pidx;
-
-	if (cmpt_tail < cmpt_pidx)
-		nb_entries_avail = cmpt_pidx - cmpt_tail;
-	else if (cmpt_tail > cmpt_pidx)
-		nb_entries_avail = cmptq->nb_cmpt_desc - 1 - cmpt_tail +
-			cmpt_pidx;
-
-	if (nb_entries_avail == 0) {
-		PMD_DRV_LOG(DEBUG, "%s(): %d: nb_entries_avail = 0\n",
-				__func__, __LINE__);
-		return 0;
-	}
-
-	if (nb_entries > nb_entries_avail)
-		nb_entries = nb_entries_avail;
-
-	while (count < nb_entries) {
-		cmpt_entry =
-		(struct qdma_ul_cmpt_ring *)((uint64_t)cmptq->cmpt_ring +
-		((uint64_t)cmpt_tail * cmptq->cmpt_desc_len));
-
-		ret = qdma_ul_process_immediate_data(cmpt_entry,
-				cmptq->cmpt_desc_len, cmpt_buff);
-		if (ret < 0) {
-			PMD_DRV_LOG(ERR, "Error detected on CMPT ring at "
-					"index %d, queue_id = %d\n",
-					cmpt_tail,
-					cmptq->queue_id);
-			return 0;
-		}
-		cmpt_tail++;
-		if (unlikely(cmpt_tail >= (cmptq->nb_cmpt_desc - 1)))
-			cmpt_tail -= (cmptq->nb_cmpt_desc - 1);
-		count++;
-	}
-
-	// Update the CPMT CIDX
-	cmptq->cmpt_cidx_info.wrb_cidx = cmpt_tail;
-	qdma_dev->hw_access->qdma_queue_cmpt_cidx_update(cmptq->dev,
-			qdma_dev->is_vf,
-			cmptq->queue_id,
-			&cmptq->cmpt_cidx_info);
-	return count;
-}
-
-/*****************************************************************************/
-/**
- * Function Name:   rte_pmd_qdma_dev_close
- * Description:     DPDK PMD function to close the device.
- *
- * @param   port_id Port ID
- *
- * @return  '0' on success and '< 0' on failure
- *
- ******************************************************************************/
-int rte_pmd_qdma_dev_close(uint16_t port_id)
-{
-	struct rte_eth_dev *dev;
-	struct qdma_pci_dev *qdma_dev;
-
-	if (port_id >= rte_eth_dev_count_avail()) {
-		PMD_DRV_LOG(ERR, "%s:%d Wrong port id %d\n", __func__, __LINE__,
-			port_id);
-		return -ENOTSUP;
-	}
-	dev = &rte_eth_devices[port_id];
-	qdma_dev = dev->data->dev_private;
-
-	dev->data->dev_started = 0;
-
-	if (qdma_dev->is_vf)
-		qdma_vf_dev_close(dev);
-	else
-		qdma_dev_close(dev);
-
-	dev->data->nb_rx_queues = 0;
-	rte_free(dev->data->rx_queues);
-	dev->data->rx_queues = NULL;
-	dev->data->nb_tx_queues = 0;
-	rte_free(dev->data->tx_queues);
-	dev->data->tx_queues = NULL;
-
-	return 0;
-}
-
diff --git a/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.h b/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.h
deleted file mode 100755
index 8a6e95c..0000000
--- a/QDMA/DPDK/drivers/net/qdma/rte_pmd_qdma.h
+++ /dev/null
@@ -1,888 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __RTE_PMD_QDMA_EXPORT_H__
-#define __RTE_PMD_QDMA_EXPORT_H__
-
-#include <rte_dev.h>
-#include <rte_ethdev.h>
-#include <rte_spinlock.h>
-#include <rte_log.h>
-#include <rte_byteorder.h>
-#include <rte_memzone.h>
-#include <linux/pci.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @defgroup rte_pmd_qdma_enums Enumerations
- */
-/** @defgroup rte_pmd_qdma_struct Data Structures
- */
-/** @defgroup rte_pmd_qdma_func Functions
- */
-
-/**
- * Bypass modes in C2H direction
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_rx_bypass_mode {
-	/** C2H bypass mode disabled */
-	RTE_PMD_QDMA_RX_BYPASS_NONE = 0,
-	/** C2H cache bypass mode */
-	RTE_PMD_QDMA_RX_BYPASS_CACHE = 1,
-	/** C2H simple bypass mode */
-	RTE_PMD_QDMA_RX_BYPASS_SIMPLE = 2,
-	/** C2H bypass mode invalid */
-	RTE_PMD_QDMA_RX_BYPASS_MAX
-};
-
-/**
- * Bypass modes in H2C direction
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_tx_bypass_mode {
-	/** H2C bypass mode disabled */
-	RTE_PMD_QDMA_TX_BYPASS_NONE = 0,
-	/** H2C bypass mode enabled */
-	RTE_PMD_QDMA_TX_BYPASS_ENABLE = 1,
-	/** H2C bypass mode invalid */
-	RTE_PMD_QDMA_TX_BYPASS_MAX
-};
-
-/**
- * Enum to specify the direction i.e. TX or RX
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_dir_type {
-	/** H2C direction */
-	RTE_PMD_QDMA_TX = 0,
-	/** C2H direction */
-	RTE_PMD_QDMA_RX,
-	/** Invalid Direction */
-	RTE_PMD_QDMA_DIR_TYPE_MAX
-};
-
-/**
- * Enum to specify the PCIe function type i.e. PF or VF
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_pci_func_type {
-	/** Physical Function */
-	RTE_PMD_QDMA_PCI_FUNC_PF,
-	/** Virtual Function */
-	RTE_PMD_QDMA_PCI_FUNC_VF,
-	/** Invalid PCI Function */
-	RTE_PMD_QDMA_PCI_FUNC_TYPE_MAX,
-};
-
-/**
- * Enum to specify the queue mode
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_queue_mode_t {
-	/** Memory mapped queue mode */
-	RTE_PMD_QDMA_MEMORY_MAPPED_MODE,
-	/** Streaming queue mode */
-	RTE_PMD_QDMA_STREAMING_MODE,
-	/** Invalid queue mode */
-	RTE_PMD_QDMA_QUEUE_MODE_MAX,
-};
-
-/**
- * Enum to specify the completion trigger mode
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_tigger_mode_t {
-	/** Trigger mode disabled */
-	RTE_PMD_QDMA_TRIG_MODE_DISABLE,
-	/** Trigger mode every */
-	RTE_PMD_QDMA_TRIG_MODE_EVERY,
-	/** Trigger mode user count */
-	RTE_PMD_QDMA_TRIG_MODE_USER_COUNT,
-	/** Trigger mode user */
-	RTE_PMD_QDMA_TRIG_MODE_USER,
-	/** Trigger mode timer */
-	RTE_PMD_QDMA_TRIG_MODE_USER_TIMER,
-	/** Trigger mode timer + count */
-	RTE_PMD_QDMA_TRIG_MODE_USER_TIMER_COUNT,
-	/** Trigger mode invalid */
-	RTE_PMD_QDMA_TRIG_MODE_MAX,
-};
-
-/**
- * Enum to specify the completion descriptor length
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_cmpt_desc_len {
-	/** 8B Completion descriptor */
-	RTE_PMD_QDMA_CMPT_DESC_LEN_8B = 8,
-	/** 16B Completion descriptor */
-	RTE_PMD_QDMA_CMPT_DESC_LEN_16B = 16,
-	/** 32B Completion descriptor */
-	RTE_PMD_QDMA_CMPT_DESC_LEN_32B = 32,
-	/** 64B Completion descriptor */
-	RTE_PMD_QDMA_CMPT_DESC_LEN_64B = 64,
-	/** Invalid Completion descriptor */
-	RTE_PMD_QDMA_CMPT_DESC_LEN_MAX,
-};
-
-/**
- * Enum to specify the bypass descriptor length
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_bypass_desc_len {
-	/** 8B Bypass descriptor */
-	RTE_PMD_QDMA_BYPASS_DESC_LEN_8B = 8,
-	/** 16B Bypass descriptor */
-	RTE_PMD_QDMA_BYPASS_DESC_LEN_16B = 16,
-	/** 32B Bypass descriptor */
-	RTE_PMD_QDMA_BYPASS_DESC_LEN_32B = 32,
-	/** 64B Bypass descriptor */
-	RTE_PMD_QDMA_BYPASS_DESC_LEN_64B = 64,
-	/** Invalid Bypass descriptor */
-	RTE_PMD_QDMA_BYPASS_DESC_LEN_MAX,
-};
-
-/**
- * Enum to specify the debug request type
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_xdebug_type {
-	/** Debug Global registers */
-	RTE_PMD_QDMA_XDEBUG_QDMA_GLOBAL_CSR,
-	/** Debug Device specific structure */
-	RTE_PMD_QDMA_XDEBUG_QDMA_DEVICE_STRUCT,
-	/** Debug Queue information */
-	RTE_PMD_QDMA_XDEBUG_QUEUE_INFO,
-	/** Debug descriptor */
-	RTE_PMD_QDMA_XDEBUG_QUEUE_DESC_DUMP,
-	/** Invalid debug type */
-	RTE_PMD_QDMA_XDEBUG_MAX,
-};
-
-/**
- * Enum to specify the queue ring for debug
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_xdebug_desc_type {
-	/** Debug C2H ring descriptor */
-	RTE_PMD_QDMA_XDEBUG_DESC_C2H,
-	/** Debug H2C ring descriptor */
-	RTE_PMD_QDMA_XDEBUG_DESC_H2C,
-	/** Debug CMPT ring descriptor */
-	RTE_PMD_QDMA_XDEBUG_DESC_CMPT,
-	/** Invalid debug type */
-	RTE_PMD_QDMA_XDEBUG_DESC_MAX,
-};
-
-/**
- * Enum to specify the QDMA device type
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_device_type {
-	/** QDMA Soft device e.g. UltraScale+ IP's  */
-	RTE_PMD_QDMA_DEVICE_SOFT,
-	/** QDMA Versal CPM4 device */
-	RTE_PMD_QDMA_DEVICE_VERSAL_CPM4,
-	/** QDMA Versal CPM5 device */
-	RTE_PMD_QDMA_DEVICE_VERSAL_CPM5,
-	/** Invalid QDMA device  */
-	RTE_PMD_QDMA_DEVICE_NONE
-};
-
-/**
- * Enum to specify the QDMA IP type
- * @ingroup rte_pmd_qdma_enums
- */
-enum rte_pmd_qdma_ip_type {
-	/** Versal Hard IP  */
-	RTE_PMD_QDMA_VERSAL_HARD_IP,
-	/** Versal Soft IP  */
-	RTE_PMD_QDMA_VERSAL_SOFT_IP,
-	/** QDMA Soft IP  */
-	RTE_PMD_QDMA_SOFT_IP,
-	/** EQDMA Soft IP  */
-	RTE_PMD_EQDMA_SOFT_IP,
-	/** Invalid IP type  */
-	RTE_PMD_QDMA_NONE_IP
-};
-
-
-
-
-/**
- * Structure to hold the QDMA device attributes
- *
- * @ingroup rte_pmd_qdma_struct
- */
-struct rte_pmd_qdma_dev_attributes {
-	/** Number of PFs*/
-	uint8_t num_pfs;
-	/** Number of Queues */
-	uint16_t num_qs;
-	/** Indicates whether FLR supported or not */
-	uint8_t flr_present:1;
-	/** Indicates whether ST mode supported or not */
-	uint8_t st_en:1;
-	/** Indicates whether MM mode supported or not */
-	uint8_t mm_en:1;
-	/** Indicates whether MM with Completions supported or not */
-	uint8_t mm_cmpt_en:1;
-	/** Indicates whether Mailbox supported or not */
-	uint8_t mailbox_en:1;
-	/** Debug mode is enabled/disabled for IP */
-	uint8_t debug_mode:1;
-	/** Descriptor Engine mode:
-	 * Internal only/Bypass only/Internal & Bypass
-	 */
-	uint8_t desc_eng_mode:2;
-	/** Number of MM channels */
-	uint8_t mm_channel_max;
-
-	/** To indicate support of
-	 * overflow check disable in CMPT ring
-	 */
-	uint8_t cmpt_ovf_chk_dis:1;
-	/** To indicate support of 64 bytes
-	 * C2H/H2C descriptor format
-	 */
-	uint8_t sw_desc_64b:1;
-	/** To indicate support of 64 bytes
-	 * CMPT descriptor format
-	 */
-	uint8_t cmpt_desc_64b:1;
-	/** To indicate support of
-	 * counter + timer trigger mode
-	 */
-	uint8_t cmpt_trig_count_timer:1;
-	/** Device Type */
-	enum rte_pmd_qdma_device_type device_type;
-	/** Versal IP Type */
-	enum rte_pmd_qdma_ip_type ip_type;
-};
-
-
-/******************************************************************************/
-/**
- * Dumps the QDMA configuration registers for the given port
- *
- * @param	port_id Port ID
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dbg_regdump(uint8_t port_id);
-
-/******************************************************************************/
-/**
- * Dumps the QDMA register field information for a given register offset
- *
- * @param	port_id Port ID
- * @param	reg_addr Register Address
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dbg_reg_info_dump(uint8_t port_id,
-			uint32_t num_regs, uint32_t reg_addr);
-
-/******************************************************************************/
-/**
- * Dumps the device specific SW structure for the given port
- *
- * @param	port_id Port ID
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dbg_qdevice(uint8_t port_id);
-
-/******************************************************************************/
-/**
- * Dumps the qdma Tx and Rx queue stats for the given queue ID
- *
- * @param	port_id Port ID
- * @param	queue  Queue ID relative to the Port
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_qstats(uint8_t port_id, uint16_t queue);
-
-/******************************************************************************/
-/**
- * Clear the qdma Tx and Rx queue stats for the given queue ID
- *
- * @param	port_id Port ID
- * @param	queue  Queue ID relative to the Port
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_qstats_clear(uint8_t port_id, uint16_t queue);
-
-/******************************************************************************/
-/**
- * Dumps the queue contexts and queue specific SW
- * structures for the given queue ID
- *
- * @param	port_id Port ID
- * @param	queue  Queue ID relative to the Port
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dbg_qinfo(uint8_t port_id, uint16_t queue);
-
-/******************************************************************************/
-/**
- * Dumps the Queue descriptors
- *
- * @param	port_id Port ID
- * @param	queue  Queue ID relative to the Port
- * @param	start  Start index of the descriptor to dump
- * @param	end    End index of the descriptor to dump
- * @param	type   Descriptor type
- *
- * @return	'0' on success and "< 0" on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dbg_qdesc(uint8_t port_id, uint16_t queue, int start,
-			int end, enum rte_pmd_qdma_xdebug_desc_type type);
-
-/******************************************************************************/
-/**
- * Returns the BAR indices of the QDMA BARs
- *
- * @param	port_id Port ID
- * @param	config_bar_idx Config BAR index
- * @param	user_bar_idx   AXI Master Lite BAR(user bar) index
- * @param	bypass_bar_idx AXI Bridge Master BAR(bypass bar) index
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	None
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_get_bar_details(int port_id, int32_t *config_bar_idx,
-			int32_t *user_bar_idx, int32_t *bypass_bar_idx);
-
-/******************************************************************************/
-/**
- * Returns queue base for given port
- *
- * @param	port_id Port ID
- * @param	queue_base Queue base
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note    Application can call this API only after successful
- *          call to rte_eh_dev_configure() API
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_get_queue_base(int port_id, uint32_t *queue_base);
-
-/******************************************************************************/
-/**
- * Retrieves PCIe function type i.e. PF or VF
- *
- * @param	port_id Port ID
- * @param	func_type Indicates PCIe function type
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note    Returns the PCIe function type i.e. PF or VF of the given port
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_get_pci_func_type(int port_id,
-		enum rte_pmd_qdma_pci_func_type *func_type);
-
-/******************************************************************************/
-/**
- * Returns immediate data state	i.e. whether enabled or disabled,
- * for the specified queue
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	state Pointer to the state specifying whether
- *			immediate data is enabled or not
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this function after
- *		rte_eth_rx_queue_setup() is called.
- *		API is applicable for streaming queues only.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_get_immediate_data_state(int port_id, uint32_t qid,
-			int *state);
-
-/******************************************************************************/
-/**
- * Sets queue interface mode for the specified queue
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	mode Queue interface mode to be set
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before
- *		rte_eth_tx_queue_setup()/rte_eth_rx_queue_setup() API.
- *		By default, all queues are setup in streaming mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_queue_mode(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_queue_mode_t mode);
-
-/******************************************************************************/
-/**
- * Sets immediate data state i.e. enable or disable, for the specified queue.
- * If enabled, the user defined data in the completion
- * ring are dumped in to a queue specific file
- * "q_<qid>_immmediate_data.txt" in the local directory.
- *
- *@param	port_id Port ID
- *@param	qid  Queue ID
- *@param	state Immediate data state to be set.
- *			Set '0' to disable and '1' to enable.
- *
- *@return	'0' on success and '< 0' on failure
- *
- *@note		Application can call this API after successful
- *		call to rte_eth_rx_queue_setup() API.
- *		This API is applicable for streaming queues only.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_immediate_data_state(int port_id, uint32_t qid,
-			uint8_t state);
-
-/******************************************************************************/
-/**
- * Enables or disables the overflow check (whether PIDX is overflowing
- * the CIDX) performed by QDMA on the completion descriptor ring of specified
- * queue.
- *
- * @param	port_id Port ID
- * @param	qid	   Queue ID
- * @param	enable '1' to enable and '0' to disable the overflow check
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_rx_queue_setup() API, but before calling
- *		rte_eth_rx_queue_start() or rte_eth_dev_start() API.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_overflow_check(int port_id, uint32_t qid,
-			uint8_t enable);
-
-/******************************************************************************/
-/**
- * Configures the completion ring descriptor size
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	size Descriptor size to be configured
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API
- *		when queue is in streaming mode, and before
- *		rte_pmd_qdma_dev_cmptq_setup when queue is in
- *		memory mapped mode.
- *		By default, the completion desciptor size is set to 8 bytes.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_descriptor_size(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_cmpt_desc_len size);
-
-/******************************************************************************/
-/**
- * Configures the trigger mode for completion ring CIDX updates
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	mode Trigger mode to be configured
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API before calling
- *		rte_eth_rx_queue_start() or rte_eth_dev_start() API.
- *		By default, trigger mode is set to
- *		RTE_PMD_QDMA_TRIG_MODE_USER_TIMER_COUNT.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_trigger_mode(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_tigger_mode_t mode);
-
-/******************************************************************************/
-/**
- * Configures the timer interval in microseconds to trigger
- * the completion ring CIDX updates
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	value Timer interval for completion trigger to be configured
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API before calling
- *		rte_eth_rx_queue_start() or rte_eth_dev_start() API.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_cmpt_timer(int port_id, uint32_t qid, uint32_t value);
-
-/******************************************************************************/
-/**
- * Enables or disables prefetch of the descriptors by prefetch engine
- *
- *@param	port_id Port ID
- *@param	qid     Queue ID
- *@param	enable  '1' to enable and '0' to disable the descriptor prefetch
- *
- *@return	'0' on success and '< 0' on failure
- *
- *@note		Application can call this API after successful call to
- *		rte_eth_rx_queue_setup() API, but before calling
- *		rte_eth_rx_queue_start() or rte_eth_dev_start() API.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_set_c2h_descriptor_prefetch(int port_id, uint32_t qid,
-			uint8_t enable);
-
-/*****************************************************************************/
-/**
- * Sets the PCIe endpoint memory offset at which to
- * perform DMA operation for the specified queue operating
- * in memory mapped mode.
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	dir Direction i.e. Tx or Rx
- * @param	addr Destination address for Tx, Source address for Rx
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	This API can be called before Tx/Rx burst API's
- *		(rte_eth_tx_burst() and rte_eth_rx_burst()) are called.
- * @ingroup rte_pmd_qdma_func
- *****************************************************************************/
-int rte_pmd_qdma_set_mm_endpoint_addr(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_dir_type dir, uint64_t addr);
-
-/******************************************************************************/
-/**
- * Sets the Tx bypass mode and bypass descriptor size for the specified queue
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	bypass_mode Bypass mode to be set
- * @param	size Bypass descriptor size to be set
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before tx_setup() API.
- *		By default, all queues are configured in internal mode
- *		i.e. bypass disabled.
- *		If size is specified zero, then the bypass descriptor size is
- *		set to the one used in internal mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_configure_tx_bypass(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_tx_bypass_mode bypass_mode,
-			enum rte_pmd_qdma_bypass_desc_len size);
-
-/******************************************************************************/
-/**
- * Sets the Rx bypass mode and bypass descriptor size for the specified queue
- *
- * @param	port_id Port ID
- * @param	qid  Queue ID
- * @param	bypass_mode Bypass mode to be set
- * @param	size Bypass descriptor size to be set
- *
- * @return	'0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() but before rte_eth_rx_queue_setup() API.
- *		By default, all queues are configured in internal mode
- *		i.e. bypass disabled.
- *		If size is specified zero, then the bypass descriptor size is
- *		set to the one used in internal mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_configure_rx_bypass(int port_id, uint32_t qid,
-			enum rte_pmd_qdma_rx_bypass_mode bypass_mode,
-			enum rte_pmd_qdma_bypass_desc_len size);
-
-/******************************************************************************/
-/**
- * Retrive the device capabilities
- *
- * @param   port_id Port ID
- * @param   dev_attr Pointer to the device capabilities structure
- *
- * @return  '0' on success and '< 0' on failure
- *
- * @note	None.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_get_device_capabilities(int port_id,
-			struct rte_pmd_qdma_dev_attributes *dev_attr);
-
-/******************************************************************************/
-/**
- * Allocate and set up a completion queue for memory mapped mode
- *
- * @param   port_id Port ID
- * @param   qid     Queue ID
- * @param   nb_cmpt_desc Completion queue ring size
- * @param   socket_id    The socket_id argument is the socket identifier
- *			in case of NUMA. Its value can be SOCKET_ID_ANY
- *			if there is no NUMA constraint for the DMA memory
- *			allocated for the transmit descriptors of the ring.
- *
- * @return  '0' on success and '< 0' on failure
- *
- * @note	Application can call this API after successful call to
- *		rte_eth_dev_configure() and rte_pmd_qdma_set_queue_mode()
- *		for queues in memory mapped mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dev_cmptq_setup(int port_id, uint32_t cmpt_queue_id,
-					uint16_t nb_cmpt_desc,
-					unsigned int socket_id);
-
-/******************************************************************************/
-/**
- * Start the MM completion queue
- *
- * @param   port_id Port ID
- * @param   qid Queue ID
- *
- * @return  '0' on success and '< 0' on failure
- *
- * @note    Application can call this API after successful call to
- *          rte_pmd_qdma_dev_cmptq_setup() API when queue is in
- *          memory mapped mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dev_cmptq_start(int port_id, uint32_t qid);
-
-/******************************************************************************/
-/**
- * Stop the MM completion queue
- *
- * @param   port_id Port ID
- * @param   qid  Queue ID
- *
- * @return  '0' on success and '< 0' on failure
- *
- * @note    Application can call this API after successful call to
- *          rte_pmd_qdma_dev_cmptq_start() API when queue is in
- *          memory mapped mode.
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-int rte_pmd_qdma_dev_cmptq_stop(int port_id, uint32_t qid);
-
-/*****************************************************************************/
-/**
- * Process the MM Completion queue entries
- *
- * @param   port_id Port ID
- * @param   qid  Queue ID
- * @param   cmpt_buff  User buffer pointer to store the completion data
- * @param   nb_entries Number of compeltion entries to process
- *
- * @return  'number of entries processed' on success and '< 0' on failure
- *
- * @note    Application can call this API after successful call to
- *	    rte_pmd_qdma_dev_cmptq_start() API
- * @ingroup rte_pmd_qdma_func
- ******************************************************************************/
-uint16_t rte_pmd_qdma_mm_cmpt_process(int port_id, uint32_t qid,
-		void *cmpt_buff, uint16_t nb_entries);
-
-/*****************************************************************************/
-/**
- * DPDK PMD function to close the device.
- *
- * @param   port_id Port ID
- *
- * @return  '0' on success and '< 0' on failure
- *
- ******************************************************************************/
-int rte_pmd_qdma_dev_close(uint16_t port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD function to fill fast-path operations.
- *
- * @param   port_id Port ID
- *
- * @return  on success return 0
- *
- ******************************************************************************/
-int rte_pmd_qdma_dev_fp_ops_config(int port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to read pci registers.
- *
- * @param   port_id Port ID
- * @param   bar Bar
- * @param   offset Offset
- *
- * @return  pci_read_reg value
- *
- ******************************************************************************/
-unsigned int rte_pmd_qdma_compat_pci_read_reg(int port_id,
-		unsigned int bar, unsigned int offset);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to write pci registers.
- *
- * @param   port_id Port ID
- * @param   bar Bar
- * @param   offset Offset
- * @param   reg_val Value which needs to write
- *
- ******************************************************************************/
-void rte_pmd_qdma_compat_pci_write_reg(int port_id, uint32_t bar,
-		uint32_t offset, uint32_t reg_val);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to get bdf
- *
- * @param   m_id Port ID
- * @param   bus Bus
- * @param   dev Device
- * @param   fn Function
- *
- ******************************************************************************/
-void rte_pmd_qdma_get_bdf(uint32_t m_id, uint32_t *bus,
-		uint32_t *dev, uint32_t *fn);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to reserve memzone
- *
- ******************************************************************************/
-void rte_pmd_qdma_compat_memzone_reserve_aligned(void);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to device remove
- *
- * @param   port_id Port ID
- * @return  device id to remove
- *
- ******************************************************************************/
-int rte_pmd_qdma_dev_remove(int port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to get device id
- *
- * @param   port_id Port ID
- * @return  device id to get
- *
- ******************************************************************************/
-uint16_t rte_pmd_qdma_get_dev_id(int port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to device started
- *
- * @param   port_id Port ID
- * @param   status Enable/Disable
- *
- ******************************************************************************/
-void rte_pmd_qdma_dev_started(int port_id, bool status);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function for eth dev to pci
- *
- * @param   port_id Port ID
- * @return  rte_pci_device* pci_device
- *
- ******************************************************************************/
-
-struct rte_pci_device *rte_pmd_qdma_eth_dev_to_pci(int port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to get rte device
- *
- * @param   port_id Port ID
- * @return  rte_device* rte_device
- *
- ******************************************************************************/
-struct rte_device *rte_pmd_qdma_get_device(int port_id);
-
-/*****************************************************************************/
-/**
- * DPDK PMD compatibility function to validate rte device
- *
- * @param   port_id Port ID
- * @return  bool true/false
- *
- ******************************************************************************/
-bool rte_pmd_qdma_validate_dev(int port_id);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* ifndef __RTE_PMD_QDMA_EXPORT_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/version.h b/QDMA/DPDK/drivers/net/qdma/version.h
deleted file mode 100755
index 8e44e3a..0000000
--- a/QDMA/DPDK/drivers/net/qdma/version.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __QDMA_VERSION_H__
-#define __QDMA_VERSION_H__
-
-#define qdma_stringify1(x...)	#x
-#define qdma_stringify(x...)	qdma_stringify1(x)
-
-#define QDMA_PMD_MAJOR		2023
-#define QDMA_PMD_MINOR		2
-#define QDMA_PMD_PATCHLEVEL	1
-
-#define QDMA_PMD_VERSION      \
-	qdma_stringify(QDMA_PMD_MAJOR) "." \
-	qdma_stringify(QDMA_PMD_MINOR) "." \
-	qdma_stringify(QDMA_PMD_PATCHLEVEL)
-
-#define QDMA_PMD_VERSION_NUMBER  \
-	((QDMA_PMD_MAJOR) * 1000 + (QDMA_PMD_MINOR) * 100 + QDMA_PMD_PATCHLEVEL)
-
-#endif /* ifndef __QDMA_VERSION_H__ */
diff --git a/QDMA/DPDK/drivers/net/qdma/version.map b/QDMA/DPDK/drivers/net/qdma/version.map
deleted file mode 100755
index 2944145..0000000
--- a/QDMA/DPDK/drivers/net/qdma/version.map
+++ /dev/null
@@ -1,166 +0,0 @@
-/*-
- * BSD LICENSE
- *
- * Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- *   * Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- *   * 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.
- *   * Neither the name of the copyright holder nor the names of its
- *     contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "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 COPYRIGHT
- * OWNER OR CONTRIBUTORS 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.
- */
-
-DPDK_21 {
-	global:
-
-	rte_pmd_qdma_set_immediate_data_state;
-	rte_pmd_qdma_get_bar_details;
-	rte_pmd_qdma_get_queue_base;
-	rte_pmd_qdma_set_queue_mode;
-	rte_pmd_qdma_get_device_capabilities;
-	qdma_pci_read_reg;
-	qdma_pci_write_reg;
-	rte_pmd_qdma_set_mm_endpoint_addr;
-	rte_pmd_qdma_dbg_qdesc;
-	rte_pmd_qdma_dbg_regdump;
-	rte_pmd_qdma_dbg_reg_info_dump;
-	rte_pmd_qdma_dbg_qinfo;
-
-	rte_pmd_qdma_get_pci_func_type;
-	rte_pmd_qdma_configure_tx_bypass;
-	rte_pmd_qdma_configure_rx_bypass;
-	rte_pmd_qdma_set_cmpt_descriptor_size;
-	rte_pmd_qdma_set_c2h_descriptor_prefetch;
-	rte_pmd_qdma_set_cmpt_overflow_check;
-	rte_pmd_qdma_set_cmpt_trigger_mode;
-	rte_pmd_qdma_set_cmpt_timer;
-	rte_pmd_qdma_get_immediate_data_state;
-	rte_pmd_qdma_dev_cmptq_setup;
-	rte_pmd_qdma_dev_cmptq_start;
-	rte_pmd_qdma_mm_cmpt_process;
-	rte_pmd_qdma_dev_cmptq_stop;
-	rte_pmd_qdma_dbg_qdevice;
-	rte_pmd_qdma_qstats;
-	rte_pmd_qdma_qstats_clear;
-	rte_pmd_qdma_dev_close;
-	rte_pmd_qdma_dev_fp_ops_config;
-
-	local: *;
-};
-
-DPDK_22 {
-        global:
-
-        rte_pmd_qdma_set_immediate_data_state;
-        rte_pmd_qdma_get_bar_details;
-        rte_pmd_qdma_get_queue_base;
-        rte_pmd_qdma_set_queue_mode;
-        rte_pmd_qdma_get_device_capabilities;
-        qdma_pci_read_reg;
-        qdma_pci_write_reg;
-        rte_pmd_qdma_set_mm_endpoint_addr;
-        rte_pmd_qdma_dbg_qdesc;
-        rte_pmd_qdma_dbg_regdump;
-        rte_pmd_qdma_dbg_reg_info_dump;
-        rte_pmd_qdma_dbg_qinfo;
-
-        rte_pmd_qdma_get_pci_func_type;
-        rte_pmd_qdma_configure_tx_bypass;
-        rte_pmd_qdma_configure_rx_bypass;
-        rte_pmd_qdma_set_cmpt_descriptor_size;
-        rte_pmd_qdma_set_c2h_descriptor_prefetch;
-        rte_pmd_qdma_set_cmpt_overflow_check;
-        rte_pmd_qdma_set_cmpt_trigger_mode;
-        rte_pmd_qdma_set_cmpt_timer;
-        rte_pmd_qdma_get_immediate_data_state;
-        rte_pmd_qdma_dev_cmptq_setup;
-        rte_pmd_qdma_dev_cmptq_start;
-        rte_pmd_qdma_mm_cmpt_process;
-        rte_pmd_qdma_dev_cmptq_stop;
-        rte_pmd_qdma_dbg_qdevice;
-        rte_pmd_qdma_qstats;
-        rte_pmd_qdma_qstats_clear;
-        rte_pmd_qdma_dev_close;
-        rte_pmd_qdma_dev_fp_ops_config;
-        rte_pmd_qdma_compat_pci_write_reg;
-        rte_pmd_qdma_compat_pci_read_reg;
-        rte_pmd_qdma_compat_memzone_reserve_aligned;
-        rte_pmd_qdma_get_bdf;
-        rte_pmd_qdma_dev_remove;
-        rte_pmd_qdma_get_dev_id;
-        rte_pmd_qdma_dev_started;
-        rte_pmd_qdma_eth_dev_to_pci;
-		rte_pmd_qdma_get_device;
-        rte_pmd_qdma_validate_dev;
-
-        local: *;
-};
-
-DPDK_23 {
-        global:
-
-        rte_pmd_qdma_set_immediate_data_state;
-        rte_pmd_qdma_get_bar_details;
-        rte_pmd_qdma_get_queue_base;
-        rte_pmd_qdma_set_queue_mode;
-        rte_pmd_qdma_get_device_capabilities;
-        qdma_pci_read_reg;
-        qdma_pci_write_reg;
-        rte_pmd_qdma_set_mm_endpoint_addr;
-        rte_pmd_qdma_dbg_qdesc;
-        rte_pmd_qdma_dbg_regdump;
-        rte_pmd_qdma_dbg_reg_info_dump;
-        rte_pmd_qdma_dbg_qinfo;
-
-        rte_pmd_qdma_get_pci_func_type;
-        rte_pmd_qdma_configure_tx_bypass;
-        rte_pmd_qdma_configure_rx_bypass;
-        rte_pmd_qdma_set_cmpt_descriptor_size;
-        rte_pmd_qdma_set_c2h_descriptor_prefetch;
-        rte_pmd_qdma_set_cmpt_overflow_check;
-        rte_pmd_qdma_set_cmpt_trigger_mode;
-        rte_pmd_qdma_set_cmpt_timer;
-        rte_pmd_qdma_get_immediate_data_state;
-        rte_pmd_qdma_dev_cmptq_setup;
-        rte_pmd_qdma_dev_cmptq_start;
-        rte_pmd_qdma_mm_cmpt_process;
-        rte_pmd_qdma_dev_cmptq_stop;
-        rte_pmd_qdma_dbg_qdevice;
-        rte_pmd_qdma_qstats;
-        rte_pmd_qdma_qstats_clear;
-        rte_pmd_qdma_dev_close;
-        rte_pmd_qdma_dev_fp_ops_config;
-        rte_pmd_qdma_compat_pci_write_reg;
-        rte_pmd_qdma_compat_pci_read_reg;
-        rte_pmd_qdma_compat_memzone_reserve_aligned;
-        rte_pmd_qdma_get_bdf;
-        rte_pmd_qdma_dev_remove;
-        rte_pmd_qdma_get_dev_id;
-        rte_pmd_qdma_dev_started;
-        rte_pmd_qdma_eth_dev_to_pci;
-		rte_pmd_qdma_get_device;
-        rte_pmd_qdma_validate_dev;
-
-        local: *;
-};
diff --git a/QDMA/DPDK/examples/qdma_testapp/Makefile b/QDMA/DPDK/examples/qdma_testapp/Makefile
deleted file mode 100755
index 177c5cf..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-#   BSD LICENSE
-#
-#   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
-#   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-#
-#   Redistribution and use in source and binary forms, with or without
-#   modification, are permitted provided that the following conditions
-#   are met:
-#
-#     * Redistributions of source code must retain the above copyright
-#       notice, this list of conditions and the following disclaimer.
-#     * 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.
-#     * Neither the name of the copyright holder nor the names of its
-#       contributors may be used to endorse or promote products derived
-#       from this software without specific prior written permission.
-#
-#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#   "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 COPYRIGHT
-#   OWNER OR CONTRIBUTORS 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.
-
-ifeq ($(RTE_SDK),)
-$(error "Please define RTE_SDK environment variable")
-endif
-
-# Default target, can be overriden by command line or environment
-RTE_TARGET ?= build
-
-#Default BRAM size is set to 512K
-#if modified the BRAM_SIZE, the same need to be set to the driver Makefile
-BRAM_SIZE ?= 524288
-
-# binary name
-APP = qdma_testapp
-
-# all source are stored in SRCS-y
-SRCS-y := testapp.c pcierw.c commands.c
-
-ifeq ($(CONFIG_RTE_LIBRTE_QDMA_GCOV),y)
-  CFLAGS += -g -ftest-coverage -fprofile-arcs
-  LDFLAGS += -lgcov
-endif
-
-# Build using pkg-config variables if possible
-ifneq ($(shell pkg-config --exists libdpdk && echo 0),0)
-$(error "no installation of DPDK found")
-endif
-
-all: shared
-.PHONY: shared static
-shared: build/$(APP)-shared
-	ln -sf $(APP)-shared build/$(APP)
-static: build/$(APP)-static
-	ln -sf $(APP)-static build/$(APP)
-
-PKGCONF ?= pkg-config
-
-CFLAGS += -DBRAM_SIZE=$(BRAM_SIZE)
-CFLAGS += -DDPDK=1
-
-# Add flag to allow experimental API as qdma_testapp uses rte_ethdev_set_ptype API
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
-PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
-CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
-LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
-LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
-LDFLAGS += $(shell $(PKGCONF) --libs libdpdk)
-
-LDFLAGS += -lrte_net_qdma
-
-# for shared library builds, we need to explicitly link these PMDs
-LDFLAGS_SHARED += -lrte_net_qdma
-
-build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
-	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
-
-build/$(APP)-static: $(SRCS-y) Makefile $(PC_FILE) | build
-	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_STATIC)
-
-build:
-	@mkdir -p $@
-
-.PHONY: clean
-clean:
-	rm -f build/$(APP) build/$(APP)-static build/$(APP)-shared
-	test -d build && rmdir -p build || true
diff --git a/QDMA/DPDK/examples/qdma_testapp/commands.c b/QDMA/DPDK/examples/qdma_testapp/commands.c
deleted file mode 100755
index 20e8af7..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/commands.c
+++ /dev/null
@@ -1,1526 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*
- * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the University of California, Berkeley nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS AND CONTRIBUTORS 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.
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <netinet/in.h>
-#include <termios.h>
-#ifndef __linux__
-#include <net/socket.h>
-#endif
-
-#include <cmdline_rdline.h>
-#include <cmdline_parse.h>
-#include <cmdline_parse_ipaddr.h>
-#include <cmdline_parse_num.h>
-#include <cmdline_parse_string.h>
-#include <cmdline.h>
-
-#include <rte_string_fns.h>
-#include <rte_ethdev.h>
-#include <fcntl.h>
-
-#include "parse_obj_list.h"
-#include "pcierw.h"
-#include "commands.h"
-#include "qdma_regs.h"
-#include "testapp.h"
-#include "../../drivers/net/qdma/rte_pmd_qdma.h"
-
-#define ALIGN_TO_WORD_BYTES                  (4)
-#define NUMERICAL_BASE_HEXADECIMAL       (16)
-
-/* Command help */
-struct cmd_help_result {
-	cmdline_fixed_string_t help;
-};
-
-static void cmd_help_parsed(__attribute__((unused)) void *parsed_result,
-						struct cmdline *cl,
-					__attribute__((unused)) void *data)
-{
-	cmdline_printf(cl,
-			"Demo example of command line interface in RTE\n\n"
-			"This is a readline-like interface that can be "
-			"used to\n debug your RTE application.\n\n"
-			"Supported Commands:\n"
-			"\tport_init            <port-id> "
-						"<num-queues> <st-queues> "
-						"<ring-depth> <pkt-buff-size> "
-						"    :port-initailization\n"
-			"\tport_close           <port-id> "
-			":port-close\n"
-			"\tport_reset            <port-id> "
-						"<num-queues> <st-queues> "
-						"<ring-depth> <pkt-buff-size> "
-						"    :port-reset\n"
-			"\tport_remove          <port-id> "
-			":port-remove\n"
-			"\treg_read             <port-id> <bar-num> <address> "
-			":Reads Specified Register\n"
-			"\treg_write            <port-id> <bar-num> <address> "
-						"<value>    "
-			":Writes Specified Register\n"
-			"\tdma_to_device        <port-id> <num-queues> "
-						"<input-filename> "
-			"<dst_addr> <size> <iterations>   "
-			":To Transmit\n"
-			"\tdma_from_device      <port-id> <num-queues> "
-						"<output-filename> "
-			"<src_addr> <size> <iterations>  "
-			":To Receive\n"
-			"\treg_dump             <port-id>  "
-			":To dump all the valid registers\n"
-			"\treg_info_read        <port-id> <reg-addr> <num-regs> "
-			":Reads the field info for the specified number of registers\n"
-			"\tqueue_dump           <port-id> <queue-id>  "
-			":To dump the queue-context of a queue-number\n"
-			"\tqstats               <port-id> <queue-id>  "
-			":To dump the queue-stats of a queue-number\n"
-			"\tqstats_clr               <port-id> <queue-id>  "
-			":To clear the queue-stats of a queue-number\n"
-			"\tdesc_dump            <port-id> <queue-id>  "
-			":To dump the descriptor-fields of a "
-			"queue-number\n"
-			"\tload_cmds            <file-name> "
-			":To execute the list of commands from file\n"
-			"\thelp\n"
-			"\tCtrl-d                           "
-			": To quit from this command-line type Ctrl+d\n"
-			"\n");
-}
-
-cmdline_parse_token_string_t cmd_help_help =
-	TOKEN_STRING_INITIALIZER(struct cmd_help_result, help, "help");
-
-cmdline_parse_inst_t cmd_help = {
-	.f = cmd_help_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "show help",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_help_help,
-		NULL,
-	},
-};
-
-struct cmd_obj_port_init_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t num_queues;
-	cmdline_fixed_string_t st_queues;
-	cmdline_fixed_string_t nb_descs;
-	cmdline_fixed_string_t buff_size;
-};
-
-static void cmd_obj_port_init_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_port_init_result *res = parsed_result;
-
-	cmdline_printf(cl, "Port-init Port:%s, num-queues:%s, st-queues: %s\n",
-			res->port_id, res->num_queues, res->st_queues);
-
-	int port_id = atoi(res->port_id);
-	if (pinfo[port_id].num_queues) {
-		cmdline_printf(cl, "Error: port-id:%d already initialized\n"
-				"To re-initialize please close the port\n",
-				port_id);
-		return;
-	}
-
-	int num_queues   = atoi(res->num_queues);
-	int st_queues   = atoi(res->st_queues);
-	int nb_descs	= atoi(res->nb_descs);
-	int buff_size	= atoi(res->buff_size);
-
-	if ((num_queues < 1) || (num_queues > MAX_NUM_QUEUES)) {
-		cmdline_printf(cl, "Error: please enter valid number of queues,"
-				"entered: %d max allowed: %d\n",
-				num_queues, MAX_NUM_QUEUES);
-		return;
-	}
-
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: please enter valid port number: "
-				"%d\n", port_id);
-		return;
-	}
-
-	int result = port_init(port_id, num_queues,
-				st_queues, nb_descs, buff_size);
-
-	if (result < 0)
-		cmdline_printf(cl, "Error: Port initialization on "
-				"port-id:%d failed\n", port_id);
-	else
-		cmdline_printf(cl, "Port initialization done "
-				"successfully on port-id:%d\n",
-				port_id);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_port_init =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, action,
-					"port_init");
-cmdline_parse_token_string_t cmd_obj_port_init_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, port_id,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_init_num_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, num_queues,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_init_st_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, st_queues,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_init_nb_descs =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, nb_descs,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_init_buff_size =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_init_result, buff_size,
-					NULL);
-
-cmdline_parse_inst_t cmd_obj_port_init = {
-	.f = cmd_obj_port_init_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "port_init  port-id num-queues st-queues "
-			"queue-ring-size buffer-size",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_port_init,
-		(void *)&cmd_obj_port_init_port_id,
-		(void *)&cmd_obj_port_init_num_queues,
-		(void *)&cmd_obj_port_init_st_queues,
-		(void *)&cmd_obj_port_init_nb_descs,
-		(void *)&cmd_obj_port_init_buff_size,
-		NULL,
-	},
-};
-
-/* Command port-close */
-struct cmd_obj_port_close_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-};
-
-static void cmd_obj_port_close_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_port_close_result *res = parsed_result;
-
-	cmdline_printf(cl, "Port-close on Port-id:%s\n", res->port_id);
-
-	int port_id = atoi(res->port_id);
-	if (pinfo[port_id].num_queues == 0) {
-		cmdline_printf(cl, "Error: port-id:%d already closed\n",
-				port_id);
-		return;
-	}
-
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: please enter valid port "
-					"number: %d\n", port_id);
-		return;
-	}
-
-	port_close(port_id);
-	pinfo[port_id].num_queues = 0;
-	cmdline_printf(cl, "Port-id:%d closed successfully\n", port_id);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_port_close =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_close_result, action,
-					"port_close");
-cmdline_parse_token_string_t cmd_obj_port_close_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_close_result, port_id,
-					NULL);
-
-cmdline_parse_inst_t cmd_obj_port_close = {
-	.f = cmd_obj_port_close_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "port_close  port-id ",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_port_close,
-		(void *)&cmd_obj_port_close_port_id,
-		NULL,
-	},
-
-};
-
-/* Command port-reset */
-struct cmd_obj_port_reset_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t num_queues;
-	cmdline_fixed_string_t st_queues;
-	cmdline_fixed_string_t nb_descs;
-	cmdline_fixed_string_t buff_size;
-};
-
-static void cmd_obj_port_reset_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_port_reset_result *res = parsed_result;
-
-	cmdline_printf(cl, "Port-reset Port:%s, num-queues:%s, st-queues: %s\n",
-			res->port_id, res->num_queues, res->st_queues);
-
-	int port_id = atoi(res->port_id);
-	int num_queues   = atoi(res->num_queues);
-	int st_queues   = atoi(res->st_queues);
-	int nb_descs	= atoi(res->nb_descs);
-	int buff_size	= atoi(res->buff_size);
-
-	if ((num_queues < 1) || (num_queues > MAX_NUM_QUEUES)) {
-		cmdline_printf(cl, "Error: please enter valid number of queues,"
-				"entered: %d max allowed: %d\n",
-				num_queues, MAX_NUM_QUEUES);
-		return;
-	}
-
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: please enter valid port number: "
-				"%d\n", port_id);
-		return;
-	}
-
-	int result = port_reset(port_id, num_queues,
-				st_queues, nb_descs, buff_size);
-
-	if (result < 0)
-		cmdline_printf(cl, "Error: Port reset on "
-				"port-id:%d failed\n", port_id);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_port_reset =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, action,
-					"port_reset");
-cmdline_parse_token_string_t cmd_obj_port_reset_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, port_id,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_reset_num_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, num_queues,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_reset_st_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, st_queues,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_reset_nb_descs =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, nb_descs,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_port_reset_buff_size =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_reset_result, buff_size,
-					NULL);
-
-cmdline_parse_inst_t cmd_obj_port_reset = {
-	.f = cmd_obj_port_reset_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "port_reset  port-id num-queues st-queues "
-			"queue-ring-size buffer-size",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_port_reset,
-		(void *)&cmd_obj_port_reset_port_id,
-		(void *)&cmd_obj_port_reset_num_queues,
-		(void *)&cmd_obj_port_reset_st_queues,
-		(void *)&cmd_obj_port_reset_nb_descs,
-		(void *)&cmd_obj_port_reset_buff_size,
-		NULL,
-	},
-};
-
-/* Command port-remove */
-struct cmd_obj_port_remove_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-};
-
-static void cmd_obj_port_remove_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_port_remove_result *res = parsed_result;
-
-	cmdline_printf(cl, "Port-remove on Port-id:%s\n", res->port_id);
-
-	int port_id = atoi(res->port_id);
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: please enter valid port "
-					"number: %d\n", port_id);
-		return;
-	}
-
-	int result = port_remove(port_id);
-	pinfo[port_id].num_queues = 0;
-
-	if (result < 0)
-		cmdline_printf(cl, "Error: Port remove on "
-				"port-id:%d failed\n", port_id);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_port_remove =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_remove_result, action,
-					"port_remove");
-cmdline_parse_token_string_t cmd_obj_port_remove_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_port_remove_result, port_id,
-					NULL);
-
-cmdline_parse_inst_t cmd_obj_port_remove = {
-	.f = cmd_obj_port_remove_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "port_remove  port-id ",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_port_remove,
-		(void *)&cmd_obj_port_remove_port_id,
-		NULL,
-	},
-};
-
-/* Command Read addr */
-struct cmd_obj_reg_read_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t bar_id;
-	cmdline_fixed_string_t addr;
-};
-
-static void cmd_obj_reg_read_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_reg_read_result *res = parsed_result;
-
-	cmdline_printf(cl, "Read Port:%s, BAR-index:%s, Address:%s\n\n",
-				res->port_id, res->bar_id, res->addr);
-
-	int addr   = strtol(res->addr, NULL, NUMERICAL_BASE_HEXADECIMAL);
-
-	if (addr % ALIGN_TO_WORD_BYTES) {
-		cmdline_printf(cl, "ERROR: Read address must aligned to "
-					"a 4-byte boundary.\n\n");
-	} else {
-		int port_id = atoi(res->port_id);
-		int bar_id = atoi(res->bar_id);
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		int result = PciRead(bar_id, addr, port_id);
-
-		cmdline_printf(cl, "Read (%d:0x%08x) = 0x%08x\n",
-				port_id, addr, result);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_reg_read =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_read_result, action,
-					"reg_read");
-cmdline_parse_token_string_t cmd_obj_reg_read_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_read_result, port_id, NULL);
-cmdline_parse_token_string_t cmd_obj_reg_read_bar_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_read_result, bar_id, NULL);
-cmdline_parse_token_string_t cmd_obj_reg_read_addr =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_read_result, addr, NULL);
-
-cmdline_parse_inst_t cmd_obj_reg_read = {
-	.f = cmd_obj_reg_read_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "reg_read port-id bar-id address",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_reg_read,
-		(void *)&cmd_obj_reg_read_port_id,
-		(void *)&cmd_obj_reg_read_bar_id,
-		(void *)&cmd_obj_reg_read_addr,
-		NULL,
-	},
-
-};
-
-/* Command Write addr */
-struct cmd_obj_reg_write_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t bar_id;
-	cmdline_fixed_string_t address;
-	cmdline_fixed_string_t value;
-};
-
-static void cmd_obj_reg_write_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_reg_write_result *res = parsed_result;
-
-	cmdline_printf(cl, "Write Port:%s, Address:%s, Value:%s\n",
-			res->port_id, res->address, res->value);
-
-	int bar_id = atoi(res->bar_id);
-	int port_id = atoi(res->port_id);
-	int addr   = strtol(res->address, NULL, NUMERICAL_BASE_HEXADECIMAL);
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: port-id:%d not supported\n "
-				"Please enter valid port-id\n", port_id);
-		return;
-	}
-	if (addr % ALIGN_TO_WORD_BYTES) {
-		cmdline_printf(cl, "ERROR: Write address must aligned to a "
-				"4-byte boundary.\n\n");
-	} else{
-		int value  = strtol(res->value, NULL, NUMERICAL_BASE_HEXADECIMAL);
-		PciWrite(bar_id, addr, value, port_id);
-		int result = PciRead(bar_id, addr, port_id);
-		cmdline_printf(cl, "Read (%d:0x%08x) = 0x%08x\n", port_id, addr,
-				result);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_reg_write =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_write_result, action,
-								"reg_write");
-cmdline_parse_token_string_t cmd_obj_reg_write_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_write_result, port_id,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_reg_write_bar_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_write_result, bar_id, NULL);
-cmdline_parse_token_string_t cmd_obj_reg_write_address =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_write_result, address,
-					NULL);
-cmdline_parse_token_string_t cmd_obj_reg_write_value =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_write_result, value, NULL);
-
-cmdline_parse_inst_t cmd_obj_reg_write = {
-	.f = cmd_obj_reg_write_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "reg_write port-id bar-id address value",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_reg_write,
-		(void *)&cmd_obj_reg_write_port_id,
-		(void *)&cmd_obj_reg_write_bar_id,
-		(void *)&cmd_obj_reg_write_address,
-		(void *)&cmd_obj_reg_write_value,
-		NULL,
-	},
-
-};
-
-/* Command do-xmit */
-struct cmd_obj_dma_to_device_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queues;
-	cmdline_fixed_string_t filename;
-	cmdline_fixed_string_t dst_addr;
-	cmdline_fixed_string_t size;
-	cmdline_fixed_string_t loops;
-};
-
-static void cmd_obj_dma_to_device_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_dma_to_device_result *res = parsed_result;
-	int i, ifd, tot_num_desc, offset, size, r_size = 0, total_size = 0;
-	int ld_size = 0, loop = 0, ret, j, zbyte = 0, user_bar_idx;
-	off_t ret_val;
-	int port_id = 0, num_queues = 0, input_size = 0, num_loops = 0;
-	uint64_t dst_addr = 0;
-	uint32_t regval = 0;
-	unsigned int q_data_size = 0;
-	char *p = NULL;
-
-	cmdline_printf(cl, "xmit on Port:%s, filename:%s, num-queues:%s\n\n",
-				res->port_id, res->filename, res->queues);
-
-	ifd = open(res->filename, O_RDWR);
-	if (ifd < 0) {
-		cmdline_printf(cl, "Error: Invalid filename: %s\n",
-					res->filename);
-		return;
-	}
-
-	{
-		port_id = atoi(res->port_id);
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-						"Please enter valid port-id\n",
-						port_id);
-			close(ifd);
-			return;
-		}
-		num_queues = atoi(res->queues);
-		if ((unsigned int)num_queues > pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: num-queues:%d are more than "
-					"the configured queues:%d,\n "
-					"Please enter valid number of queues\n",
-					num_queues, pinfo[port_id].num_queues);
-			close(ifd);
-			return;
-		}
-		if (num_queues == 0) {
-			cmdline_printf(cl, "Error: Please enter valid number "
-						"of queues\n");
-			close(ifd);
-			return;
-		}
-		user_bar_idx = pinfo[port_id].user_bar_idx;
-
-#if !defined(TANDEM_BOOT_SUPPORTED)
-		regval = PciRead(user_bar_idx, C2H_CONTROL_REG, port_id);
-#endif
-
-		input_size = atoi(res->size);
-		num_loops = atoi(res->loops);
-		dst_addr = strtoull(res->dst_addr, &p, 0);
-
-#if !defined(PERF_BENCHMARK) && !defined(TANDEM_BOOT_SUPPORTED)
-		if (dst_addr + input_size > BRAM_SIZE) {
-			cmdline_printf(cl, "Error: (dst_addr %ld + input size "
-					"%d) shall be less than "
-					"BRAM_SIZE %d.\n", dst_addr,
-					input_size, BRAM_SIZE);
-			close(ifd);
-			return;
-		}
-#endif
-		/* For zero-byte transfers, HW expects a
-		 * buffer of length 4kb and with desc->len as 0.
-		 */
-		if (input_size == 0) {
-			if ((unsigned int)num_queues <=
-					pinfo[port_id].st_queues) {
-				zbyte = 1;
-			} else {
-				cmdline_printf(cl, "Error: Zero-length support "
-						"is for queues with ST-mode "
-						"only\n");
-				close(ifd);
-				return;
-			}
-		}
-
-		if (input_size % num_queues) {
-			size = input_size / num_queues;
-			r_size = input_size % num_queues;
-		} else
-			size = input_size / num_queues;
-
-		do {
-			total_size = input_size;
-			dst_addr = strtoull(res->dst_addr, &p, 0);
-			q_data_size = 0;
-			/* transmit data on the number of Queues configured
-			 * from the input file
-			 */
-			for (i = 0, j = 0; i < num_queues; i++, j++) {
-				dst_addr += q_data_size;
-
-#ifndef TANDEM_BOOT_SUPPORTED
-				dst_addr %= BRAM_SIZE;
-#endif
-
-				if ((unsigned int)i >=
-						pinfo[port_id].st_queues) {
-					ret =
-					rte_pmd_qdma_set_mm_endpoint_addr(
-							port_id,
-							i,
-							RTE_PMD_QDMA_TX,
-							dst_addr);
-					if (ret < 0) {
-						close(ifd);
-						return;
-					}
-				}
-
-				if (total_size == 0)
-					q_data_size = pinfo[port_id].buff_size;
-				else if (total_size == (r_size + size)) {
-					q_data_size = total_size;
-					total_size = 0;
-				} else {
-					q_data_size = size;
-					total_size -= size;
-				}
-
-				if (q_data_size >= pinfo[port_id].buff_size) {
-					if (q_data_size %
-						pinfo[port_id].buff_size) {
-						tot_num_desc = (q_data_size /
-						pinfo[port_id].buff_size) + 1;
-						ld_size = q_data_size %
-						pinfo[port_id].buff_size;
-					} else
-						tot_num_desc = (q_data_size /
-						pinfo[port_id].buff_size);
-				} else {
-					tot_num_desc = 1;
-					ld_size = q_data_size %
-						    pinfo[port_id].buff_size;
-				}
-
-				if (port_id)
-					offset = (input_size/num_queues) * j;
-				else
-					offset = (input_size/num_queues) * i;
-
-				if ((unsigned int)i < (pinfo[port_id].st_queues)
-						&& !(regval & ST_LOOPBACK_EN))
-					ret_val = lseek(ifd, 0, SEEK_SET);
-				else
-					ret_val = lseek(ifd, offset, SEEK_SET);
-
-				if (ret_val == (off_t)-1) {
-					cmdline_printf(cl, "DMA-to-Device: "
-							"lseek func failed\n");
-					close(ifd);
-					return;
-				}
-
-				cmdline_printf(cl, "DMA-to-Device: with "
-						"input-size:%d, ld_size:%d,"
-						"tot_num_desc:%d\n",
-						input_size,  ld_size,
-						tot_num_desc);
-				ret = do_xmit(port_id, ifd, i, ld_size,
-						tot_num_desc, zbyte);
-				if (ret < 0) {
-					close(ifd);
-					return;
-				}
-			}
-			++loop;
-		} while (loop < num_loops);
-		close(ifd);
-	}
-	cmdline_printf(cl, "\n######## DMA transfer to device is completed "
-						"successfully #######\n");
-}
-
-cmdline_parse_token_string_t cmd_obj_action_dma_to_device =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, action,
-							"dma_to_device");
-cmdline_parse_token_string_t cmd_obj_dma_to_device_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, port_id,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_to_device_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, queues,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_to_device_filename =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, filename,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_to_device_dst_addr =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, dst_addr,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_to_device_size =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, size,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_to_device_loops =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_to_device_result, loops,
-								NULL);
-
-cmdline_parse_inst_t cmd_obj_dma_to_device = {
-	.f = cmd_obj_dma_to_device_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "dma_to_device port-id num-queues filename dst_addr "
-			"size loops",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_dma_to_device,
-		(void *)&cmd_obj_dma_to_device_port_id,
-		(void *)&cmd_obj_dma_to_device_queues,
-		(void *)&cmd_obj_dma_to_device_filename,
-		(void *)&cmd_obj_dma_to_device_dst_addr,
-		(void *)&cmd_obj_dma_to_device_size,
-		(void *)&cmd_obj_dma_to_device_loops,
-		NULL,
-	},
-
-};
-
-/* Command do-recv */
-struct cmd_obj_dma_from_device_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queues;
-	cmdline_fixed_string_t filename;
-	cmdline_fixed_string_t src_addr;
-	cmdline_fixed_string_t size;
-	cmdline_fixed_string_t loops;
-};
-
-static void cmd_obj_dma_from_device_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_dma_from_device_result *res = parsed_result;
-	int i, ofd, offset, size, total_size, r_size = 0;
-	int mm_tdesc, mm_ld_size = 0;
-	int loop = 0, ret, j;
-	off_t ret_val;
-	int port_id = 0, num_queues = 0, input_size = 0, num_loops = 0;
-	uint64_t src_addr = 0;
-	unsigned int q_data_size = 0;
-
-	cmdline_printf(cl, "recv on Port:%s, filename:%s\n",
-						res->port_id, res->filename);
-
-	ofd = open(res->filename, O_RDWR | O_CREAT | O_TRUNC | O_SYNC, 0666);
-	if (ofd < 0) {
-		cmdline_printf(cl, "Error: Invalid filename: %s\n",
-							res->filename);
-		return;
-	}
-
-	{
-		port_id = atoi(res->port_id);
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-						port_id);
-			close(ofd);
-			return;
-		}
-		num_queues = atoi(res->queues);
-		if ((unsigned int)num_queues > pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: num-queues:%d are more than "
-					"the configured queues:%d,\n"
-					"Please enter valid number of queues\n",
-					num_queues, pinfo[port_id].num_queues);
-			close(ofd);
-			return;
-		}
-		if (num_queues == 0) {
-			cmdline_printf(cl, "Error: Please enter valid number "
-						"of queues\n");
-			close(ofd);
-			return;
-		}
-		input_size = atoi(res->size);
-		num_loops = atoi(res->loops);
-		src_addr = atoi(res->src_addr);
-#ifndef PERF_BENCHMARK
-		if (src_addr + input_size > BRAM_SIZE) {
-			cmdline_printf(cl, "Error: (src_addr %ld + input "
-					"size %d) shall be less than "
-					"BRAM_SIZE %d.\n", src_addr,
-					input_size, BRAM_SIZE);
-			close(ofd);
-			return;
-		}
-#endif
-		/* Restrict C2H zerobyte support to ST-mode queues*/
-		if (input_size == 0) {
-			if ((unsigned int)num_queues >
-					pinfo[port_id].st_queues) {
-				cmdline_printf(cl, "Error: Zero-length support "
-					"is for queues with ST-mode only\n");
-				close(ofd);
-				return;
-			}
-		}
-
-		if (input_size % num_queues) {
-			size = input_size / num_queues;
-			r_size = input_size % num_queues;
-		} else
-			size = input_size / num_queues;
-
-		do {
-			total_size = input_size;
-			src_addr = atoi(res->src_addr);
-			q_data_size = 0;
-			/* Transmit data on the number of Queues configured
-			 * from the input file
-			 */
-			for (i = 0, j = 0; i < num_queues; i++, j++) {
-				src_addr += q_data_size;
-				src_addr %= BRAM_SIZE;
-
-				if ((unsigned int)i >=
-						pinfo[port_id].st_queues) {
-					ret =
-					rte_pmd_qdma_set_mm_endpoint_addr(
-							port_id,
-							i,
-							RTE_PMD_QDMA_RX,
-							src_addr);
-					if (ret < 0) {
-						close(ofd);
-						return;
-					}
-				}
-
-				if (total_size == (r_size + size)) {
-					q_data_size = total_size;
-					total_size = 0;
-				} else {
-					q_data_size = size;
-					total_size -= size;
-				}
-
-				if (q_data_size >= pinfo[port_id].buff_size) {
-					if (q_data_size %
-						pinfo[port_id].buff_size) {
-						mm_tdesc = (q_data_size /
-						pinfo[port_id].buff_size) + 1;
-
-						mm_ld_size = q_data_size %
-						pinfo[port_id].buff_size;
-					} else
-						mm_tdesc = (q_data_size /
-						pinfo[port_id].buff_size);
-				} else {
-					mm_tdesc = 1;
-					mm_ld_size = q_data_size %
-						     pinfo[port_id].buff_size;
-				}
-
-				if (port_id)
-					offset = (input_size/num_queues) * j;
-				else
-					offset = (input_size/num_queues) * i;
-
-				ret_val = lseek(ofd, offset, SEEK_SET);
-				if (ret_val == (off_t)-1) {
-					cmdline_printf(cl, "DMA-to-Device: "
-							"lseek func failed\n");
-					close(ofd);
-					return;
-				}
-
-				cmdline_printf(cl, "DMA-from-Device: with "
-						"input-size:%d, ld_size:%d, "
-						"tot_num_desc:%d\n",
-						input_size,  mm_ld_size,
-						mm_tdesc);
-
-				if ((unsigned int)i <
-					(pinfo[port_id].st_queues))
-					ret = do_recv_st(port_id, ofd, i,
-								q_data_size);
-				else
-					ret = do_recv_mm(port_id, ofd, i,
-								mm_ld_size,
-								mm_tdesc);
-				if (ret < 0) {
-					close(ofd);
-					return;
-				}
-
-				ret_val = lseek(ofd, offset, SEEK_END);
-				if (ret_val == (off_t)-1) {
-					cmdline_printf(cl, "DMA-to-Device: "
-							"lseek func failed\n");
-					close(ofd);
-					return;
-				}
-			}
-			++loop;
-		} while (loop < num_loops);
-		close(ofd);
-	}
-	cmdline_printf(cl, "\n####### DMA transfer from device is completed "
-						"successfully #######\n");
-}
-
-cmdline_parse_token_string_t cmd_obj_action_dma_from_device =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result, action,
-						"dma_from_device");
-cmdline_parse_token_string_t cmd_obj_dma_from_device_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result, port_id,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_from_device_queues =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result, queues,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_from_device_filename =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result,
-							filename, NULL);
-cmdline_parse_token_string_t cmd_obj_dma_from_device_src_addr =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result,
-							src_addr, NULL);
-cmdline_parse_token_string_t cmd_obj_dma_from_device_size =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result, size,
-								NULL);
-cmdline_parse_token_string_t cmd_obj_dma_from_device_loops =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_dma_from_device_result, loops,
-								NULL);
-
-cmdline_parse_inst_t cmd_obj_dma_from_device = {
-	.f = cmd_obj_dma_from_device_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "dma_from_device port_id num-queues filename "
-				"src_addr size loops",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_dma_from_device,
-		(void *)&cmd_obj_dma_from_device_port_id,
-		(void *)&cmd_obj_dma_from_device_queues,
-		(void *)&cmd_obj_dma_from_device_filename,
-		(void *)&cmd_obj_dma_from_device_src_addr,
-		(void *)&cmd_obj_dma_from_device_size,
-		(void *)&cmd_obj_dma_from_device_loops,
-		NULL,
-	},
-
-};
-
-struct cmd_obj_reg_dump_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-};
-
-static void cmd_obj_reg_dump_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_reg_dump_result *res = parsed_result;
-
-
-	int bar_id;
-	int port_id = atoi(res->port_id);
-
-	bar_id = pinfo[port_id].config_bar_idx;
-	if (bar_id < 0) {
-		cmdline_printf(cl, "Error: fetching QDMA config BAR-id "
-				"on port-id:%d not supported\n Please enter "
-				"valid port-id\n", port_id);
-		return;
-	}
-	cmdline_printf(cl, "Register dump on cofig BAR-id:%d with Port-id:%s\n",
-						bar_id, res->port_id);
-	if (port_id >= num_ports) {
-		cmdline_printf(cl, "Error: port-id:%d not supported\n "
-						"Please enter valid port-id\n",
-						port_id);
-		return;
-	}
-	rte_pmd_qdma_dbg_regdump(port_id);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_reg_dump =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_dump_result, action,
-								"reg_dump");
-cmdline_parse_token_string_t cmd_obj_reg_dump_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_dump_result, port_id, NULL);
-
-cmdline_parse_inst_t cmd_obj_reg_dump = {
-	.f = cmd_obj_reg_dump_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "reg_dump  port-id",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_reg_dump,
-		(void *)&cmd_obj_reg_dump_port_id,
-		NULL,
-	},
-
-};
-
-
-/* Command Read Info addr */
-struct cmd_obj_reg_info_read_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t reg_addr;
-	cmdline_fixed_string_t num_regs;
-};
-
-static void cmd_obj_reg_info_read_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_reg_info_read_result *res = parsed_result;
-
-	cmdline_printf(cl, "Read Reg info Port:%s, Address:%s, Num Regs: %s\n\n",
-				res->port_id, res->reg_addr, res->num_regs);
-
-	int reg_addr = strtol(res->reg_addr, NULL, NUMERICAL_BASE_HEXADECIMAL);
-
-	if (reg_addr % ALIGN_TO_WORD_BYTES) {
-		cmdline_printf(cl, "ERROR: Read address must aligned to "
-					"a 4-byte boundary.\n\n");
-	} else {
-		int port_id = atoi(res->port_id);
-		int num_regs = atoi(res->num_regs);
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		rte_pmd_qdma_dbg_reg_info_dump(port_id, num_regs,reg_addr);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_reg_info_read =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_info_read_result, action,
-					"reg_info_read");
-cmdline_parse_token_string_t cmd_obj_reg_info_read_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_info_read_result, port_id, NULL);
-cmdline_parse_token_string_t cmd_obj_reg_info_read_reg_addr =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_info_read_result, reg_addr, NULL);
-cmdline_parse_token_string_t cmd_obj_reg_info_read_num_regs =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_reg_info_read_result, num_regs, NULL);
-
-cmdline_parse_inst_t cmd_obj_reg_info_read = {
-	.f = cmd_obj_reg_info_read_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "reg_info_read port-id reg-addr",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_reg_info_read,
-		(void *)&cmd_obj_reg_info_read_port_id,
-		(void *)&cmd_obj_reg_info_read_reg_addr,
-		(void *)&cmd_obj_reg_info_read_num_regs,
-		NULL,
-	},
-
-};
-
-
-/*Command queue-context dump*/
-
-struct cmd_obj_queue_dump_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queue_id;
-};
-
-static void cmd_obj_queue_dump_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_queue_dump_result *res = parsed_result;
-
-	cmdline_printf(cl, "queue-dump on Port:%s, queue-id:%s\n\n",
-						res->port_id, res->queue_id);
-
-	{
-		int port_id = atoi(res->port_id);
-		int qid = atoi(res->queue_id);
-		int bar_id = 0x0;
-
-		bar_id = pinfo[port_id].config_bar_idx;
-		if (bar_id < 0) {
-			cmdline_printf(cl, "Error: fetching QDMA config BAR-id "
-					"on port-id:%d not supported\n Please "
-					"enter valid port-id\n", port_id);
-			return;
-		}
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		if ((unsigned int)qid >= pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: queue-id:%d is greater than "
-					"the number of confgiured queues in "
-					"the port\n Please enter valid "
-					"queue-id\n", qid);
-			return;
-		}
-		rte_pmd_qdma_dbg_qinfo(port_id, qid);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_queue_dump =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_queue_dump_result, action,
-								"queue_dump");
-cmdline_parse_token_string_t cmd_obj_queue_dump_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_queue_dump_result, port_id,
-									NULL);
-cmdline_parse_token_string_t cmd_obj_queue_dump_queue_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_queue_dump_result, queue_id,
-									NULL);
-
-cmdline_parse_inst_t cmd_obj_queue_dump = {
-	.f = cmd_obj_queue_dump_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "queue_dump port-id queue_id",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_queue_dump,
-		(void *)&cmd_obj_queue_dump_port_id,
-		(void *)&cmd_obj_queue_dump_queue_id,
-		NULL,
-	},
-
-};
-
-/*Command queue-stats dump*/
-
-struct cmd_obj_qstats_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queue_id;
-};
-
-static void cmd_obj_qstats_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_qstats_result *res = parsed_result;
-
-	cmdline_printf(cl, "queue-dump on Port:%s, queue-id:%s\n\n",
-						res->port_id, res->queue_id);
-
-	{
-		int port_id = atoi(res->port_id);
-		int qid = atoi(res->queue_id);
-		int bar_id = 0x0;
-
-		bar_id = pinfo[port_id].config_bar_idx;
-		if (bar_id < 0) {
-			cmdline_printf(cl, "Error: fetching QDMA config BAR-id "
-					"on port-id:%d not supported\n Please "
-					"enter valid port-id\n", port_id);
-			return;
-		}
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		if ((unsigned int)qid >= pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: queue-id:%d is greater than "
-					"the number of confgiured queues in "
-					"the port\n Please enter valid "
-					"queue-id\n", qid);
-			return;
-		}
-		rte_pmd_qdma_qstats(port_id, qid);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_qstats =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_result, action,
-								"qstats");
-cmdline_parse_token_string_t cmd_obj_qstats_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_result, port_id,
-									NULL);
-cmdline_parse_token_string_t cmd_obj_qstats_queue_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_result, queue_id,
-									NULL);
-
-cmdline_parse_inst_t cmd_obj_qstats = {
-	.f = cmd_obj_qstats_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "qstats port-id queue_id",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_qstats,
-		(void *)&cmd_obj_qstats_port_id,
-		(void *)&cmd_obj_qstats_queue_id,
-		NULL,
-	},
-
-};
-
-/*Command queue-stats-cleaar dump*/
-
-struct cmd_obj_qstats_clr_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queue_id;
-};
-
-static void cmd_obj_qstats_clr_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_qstats_clr_result *res = parsed_result;
-
-	cmdline_printf(cl, "queue-dump on Port:%s, queue-id:%s\n\n",
-						res->port_id, res->queue_id);
-
-	{
-		int port_id = atoi(res->port_id);
-		int qid = atoi(res->queue_id);
-		int bar_id = 0x0;
-
-		bar_id = pinfo[port_id].config_bar_idx;
-		if (bar_id < 0) {
-			cmdline_printf(cl, "Error: fetching QDMA config BAR-id "
-					"on port-id:%d not supported\n Please "
-					"enter valid port-id\n", port_id);
-			return;
-		}
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n "
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		if ((unsigned int)qid >= pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: queue-id:%d is greater than "
-					"the number of confgiured queues in "
-					"the port\n Please enter valid "
-					"queue-id\n", qid);
-			return;
-		}
-		rte_pmd_qdma_qstats_clear(port_id, qid);
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_qstats_clr =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_clr_result, action,
-								"qstats_clr");
-cmdline_parse_token_string_t cmd_obj_qstats_clr_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_clr_result, port_id,
-									NULL);
-cmdline_parse_token_string_t cmd_obj_qstats_clr_queue_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_qstats_clr_result, queue_id,
-									NULL);
-
-cmdline_parse_inst_t cmd_obj_qstats_clr = {
-	.f = cmd_obj_qstats_clr_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "qstats_clr port-id queue_id",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_qstats_clr,
-		(void *)&cmd_obj_qstats_clr_port_id,
-		(void *)&cmd_obj_qstats_clr_queue_id,
-		NULL,
-	},
-
-};
-
-/* Command descriptor dump */
-
-struct cmd_obj_desc_dump_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t port_id;
-	cmdline_fixed_string_t queue_id;
-};
-
-static void cmd_obj_desc_dump_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_desc_dump_result *res = parsed_result;
-	int start;
-	int end;
-
-	cmdline_printf(cl, "Descriptor-dump on Port:%s, queue-id:%s\n\n",
-						res->port_id, res->queue_id);
-	{
-		int port_id = atoi(res->port_id);
-		int qid = atoi(res->queue_id);
-		if (port_id >= num_ports) {
-			cmdline_printf(cl, "Error: port-id:%d not supported\n"
-					"Please enter valid port-id\n",
-					port_id);
-			return;
-		}
-		if ((unsigned int)qid >= pinfo[port_id].num_queues) {
-			cmdline_printf(cl, "Error: queue-id:%d is greater than "
-					"the number of confgiured queues in "
-					"the port\n Please enter valid "
-					"queue-id\n", qid);
-			return;
-		}
-
-		start = 0;
-		end = pinfo[port_id].nb_descs - 1;
-		rte_pmd_qdma_dbg_qdesc(port_id, qid, start,
-					end, RTE_PMD_QDMA_XDEBUG_DESC_C2H);
-
-		rte_pmd_qdma_dbg_qdesc(port_id, qid, start,
-					end, RTE_PMD_QDMA_XDEBUG_DESC_H2C);
-
-		if ((unsigned int)qid < pinfo[port_id].st_queues) {
-			rte_pmd_qdma_dbg_qdesc(port_id, qid, start,
-					end, RTE_PMD_QDMA_XDEBUG_DESC_CMPT);
-		}
-	}
-}
-
-cmdline_parse_token_string_t cmd_obj_action_desc_dump =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_desc_dump_result, action,
-								"desc_dump");
-cmdline_parse_token_string_t cmd_obj_desc_dump_port_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_desc_dump_result, port_id,
-									NULL);
-cmdline_parse_token_string_t cmd_obj_desc_dump_queue_id =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_desc_dump_result, queue_id,
-									NULL);
-
-cmdline_parse_inst_t cmd_obj_desc_dump = {
-	.f = cmd_obj_desc_dump_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "desc_dump port-id queue_id",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_desc_dump,
-		(void *)&cmd_obj_desc_dump_port_id,
-		(void *)&cmd_obj_desc_dump_queue_id,
-		NULL,
-	},
-
-};
-
-/*Command load commands from file */
-
-struct cmd_obj_load_cmds_result {
-	cmdline_fixed_string_t action;
-	cmdline_fixed_string_t filename;
-};
-
-static void cmd_obj_load_cmds_parsed(void *parsed_result,
-			       struct cmdline *cl,
-			       __attribute__((unused)) void *data)
-{
-	struct cmd_obj_load_cmds_result *res = parsed_result;
-	FILE *fp;
-	char buff[256];
-
-	cmdline_printf(cl, "load-cmds from file:%s\n\n", res->filename);
-	fp = fopen((const char *)res->filename, "r");
-	if (fp == NULL) {
-		cmdline_printf(cl, "Error: Invalid filename: %s\n",
-							res->filename);
-		return;
-	}
-
-
-	struct rdline *rdl = cmdline_get_rdline(cl);
-	rdline_reset(rdl);
-	{
-		cmdline_in(cl, "\r", 1);
-		while (fgets(buff, sizeof(buff), fp))
-			cmdline_in(cl, buff, strlen(buff));
-
-		cmdline_in(cl, "\r", 1);
-	}
-	fclose(fp);
-}
-
-cmdline_parse_token_string_t cmd_obj_action_load_cmds =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_load_cmds_result, action,
-								"load_cmds");
-cmdline_parse_token_string_t cmd_obj_load_cmds_filename =
-	TOKEN_STRING_INITIALIZER(struct cmd_obj_load_cmds_result, filename,
-									NULL);
-
-cmdline_parse_inst_t cmd_obj_load_cmds = {
-	.f = cmd_obj_load_cmds_parsed,  /* function to call */
-	.data = NULL,      /* 2nd arg of func */
-	.help_str = "load_cmds file-name",
-	.tokens = {        /* token list, NULL terminated */
-		(void *)&cmd_obj_action_load_cmds,
-		(void *)&cmd_obj_load_cmds_filename,
-		NULL,
-	},
-
-};
-
-/* CONTEXT (list of instruction) */
-
-cmdline_parse_ctx_t main_ctx[] = {
-	(cmdline_parse_inst_t *)&cmd_obj_port_init,
-	(cmdline_parse_inst_t *)&cmd_obj_port_close,
-	(cmdline_parse_inst_t *)&cmd_obj_port_reset,
-	(cmdline_parse_inst_t *)&cmd_obj_port_remove,
-	(cmdline_parse_inst_t *)&cmd_obj_reg_read,
-	(cmdline_parse_inst_t *)&cmd_obj_reg_write,
-	(cmdline_parse_inst_t *)&cmd_obj_dma_to_device,
-	(cmdline_parse_inst_t *)&cmd_obj_dma_from_device,
-	(cmdline_parse_inst_t *)&cmd_obj_reg_dump,
-	(cmdline_parse_inst_t *)&cmd_obj_reg_info_read,
-	(cmdline_parse_inst_t *)&cmd_obj_queue_dump,
-	(cmdline_parse_inst_t *)&cmd_obj_qstats,
-	(cmdline_parse_inst_t *)&cmd_obj_qstats_clr,
-	(cmdline_parse_inst_t *)&cmd_obj_desc_dump,
-	(cmdline_parse_inst_t *)&cmd_obj_load_cmds,
-	(cmdline_parse_inst_t *)&cmd_help,
-	NULL,
-};
diff --git a/QDMA/DPDK/examples/qdma_testapp/commands.h b/QDMA/DPDK/examples/qdma_testapp/commands.h
deleted file mode 100755
index e598e4b..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/commands.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2010-2023 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef _COMMANDS_H_
-#define _COMMANDS_H_
-
-extern cmdline_parse_ctx_t main_ctx[];
-#endif /* _COMMANDS_H_ */
diff --git a/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.c b/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.c
deleted file mode 100755
index f0f38ed..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*
- * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the University of California, Berkeley nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS AND CONTRIBUTORS 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.
- */
-
-#include <stdio.h>
-#include <inttypes.h>
-#include <stdarg.h>
-#include <errno.h>
-#include <ctype.h>
-#include <string.h>
-#include <netinet/in.h>
-
-#include <cmdline_parse.h>
-#include <cmdline_parse_ipaddr.h>
-
-#include <rte_string_fns.h>
-
-#include "parse_obj_list.h"
-
-/* This file is an example of extension of libcmdline. It provides an
- * example of objects stored in a list
- */
-
-struct cmdline_token_ops token_obj_list_ops = {
-	.parse = parse_obj_list,
-	.complete_get_nb = complete_get_nb_obj_list,
-	.complete_get_elt = complete_get_elt_obj_list,
-	.get_help = get_help_obj_list,
-};
-
-int
-parse_obj_list(cmdline_parse_token_hdr_t *tk, const char *srcbuf, void *res,
-		unsigned int buf_len)
-{
-	struct token_obj_list *tk2 = (struct token_obj_list *)tk;
-	struct token_obj_list_data *tkd = &tk2->obj_list_data;
-	struct object *obj = NULL;
-	unsigned int token_len = 0;
-
-	if (*srcbuf == 0)
-		return -1;
-
-	while (!cmdline_isendoftoken(srcbuf[token_len]))
-		token_len++;
-
-	SLIST_FOREACH(obj, tkd->list, next) {
-		if (token_len != strnlen(obj->name, OBJ_NAME_LEN_MAX))
-			continue;
-		if (strncmp(srcbuf, obj->name, token_len))
-			continue;
-		break;
-	}
-	if (!obj) /* not found */
-		return -1;
-
-	/* store the address of object in structure */
-	if (res)
-		*(struct object **)res = obj;
-
-	return token_len;
-}
-
-int complete_get_nb_obj_list(cmdline_parse_token_hdr_t *tk)
-{
-	struct token_obj_list *tk2 = (struct token_obj_list *)tk;
-	struct token_obj_list_data *tkd = &tk2->obj_list_data;
-	struct object *obj = NULL;
-	int ret = 0;
-
-	SLIST_FOREACH(obj, tkd->list, next) {
-		ret++;
-	}
-	return ret;
-}
-
-int complete_get_elt_obj_list(cmdline_parse_token_hdr_t *tk,
-			      int idx, char *dstbuf, unsigned int size)
-{
-	struct token_obj_list *tk2 = (struct token_obj_list *)tk;
-	struct token_obj_list_data *tkd = &tk2->obj_list_data;
-	struct object *obj = NULL;
-	int i = 0;
-	unsigned int len;
-
-	SLIST_FOREACH(obj, tkd->list, next) {
-		if (i++ == idx)
-			break;
-	}
-	if (!obj)
-		return -1;
-
-	len = strnlen(obj->name, OBJ_NAME_LEN_MAX);
-	if ((len + 1) > size)
-		return -1;
-
-	if (dstbuf)
-		snprintf(dstbuf, size, "%s", obj->name);
-
-	return 0;
-}
-
-
-int get_help_obj_list(__attribute__((unused)) cmdline_parse_token_hdr_t *tk,
-		      char *dstbuf, unsigned int size)
-{
-	snprintf(dstbuf, size, "Obj-List");
-	return 0;
-}
diff --git a/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.h b/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.h
deleted file mode 100755
index e35e9de..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/parse_obj_list.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2010-2014 Intel Corporation. All rights reserved.
- *   All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/*
- * Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
- * All rights reserved.
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the University of California, Berkeley nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS AND CONTRIBUTORS 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.
- */
-
-#ifndef _PARSE_OBJ_LIST_H_
-#define _PARSE_OBJ_LIST_H_
-
-/* This file is an example of extension of libcmdline. It provides an
- * example of objects stored in a list.
- */
-
-#include <sys/queue.h>
-#include <cmdline_parse.h>
-
-#define OBJ_NAME_LEN_MAX 64
-
-struct object {
-	SLIST_ENTRY(object) next;
-	char name[OBJ_NAME_LEN_MAX];
-	cmdline_ipaddr_t ip;
-};
-
-/* define struct object_list */
-SLIST_HEAD(object_list, object);
-
-/* data is a pointer to a list */
-struct token_obj_list_data {
-	struct object_list *list;
-};
-
-struct token_obj_list {
-	struct cmdline_token_hdr hdr;
-	struct token_obj_list_data obj_list_data;
-};
-typedef struct token_obj_list parse_token_obj_list_t;
-
-extern struct cmdline_token_ops token_obj_list_ops;
-
-int parse_obj_list(cmdline_parse_token_hdr_t *tk, const char *srcbuf,
-		void *res, unsigned int buf_len);
-int complete_get_nb_obj_list(cmdline_parse_token_hdr_t *tk);
-int complete_get_elt_obj_list(cmdline_parse_token_hdr_t *tk, int idx,
-		char *dstbuf, unsigned int size);
-int get_help_obj_list(cmdline_parse_token_hdr_t *tk, char *dstbuf,
-		unsigned int size);
-
-#define TOKEN_OBJ_LIST_INITIALIZER(structure, field, obj_list_ptr)  \
-{								    \
-	.hdr = {						    \
-		.ops = &token_obj_list_ops,			    \
-		.offset = offsetof(structure, field),		    \
-	},							    \
-		.obj_list_data = {				    \
-		.list = obj_list_ptr,				    \
-	},							    \
-}
-
-#endif /* _PARSE_OBJ_LIST_H_ */
diff --git a/QDMA/DPDK/examples/qdma_testapp/pcierw.c b/QDMA/DPDK/examples/qdma_testapp/pcierw.c
deleted file mode 100755
index ed68303..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/pcierw.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-#include <sys/ioctl.h>
-#include <net/if.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <rte_ethdev.h>
-#include "../../drivers/net/qdma/rte_pmd_qdma.h"
-
-
-#include "pcierw.h"
-
-unsigned int PciRead(unsigned int bar, unsigned int offset, int port_id)
-{
-    return rte_pmd_qdma_compat_pci_read_reg(port_id, bar, offset);
-}
-
-
-void PciWrite(unsigned int bar, unsigned int offset, unsigned int reg_val,
-				int port_id)
-{
-    rte_pmd_qdma_compat_pci_write_reg(port_id, bar, offset, reg_val);
-}
diff --git a/QDMA/DPDK/examples/qdma_testapp/pcierw.h b/QDMA/DPDK/examples/qdma_testapp/pcierw.h
deleted file mode 100755
index e88f91c..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/pcierw.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-#ifndef __PCIERW_H__
-#define __PCIERW_H__
-
-unsigned int PciRead(unsigned int bar, unsigned int offset, int port_id);
-void PciWrite(unsigned int bar, unsigned int offset, unsigned int reg_val,
-				int port_id);
-void qdma_pci_write_reg(struct rte_eth_dev *dev, uint32_t bar, uint32_t reg,
-				uint32_t val);
-uint32_t qdma_pci_read_reg(struct rte_eth_dev *dev, uint32_t bar, uint32_t reg);
-#endif
diff --git a/QDMA/DPDK/examples/qdma_testapp/qdma_regs.h b/QDMA/DPDK/examples/qdma_testapp/qdma_regs.h
deleted file mode 100755
index aaf7022..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/qdma_regs.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-/** Target definations **/
-#define QDMA_TRQ_SEL_GLBL	0x00000200
-#define QDMA_TRQ_SEL_FMAP	0x00000400
-#define QDMA_TRQ_SEL_IND	0x00000800
-#define QDMA_TRQ_SEL_C2H	0x00000A00
-#define QDMA_TRQ_SEL_H2H	0x00000E00
-#define QDMA_TRQ_SEL_C2H_MM0	0x00001000
-#define QDMA_TRQ_SEL_H2C_MM0	0x00001200
-#define QDMA_TRQ_SEL_QUEUE_PF	0x00006400
-
-#define QDMA_CONFIG_BLOCK_ID	0x1fd00000UL
-/** Global registers **/
-#define QDMA_GLBL_RING_SZ	0x04
-#define QDMA_GLBL_SCRATCH	0x44
-#define QDMA_GLBL_WB_ACC	0x50
-#define QDMA_RING_SZ_MSK	0x0000ffff
-#define QDMA_WB_ACC_MSK		0x00000007
-
-/** Fmap registers **/
-#define QID_BASE_MSK		(0x000007ff)
-#define QID_MAX_MSK		(0x003ff800)
-#define QID_MAX_SHIFT_B			(11)
-
-/** Queue Indirect programming commands **/
-
-#define QDMA_IND_Q_PRG_OFF	(0x4)
-
-#define QDMA_CNTXT_CMD_RD	(2)
-
-#define QDMA_CNTXT_SEL_DESC_SW_C2H	(0)
-#define QDMA_CNTXT_SEL_DESC_SW_H2C	(1)
-#define QDMA_CNTXT_SEL_DESC_HW_C2H	(2)
-#define QDMA_CNTXT_SEL_DESC_HW_H2C	(3)
-#define QDMA_CNTXT_SEL_DESC_CMPT	(6)
-#define QDMA_CNTXT_SEL_PFTCH	(7)
-
-#define QID_SHIFT_B		(7)
-#define OP_CODE_SHIFT_B		(5)
-#define CTXT_SEL_SHIFT_B	(1)
-#define BUSY_BIT_MSK		(1)
-
-#define WB_EN_SHIFT_B		(20)
-#define MM_CHAN_SHIFT_B		(19)
-#define MM_DESC_SZ_SHIFT_B	(17)
-#define ST_H2C_DESC_SZ_SHIFT_B	(16)
-#define DESC_RING_SZ_SHIFT_B	(12)
-#define ST_H2C_DESC_SZ_SHIFT_B	(16)
-#define MM_DESC_SZ_WB_SHIFT_B	(29)
-#define C2H_WB_CTXT_V_SHIFT_B	(24)
-
-/** C2H target registers **/
-#define QDMA_C2H_CNT_TH_BASE	0x40
-#define QDMA_C2H_BUF_SZ_BASE	0xB0
-
-/** PF Queue index registers */
-#define QDMA_H2C_PIDX_Q_OFF	(0x04)
-#define QDMA_C2H_PIDX_Q_OFF	(0x08)
-#define QDMA_SEL_CMPT_CIDX_Q_OFF (0x0c)
-
-
-/** QDMA Target registers **/
-#define QDMA_C2H_MM0_CONTROL	0x00000004
-#define QDMA_H2C_MM0_CONTROL	0x00000004
-#define QDMA_MM_CTRL_START	(1 << 0)
-
-/** QDMA Descriptor definations **/
-#define QDMA_DESC_SOP	0x1
-#define QDMA_DESC_EOP	0x1
-#define QDMA_DESC_VALID	0x1
-
-
-/** Queue Indirect programming registers **/
-struct __attribute__ ((packed)) q_ind_prg
-{
-	uint32_t ctxt_data[8];
-	uint32_t ctxt_mask[8];
-	uint32_t ctxt_cmd;
-};
-
-union __attribute__ ((packed)) h2c_c2h_ctxt
-{
-	struct  __attribute__ ((packed))  ctxt_data
-	{
-		uint32_t data[5];
-	} c_data;
-	struct  __attribute__ ((packed)) ctxt_fields
-	{
-		uint16_t pidx;
-		uint16_t irq_ack:1;
-		uint16_t fnc_id:8;
-		uint16_t rsv0:7;
-		uint16_t qen:1;
-		uint16_t fcrd_en:1;
-		uint16_t wbi_chk:1;
-		uint16_t wbi_acc_en:1;
-		uint16_t at:1;
-		uint16_t fetch_max:3;
-		uint16_t rsv1:4;
-		uint16_t rng_sz:4;
-		uint16_t dsc_sz:2;
-		uint16_t byp:1;
-		uint16_t mm_chn:1;
-		uint16_t wbk_en:1;
-		uint16_t irq_en:1;
-		uint16_t port_id:3;
-		uint16_t irq_no_last:1;
-		uint16_t err:2;
-		uint16_t err_wb_sent:1;
-		uint16_t irq_req:1;
-		uint16_t mrkr_dis:1;
-		uint16_t is_mm:1;
-		uint64_t dsc_base;
-		uint16_t int_vec:11;
-		uint16_t int_aggr:1;
-	} c_fields;
-};
-
-union __attribute__ ((packed)) c2h_cmpt_ctxt
-{
-	struct  __attribute__ ((packed))  c2h_cmpt_data
-	{
-		uint32_t data[5];
-	} c_data;
-	struct  __attribute__ ((packed)) c2h_cmpt_fields
-	{
-		uint32_t en_stat_desc:1;
-		uint32_t en_int:1;
-		uint32_t trig_mode:3;
-		uint32_t fnc_id:12;
-		uint32_t count_idx:4;
-		uint32_t timer_idx:4;
-		uint32_t int_st:2;
-		uint32_t color:1;
-		uint32_t size:4;
-		uint32_t cmpt_dsc_base_l;
-		uint32_t cmpt_dsc_base_h:26;
-		uint32_t desc_sz:2;
-		uint32_t pidx:16;
-		uint32_t cidx:16;
-		uint32_t valid:1;
-		uint32_t err:2;
-		uint32_t usr_trig_pend:1;
-		uint32_t timer_run:1;
-		uint32_t full_upd:1;
-		uint32_t ovf_chk_dis:1;
-		uint32_t at:1;
-	} c_fields;
-};
-
-union __attribute__ ((packed)) h2c_c2h_hw_ctxt
-{
-	struct  __attribute__ ((packed))  hw_ctxt_data
-	{
-		uint32_t data[2];
-	} c_data;
-	struct  __attribute__ ((packed)) hw_ctxt_fields
-	{
-		uint32_t cidx:16;
-		uint32_t crd_use:16;
-		uint32_t rsvd0:8;
-		uint32_t pnd:1;
-		uint32_t idl_stp_b:1;
-		uint32_t event_pend:1;
-		uint32_t fetch_pend:4;
-		uint32_t rsvd1:1;
-	} c_fields;
-};
-
-union __attribute__ ((packed)) prefetch_ctxt
-{
-	struct __attribute__ ((packed)) pref_ctxt_data
-	{
-		uint32_t data[2];
-	} c_data;
-
-	struct __attribute__ ((packed)) pref_ctxt_fields
-	{
-		uint8_t bypass:1;
-		uint8_t buf_sz_idx:4;
-		uint8_t port_id:3;
-		uint32_t rsvd:18;
-		uint8_t err:1;
-		uint8_t pfch_en:1;
-		uint8_t pfch:1;
-		uint16_t sw_crdt:16;
-		uint8_t valid:1;
-	} c_fields;
-};
-
-#define PIDX_MSK	(0)
-#define Q_STATUS_MSK	(0)
-#define Q_STATUS_EN_MSK (3)
-#define Q_STATUS_RST_MSK (1)
-#define WBI_CHK_MSK	(6)
-#define WBI_ACC_EN_MSK	(7)
-#define FUNC_ID_MSK	(8)
-#define RING_SZ_MSK	(16)
-#define DESC_SZ_MSK	(16)
diff --git a/QDMA/DPDK/examples/qdma_testapp/testapp.c b/QDMA/DPDK/examples/qdma_testapp/testapp.c
deleted file mode 100755
index e8d7703..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/testapp.c
+++ /dev/null
@@ -1,1118 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-#include <stdio.h>
-#include <string.h> /**> memset */
-#include <signal.h>
-#include <termios.h>
-#include <rte_eal.h> /**> rte_eal_init */
-#include <rte_debug.h> /**> for rte_panic */
-#include <rte_ethdev.h> /**> rte_eth_rx_burst */
-#include <rte_errno.h> /**> rte_errno global var */
-#include <rte_memzone.h> /**> rte_memzone_dump */
-#include <rte_memcpy.h>
-#include <rte_malloc.h>
-#include <rte_cycles.h>
-#include <rte_log.h>
-#include <rte_string_fns.h>
-#include <rte_spinlock.h>
-#include <cmdline_rdline.h>
-#include <cmdline_parse.h>
-#include <cmdline_socket.h>
-#include <cmdline.h>
-#include <time.h>  /** For SLEEP **/
-#include <getopt.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <rte_mbuf.h>
-
-#include "pcierw.h"
-#include "commands.h"
-#include "qdma_regs.h"
-#include "testapp.h"
-#include "../../drivers/net/qdma/rte_pmd_qdma.h"
-
-#define RTE_LIBRTE_QDMA_PMD 1
-
-int num_ports;
-char *filename;
-
-struct port_info pinfo[QDMA_MAX_PORTS];
-
-int do_recv_mm(int port_id, int fd, int queueid, int ld_size, int tot_num_desc)
-{
-	struct rte_mbuf *pkts[NUM_RX_PKTS] = { NULL };
-	int nb_rx = 0, i = 0, ret = 0, num_pkts;
-	int tdesc;
-#ifdef PERF_BENCHMARK
-	uint64_t prev_tsc, cur_tsc, diff_tsc;
-#endif
-
-	if (tot_num_desc == 0) {
-		printf("Error: tot_num_desc : invalid value\n");
-		return -1;
-	}
-
-	rte_spinlock_lock(&pinfo[port_id].port_update_lock);
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-		rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-
-	printf("recv start num-desc: %d, with data-len: %u, "
-			"last-desc-size:%d\n",
-			tot_num_desc, pinfo[port_id].buff_size, ld_size);
-	tdesc = tot_num_desc;
-	if (ld_size)
-		tdesc--;
-
-	while (tdesc) {
-		if (tdesc > NUM_RX_PKTS)
-			num_pkts = NUM_RX_PKTS;
-		else
-			num_pkts = tdesc;
-#ifdef PERF_BENCHMARK
-		prev_tsc = rte_rdtsc_precise();
-#endif
-		/* try to receive RX_BURST_SZ packets */
-		nb_rx = rte_eth_rx_burst(port_id, queueid, pkts, num_pkts);
-
-#ifdef PERF_BENCHMARK
-		cur_tsc = rte_rdtsc_precise();
-		diff_tsc = cur_tsc - prev_tsc;
-#endif
-
-		if (nb_rx == 0) {
-			printf("Error: dma_from_device failed to "
-					"receive packets\n");
-			rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-			return -1;
-		}
-#ifdef PERF_BENCHMARK
-	   /* Calculate average operations processed per second */
-		double pkts_per_second = ((double)nb_rx * rte_get_tsc_hz() /
-							diff_tsc);
-
-		/* Calculate average throughput (Gbps) in bits per second */
-		double throughput_gbps = ((pkts_per_second *
-				pinfo[port_id].buff_size) / 1000000000);
-		printf("Throughput GBps %lf\n", throughput_gbps);
-				printf("%16s%16s%16s%16s%16s%16s%16s\n\n",
-					"Buf Size", "Burst Size",
-					"pps", "Gbps", "freq", "Cycles",
-					"Cycles/Buf");
-
-			printf("%16u%16u%16.4lf%16.4lf%16 "
-					""PRIu64"%16"PRIu64"%16"PRIu64"\n",
-					pinfo[port_id].buff_size,
-					nb_rx,
-					pkts_per_second,
-					throughput_gbps,
-					rte_get_tsc_hz(),
-					diff_tsc,
-					diff_tsc/nb_rx);
-#endif
-
-		for (i = 0; i < nb_rx; i++) {
-			struct rte_mbuf *mb = pkts[i];
-			ret = write(fd, rte_pktmbuf_mtod(mb, void*),
-						pinfo[port_id].buff_size);
-			rte_pktmbuf_free(mb);
-#ifndef PERF_BENCHMARK
-			printf("recv count: %d, with data-len: %d\n", i, ret);
-#endif
-		}
-		tdesc = tdesc - nb_rx;
-	}
-	if (ld_size) {
-		struct rte_mbuf *mb;
-		nb_rx = rte_eth_rx_burst(port_id, queueid, pkts, 1);
-		if (nb_rx != 0) {
-			mb = pkts[0];
-			ret = write(fd, rte_pktmbuf_mtod(mb, void*), ld_size);
-			rte_pktmbuf_free(mb);
-		}
-	}
-	fsync(fd);
-
-	rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-	ret = 0;
-
-	printf("DMA received number of packets: %d, on queue-id:%d\n",
-							nb_rx, queueid);
-	return ret;
-}
-
-int do_recv_st(int port_id, int fd, int queueid, int input_size)
-{
-	struct rte_mbuf *pkts[NUM_RX_PKTS] = { NULL };
-	int nb_rx = 0, ret = 0, tmp = 0, num_pkts, nb_pkts;
-	int reg_val, loopback_en;
-	int regval;
-	int user_bar_idx;
-	struct rte_mbuf *nxtmb;
-	int qbase = pinfo[port_id].queue_base, diag;
-	unsigned int max_completion_size, last_pkt_size = 0, total_rcv_pkts = 0;
-	unsigned int max_rx_retry, rcv_count = 0, num_pkts_recv = 0;
-	unsigned int i = 0, only_pkt = 0;
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	struct rte_mempool *mp;
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-	rte_spinlock_lock(&pinfo[port_id].port_update_lock);
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-		rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	mp = rte_mempool_lookup(pinfo[port_id].mem_pool);
-
-	/* get the mempool from which to acquire buffers */
-	if (mp == NULL) {
-		printf("Could not find mempool with name %s\n",
-			pinfo[port_id].mem_pool);
-		rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-	user_bar_idx = pinfo[port_id].user_bar_idx;
-	PciWrite(user_bar_idx, C2H_ST_QID_REG, (queueid + qbase), port_id);
-
-	reg_val = PciRead(user_bar_idx, C2H_CONTROL_REG, port_id);
-	reg_val &= C2H_CONTROL_REG_MASK;
-	loopback_en = reg_val & ST_LOOPBACK_EN;
-
-	/* As per  hardware design a single completion will point to atmost
-	 * 7 descriptors. So If the size of the buffer in descriptor is 4KB ,
-	 * then a single completion which corresponds a packet can  give you
-	 * atmost 28KB data.
-	 *
-	 * As per this when testing sizes beyond 28KB, one needs to split it
-	 * up in chunks of 28KB, example : to test 56KB data size, set 28KB
-	 * as packet length in AXI Master Lite BAR(user bar) 0x04 register and no of packets as 2
-	 * in AXI Master Lite BAR(user bar) 0x20 register this would give you completions or
-	 * packets, which needs to be combined as one in application.
-	 */
-
-	if (!loopback_en)
-		max_completion_size = pinfo[port_id].buff_size * 7;
-	else {
-		/* For loopback case, each packet handles 4KB only,
-		 * so limiting to buffer size.
-		 */
-		max_completion_size = pinfo[port_id].buff_size;
-	}
-
-	/* Calculate number of packets to receive and programming AXI Master Lite bar(user bar) */
-	if (input_size == 0) /* zerobyte support uses one descriptor */
-		num_pkts = 1;
-	else if (input_size % max_completion_size != 0) {
-		num_pkts = input_size / max_completion_size;
-		last_pkt_size = input_size % max_completion_size;
-	} else
-		num_pkts = input_size / max_completion_size;
-
-	if ((num_pkts == 0) && last_pkt_size) {
-		num_pkts = 1;
-		only_pkt = 1;
-	}
-
-	if (!loopback_en) {
-		PciWrite(user_bar_idx, C2H_PACKET_COUNT_REG, num_pkts, port_id);
-
-		if (num_pkts > 1)
-			PciWrite(user_bar_idx, C2H_ST_LEN_REG,
-					max_completion_size, port_id);
-		else if ((only_pkt == 1) && (last_pkt_size))
-			PciWrite(user_bar_idx, C2H_ST_LEN_REG,
-					last_pkt_size, port_id);
-		else if (input_size == 0)
-			PciWrite(user_bar_idx, C2H_ST_LEN_REG, input_size,
-								port_id);
-		else if (num_pkts == 1)
-			PciWrite(user_bar_idx, C2H_ST_LEN_REG,
-					max_completion_size, port_id);
-
-		/* Start the C2H Engine */
-		reg_val |= ST_C2H_START_VAL;
-		PciWrite(user_bar_idx, C2H_CONTROL_REG, reg_val,
-							port_id);
-		regval = PciRead(user_bar_idx, C2H_PACKET_COUNT_REG, port_id);
-		printf("BAR-%d is the QDMA C2H number of packets:0x%x,\n",
-				user_bar_idx, regval);
-	}
-
-	while (num_pkts) {
-		if (num_pkts > NUM_RX_PKTS)
-			nb_pkts = NUM_RX_PKTS;
-		else
-			nb_pkts = num_pkts;
-
-		max_rx_retry = RX_TX_MAX_RETRY;
-
-		if ((only_pkt == 1) && (last_pkt_size))
-			last_pkt_size = 0;
-
-		 /* Immediate data Enabled*/
-		if ((reg_val & ST_C2H_IMMEDIATE_DATA_EN)) {
-			/* payload received is zero for the immediate data case.
-			 * Therefore, no need to call the rx_burst function
-			 * again in this case and set the num_pkts to nb_rx
-			 * which is always Zero.
-			 */
-			diag = rte_pmd_qdma_set_immediate_data_state(port_id,
-							queueid, 1);
-			if (diag < 0) {
-				printf("rte_pmd_qdma_set_immediate_data_state : "
-						"failed\n");
-				rte_spinlock_unlock(
-					&pinfo[port_id].port_update_lock);
-				return -1;
-			}
-
-			nb_rx = rte_eth_rx_burst(port_id, queueid, pkts,
-								nb_pkts);
-			num_pkts = num_pkts_recv = nb_rx;
-
-			/* Reset the queue's DUMP_IMMEDIATE_DATA mode */
-			diag = rte_pmd_qdma_set_immediate_data_state(port_id,
-							queueid, 0);
-			if (diag < 0) {
-				printf("rte_pmd_qdma_set_immediate_data_state : "
-						"failed\n");
-				rte_spinlock_unlock(
-					&pinfo[port_id].port_update_lock);
-				return -1;
-			}
-		} else {
-			/* try to receive RX_BURST_SZ packets */
-
-			nb_rx = rte_eth_rx_burst(port_id, queueid, pkts,
-							nb_pkts);
-
-			/* For zero byte packets, do not continue looping */
-			if (input_size == 0)
-				break;
-
-			tmp = nb_rx;
-			while ((nb_rx < nb_pkts) && max_rx_retry) {
-				rte_delay_us(1);
-				nb_pkts -= nb_rx;
-				nb_rx = rte_eth_rx_burst(port_id, queueid,
-								&pkts[tmp],
-								nb_pkts);
-				tmp += nb_rx;
-				max_rx_retry--;
-			}
-			num_pkts_recv = tmp;
-			if ((max_rx_retry == 0) && (num_pkts_recv == 0)) {
-				printf("ERROR: rte_eth_rx_burst failed for "
-						"port %d queue id %d, Expected pkts = %d "
-						"Received pkts = %u\n",
-						port_id, queueid,
-						nb_pkts, num_pkts_recv);
-				break;
-			}
-		}
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		printf("%s(): %d: queue id = %d, mbuf_avail_count = %d, "
-				"mbuf_in_use_count = %d\n",
-				__func__, __LINE__, queueid,
-				rte_mempool_avail_count(mp),
-				rte_mempool_in_use_count(mp));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-		for (i = 0; i < num_pkts_recv; i++) {
-			struct rte_mbuf *mb = pkts[i];
-			while (mb != NULL) {
-				ret += write(fd, rte_pktmbuf_mtod(mb, void*),
-						rte_pktmbuf_data_len(mb));
-				nxtmb = mb->next;
-				mb = nxtmb;
-			}
-
-			mb = pkts[i];
-			rte_pktmbuf_free(mb);
-#ifndef PERF_BENCHMARK
-			printf("recv count: %u, with data-len: %d\n",
-					i + rcv_count, ret);
-#endif
-			ret = 0;
-		}
-		rcv_count += i;
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		printf("%s(): %d: queue id = %d, mbuf_avail_count = %d, "
-				"mbuf_in_use_count = %d, num_pkts_recv = %u\n",
-				__func__, __LINE__, queueid,
-				rte_mempool_avail_count(mp),
-				rte_mempool_in_use_count(mp), num_pkts_recv);
-#endif //DUMP_MEMPOOL_USAGE_STATS
-		num_pkts = num_pkts - num_pkts_recv;
-		total_rcv_pkts += num_pkts_recv;
-		if ((num_pkts == 0) && last_pkt_size) {
-			num_pkts = 1;
-			if (!loopback_en) {
-				/* Stop the C2H Engine */
-				reg_val = PciRead(user_bar_idx,
-							C2H_CONTROL_REG,
-							port_id);
-				reg_val &= C2H_CONTROL_REG_MASK;
-				reg_val &= ~(ST_C2H_START_VAL);
-				PciWrite(user_bar_idx, C2H_CONTROL_REG, reg_val,
-				port_id);
-
-				/* Update number of packets as 1 and
-				 * packet size as last packet length
-				 */
-				PciWrite(user_bar_idx, C2H_PACKET_COUNT_REG,
-					num_pkts, port_id);
-
-				PciWrite(user_bar_idx, C2H_ST_LEN_REG,
-					last_pkt_size, port_id);
-
-				/* Start the C2H Engine */
-				reg_val = PciRead(user_bar_idx,
-							C2H_CONTROL_REG,
-							port_id);
-				reg_val &= C2H_CONTROL_REG_MASK;
-				reg_val |= ST_C2H_START_VAL;
-				PciWrite(user_bar_idx, C2H_CONTROL_REG, reg_val,
-							port_id);
-			}
-			last_pkt_size = 0;
-			continue;
-		}
-	}
-	/* Stop the C2H Engine */
-	if (!loopback_en) {
-		reg_val = PciRead(user_bar_idx, C2H_CONTROL_REG, port_id);
-		reg_val &= C2H_CONTROL_REG_MASK;
-		reg_val &= ~(ST_C2H_START_VAL);
-		PciWrite(user_bar_idx, C2H_CONTROL_REG, reg_val,
-				port_id);
-	}
-	printf("DMA received number of packets: %u, on queue-id:%d\n",
-			total_rcv_pkts, queueid);
-	fsync(fd);
-	rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-	return 0;
-}
-
-int do_xmit(int port_id, int fd, int queueid, int ld_size, int tot_num_desc,
-				int zbyte)
-{
-	struct rte_mempool *mp;
-	struct rte_mbuf *mb[NUM_TX_PKTS] = { NULL };
-	int ret = 0, nb_tx, i = 0, tdesc, num_pkts = 0, total_tx = 0, reg_val;
-	int tmp = 0, user_bar_idx;
-	int qbase = pinfo[port_id].queue_base;
-	uint32_t max_tx_retry;
-
-#ifdef PERF_BENCHMARK
-	uint64_t prev_tsc, cur_tsc, diff_tsc;
-#endif
-
-	rte_spinlock_lock(&pinfo[port_id].port_update_lock);
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-			rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-
-	mp = rte_mempool_lookup(pinfo[port_id].mem_pool);
-	/* get the mempool from which to acquire buffers */
-	if (mp == NULL) {
-		printf("Could not find mempool with name %s\n",
-				pinfo[port_id].mem_pool);
-		rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-
-	tdesc = tot_num_desc;
-	user_bar_idx = pinfo[port_id].user_bar_idx;
-
-	if (ld_size)
-		tdesc--;
-
-	while (tdesc) {
-		if (tdesc > NUM_TX_PKTS)
-			num_pkts = NUM_TX_PKTS;
-		else
-			num_pkts = tdesc;
-
-		max_tx_retry = RX_TX_MAX_RETRY;
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		printf("%s(): %d: queue id %d, mbuf_avail_count = %d, "
-				"mbuf_in_use_count = %d",
-				__func__, __LINE__, queueid,
-				rte_mempool_avail_count(mp),
-				rte_mempool_in_use_count(mp));
-#endif //DUMP_MEMPOOL_USAGE_STATS
-		for (i = 0; i < num_pkts; i++) {
-			mb[i] = rte_pktmbuf_alloc(mp);
-			if (mb[i] == NULL) {
-				printf(" #####Cannot "
-						"allocate mbuf packet\n");
-				rte_spinlock_unlock(
-					&pinfo[port_id].port_update_lock);
-				return -1;
-			}
-
-			if (!zbyte)
-				ret = read(fd, rte_pktmbuf_mtod(mb[i], void *),
-						pinfo[port_id].buff_size);
-			if (ret < 0) {
-				printf("Error: Could not the read "
-						"input-file\n");
-				rte_spinlock_unlock(
-					&pinfo[port_id].port_update_lock);
-				return -1;
-			}
-			mb[i]->nb_segs = 1;
-			mb[i]->next = NULL;
-			rte_pktmbuf_data_len(mb[i]) = (uint16_t)ret;
-			rte_pktmbuf_pkt_len(mb[i])  = (uint16_t)ret;
-		}
-
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-		printf("%s(): %d: queue id %d, mbuf_avail_count = %d, "
-				"mbuf_in_use_count = %d, num_pkts_tx = %d",
-				__func__, __LINE__, queueid,
-				rte_mempool_avail_count(mp),
-				rte_mempool_in_use_count(mp), num_pkts);
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-		total_tx = num_pkts;
-
-#ifndef TANDEM_BOOT_SUPPORTED
-		PciWrite(user_bar_idx, C2H_ST_QID_REG, (queueid + qbase),
-				port_id);
-#endif
-		/* try to transmit TX_BURST_SZ packets */
-
-#ifdef PERF_BENCHMARK
-		prev_tsc = rte_rdtsc_precise();
-#endif
-		nb_tx = rte_eth_tx_burst(port_id, queueid, mb, num_pkts);
-#ifdef PERF_BENCHMARK
-		cur_tsc = rte_rdtsc_precise();
-		diff_tsc = cur_tsc - prev_tsc;
-	   /* Calculate average operations processed per second */
-		double pkts_per_second = ((double)nb_tx * rte_get_tsc_hz() /
-								diff_tsc);
-
-		/* Calculate average throughput (Gbps) in bits per second */
-		double throughput_gbps = ((pkts_per_second *
-				pinfo[port_id].buff_size) / 1000000000);
-		printf("Throughput GBps %lf\n", throughput_gbps);
-				printf("%12s%12s%12s%12s%12s%12s%12s\n\n",
-					"Buf Size", "Burst Size",
-					"pps", "Gbps", "freq", "Cycles",
-					"Cycles/Buf");
-
-			printf("%12u%12u%12.4lf%12.4lf%12"
-					""PRIu64"%12"PRIu64"%12"PRIu64"\n",
-					pinfo[port_id].buff_size,
-					nb_tx,
-					pkts_per_second,
-					throughput_gbps,
-					rte_get_tsc_hz(),
-					diff_tsc,
-					diff_tsc/nb_tx);
-#endif
-		tmp = nb_tx;
-		while ((nb_tx < num_pkts) && max_tx_retry) {
-			printf("Couldn't transmit all the packets:  Expected = %d "
-					"Transmitted = %d.\n"
-					"Calling rte_eth_tx_burst again\n",
-					num_pkts, nb_tx);
-			rte_delay_us(1);
-			num_pkts -= nb_tx;
-			nb_tx = rte_eth_tx_burst(port_id, queueid, &mb[tmp],
-					num_pkts);
-			tmp += nb_tx;
-			max_tx_retry--;
-		}
-
-		if ((max_tx_retry == 0)) {
-			for (i = tmp; i < total_tx; i++)
-				rte_pktmbuf_free(mb[i]);
-			if (tmp == 0) {
-				printf("ERROR: rte_eth_tx_burst failed "
-						"for port %d queue %d\n",
-						port_id, queueid);
-				break;
-			}
-		}
-
-		tdesc = tdesc - tmp;
-		printf("\nDMA transmitted number of packets: %d, "
-				"on Queue-id:%d\n",
-				tmp, queueid);
-	}
-
-	if (ld_size) {
-		mb[0] = rte_pktmbuf_alloc(mp);
-		if (mb[0] == NULL) {
-			printf(" #####Cannot allocate mbuf "
-						"packet\n");
-			rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-			return -1;
-		}
-		ret = read(fd, rte_pktmbuf_mtod(mb[0], void *), ld_size);
-		if (ret < 0) {
-			printf("Error: Could not read the input-file\n");
-			rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-			return -1;
-		}
-		mb[0]->nb_segs = 1;
-		mb[0]->next = NULL;
-		rte_pktmbuf_data_len(mb[0]) = (uint16_t)ret;
-		rte_pktmbuf_pkt_len(mb[0])  = (uint16_t)ret;
-
-		nb_tx = rte_eth_tx_burst(port_id, queueid, mb, 1);
-		if (nb_tx == 0)
-			rte_pktmbuf_free(mb[0]);
-	}
-
-#ifndef TANDEM_BOOT_SUPPORTED
-	reg_val = PciRead(user_bar_idx, C2H_CONTROL_REG, port_id);
-	reg_val &= C2H_CONTROL_REG_MASK;
-	if (!(reg_val & ST_LOOPBACK_EN)) {
-		reg_val = PciRead(user_bar_idx, H2C_STATUS_REG, port_id);
-		printf("BAR-%d is the QDMA H2C transfer match: 0x%x,\n",
-			user_bar_idx, reg_val);
-
-		/** TO clear H2C DMA write **/
-		PciWrite(user_bar_idx, H2C_CONTROL_REG, 0x1, port_id);
-	}
-#endif
-
-	rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-	return 0;
-}
-
-static int dev_reset_callback(uint16_t port_id,
-				enum rte_eth_event_type type,
-				void *param __rte_unused, void *ret_param)
-{
-	int ret = 0;
-
-	RTE_SET_USED(ret_param);
-	printf("%s is received\n", __func__);
-
-	if (type != RTE_ETH_EVENT_INTR_RESET) {
-		printf("Error: Invalid event value. "
-				"Expected = %d, Received = %d\n",
-				RTE_ETH_EVENT_INTR_RESET, type);
-		return -ENOMSG;
-	}
-
-	ret = port_reset(port_id, pinfo[port_id].num_queues,
-			pinfo[port_id].st_queues,
-			pinfo[port_id].nb_descs,
-			pinfo[port_id].buff_size);
-	if (ret < 0)
-		printf("Error: Failed to reset port: %d\n", port_id);
-
-	return ret;
-}
-
-static int dev_remove_callback(uint16_t port_id,
-				enum rte_eth_event_type type,
-				void *param __rte_unused, void *ret_param)
-{
-	int ret = 0;
-
-	RTE_SET_USED(ret_param);
-	printf("%s is received\n", __func__);
-
-	if (type != RTE_ETH_EVENT_INTR_RMV) {
-		printf("Error: Invalid event value. "
-				"Expected = %d, Received = %d\n",
-				RTE_ETH_EVENT_INTR_RMV, type);
-		return -ENOMSG;
-	}
-
-	ret = port_remove(port_id);
-	if (ret < 0)
-		printf("Error: Failed to remove port: %d\n", port_id);
-
-	return 0;
-}
-
-void port_close(int port_id)
-{
-	struct rte_mempool *mp;
-	struct rte_pmd_qdma_dev_attributes dev_attr;
-	int user_bar_idx;
-	int reg_val;
-	int ret = 0;
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-		return;
-	}
-
-	user_bar_idx = pinfo[port_id].user_bar_idx;
-	ret = rte_pmd_qdma_get_device_capabilities(port_id, &dev_attr);
-	if (ret < 0) {
-		printf("rte_pmd_qdma_get_device_capabilities failed for port: %d\n",
-			port_id);
-		return;
-	}
-
-	if ((dev_attr.device_type == RTE_PMD_QDMA_DEVICE_SOFT)
-			&& (dev_attr.ip_type == RTE_PMD_EQDMA_SOFT_IP)) {
-		PciWrite(user_bar_idx, C2H_CONTROL_REG,
-				C2H_STREAM_MARKER_PKT_GEN_VAL,
-				port_id);
-		unsigned int retry = 50;
-		while (retry) {
-			usleep(500);
-			reg_val = PciRead(user_bar_idx,
-				C2H_STATUS_REG, port_id);
-			if (reg_val & MARKER_RESPONSE_COMPLETION_BIT)
-				break;
-
-			printf("Failed to receive c2h marker completion, retry count = %u\n",
-					(50 - (retry-1)));
-			retry--;
-		}
-	}
-
-	rte_eth_dev_stop(port_id);
-
-	rte_pmd_qdma_dev_close(port_id);
-
-	pinfo[port_id].num_queues = 0;
-
-	mp = rte_mempool_lookup(pinfo[port_id].mem_pool);
-
-	if (mp != NULL)
-		rte_mempool_free(mp);
-}
-
-int port_reset(int port_id, int num_queues, int st_queues,
-				int nb_descs, int buff_size)
-{
-	int ret = 0;
-
-	printf("%s is received\n", __func__);
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-		return -1;
-	}
-
-	rte_spinlock_lock(&pinfo[port_id].port_update_lock);
-
-	port_close(port_id);
-
-	ret = rte_eth_dev_reset(port_id);
-	if (ret < 0) {
-		printf("Error: Failed to reset device for port: %d\n", port_id);
-		rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-		return -1;
-	}
-
-	ret = port_init(port_id, num_queues, st_queues,
-				nb_descs, buff_size);
-	if (ret < 0)
-		printf("Error: Failed to initialize port: %d\n", port_id);
-
-	rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-
-	if (!ret)
-		printf("Port reset done successfully on port-id: %d\n",
-			port_id);
-
-	return ret;
-}
-
-int port_remove(int port_id)
-{
-	int ret = 0;
-
-	printf("%s is received\n", __func__);
-
-	/* Detach the port, it will invoke device remove/uninit */
-	printf("Removing a device with port id %d\n", port_id);
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed\n", port_id);
-		return 0;
-	}
-
-	rte_spinlock_lock(&pinfo[port_id].port_update_lock);
-
-	port_close(port_id);
-
-	ret = rte_pmd_qdma_dev_remove(port_id);
-	if (ret < 0)
-		printf("Failed to remove device on port_id: %d\n", port_id);
-
-	rte_spinlock_unlock(&pinfo[port_id].port_update_lock);
-
-	if (!ret)
-		printf("Port remove done successfully on port-id: %d\n",
-			port_id);
-
-	return ret;
-}
-
-static struct option const long_opts[] = {
-{"filename", 1, 0, 0},
-{NULL, 0, 0, 0}
-};
-
-int parse_cmdline(int argc, char **argv)
-{
-	int cmd_opt;
-	int option_index;
-	char **argvopt;
-
-	argvopt = argv;
-	while ((cmd_opt = getopt_long(argc, argvopt, "c:n:b:w", long_opts,
-						&option_index)) != EOF) {
-		switch (cmd_opt) {
-		case 'c':
-			/* eal option */
-			break;
-		case 'n':
-			/* eal option */
-			break;
-		case 'b':
-			/* eal option */
-			break;
-		case 'w':
-			/* eal option */
-			break;
-		case '?':
-			/* Long eal options */
-			break;
-		case 0:
-			if (!strncmp(long_opts[option_index].name,
-						"filename",
-						sizeof("filename"))) {
-
-				filename = optarg;
-			}
-			break;
-		default:
-			printf("please pass valid parameters as follows:\n");
-			return -1;
-		}
-	}
-	return 0;
-}
-
-int port_init(int port_id, int num_queues, int st_queues,
-				int nb_descs, int buff_size)
-{
-	struct rte_mempool *mbuf_pool;
-	struct rte_eth_conf	    port_conf;
-	struct rte_eth_txconf   tx_conf;
-	struct rte_eth_rxconf   rx_conf;
-	int                     diag, x;
-	uint32_t                queue_base, nb_buff;
-
-	printf("Setting up port :%d.\n", port_id);
-
-	if (rte_pmd_qdma_get_device(port_id) == NULL) {
-		printf("Port id %d already removed. "
-			"Relaunch application to use the port again\n",
-			port_id);
-		return -1;
-	}
-
-	snprintf(pinfo[port_id].mem_pool, RTE_MEMPOOL_NAMESIZE,
-			MBUF_POOL_NAME_PORT, port_id);
-
-	/* Mbuf packet pool */
-	nb_buff = ((nb_descs) * num_queues * 2);
-
-	/* NUM_TX_PKTS should be added to every queue as that many descriptors
-	 * can be pending with application after Rx processing but before
-	 * consumed by application or sent to Tx
-	 */
-	nb_buff += ((NUM_TX_PKTS) * num_queues);
-
-	/*
-	* rte_mempool_create_empty() has sanity check to refuse large cache
-	* size compared to the number of elements.
-	* CACHE_FLUSHTHRESH_MULTIPLIER (1.5) is defined in a C file, so using a
-	* constant number 2 instead.
-	*/
-	nb_buff = RTE_MAX(nb_buff, MP_CACHE_SZ * 2);
-
-	mbuf_pool = rte_pktmbuf_pool_create(pinfo[port_id].mem_pool, nb_buff,
-			MP_CACHE_SZ, 0, buff_size +
-			RTE_PKTMBUF_HEADROOM,
-			rte_socket_id());
-
-	if (mbuf_pool == NULL)
-		rte_exit(EXIT_FAILURE, " Cannot create mbuf pkt-pool\n");
-#ifdef DUMP_MEMPOOL_USAGE_STATS
-	printf("%s(): %d: mpool = %p, mbuf_avail_count = %d,"
-			" mbuf_in_use_count = %d,"
-			"nb_buff = %u\n", __func__, __LINE__, mbuf_pool,
-			rte_mempool_avail_count(mbuf_pool),
-			rte_mempool_in_use_count(mbuf_pool), nb_buff);
-#endif //DUMP_MEMPOOL_USAGE_STATS
-
-	/*
-	 * Make sure the port is configured.  Zero everything and
-	 * hope for sane defaults
-	 */
-	memset(&port_conf, 0x0, sizeof(struct rte_eth_conf));
-	memset(&tx_conf, 0x0, sizeof(struct rte_eth_txconf));
-	memset(&rx_conf, 0x0, sizeof(struct rte_eth_rxconf));
-	diag = rte_pmd_qdma_get_bar_details(port_id,
-				&(pinfo[port_id].config_bar_idx),
-				&(pinfo[port_id].user_bar_idx),
-				&(pinfo[port_id].bypass_bar_idx));
-
-	if (diag < 0)
-		rte_exit(EXIT_FAILURE, "rte_pmd_qdma_get_bar_details failed\n");
-
-	printf("QDMA Config bar idx: %d\n", pinfo[port_id].config_bar_idx);
-	printf("QDMA AXI Master Lite bar idx: %d\n", pinfo[port_id].user_bar_idx);
-	printf("QDMA AXI Bridge Master bar idx: %d\n", pinfo[port_id].bypass_bar_idx);
-
-	/* configure the device to use # queues */
-	diag = rte_eth_dev_configure(port_id, num_queues, num_queues,
-			&port_conf);
-	if (diag < 0)
-		rte_exit(EXIT_FAILURE, "Cannot configure port %d (err=%d)\n",
-				port_id, diag);
-
-	diag = rte_pmd_qdma_get_queue_base(port_id, &queue_base);
-	if (diag < 0)
-		rte_exit(EXIT_FAILURE, "rte_pmd_qdma_get_queue_base : Querying of "
-				"QUEUE_BASE failed\n");
-	pinfo[port_id].queue_base = queue_base;
-	pinfo[port_id].num_queues = num_queues;
-	pinfo[port_id].st_queues = st_queues;
-	pinfo[port_id].buff_size = buff_size;
-	pinfo[port_id].nb_descs = nb_descs;
-
-	for (x = 0; x < num_queues; x++) {
-		if (x < st_queues) {
-			diag = rte_pmd_qdma_set_queue_mode(port_id, x,
-					RTE_PMD_QDMA_STREAMING_MODE);
-			if (diag < 0)
-				rte_exit(EXIT_FAILURE, "rte_pmd_qdma_set_queue_mode : "
-						"Passing of QUEUE_MODE "
-						"failed\n");
-		} else {
-			diag = rte_pmd_qdma_set_queue_mode(port_id, x,
-					RTE_PMD_QDMA_MEMORY_MAPPED_MODE);
-			if (diag < 0)
-				rte_exit(EXIT_FAILURE, "rte_pmd_qdma_set_queue_mode : "
-						"Passing of QUEUE_MODE "
-						"failed\n");
-		}
-
-		diag = rte_eth_tx_queue_setup(port_id, x, nb_descs, 0,
-				&tx_conf);
-		if (diag < 0)
-			rte_exit(EXIT_FAILURE, "Cannot setup port %d "
-					"TX Queue id:%d "
-					"(err=%d)\n", port_id, x, diag);
-		rx_conf.rx_thresh.wthresh = DEFAULT_RX_WRITEBACK_THRESH;
-		diag = rte_eth_rx_queue_setup(port_id, x, nb_descs, 0,
-				&rx_conf, mbuf_pool);
-		if (diag < 0)
-			rte_exit(EXIT_FAILURE, "Cannot setup port %d "
-					"RX Queue 0 (err=%d)\n", port_id, diag);
-	}
-
-	diag = rte_eth_dev_start(port_id);
-	if (diag < 0)
-		rte_exit(EXIT_FAILURE, "Cannot start port %d (err=%d)\n",
-				port_id, diag);
-
-	return 0;
-}
-
-static inline void do_sanity_checks(void)
-{
-#if (!defined(RTE_LIBRTE_QDMA_PMD))
-	rte_exit(EXIT_FAILURE, "CONFIG_RTE_LIBRTE_QDMA_PMD must be set "
-			"to 'Y' in the .config file\n");
-#endif /* RTE_LIBRTE_XDMA_PMD */
-
-}
-
-void load_file_cmds(struct cmdline *cl)
-{
-	FILE *fp;
-	char buff[256];
-
-	cmdline_printf(cl, "load commands from file:%s\n\n", filename);
-	fp = fopen((const char *)filename, "r");
-	if (fp == NULL) {
-		cmdline_printf(cl, "Error: Invalid filename: %s\n", filename);
-		return;
-	}
-
-	struct rdline *rdl = cmdline_get_rdline(cl);
-	rdline_reset(rdl);
-	{
-		cmdline_in(cl, "\r", 1);
-		while (fgets(buff, sizeof(buff), fp))
-			cmdline_in(cl, buff, strlen(buff));
-
-		cmdline_in(cl, "\r", 1);
-	}
-	fclose(fp);
-}
-
-/** XDMA DPDK testapp */
-
-int main(int argc, char **argv)
-{
-	const struct rte_memzone *mz = 0;
-	struct cmdline *cl;
-	int port_id   = 0;
-	int ret = 0;
-	int curr_avail_ports = 0;
-
-	/* Make sure the port is configured.  Zero everything and
-	 * hope for same defaults
-	 */
-
-	printf("QDMA testapp rte eal init...\n");
-
-	/* Make sure things are initialized ... */
-	ret = rte_eal_init(argc, argv);
-	if (ret < 0)
-		rte_exit(EXIT_FAILURE, "Error with EAL initialization\n");
-	rte_log_set_global_level(RTE_LOG_DEBUG);
-
-	printf("Ethernet Device Count: %d\n", (int)rte_eth_dev_count_avail());
-	printf("Logical Core Count: %d\n", rte_lcore_count());
-
-	num_ports = rte_eth_dev_count_avail();
-	if (num_ports < 1)
-		rte_exit(EXIT_FAILURE, "No Ethernet devices found."
-			" Try updating the FPGA image.\n");
-
-	for (port_id = 0; port_id < num_ports; port_id++)
-		rte_spinlock_init(&pinfo[port_id].port_update_lock);
-
-	ret = rte_eth_dev_callback_register(RTE_ETH_ALL, RTE_ETH_EVENT_INTR_RMV,
-				dev_remove_callback, NULL);
-	if (ret < 0)
-		rte_exit(EXIT_FAILURE, "Failed to register dev_remove_callback\n");
-
-	ret = rte_eth_dev_callback_register(RTE_ETH_ALL,
-			RTE_ETH_EVENT_INTR_RESET,
-			dev_reset_callback, NULL);
-	if (ret < 0)
-		rte_exit(EXIT_FAILURE, "Failed to register dev_reset_callback\n");
-
-#if 1
-	ret = parse_cmdline(argc, argv);
-	if (ret < 0)
-		rte_exit(EXIT_FAILURE, "Invalid argument\n");
-#endif
-
-	/* Make sure things are defined ... */
-	do_sanity_checks();
-
-	/* Allocate aligned mezone */
-	rte_pmd_qdma_compat_memzone_reserve_aligned();
-
-	cl = cmdline_stdin_new(main_ctx, "xilinx-app> ");
-	if (cl == NULL)
-		rte_panic("Cannot create cmdline instance\n");
-
-	/* if input commands file exists, then load commands from the file */
-	if (filename != NULL) {
-		load_file_cmds(cl);
-		rte_delay_ms(100);
-	} else
-		cmdline_interact(cl);
-
-	rte_eth_dev_callback_unregister(RTE_ETH_ALL, RTE_ETH_EVENT_INTR_RMV,
-			dev_remove_callback, NULL);
-
-	rte_eth_dev_callback_unregister(RTE_ETH_ALL, RTE_ETH_EVENT_INTR_RESET,
-			dev_reset_callback, NULL);
-
-	curr_avail_ports = rte_eth_dev_count_avail();
-	if (!curr_avail_ports)
-		printf("Ports already removed\n");
-	else {
-		for (port_id = num_ports - 1; port_id >= 0; port_id--) {
-
-			if (pinfo[port_id].num_queues)
-				port_close(port_id);
-
-			printf("Removing a device with port id %d\n", port_id);
-			if (rte_pmd_qdma_get_device(port_id) == NULL) {
-				printf("Port id %d already removed\n", port_id);
-				continue;
-			}
-			/* Detach the port, it will invoke
-			 * device remove/uninit
-			 */
-			if (rte_pmd_qdma_dev_remove(port_id))
-				printf("Failed to detach port '%d'\n", port_id);
-		}
-	}
-
-	cmdline_stdin_exit(cl);
-
-	rte_delay_ms(5000);
-	return 0;
-}
diff --git a/QDMA/DPDK/examples/qdma_testapp/testapp.h b/QDMA/DPDK/examples/qdma_testapp/testapp.h
deleted file mode 100755
index 5d58a0d..0000000
--- a/QDMA/DPDK/examples/qdma_testapp/testapp.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
-#define QDMA_MAX_PORTS	256
-
-#define PORT_0 0
-
-#define NUM_DESC_PER_RING 1024
-#ifdef PERF_BENCHMARK
-#define NUM_RX_PKTS (NUM_DESC_PER_RING - 2)
-#else
-#define NUM_RX_PKTS 32
-#endif
-
-/* Tandem boot feature involves DMA transfer of
- * second stage bootloader size greater than 2MB
- * from Host to Slave Boot Interface(SBI) buffer.
- * Increased the limit of pending tx packets that need
- * to process by application to avoid transfer timeouts.
- */
-#ifdef TANDEM_BOOT_SUPPORTED
-#define NUM_TX_PKTS 128
-#else
-#define NUM_TX_PKTS 32
-#endif
-
-#define MAX_NUM_QUEUES 4096
-#define DEFAULT_NUM_QUEUES 64
-#define RX_TX_MAX_RETRY			1500
-#define DEFAULT_RX_WRITEBACK_THRESH	(64)
-
-#define MP_CACHE_SZ     512
-#define MBUF_POOL_NAME_PORT   "mbuf_pool_%d"
-
-/* AXI Master Lite bar(user bar) registers */
-#define C2H_ST_QID_REG    0x0
-#define C2H_ST_LEN_REG    0x4
-#define C2H_CONTROL_REG              0x8
-#define ST_LOOPBACK_EN               0x1
-#define ST_C2H_START_VAL             0x2
-#define ST_C2H_IMMEDIATE_DATA_EN     0x4
-#define C2H_CONTROL_REG_MASK         0xF
-#define H2C_CONTROL_REG    0xC
-#define H2C_STATUS_REG    0x10
-#define C2H_PACKET_COUNT_REG    0x20
-#define C2H_STATUS_REG                    0x18
-#define C2H_STREAM_MARKER_PKT_GEN_VAL     0x22
-#define MARKER_RESPONSE_COMPLETION_BIT    0x1
-
-extern int num_ports;
-
-struct port_info {
-	int config_bar_idx;
-	int user_bar_idx;
-	int bypass_bar_idx;
-	unsigned int queue_base;
-	unsigned int num_queues;
-	unsigned int nb_descs;
-	unsigned int st_queues;
-	unsigned int buff_size;
-	rte_spinlock_t port_update_lock;
-	char mem_pool[RTE_MEMPOOL_NAMESIZE];
-};
-
-extern struct port_info pinfo[QDMA_MAX_PORTS];
-int port_init(int port_id, int num_queues, int st_queues,
-		int nb_descs, int buff_size);
-int do_recv_st(int port_id, int fd, int queueid, int input_size);
-int do_recv_mm(int port_id, int fd, int queueid,
-		int ld_size, int tot_num_desc);
-int do_xmit(int port_id, int fd, int queueid,
-		int ld_size, int tot_num_desc, int zbyte);
-void load_file_cmds(struct cmdline *cl);
-void port_close(int port_id);
-int port_reset(int port_id, int num_queues, int st_queues,
-		int nb_descs, int buff_size);
-int port_remove(int port_id);
-int parse_cmdline(int argc, char **argv);
diff --git a/QDMA/DPDK/tools/0001-Add-QDMA-xdebug-to-proc-info-of-dpdk-22.11.patch b/QDMA/DPDK/tools/0001-Add-QDMA-xdebug-to-proc-info-of-dpdk-22.11.patch
deleted file mode 100755
index e3501a4..0000000
--- a/QDMA/DPDK/tools/0001-Add-QDMA-xdebug-to-proc-info-of-dpdk-22.11.patch
+++ /dev/null
@@ -1,362 +0,0 @@
-From aa6931cc32ac9c7baea453717a34816f01803536 Mon Sep 17 00:00:00 2001
-From: Suryanarayana Raju Sangani <ssangani@xilinx.com>
-Date: Mon, 19 Jun 2023 12:44:20 +0530
-Subject: [PATCH] Add QDMA xdebug to proc-info of dpdk-22.11
-
-Signed-off-by: Nikhil agarwal <nagarwal@xilinx.com>
-Signed-off-by: Prasad Pardeshi <prasadp@xilinx.com>
-Signed-off-by: Sangani Suryanarayana Raju <ssangani@xilinx.com>
----
- app/proc-info/main.c      | 195 ++++++++++++++++++++++++++++++++++++--
- app/proc-info/meson.build |   2 +-
- app/test-pmd/config.c     |   2 +
- 3 files changed, 189 insertions(+), 10 deletions(-)
- mode change 100644 => 100755 app/proc-info/main.c
- mode change 100644 => 100755 app/proc-info/meson.build
- mode change 100644 => 100755 app/test-pmd/config.c
-
-diff --git a/app/proc-info/main.c b/app/proc-info/main.c
-old mode 100644
-new mode 100755
-index 53e852a..eeb20e7
---- a/app/proc-info/main.c
-+++ b/app/proc-info/main.c
-@@ -32,6 +32,7 @@
- #ifdef RTE_LIB_METRICS
- #include <rte_metrics.h>
- #endif
-+#include <rte_pmd_qdma.h>
- #include <rte_cycles.h>
- #ifdef RTE_LIB_SECURITY
- #include <rte_security.h>
-@@ -55,9 +56,31 @@
- 	STATS_BDR_FMT, s, w, STATS_BDR_FMT)
- 
- /* mask of enabled ports */
--static unsigned long enabled_port_mask;
-+static uint64_t enabled_port_mask;
-+/**< QID for queue context */
-+static uint32_t qid;
-+/**< desc dump type */
-+static uint32_t desc_type;
-+/**< QID for desc start value */
-+static uint32_t start;
-+/**< QID for desc end value */
-+static uint32_t end;
-+/**< Enable desc dump. */
-+static uint32_t enable_desc_dump;
- /* Enable stats. */
- static uint32_t enable_stats;
-+/**< Enable Device Structs */
-+static uint32_t qdma_device;
-+/**< Enable QDMA Tx and Rx queue stats */
-+static uint32_t qdma_qstats;
-+/**< Clear QDMA Tx and Rx queue stats */
-+static uint32_t qdma_qstats_clear;
-+/**< Enable Queue context and Queue structs. */
-+static uint32_t queue_info;
-+/**< Enable register field information. */
-+static uint32_t reg_info;
-+/**< Register address */
-+static uint32_t reg_addr;
- /* Enable xstats. */
- static uint32_t enable_xstats;
- /* Enable collectd format */
-@@ -76,6 +99,8 @@ static uint32_t reset_stats;
- static uint32_t reset_xstats;
- /* Enable memory info. */
- static uint32_t mem_info;
-+/**< Enable Global Errors . */
-+static uint32_t qdma_csr_info;
- /* Enable displaying xstat name. */
- static uint32_t enable_xstats_name;
- static char *xstats_name;
-@@ -138,8 +163,15 @@ proc_info_usage(const char *prgname)
- {
- 	printf("%s [EAL options] -- -p PORTMASK\n"
- 		"  -m to display DPDK memory zones, segments and TAILQ information\n"
-+		"  -g to display DPDK QDMA PMD global CSR info\n"
- 		"  -p PORTMASK: hexadecimal bitmask of ports to retrieve stats for\n"
- 		"  --stats: to display port statistics, enabled by default\n"
-+		"  --qdevice: to display QDMA device structure\n"
-+		"  --qstats: to display QDMA Tx and Rx queue stats\n"
-+		"  --qstats_clr: to clear QDMA Tx and Rx queue stats\n"
-+		"  --qinfo: to display QDMA queue context and queue structures\n"
-+		"  --reg-info {reg_addr}: to display field info of a register at reg_addr offset\n"
-+		"  --desc-dump {rx | tx | cmpt}: to dump QDMA queue descriptors\n"
- 		"  --xstats: to display extended port statistics, disabled by "
- 			"default\n"
- #ifdef RTE_LIB_METRICS
-@@ -179,7 +211,7 @@ proc_info_usage(const char *prgname)
- /*
-  * Parse the portmask provided at run time.
-  */
--static int
-+static int64_t
- parse_portmask(const char *portmask)
- {
- 	char *end = NULL;
-@@ -196,6 +228,71 @@ parse_portmask(const char *portmask)
- 	return 0;
- }
- 
-+/*
-+ *  * Parse the QID provided at run time.
-+ **/
-+static int
-+parse_int(const char *id)
-+{
-+	char *end = NULL;
-+	unsigned long val;
-+
-+	errno = 0;
-+
-+	/* parse hexadecimal string */
-+	val = strtoul(id, &end, 10);
-+	if ((id[0] == '\0') || (end == NULL) || (*end != '\0') ||
-+			(errno != 0)) {
-+		printf("%s ERROR parsing the QID\n", __func__);
-+		return -1;
-+	}
-+
-+	return val;
-+}
-+
-+/*
-+ * Parse the register address provided at run time.
-+ */
-+static int32_t
-+parse_reg_addr(const char *addr)
-+{
-+	char *end = NULL;
-+
-+	errno = 0;
-+
-+	/* parse hexadecimal string */
-+	reg_addr = strtoul(addr, &end, 16);
-+	if ((addr[0] == '\0') || (end == NULL) || (*end != '\0') ||
-+		(errno != 0)) {
-+		printf("%s ERROR parsing the register address\n", __func__);
-+		return -1;
-+	}
-+
-+	if (reg_addr == 0)
-+		return -1;
-+
-+	return reg_addr;
-+}
-+
-+/*
-+ *  * Parse the desc dump type provided at run time.
-+ **/
-+static int
-+parse_desc_type(const char *type)
-+{
-+	if (!strcmp(type, "rx")) {
-+		desc_type = RTE_PMD_QDMA_XDEBUG_DESC_C2H;
-+	} else if (!strcmp(type, "tx")) {
-+		desc_type = RTE_PMD_QDMA_XDEBUG_DESC_H2C;
-+	} else if (!strcmp(type, "cmpt")) {
-+		desc_type = RTE_PMD_QDMA_XDEBUG_DESC_CMPT;
-+	} else {
-+		printf("%s ERROR parsing the desc type\n", __func__);
-+		return -1;
-+	}
-+	return 0;
-+}
-+
- /*
-  * Parse ids value list into array
-  */
-@@ -273,11 +370,17 @@ proc_info_preparse_args(int argc, char **argv)
- static int
- proc_info_parse_args(int argc, char **argv)
- {
--	int opt;
-+	int opt, ret;
- 	int option_index;
- 	char *prgname = argv[0];
- 	static struct option long_option[] = {
- 		{"stats", 0, NULL, 0},
-+		{"qdevice", 0, NULL, 0},
-+		{"qstats", 0, NULL, 0},
-+		{"qstats_clr", 0, NULL, 0},
-+		{"qinfo", 0, NULL, 0},
-+		{"reg-info", required_argument, NULL, 1},
-+		{"desc-dump", required_argument, NULL, 1},
- 		{"stats-reset", 0, NULL, 0},
- 		{"xstats", 0, NULL, 0},
- #ifdef RTE_LIB_METRICS
-@@ -309,7 +412,7 @@ proc_info_parse_args(int argc, char **argv)
- 		proc_info_usage(prgname);
- 
- 	/* Parse command line */
--	while ((opt = getopt_long(argc, argv, "p:m",
-+	while ((opt = getopt_long(argc, argv, "p:mq:gs:e:",
- 			long_option, &option_index)) != EOF) {
- 		switch (opt) {
- 		/* portmask */
-@@ -322,11 +425,54 @@ proc_info_parse_args(int argc, char **argv)
- 		case 'm':
- 			mem_info = 1;
- 			break;
-+		case 'g':
-+			qdma_csr_info = 1;
-+			break;
-+		case 'q':
-+			ret = parse_int(optarg);
-+			if (ret < 0) {
-+				printf("Invalid queue\n");
-+				return -1;
-+			}
-+			qid = ret;
-+			break;
-+		case 's':
-+			ret = parse_int(optarg);
-+			if (ret < 0) {
-+				printf("Invalid start value\n");
-+				return -1;
-+			}
-+			start = ret;
-+			break;
-+		case 'e':
-+			ret = parse_int(optarg);
-+			if (ret < 0) {
-+				printf("Invalid end value\n");
-+				return -1;
-+			}
-+			end = ret;
-+			break;
- 		case 0:
- 			/* Print stats */
- 			if (!strncmp(long_option[option_index].name, "stats",
- 					MAX_LONG_OPT_SZ))
- 				enable_stats = 1;
-+			/* Print qdma device */
-+			if (!strncmp(long_option[option_index].name, "qdevice",
-+					MAX_LONG_OPT_SZ))
-+				qdma_device = 1;
-+			/* Print qdma Tx and Rx queue stats */
-+			if (!strncmp(long_option[option_index].name, "qstats",
-+					MAX_LONG_OPT_SZ))
-+				qdma_qstats = 1;
-+                        /* Clear qdma Tx and Rx queue stats */
-+                        if (!strncmp(long_option[option_index].name, "qstats_clr",
-+                                        MAX_LONG_OPT_SZ))
-+                                qdma_qstats_clear = 1;
-+			/* Print queue context and queue Structures*/
-+			if (!strncmp(long_option[option_index].name, "qinfo",
-+					MAX_LONG_OPT_SZ))
-+				queue_info = 1;
- 			/* Print xstats */
- 			else if (!strncmp(long_option[option_index].name, "xstats",
- 					MAX_LONG_OPT_SZ))
-@@ -425,6 +571,24 @@ proc_info_parse_args(int argc, char **argv)
- 					return -1;
- 				}
- 				enable_shw_tx_desc_dump = 1;
-+			} else if (!strncmp(long_option[option_index].name,
-+					"desc-dump",
-+					MAX_LONG_OPT_SZ)) {
-+				if (parse_desc_type(optarg) < 0) {
-+					printf("desc-dump parse error.\n");
-+					proc_info_usage(prgname);
-+					return -1;
-+				}
-+				enable_desc_dump = 1;
-+			} else if (!strncmp(long_option[option_index].name,
-+					"reg-info",
-+					MAX_LONG_OPT_SZ)) {
-+				if (parse_reg_addr(optarg) < 0) {
-+					printf("reg-info parse error.\n");
-+					proc_info_usage(prgname);
-+					return -1;
-+				}
-+				reg_info = 1;
- 			}
- 			break;
- 		default:
-@@ -1791,7 +1955,6 @@ main(int argc, char **argv)
- 
- 	if (mem_info) {
- 		meminfo_display();
--		return 0;
- 	}
- 
- 	nb_ports = rte_eth_dev_count_avail();
-@@ -1807,7 +1970,7 @@ main(int argc, char **argv)
- 	for (i = 0; i < RTE_MAX_ETHPORTS; i++) {
- 
- 		/* Skip if port is not in mask */
--		if ((enabled_port_mask & (1ul << i)) == 0)
-+		if ((enabled_port_mask & ((uint64_t)1 << i)) == 0)
- 			continue;
- 
- 		/* Skip if port is unused */
-@@ -1832,6 +1995,23 @@ main(int argc, char **argv)
- 			metrics_display(i);
- #endif
- 
-+		else if (qdma_csr_info)
-+			rte_pmd_qdma_dbg_regdump(i);
-+		else if (qdma_device)
-+			rte_pmd_qdma_dbg_qdevice(i);
-+		else if (qdma_qstats)
-+			rte_pmd_qdma_qstats(i, qid);
-+                else if (qdma_qstats_clear)
-+                        rte_pmd_qdma_qstats_clear(i, qid);
-+		else if (queue_info)
-+			rte_pmd_qdma_dbg_qinfo(i, qid);
-+		else if (reg_info)
-+			rte_pmd_qdma_dbg_reg_info_dump(i,
-+				1, reg_addr);
-+		else if (enable_desc_dump)
-+			rte_pmd_qdma_dbg_qdesc(i, qid,
-+				start, end, desc_type);
-+
- 		if (enable_shw_rx_desc_dump)
- 			nic_rx_descriptor_display(i, &rx_desc_param);
- 		if (enable_shw_tx_desc_dump)
-@@ -1870,9 +2050,6 @@ main(int argc, char **argv)
- 	if (enable_shw_module_eeprom)
- 		show_module_eeprom_info();
- 
--	RTE_ETH_FOREACH_DEV(i)
--		rte_eth_dev_close(i);
--
- 	ret = rte_eal_cleanup();
- 	if (ret)
- 		printf("Error from rte_eal_cleanup(), %d\n", ret);
-diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build
-old mode 100644
-new mode 100755
-index 1563ce6..340b9ab
---- a/app/proc-info/meson.build
-+++ b/app/proc-info/meson.build
-@@ -8,7 +8,7 @@ if is_windows
- endif
- 
- sources = files('main.c')
--deps += ['ethdev', 'security']
-+deps += ['ethdev', 'metrics', 'security', 'net_qdma']
- if dpdk_conf.has('RTE_LIB_METRICS')
-     deps += 'metrics'
- endif
-diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
-old mode 100644
-new mode 100755
-index acccb6b..6d51d62
---- a/app/test-pmd/config.c
-+++ b/app/test-pmd/config.c
-@@ -58,6 +58,8 @@
- #include "testpmd.h"
- #include "cmdline_mtr.h"
- 
-+#include <ethdev_driver.h>
-+
- #define ETHDEV_FWVERS_LEN 32
- 
- #ifdef CLOCK_MONOTONIC_RAW /* Defined in glibc bits/time.h */
--- 
-2.25.1
-
diff --git a/QDMA/DPDK/tools/0001-PKTGEN-20.12.0-Patch-to-add-Jumbo-packet-support.patch b/QDMA/DPDK/tools/0001-PKTGEN-20.12.0-Patch-to-add-Jumbo-packet-support.patch
deleted file mode 100755
index e0a11d4..0000000
--- a/QDMA/DPDK/tools/0001-PKTGEN-20.12.0-Patch-to-add-Jumbo-packet-support.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From 8d8204c48660cfe67ce27c95ce029e2cfa302958 Mon Sep 17 00:00:00 2001
-From: Suryanarayana Raju Sangani <ssangani@xilinx.com>
-Date: Thu, 27 Feb 2020 05:13:38 -0700
-Subject: [PATCH] PKTGEN-20.12.0: Patch to add Jumbo packet support
-
-This patch include:
-1. Jumbo frame support for Pktgen.
-2. Increase default number of RX_DESC to 2K.
-3. Disable RX classification.
-4. Set user provided packet size as DMA packet size i.e. not to remove
-CRC bytes
-
-Signed-off-by: Kumar Sanghvi <kumars@xilinx.com>
-Signed-off-by: Nikhil Agarwal <nagarwal@xilinx.com>
-Signed-off-by: Pankaj Darak <pankajd@xilinx.com>
-Signed-off-by: Thanneeru Srinivasulu <sthannee@xilinx.com>
-Signed-off-by: tarakr <tarakr@xilinx.com>
-Signed-off-by: Suryanarayana Raju Sangani <ssangani@xilinx.com>
----
- app/pktgen-cmds.c      | 15 +++++++++++----
- app/pktgen-constants.h |  3 ++-
- app/pktgen-main.c      | 24 +++++++++++++++++-------
- app/pktgen-port-cfg.c  | 12 ++++++++----
- app/pktgen-range.c     |  3 ++-
- app/pktgen.c           | 19 +++++++++++++++++--
- app/pktgen.h           |  4 +++-
- 7 files changed, 60 insertions(+), 20 deletions(-)
-
-diff --git a/app/pktgen-cmds.c b/app/pktgen-cmds.c
-index 4da9bab..065fbe8 100644
---- a/app/pktgen-cmds.c
-+++ b/app/pktgen-cmds.c
-@@ -3125,18 +3125,22 @@ single_set_pkt_size(port_info_t *info, uint16_t size)
- {
- 	pkt_seq_t * pkt = &info->seq_pkt[SINGLE_PKT];
- 
-+	uint16_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+				MAX_PKT_SIZE: (PG_ETHER_MAX_LEN - PG_ETHER_CRC_LEN);
-+
- 	if (size < PG_ETHER_CRC_LEN)
- 		size = PG_ETHER_CRC_LEN;
- 
- 	if ( (size - PG_ETHER_CRC_LEN) < MIN_PKT_SIZE)
- 		size = pktgen.eth_min_pkt;
--	if ( (size - PG_ETHER_CRC_LEN) > MAX_PKT_SIZE)
--		size = pktgen.eth_max_pkt;
-+	if ( (size - PG_ETHER_CRC_LEN) > pktsize)
-+		size = pktsize + PG_ETHER_CRC_LEN;
- 
- 	if ((pkt->ethType == PG_ETHER_TYPE_IPv6) && (size < (MIN_v6_PKT_SIZE + PG_ETHER_CRC_LEN)))
- 		size = MIN_v6_PKT_SIZE + PG_ETHER_CRC_LEN;
- 
- 	pkt->pktSize = (size - PG_ETHER_CRC_LEN);
-+	pkt->pktSize = size;
- 
- 	pktgen_packet_ctor(info, SINGLE_PKT, -1);
- 	pktgen_packet_rate(info);
-@@ -3924,6 +3928,9 @@ range_set_cos_id(port_info_t *info, char *what, uint8_t id)
- void
- range_set_pkt_size(port_info_t *info, char *what, uint16_t size)
- {
-+	uint32_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+		MAX_9K_SIZE : PG_ETHER_MAX_LEN;
-+
- 	if (!strcmp(what, "inc") || !strcmp(what, "increment")) {
- 		if (size > pktgen.eth_max_pkt)
- 			size = pktgen.eth_max_pkt;
-@@ -3931,8 +3938,8 @@ range_set_pkt_size(port_info_t *info, char *what, uint16_t size)
- 	} else {
- 		if (size < pktgen.eth_min_pkt)
- 			size = MIN_PKT_SIZE;
--		else if (size > pktgen.eth_max_pkt)
--			size = MAX_PKT_SIZE;
-+		else if (size > pktsize)
-+			size = pktsize;
- 		else
- 			size -= PG_ETHER_CRC_LEN;
- 
-diff --git a/app/pktgen-constants.h b/app/pktgen-constants.h
-index ede4e65..8694e18 100644
---- a/app/pktgen-constants.h
-+++ b/app/pktgen-constants.h
-@@ -17,7 +17,7 @@ extern "C" {
- enum {
- #ifndef RTE_LIBRTE_VMXNET3_PMD
- 	DEFAULT_PKT_BURST       = 64,	/* Increasing this number consumes memory very fast */
--	DEFAULT_RX_DESC         = (DEFAULT_PKT_BURST * 8 * 2),
-+	DEFAULT_RX_DESC         = (DEFAULT_PKT_BURST * 8 * 2 * 2),
- 	DEFAULT_TX_DESC         = DEFAULT_RX_DESC * 2,
- #else
- 	DEFAULT_PKT_BURST       = 32,	/* Increasing this number consumes memory very fast */
-@@ -31,6 +31,7 @@ enum {
- 
- 	DEFAULT_PRIV_SIZE       = 0,
- 
-+	MBUF_9K_SIZE            = 9018 + RTE_PKTMBUF_HEADROOM + DEFAULT_PRIV_SIZE,
- 	NUM_Q                   = 16,	/**< Number of cores per port. */
- };
- #define DEFAULT_MBUF_SIZE	(PG_ETHER_MAX_JUMBO_FRAME_LEN + RTE_PKTMBUF_HEADROOM) /* See: http://dpdk.org/dev/patchwork/patch/4479/ */
-diff --git a/app/pktgen-main.c b/app/pktgen-main.c
-index 96d1c0c..1ca2941 100644
---- a/app/pktgen-main.c
-+++ b/app/pktgen-main.c
-@@ -188,7 +188,7 @@ pktgen_parse_args(int argc, char **argv)
- 	pktgen.mbuf_buf_size = RTE_MBUF_DEFAULT_BUF_SIZE;
- 
- 	pktgen.verbose = 0;
--	while ((opt = getopt_long(argc, argvopt, "p:m:f:l:s:g:hPNGTvjtr",
-+	while ((opt = getopt_long(argc, argvopt, "p:m:f:l:s:g:hPNGTvjtr9",
- 				  lgopts, &option_index)) != EOF)
- 		switch (opt) {
- 		case 't':
-@@ -300,7 +300,12 @@ pktgen_parse_args(int argc, char **argv)
- 
- 		case 'h':	/* print out the help message */
- 			pktgen_usage(prgname);
--			return -1;
-+		return -1;
-+
-+		case '9': /* MTU 9K support */
-+		pktgen_log_info("%s: case 9... \n", __func__);
-+		pktgen.flags    |= MTU9K_SUPPORT_FLAG;
-+		break;
- 
- 		case 0:	/* crc-strip for all ports */
- 			printf(">>> Strip CRC in hardware is the default\n");
-@@ -407,8 +412,10 @@ RTE_FINI(pktgen_fini)
- int
- main(int argc, char **argv)
- {
--	uint32_t i;
-+	uint32_t nb_ports;
-+	int32_t i;
- 	int32_t ret;
-+	struct rte_device *dev;
- 
- 	signal(SIGSEGV, sig_handler);
- 	signal(SIGHUP, sig_handler);
-@@ -563,10 +570,13 @@ main(int argc, char **argv)
- 	/* Wait for all of the cores to stop running and exit. */
- 	rte_eal_mp_wait_lcore();
- 
--	RTE_ETH_FOREACH_DEV(i) {
--		rte_eth_dev_stop(i);
--		rte_delay_us_sleep(100 * 1000);
--		rte_eth_dev_close(i);
-+	nb_ports = rte_eth_dev_count_avail();
-+	for(i = nb_ports-1; i >= 0; i--) {
-+		dev = rte_eth_devices[i].device;
-+		if (rte_dev_remove(dev))
-+			printf("Failed to detach port '%d'\n", i);
-+		else
-+			printf("successfully removed port '%d'\n", i);
- 	}
- 
- 	cli_destroy();
-diff --git a/app/pktgen-port-cfg.c b/app/pktgen-port-cfg.c
-index a982d0d..7a27602 100644
---- a/app/pktgen-port-cfg.c
-+++ b/app/pktgen-port-cfg.c
-@@ -101,16 +101,19 @@ pktgen_mbuf_pool_create(const char *type, uint8_t pid, uint8_t queue_id,
- 	struct rte_mempool *mp;
- 	char name[RTE_MEMZONE_NAMESIZE];
- 	uint64_t sz;
-+	uint16_t mbuf_sz = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+					MBUF_9K_SIZE :DEFAULT_MBUF_SIZE;
-+
- 
- 	snprintf(name, sizeof(name), "%-12s%u:%u", type, pid, queue_id);
- 
--	sz = nb_mbufs * (DEFAULT_MBUF_SIZE + sizeof(struct rte_mbuf));
-+	sz = nb_mbufs * (mbuf_sz + sizeof(struct rte_mbuf));
- 	sz = RTE_ALIGN_CEIL(sz + sizeof(struct rte_mempool), 1024);
- 
- 	if (pktgen.verbose)
- 		pktgen_log_info(
- 			"    Create: %-*s - Memory used (MBUFs %5u x (size %u + Hdr %lu)) + %lu = %6lu KB, headroom %d",
--			16, name, nb_mbufs, DEFAULT_MBUF_SIZE,
-+			16, name, nb_mbufs, mbuf_sz,
- 			sizeof(struct rte_mbuf), sizeof(struct rte_mempool),
- 			sz / 1024, RTE_PKTMBUF_HEADROOM);
- 
-@@ -119,7 +122,7 @@ pktgen_mbuf_pool_create(const char *type, uint8_t pid, uint8_t queue_id,
- 
- 	/* create the mbuf pool */
- 	mp = rte_pktmbuf_pool_create(name, nb_mbufs, cache_size,
--		DEFAULT_PRIV_SIZE, DEFAULT_MBUF_SIZE, socket_id);
-+		DEFAULT_PRIV_SIZE, mbuf_sz, socket_id);
- 	if (mp == NULL)
- 		pktgen_log_panic(
- 			"Cannot create mbuf pool (%s) port %d, queue %d, nb_mbufs %d, socket_id %d: %s",
-@@ -227,7 +230,8 @@ pktgen_config_ports(void)
- 		pktgen_log_info(
- 			">>>> Configuring %d ports, MBUF Size %d, MBUF Cache Size %d",
- 			pktgen.nb_ports,
--			DEFAULT_MBUF_SIZE,
-+			(pktgen.flags & MTU9K_SUPPORT_FLAG) ? MBUF_9K_SIZE :
-+							DEFAULT_MBUF_SIZE,
- 			MBUF_CACHE_SIZE);
- 	}
- 
-diff --git a/app/pktgen-range.c b/app/pktgen-range.c
-index f88258d..bbaaa6f 100644
---- a/app/pktgen-range.c
-+++ b/app/pktgen-range.c
-@@ -595,7 +595,8 @@ pktgen_range_setup(port_info_t *info)
- 	range->pkt_size     = MIN_PKT_SIZE;
- 	range->pkt_size_inc = 0;
- 	range->pkt_size_min = MIN_PKT_SIZE;
--	range->pkt_size_max = MAX_PKT_SIZE;
-+	range->pkt_size_max = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+				MAX_PKT_SIZE : (PG_ETHER_MAX_LEN - PG_ETHER_CRC_LEN);
- 
- 	range->vxlan_gid = info->seq_pkt[SINGLE_PKT].group_id;
- 	range->vxlan_gid_inc = 0;
-diff --git a/app/pktgen.c b/app/pktgen.c
-index 26cc80d..1042a47 100644
---- a/app/pktgen.c
-+++ b/app/pktgen.c
-@@ -74,6 +74,7 @@ pktgen_wire_size(port_info_t *info)
- 		} else
- 			size = info->seq_pkt[SINGLE_PKT].pktSize + PKT_OVERHEAD_SIZE;
- 	}
-+	size -= (PKT_PREAMBLE_SIZE + INTER_FRAME_GAP + PG_ETHER_CRC_LEN);
- 	return size;
- }
- 
-@@ -296,6 +297,7 @@ pktgen_send_burst(port_info_t *info, uint16_t qid)
- 	struct qstats_s *qstats;
- 	uint32_t ret, cnt, tap, rnd, tstamp, i;
- 	int32_t seq_idx;
-+	pkt_seq_t *pkt;
- 
- 	if ((cnt = mtab->len) == 0)
- 		return;
-@@ -310,6 +312,10 @@ pktgen_send_burst(port_info_t *info, uint16_t qid)
- 	else
- 		seq_idx = SINGLE_PKT;
- 
-+	pkt = &info->seq_pkt[seq_idx];
-+	for (i = 0; i < cnt; i++)
-+		rte_pktmbuf_pkt_len(pkts[i]) = pkt->pktSize;
-+
- 	tap = pktgen_tst_port_flags(info, PROCESS_TX_TAP_PKTS);
- 	rnd = pktgen_tst_port_flags(info, SEND_RANDOM_PKTS);
- 	tstamp = pktgen_tst_port_flags(info, (SEND_LATENCY_PKTS | SEND_RATE_PACKETS | SAMPLING_LATENCIES));
-@@ -912,6 +918,10 @@ pktgen_setup_cb(struct rte_mempool *mp,
- 	pkt_seq_t *pkt;
- 	uint16_t qid, idx;
- 
-+	uint32_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+				MAX_PKT_SIZE:
-+				(PG_ETHER_MAX_LEN - PG_ETHER_CRC_LEN);
-+
- 	info = data->info;
- 	qid = data->qid;
- 
-@@ -941,7 +951,7 @@ pktgen_setup_cb(struct rte_mempool *mp,
- 	pktgen_packet_ctor(info, idx, -1);
- 
- 	rte_memcpy((uint8_t *)m->buf_addr + m->data_off,
--	           (uint8_t *)&pkt->hdr, MAX_PKT_SIZE);
-+	           (uint8_t *)&pkt->hdr, pktsize);
- 
- 	m->pkt_len  = pkt->pktSize;
- 	m->data_len = pkt->pktSize;
-@@ -1150,7 +1160,7 @@ pktgen_main_receive(port_info_t *info, uint8_t lid,
- {
- 	uint8_t pid;
- 	uint16_t qid, nb_rx;
--	capture_t *capture;
-+	__rte_unused    capture_t *capture;
- 	struct qstats_s *qstats;
- 	int i;
- 
-@@ -1169,6 +1179,10 @@ pktgen_main_receive(port_info_t *info, uint8_t lid,
- 	for(i = 0; i < nb_rx; i++)
- 		qstats->rxbytes += rte_pktmbuf_data_len(pkts_burst[i]);
- 
-+	info->sizes._64 += nb_rx;
-+	rte_pktmbuf_free_bulk(pkts_burst, nb_rx);
-+
-+#if 0
- 	pktgen_recv_tstamp(info, pkts_burst, nb_rx);
- 
- 	/* packets are not freed in the next call. */
-@@ -1185,6 +1199,7 @@ pktgen_main_receive(port_info_t *info, uint8_t lid,
- 	}
- 
- 	rte_pktmbuf_free_bulk(pkts_burst, nb_rx);
-+#endif
- }
- 
- static void
-diff --git a/app/pktgen.h b/app/pktgen.h
-index 66fa12e..20fb943 100644
---- a/app/pktgen.h
-+++ b/app/pktgen.h
-@@ -253,8 +253,9 @@ enum {
- 	SOCKET0                 = 0	/**< Socket ID value for allocation */
- };
- 
-+#define MAX_9K_SIZE         9018
- #define MIN_PKT_SIZE		(pktgen.eth_min_pkt - PG_ETHER_CRC_LEN)
--#define MAX_PKT_SIZE        (pktgen.eth_max_pkt - PG_ETHER_CRC_LEN)
-+#define MAX_PKT_SIZE        (MAX_9K_SIZE - PG_ETHER_CRC_LEN)
- 
- typedef struct rte_mbuf rte_mbuf_t;
- 
-@@ -351,6 +352,7 @@ enum {						/* Pktgen flags bits */
- 	BLINK_PORTS_FLAG        = (1 << 10),	/**< Blink the port leds */
- 	ENABLE_THEME_FLAG       = (1 << 11),	/**< Enable theme or color support */
- 
-+	MTU9K_SUPPORT_FLAG      = (1 << 15),    /**< MTU 9K support */
- 	CONFIG_PAGE_FLAG        = (1 << 16),	/**< Display the configure page */
- 	SEQUENCE_PAGE_FLAG      = (1 << 17),	/**< Display the Packet sequence page */
- 	RANGE_PAGE_FLAG         = (1 << 18),	/**< Display the range page */
--- 
-2.17.1
-
diff --git a/QDMA/DPDK/tools/0001-PKTGEN-22.04.1-Patch-to-add-Jumbo-packet-support.patch b/QDMA/DPDK/tools/0001-PKTGEN-22.04.1-Patch-to-add-Jumbo-packet-support.patch
deleted file mode 100755
index e50d80d..0000000
--- a/QDMA/DPDK/tools/0001-PKTGEN-22.04.1-Patch-to-add-Jumbo-packet-support.patch
+++ /dev/null
@@ -1,466 +0,0 @@
-From fb3ffa15e6d1f6b1a576b393ff69317707351aae Mon Sep 17 00:00:00 2001
-From: Prasad Pardeshi <prasadp@xilinx.com>
-Date: Tue, 28 Feb 2023 17:37:06 +0530
-Subject: [PATCH] [PATCH] PKTGEN-22.04.1: Patch to add Jumbo packet support
-
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This patch include:
-1. Jumbo frame support for Pktgen.
-2. Increase default number of RX_DESC to 2K.
-3. Disable RX classification.
-4. Set user provided packet size as DMA packet size i.e. not to remove
-CRC bytes Signed-off-by: Kumar Sanghvi <kumars@xilinx.com>
-Signed-off-by: Nikhil Agarwal <nagarwal@xilinx.com>
-Signed-off-by: Pankaj Darak <pankajd@xilinx.com>
-Signed-off-by: Thanneeru Srinivasulu <sthannee@xilinx.com>
-Signed-off-by: tarakr <tarakr@xilinx.com>
-Signed-off-by: Suryanarayana Raju Sangani <ssangani@xilinx.com>
----
- app/lpktgenlib.c        |  2 ++
- app/meson.build         |  1 +
- app/pktgen-cmds.c       | 18 ++++++++++++++----
- app/pktgen-constants.h  |  4 ++--
- app/pktgen-latency.c    |  2 ++
- app/pktgen-main.c       | 25 ++++++++++++++++++-------
- app/pktgen-port-cfg.c   | 15 ++++++++++-----
- app/pktgen-port-cfg.h   |  2 +-
- app/pktgen-range.c      |  3 ++-
- app/pktgen-rate.c       |  2 ++
- app/pktgen-stats.c      |  2 ++
- app/pktgen.c            | 19 +++++++++++++++++--
- app/pktgen.h            |  5 +++--
- lib/cli/cli_map.c       |  1 +
- lib/common/pg_strings.c |  1 +
- 15 files changed, 78 insertions(+), 24 deletions(-)
-
-diff --git a/app/lpktgenlib.c b/app/lpktgenlib.c
-index bc24433..add5a16 100644
---- a/app/lpktgenlib.c
-+++ b/app/lpktgenlib.c
-@@ -14,6 +14,8 @@
- #include <pg_inet.h>
- #include "lpktgenlib.h"
- 
-+#include <bus_driver.h>
-+#include <bus_pci_driver.h>
- #include <stdint.h>
- #include <netinet/in.h>
- 
-diff --git a/app/meson.build b/app/meson.build
-index 66087a5..1027997 100644
---- a/app/meson.build
-+++ b/app/meson.build
-@@ -35,6 +35,7 @@ deps += [cc.find_library('rte_net_i40e', required: false)]
- deps += [cc.find_library('rte_net_ixgbe', required: false)]
- deps += [cc.find_library('rte_net_ice', required: false)]
- deps += [cc.find_library('rte_bus_vdev', required: false)]
-+deps += [cc.find_library('rte_net_qdma', required: true)]
- 
- deps += [dependency('threads')]
- deps += [cc.find_library('numa', required: true)]
-diff --git a/app/pktgen-cmds.c b/app/pktgen-cmds.c
-index 9708b28..f92b890 100644
---- a/app/pktgen-cmds.c
-+++ b/app/pktgen-cmds.c
-@@ -3054,18 +3054,25 @@ single_set_pkt_size(port_info_t *info, uint16_t size)
- {
-     pkt_seq_t *pkt = &info->seq_pkt[SINGLE_PKT];
- 
-+    uint16_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+			MAX_PKT_SIZE: (RTE_ETHER_MAX_LEN - RTE_ETHER_CRC_LEN);
-+
-+
-     if (size < RTE_ETHER_CRC_LEN)
-         size = RTE_ETHER_CRC_LEN;
- 
-+
-+
-     if ((size - RTE_ETHER_CRC_LEN) < MIN_PKT_SIZE)
-         size = pktgen.eth_min_pkt;
--    if ((size - RTE_ETHER_CRC_LEN) > MAX_PKT_SIZE)
--        size = pktgen.eth_max_pkt;
-+    if ( (size - RTE_ETHER_CRC_LEN) > pktsize)
-+	size = pktsize + RTE_ETHER_CRC_LEN;
- 
-     if ((pkt->ethType == RTE_ETHER_TYPE_IPV6) && (size < (MIN_v6_PKT_SIZE + RTE_ETHER_CRC_LEN)))
-         size = MIN_v6_PKT_SIZE + RTE_ETHER_CRC_LEN;
- 
-     pkt->pktSize = (size - RTE_ETHER_CRC_LEN);
-+    pkt->pktSize = size;
- 
-     pktgen_packet_ctor(info, SINGLE_PKT, -1);
-     pktgen_packet_rate(info);
-@@ -3094,6 +3101,7 @@ rate_set_pkt_size(port_info_t *info, uint16_t size)
- 
-     if ((size - RTE_ETHER_CRC_LEN) < MIN_PKT_SIZE)
-         size = pktgen.eth_min_pkt;
-+
-     if ((size - RTE_ETHER_CRC_LEN) > MAX_PKT_SIZE)
-         size = pktgen.eth_max_pkt;
- 
-@@ -4209,6 +4217,8 @@ range_set_cos_id(port_info_t *info, char *what, uint8_t id)
- void
- range_set_pkt_size(port_info_t *info, char *what, uint16_t size)
- {
-+	uint32_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+		MAX_9K_SIZE : RTE_ETHER_MAX_LEN;
-     if (!strcmp(what, "inc") || !strcmp(what, "increment")) {
-         if (size > pktgen.eth_max_pkt)
-             size = pktgen.eth_max_pkt;
-@@ -4216,8 +4226,8 @@ range_set_pkt_size(port_info_t *info, char *what, uint16_t size)
-     } else {
-         if (size < pktgen.eth_min_pkt)
-             size = MIN_PKT_SIZE;
--        else if (size > pktgen.eth_max_pkt)
--            size = MAX_PKT_SIZE;
-+	else if (size > pktsize)
-+		size = pktsize;
-         else
-             size -= RTE_ETHER_CRC_LEN;
- 
-diff --git a/app/pktgen-constants.h b/app/pktgen-constants.h
-index 6c02f82..16d5f5c 100644
---- a/app/pktgen-constants.h
-+++ b/app/pktgen-constants.h
-@@ -17,7 +17,7 @@ extern "C" {
- enum {
- #if !defined(RTE_LIBRTE_VMXNET3_PMD) && !defined(RTE_NET_VMXNET3)
-     DEFAULT_PKT_BURST = 64, /* Increasing this number consumes memory very fast */
--    DEFAULT_RX_DESC   = (DEFAULT_PKT_BURST * 8 * 2),
-+    DEFAULT_RX_DESC   = (DEFAULT_PKT_BURST * 8 * 2 * 2),
-     DEFAULT_TX_DESC   = DEFAULT_RX_DESC * 2,
- #else
-     DEFAULT_PKT_BURST = 128, /* Increasing this number consumes memory very fast */
-@@ -30,7 +30,7 @@ enum {
-     MBUF_CACHE_SIZE    = (MAX_MBUFS_PER_PORT / 8),
- 
-     DEFAULT_PRIV_SIZE = 0,
--
-+    MBUF_9K_SIZE            = 9018 + RTE_PKTMBUF_HEADROOM + DEFAULT_PRIV_SIZE,
-     NUM_Q = 16, /**< Number of cores per port. */
- };
- #define DEFAULT_MBUF_SIZE                                                                         \
-diff --git a/app/pktgen-latency.c b/app/pktgen-latency.c
-index bafaf1c..7787a6f 100644
---- a/app/pktgen-latency.c
-+++ b/app/pktgen-latency.c
-@@ -8,6 +8,8 @@
- 
- #include <stdio.h>
- 
-+#include <bus_driver.h>
-+#include <bus_pci_driver.h>
- #include "lua_config.h"
- 
- #include "pktgen-cmds.h"
-diff --git a/app/pktgen-main.c b/app/pktgen-main.c
-index 7debdb3..11a118a 100644
---- a/app/pktgen-main.c
-+++ b/app/pktgen-main.c
-@@ -29,6 +29,8 @@
- #include "pktgen-log.h"
- #include "cli-functions.h"
- 
-+#include <rte_pmd_qdma.h>
-+
- /* Offset to the mbuf dynamic field holding pktgen data. */
- int pktgen_dynfield_offset = -1;
- 
-@@ -206,7 +208,7 @@ pktgen_parse_args(int argc, char **argv)
-     pktgen.mbuf_buf_size = RTE_MBUF_DEFAULT_BUF_SIZE;
- 
-     pktgen.verbose = 0;
--    while ((opt = getopt_long(argc, argvopt, "p:m:f:l:s:g:hPNGTvjtr", lgopts, &option_index)) !=
-+    while ((opt = getopt_long(argc, argvopt, "p:m:f:l:s:g:hPNGTvjtr9", lgopts, &option_index)) !=
-            EOF)
-         switch (opt) {
-         case 't':
-@@ -315,7 +317,12 @@ pktgen_parse_args(int argc, char **argv)
- 
-         case 'h': /* print out the help message */
-             pktgen_usage(prgname);
--            return -1;
-+        return -1;
-+
-+	case '9': /* MTU 9K support */
-+	pktgen_log_info("%s: case 9... \n", __func__);
-+	pktgen.flags    |= MTU9K_SUPPORT_FLAG;
-+	break;
- 
-         case 0: /* crc-strip for all ports */
-             printf(">>> Strip CRC in hardware is the default\n");
-@@ -421,7 +428,8 @@ RTE_FINI(pktgen_fini)
- int
- main(int argc, char **argv)
- {
--    uint32_t i;
-+    uint32_t nb_ports;
-+    int32_t i;
-     int32_t ret;
- 
-     setlocale(LC_ALL, "");
-@@ -574,10 +582,13 @@ main(int argc, char **argv)
-     /* Wait for all of the cores to stop running and exit. */
-     rte_eal_mp_wait_lcore();
- 
--    RTE_ETH_FOREACH_DEV(i)
--    {
--        rte_eth_dev_stop(i);
--        rte_delay_us_sleep(100 * 1000);
-+    nb_ports = rte_eth_dev_count_avail();
-+    for(i = nb_ports-1; i >= 0; i--) {
-+	    if (rte_pmd_qdma_dev_remove(i))
-+	            printf("Failed to detach port '%d'\n", i);
-+	    else
-+		    printf("successfully removed port '%d'\n", i);
-+
-     }
- 
-     cli_destroy();
-diff --git a/app/pktgen-port-cfg.c b/app/pktgen-port-cfg.c
-index 7a61db3..3579d07 100644
---- a/app/pktgen-port-cfg.c
-+++ b/app/pktgen-port-cfg.c
-@@ -10,6 +10,9 @@
- #include <cli_scrn.h>
- #include <lua_config.h>
- 
-+#include <bus_pci_driver.h>
-+#include <bus_driver.h>
-+
- #include "pktgen-port-cfg.h"
- 
- #include "pktgen.h"
-@@ -41,7 +44,6 @@ static struct rte_eth_conf default_port_conf = {
-         {
-             .mq_mode          = RTE_ETH_MQ_RX_RSS,
-             .max_lro_pkt_size = RTE_ETHER_MAX_LEN,
--            .split_hdr_size   = 0,
-         },
- 
-     .rx_adv_conf =
-@@ -93,23 +95,25 @@ pktgen_mbuf_pool_create(const char *type, uint8_t pid, uint8_t queue_id, uint32_
-     struct rte_mempool *mp;
-     char name[RTE_MEMZONE_NAMESIZE];
-     uint64_t sz;
-+    uint16_t mbuf_sz = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+                                     MBUF_9K_SIZE :DEFAULT_MBUF_SIZE;
- 
-     snprintf(name, sizeof(name), "%-12s%u:%u", type, pid, queue_id);
- 
--    sz = nb_mbufs * (DEFAULT_MBUF_SIZE + sizeof(struct rte_mbuf));
-+    sz = nb_mbufs * (mbuf_sz + sizeof(struct rte_mbuf));
-     sz = RTE_ALIGN_CEIL(sz + sizeof(struct rte_mempool), 1024);
- 
-     if (pktgen.verbose)
-         pktgen_log_info("    Create: %-*s - Memory used (MBUFs %5u x (size %u + Hdr %lu)) + %lu = "
-                         "%6lu KB, headroom %d",
--                        16, name, nb_mbufs, DEFAULT_MBUF_SIZE, sizeof(struct rte_mbuf),
-+                        16, name, nb_mbufs, mbuf_sz, sizeof(struct rte_mbuf),
-                         sizeof(struct rte_mempool), sz / 1024, RTE_PKTMBUF_HEADROOM);
- 
-     pktgen.mem_used += sz;
-     pktgen.total_mem_used += sz;
- 
-     /* create the mbuf pool */
--    mp = rte_pktmbuf_pool_create(name, nb_mbufs, cache_size, DEFAULT_PRIV_SIZE, DEFAULT_MBUF_SIZE,
-+    mp = rte_pktmbuf_pool_create(name, nb_mbufs, cache_size, DEFAULT_PRIV_SIZE, mbuf_sz,
-                                  socket_id);
-     if (mp == NULL)
-         pktgen_log_panic(
-@@ -194,7 +198,8 @@ pktgen_config_ports(void)
-         pg_port_matrix_dump(pktgen.l2p);
- 
-         pktgen_log_info(">>>> Configuring %d ports, MBUF Size %d, MBUF Cache Size %d",
--                        pktgen.nb_ports, DEFAULT_MBUF_SIZE, MBUF_CACHE_SIZE);
-+                        pktgen.nb_ports, (pktgen.flags & MTU9K_SUPPORT_FLAG) ? MBUF_9K_SIZE :
-+							DEFAULT_MBUF_SIZE, MBUF_CACHE_SIZE);
-     }
- 
-     /* For each lcore setup each port that is handled by that lcore. */
-diff --git a/app/pktgen-port-cfg.h b/app/pktgen-port-cfg.h
-index 820f131..6ee4f29 100644
---- a/app/pktgen-port-cfg.h
-+++ b/app/pktgen-port-cfg.h
-@@ -421,7 +421,7 @@ rte_get_rx_capa_list(uint64_t rx_capa, char *buf, size_t len)
-                     {RTE_ETH_RX_OFFLOAD_QINQ_STRIP, _(QINQ_STRIP)},
-                     {RTE_ETH_RX_OFFLOAD_OUTER_IPV4_CKSUM, _(OUTER_IPV4_CKSUM)},
-                     {RTE_ETH_RX_OFFLOAD_MACSEC_STRIP, _(MACSEC_STRIP)},
--                    {RTE_ETH_RX_OFFLOAD_HEADER_SPLIT, _(HEADER_SPLIT)},
-+                    {RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT, _(HEADER_SPLIT)},
-                     {RTE_ETH_RX_OFFLOAD_VLAN_FILTER, _(VLAN_FILTER)},
-                     {RTE_ETH_RX_OFFLOAD_VLAN_EXTEND, _(VLAN_EXTEND)},
-                     {RTE_ETH_RX_OFFLOAD_SCATTER, _(SCATTER)},
-diff --git a/app/pktgen-range.c b/app/pktgen-range.c
-index 7d0ece0..5d9bf04 100644
---- a/app/pktgen-range.c
-+++ b/app/pktgen-range.c
-@@ -744,7 +744,8 @@ pktgen_range_setup(port_info_t *info)
-     range->pkt_size     = MIN_PKT_SIZE;
-     range->pkt_size_inc = 0;
-     range->pkt_size_min = MIN_PKT_SIZE;
--    range->pkt_size_max = MAX_PKT_SIZE;
-+    range->pkt_size_max = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+                            MAX_PKT_SIZE : (RTE_ETHER_MAX_LEN - RTE_ETHER_CRC_LEN);
- 
-     range->vxlan_gid     = info->seq_pkt[SINGLE_PKT].group_id;
-     range->vxlan_gid_inc = 0;
-diff --git a/app/pktgen-rate.c b/app/pktgen-rate.c
-index 4599f8e..4f5aecb 100644
---- a/app/pktgen-rate.c
-+++ b/app/pktgen-rate.c
-@@ -8,6 +8,8 @@
- 
- #include <stdio.h>
- 
-+#include <bus_driver.h>
-+#include <bus_pci_driver.h>
- #include "lua_config.h"
- 
- #include "pktgen-cmds.h"
-diff --git a/app/pktgen-stats.c b/app/pktgen-stats.c
-index e7f27ef..7840b08 100644
---- a/app/pktgen-stats.c
-+++ b/app/pktgen-stats.c
-@@ -8,6 +8,8 @@
- 
- #include <stdio.h>
- 
-+#include <bus_pci_driver.h>
-+#include <bus_driver.h>
- #include <pg_delay.h>
- #include <lua_config.h>
- 
-diff --git a/app/pktgen.c b/app/pktgen.c
-index 448cc7f..14441f7 100644
---- a/app/pktgen.c
-+++ b/app/pktgen.c
-@@ -75,6 +75,7 @@ pktgen_wire_size(port_info_t *info)
-         } else
-             size = info->seq_pkt[SINGLE_PKT].pktSize + PKT_OVERHEAD_SIZE;
-     }
-+    size -= (PKT_PREAMBLE_SIZE + INTER_FRAME_GAP + RTE_ETHER_CRC_LEN);
-     return size;
- }
- 
-@@ -297,6 +298,7 @@ pktgen_send_burst(port_info_t *info, uint16_t qid)
-     struct qstats_s *qstats = &info->qstats[qid];
-     uint32_t ret, cnt, tap, rnd, tstamp, i;
-     int32_t seq_idx;
-+    pkt_seq_t *pkt;
- 
-     tap = pktgen_tst_port_flags(info, PROCESS_TX_TAP_PKTS);
- 
-@@ -313,6 +315,10 @@ pktgen_send_burst(port_info_t *info, uint16_t qid)
-     else
-         seq_idx = SINGLE_PKT;
- 
-+    pkt = &info->seq_pkt[seq_idx];
-+    for (i = 0; i < cnt; i++)
-+           rte_pktmbuf_pkt_len(pkts[i]) = pkt->pktSize;
-+
-     rnd = pktgen_tst_port_flags(info, SEND_RANDOM_PKTS);
-     tstamp =
-         pktgen_tst_port_flags(info, (SEND_LATENCY_PKTS | SEND_RATE_PACKETS | SAMPLING_LATENCIES));
-@@ -930,6 +936,10 @@ pktgen_setup_cb(struct rte_mempool *mp, void *opaque, void *obj, unsigned obj_id
-     pkt_seq_t *pkt;
-     uint16_t qid, idx;
- 
-+    uint32_t pktsize = (pktgen.flags & MTU9K_SUPPORT_FLAG) ?
-+                           MAX_PKT_SIZE:
-+			   (RTE_ETHER_MAX_LEN - RTE_ETHER_CRC_LEN);
-+
-     info = data->info;
-     qid  = data->qid;
- 
-@@ -958,7 +968,7 @@ pktgen_setup_cb(struct rte_mempool *mp, void *opaque, void *obj, unsigned obj_id
- 
-     pktgen_packet_ctor(info, idx, -1);
- 
--    rte_memcpy((uint8_t *)m->buf_addr + m->data_off, (uint8_t *)&pkt->hdr, MAX_PKT_SIZE);
-+    rte_memcpy((uint8_t *)m->buf_addr + m->data_off, (uint8_t *)&pkt->hdr, pktsize);
- 
-     m->pkt_len  = pkt->pktSize;
-     m->data_len = pkt->pktSize;
-@@ -1144,7 +1154,7 @@ pktgen_main_receive(port_info_t *info, uint8_t lid, struct rte_mbuf *pkts_burst[
- {
-     uint8_t pid;
-     uint16_t qid, nb_rx;
--    capture_t *capture;
-+    __rte_unused    capture_t *capture;
-     struct qstats_s *qstats;
-     int i;
- 
-@@ -1163,6 +1173,10 @@ pktgen_main_receive(port_info_t *info, uint8_t lid, struct rte_mbuf *pkts_burst[
-     for (i = 0; i < nb_rx; i++)
-         qstats->rxbytes += rte_pktmbuf_data_len(pkts_burst[i]);
- 
-+    info->qstats[qid].sizes._64 += nb_rx;
-+    rte_pktmbuf_free_bulk(pkts_burst, nb_rx);
-+
-+#if 0
-     pktgen_recv_tstamp(info, pkts_burst, nb_rx);
- 
-     /* packets are not freed in the next call. */
-@@ -1178,6 +1192,7 @@ pktgen_main_receive(port_info_t *info, uint8_t lid, struct rte_mbuf *pkts_burst[
-     }
- 
-     rte_pktmbuf_free_bulk(pkts_burst, nb_rx);
-+#endif
- }
- 
- static void
-diff --git a/app/pktgen.h b/app/pktgen.h
-index 1be8389..4a70a3a 100644
---- a/app/pktgen.h
-+++ b/app/pktgen.h
-@@ -239,8 +239,9 @@ enum {
-     SOCKET0 = 0 /**< Socket ID value for allocation */
- };
- 
-+#define MAX_9K_SIZE         9018
- #define MIN_PKT_SIZE (pktgen.eth_min_pkt - RTE_ETHER_CRC_LEN)
--#define MAX_PKT_SIZE (pktgen.eth_max_pkt - RTE_ETHER_CRC_LEN)
-+#define MAX_PKT_SIZE        (MAX_9K_SIZE - RTE_ETHER_CRC_LEN)
- 
- typedef struct rte_mbuf rte_mbuf_t;
- 
-@@ -336,7 +337,7 @@ enum {                                  /* Pktgen flags bits */
-        FAKE_PORTS_FLAG     = (1 << 9),  /**< Fake ports enabled */
-        BLINK_PORTS_FLAG    = (1 << 10), /**< Blink the port leds */
-        ENABLE_THEME_FLAG   = (1 << 11), /**< Enable theme or color support */
--
-+       MTU9K_SUPPORT_FLAG      = (1 << 15),    /**< MTU 9K support */
-        CONFIG_PAGE_FLAG       = (1 << 16), /**< Display the configure page */
-        SEQUENCE_PAGE_FLAG     = (1 << 17), /**< Display the Packet sequence page */
-        RANGE_PAGE_FLAG        = (1 << 18), /**< Display the range page */
-diff --git a/lib/cli/cli_map.c b/lib/cli/cli_map.c
-index 50e30e1..44b924c 100644
---- a/lib/cli/cli_map.c
-+++ b/lib/cli/cli_map.c
-@@ -7,6 +7,7 @@
- #include <_atoip.h>
- 
- #include "cli.h"
-+#include "ctype.h"
- 
- int
- cli_map_list_search(const char *fmt, char *item, int index)
-diff --git a/lib/common/pg_strings.c b/lib/common/pg_strings.c
-index a81acf2..3320c43 100644
---- a/lib/common/pg_strings.c
-+++ b/lib/common/pg_strings.c
-@@ -3,6 +3,7 @@
-  */
- 
- #include "pg_strings.h"
-+#include "ctype.h"
- 
- #define SIZE_OF_PORTLIST      (sizeof(portlist_t) * 8)
- 
--- 
-2.27.0
-
diff --git a/QDMA/DPDK/tools/README.txt b/QDMA/DPDK/tools/README.txt
deleted file mode 100755
index 2cddef8..0000000
--- a/QDMA/DPDK/tools/README.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-0001-PKTGEN-22.04.1-Patch-to-add-Jumbo-packet-support.patch
-is the patch file over dpdk-pktgen v22.11.0 and
-0001-PKTGEN-20.12.0-Patch-to-add-Jumbo-packet-support.patch
-is the patch file over dpdk-pktgen v20.12.0 that extends
-dpdk-pktgen application to handle packets with packet sizes
-more than 1518 bytes and it disables the packet size
-classification logic in dpdk-pktgen to remove application
-overhead in performance measurement.
-
-This patch is used for performance testing with dpdk-pktgen application.
-
-
-/*-
- *   BSD LICENSE
- *
- *   Copyright (c) 2017-2022 Xilinx, Inc. All rights reserved.
- *   Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of the copyright holder nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "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 COPYRIGHT
- *   OWNER OR CONTRIBUTORS 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.
- */
-
diff --git a/QDMA/linux-kernel/LICENSE b/QDMA/linux-kernel/LICENSE
deleted file mode 100755
index 94e1237..0000000
--- a/QDMA/linux-kernel/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
-BSD License
-
-For Xilinx DMA IP software
-
-Copyright (c) 2016-2022 Xilinx, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
-
- * 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.
-
- * Neither the name Xilinx nor the names of its contributors may be used to
-   endorse or promote products derived from this software without specific
-   prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
diff --git a/QDMA/linux-kernel/Makefile b/QDMA/linux-kernel/Makefile
deleted file mode 100755
index 53b933d..0000000
--- a/QDMA/linux-kernel/Makefile
+++ /dev/null
@@ -1,184 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-SHELL = /bin/bash
-
-#
-# makefile parameters:
-# - KDIR/KSRC/KOBJ=, optional
-# - install_path=,			override all install directories
-# - kernel_install_path=,	override install directory for kernel module
-# - dev_install_path=,		override install directory for development headers
-# - apps_install_path=,		override install directory for applications
-# - docs_install_path=,		override install directory for man pages
-#
-# - enable_cmpt_immediate_data=<0|1>	enable immediate data in writeback desc.
-# - disable_st_c2h_completion=<0|1>	disable completion
-# - CROSS_COMPILE=,  gcc compiler prefix for architecture eg. aarch64-linux-gnu-
-
-# Define grep error output to NULL, since -s is not portable.
-grep = grep 2>/dev/null
-
-# Define paths.
-srcdir := $(shell pwd)
-topdir := $(shell cd $(srcdir)/.. && pwd)
-bin_dir := $(srcdir)/bin
-apps_dir := $(srcdir)/apps
-
-
-# ALL subdirectories
-ALLSUBDIRS := driver
-DRIVER_SRC_DIR := driver
-
-# Exports.
-export grep
-export srcdir
-export topdir
-export bin_dir
-export verbose
-
-# evaluate install paths
-ifeq ($(install_path),)
-	# defaults
-	kernel_install_path ?= $(PREFIX)/lib/modules/$(utsrelease)/updates/kernel/drivers/qdma
-	dev_install_path ?= /usr/local/include/qdma
-	apps_install_path ?= /usr/local/sbin
-	docs_install_path ?= /usr/share/man/man8
-else # bundled install
-	kernel_install_path ?= $(install_path)/modules
-	dev_install_path ?= $(install_path)/include/qdma
-	apps_install_path ?= $(install_path)/bin
-	docs_install_path ?= $(install_path)/doc
-endif
-
-.PHONY: eval.mak
-
-.PHONY: default
-default: apps driver post
-
-.PHONY: install
-install: install-apps install-dev install-mods
-
-.PHONY: uninstall
-uninstall: uninstall-apps uninstall-dev uninstall-mods
-
-.PHONY: apps
-apps:
-	@echo "#######################";
-	@echo "####  apps        ####";
-	@echo "#######################";
-	$(MAKE) -C apps
-
-.PHONY: driver
-driver:
-	@echo "#######################";
-	@echo "####  Driver       ####";
-	@echo "#######################";
-	$(MAKE) $(MODULE) -C driver modulesymfile=$(srcdir)/driver/src/Module.symvers
-
-.PHONY: post
-post:
-	@if [ -n "$(post_msg)" ]; then \
-	   echo -e "\nWARNING:\n $(post_msg)";\
-	 fi;
-
-.PHONY: clean
-clean:
-	@echo "#######################";
-	@echo "####  apps         ####";
-	@echo "#######################";
-	$(MAKE) -C apps clean;
-	@for dir in $(ALLSUBDIRS); do \
-	   echo "#######################";\
-	   printf "####  %-8s%5s####\n" $$dir;\
-	   echo "#######################";\
-	  drvdir=$(shell pwd)/$$dir $(MAKE) -C $$dir clean;\
-	done;
-	@-/bin/rm -f *.symvers eval.mak 2>/dev/null;
-	@rm -rf $(bin_dir)
-
-.PHONY: install-mods
-install-mods:
-	@echo "installing kernel modules to /lib/modules/$(shell uname -r)/qdma ..."
-	@mkdir -p -m 755 /lib/modules/$(shell uname -r)/qdma
-	@install -v -m 644 $(bin_dir)/*.ko /lib/modules/$(shell uname -r)/qdma
-	@depmod -a || true
-
-
-.PHONY: install-apps
-install-apps:
-	@echo "installing apps to $(apps_install_path) ..."
-	@mkdir -p -m 755 $(apps_install_path)
-	@install -v -m 755 bin/dma-ctl* $(apps_install_path)
-	@install -v -m 755 bin/dma-xfer* $(apps_install_path)
-	@install -v -m 755 bin/dma-from-device $(apps_install_path)
-	@install -v -m 755 bin/dma-to-device $(apps_install_path)
-	@install -v -m 755 bin/dma-perf $(apps_install_path)
-	@install -v -m 755 bin/dma-latency $(apps_install_path)
-	@echo "MAN PAGES:"
-	@mkdir -p -m 755 $(docs_install_path)
-	@install -v -m 644 docs/dma-ctl.8.gz $(docs_install_path)
-
-.PHONY: install-dev
-install-dev:
-	@echo "installing development headers to $(dev_install_path) ..."
-	@mkdir -p -m 755 $(dev_install_path)
-	@install -v -m 755 driver/include/* $(dev_install_path)
-
-.PHONY: uninstall-mods
-uninstall-mods:
-	@echo "Un-installing /lib/modules/$(shell uname -r)/qdma ..."
-	@/bin/rm -rf /lib/modules/$(shell uname -r)/qdma
-	@depmod -a
-
-.PHONY: uninstall-apps
-uninstall-apps:
-	@echo "Un-installing apps under $(apps_install_path) ..."
-	@/bin/rm -f $(apps_install_path)/dma-ctl
-	@/bin/rm -f $(apps_install_path)/dma-xfer
-	@/bin/rm -f $(apps_install_path)/dma-from-device
-	@/bin/rm -f $(apps_install_path)/dma-to-device
-	@/bin/rm -f $(apps_install_path)/dma-perf
-	@/bin/rm -f $(apps_install_path)/dma-latency
-
-.PHONY: uninstall-dev
-uninstall-dev:
-	@echo "Un-installing development headers under $(dev_install_path) ..."
-	@/bin/rm -r $(dev_install_path)
-
-.PHONY: help
-help:
-	@echo "Build Targets:";\
-	 echo " install             - Installs apps and development headers.";\
-	 echo " uninstall           - Uninstalls apps and development headers.";\
-	 echo " install-mods        - Installs drivers.";\
-	 echo " uninstall-mods      - Uninstalls drivers.";\
-	 echo;\
-	 echo "Build Options:";\
-	 echo " KOBJ=<path>         - Kernel build (object) path.";\
-	 echo " KSRC=<path>         - Kernel source path.";\
-	 echo "                     - Note: When using KSRC or KOBJ, both";\
-	 echo "                             variables must be specified.";\
-	 echo " KDIR=<path>         - Kernel build and source path. Shortcut";\
-	 echo "                       for KOBJ=KSRC=<path>.";\
-	 echo " kernel_install_path=<path>";\
-	 echo "                     - kernel module install path.";\
-	 echo " apps_install_path=<path>";\
-	 echo "                     - user cli tool install path.";
diff --git a/QDMA/linux-kernel/RELEASE b/QDMA/linux-kernel/RELEASE
deleted file mode 100755
index 39807d7..0000000
--- a/QDMA/linux-kernel/RELEASE
+++ /dev/null
@@ -1,208 +0,0 @@
-RELEASE: 2023.2.1
-=================
-
-This release is validated
-	- On VCU1525 for QDMA5.0 2022.1 example design
-	- On VCU1525 for QDMA4.0 2020.2 example design
-	- On VCU1525 for QDMA3.1 2019.2 example design
-	- On XCVP1202 for CPM5 2022.1 example design
-	- On XCVC1902 for CPM4 2022.1 example design
-
-SUPPORTED FEATURES:
-===================
-2018.2 Features
----------------
-- Support for both the AXI4 Memory Mapped(MM) and AXI4 Streaming(ST) Interfaces
-- 2048 Queue Sets
-	- 2048 H2C Descriptor Rings
-	- 2048 C2H Descriptor Rings
-	- 2048 C2H Completion Rings
-- Supports Polling Mode
-- Interrupts
-	- 2048 MSI-X Vectors
-	- Up to 8 MSI-X per Function
-	- Interrupt Aggregation
-	- User Interrupts
-	- Error Interrupts
-- C2H Stream Completion queue entry coalescing
-- Supports SR-IOV with up to 4 Physical Functions(PF) and 252 Virtual Functions(VF)
-- Allows only Privileged/Physical functions to program the contexts and registers
-- Function Level Reset(FLR) Support
-- Mailbox Support
-- Descriptor bypass(8, 16, 32 descriptor sizes)
-- Descriptor Prefetching
-- Asynchronous and Synchronous IO support
-- ST H2C to C2H and C2H to H2C loopback support
-- Driver configuration through sysfs
-- Zero byte transfer support
-- Dynamic queue configuration
-- Dynamic driver configuration
-
-2018.3 Features
----------------
-- Auto mode support for PF & VF driver
-	- MM and ST H2C requests are services in poll mode
-	- ST C2H is services in Interrupt Aggregation mode
-- Support 64B descriptor format in bypass mode
-- Support for Completion queue descriptors of 64 bytes size
-- Support flexible BAR mapping for QDMA configuration register space
-- Indirect programming of FMAP registers
-- Support disabling overflow check in completion ring
-- Version for SW and HW
-- ECC Support
-- Flexible interrupt allocation between PF/VF
-- Greater than 32 vectors per function
-- Legacy Interrupt Support
-- VF driver support in direct and indirect interrupt mode
-
-2019.1 Features
----------------
-- Interrupt support for Mailbox events
-- Support Completions in Memory mapped mode
-- Interoperability between Linux driver (as PF/VF) and DPDK driver (as PF/VF)
-- Driver restructuring to partition QDMA access code such that it can be used across different drivers
-
-2019.2 Features
----------------
-- Support for PF device removal when its VF devices are active
-- Support for Interrupt moderation and adaptive counter threshold
-- Support for configurable number of User and Data interrupts
-- Added user logic pluggable interfaces for processing the descriptors and completions
-- Added new interfaces for updating the Consumer Index and Producer Index
-
-2020.1 Updates
---------------
-- Modified the directory structure for driver source code.
-- Application names are changed as "dma-ctl", "dma-perf", "dma-to-device", "dma-from-device"
-- Support QDMA4.0 context and register changes
-- Common driver to support QDMA3.1 and QDMA4.0 designs
-- Support multiple bus numbers on single card
-- Updated and validated the example design with marker changes for QDMA4.0 and without marker changes for QDMA3.1
-- Added support for more than 256 functions 
-- Modified the driver interface to pass the module parameters for more than 256 functions
-- Support for Function Level Reset (FLR) of both PFs and VFs.
-
-2020.1 Patch Updates
---------------------
-- Resolved HW errors observed with QDMA4.0 MM only design
-- Addressed VF performance issues.
-
-2020.2 Updates
---------------
-- Added support for detailed register dump
-- Added support for post processing HW error messages
-- Added support for Debug mode and Internal only mode
-- Added support for Versal PDI programming through keyhole interface
-
-2020.2 Patch Updates
---------------------
-- Added support for MM Channel Selection and Keyhole feature in dmaperf
-- Fixed bug in in driver which caused crash during performance run
-
-2022.1 Updates
---------------
-CPM5
-	- Tandem Boot support 
-	- FMAP context dump
-	- Debug register dump for ST and MM Errors
-	- Dual Instance support
-
-2022.1.1 Patch Updates
-----------------------
-- Ported changes from pull request https://github.com/Xilinx/dma_ip_drivers/pull/167 to fix XRT build issues while integrating qdma linux driver in to XRT stack
-
-2022.1.2 Patch Updates
-----------------------
-- Added VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.
-
-2022.1.3 Patch Updates
-----------------------
-- Ported changes from pull request https://github.com/Xilinx/dma_ip_drivers/pull/170 to fix coverity issues
-
-2022.1.4 Patch Updates
-----------------------
-- Added support for more than 2K queues for PF/VF
-- Added support for Fedora36
-
-2022.1.5 Patch Updates
-----------------------
-- Added PF/VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.
-
-2023.1.0 Updates
-----------------
-- Updated the queue list command for >2048 Q's.
-- Added support to accomodate H2C & C2H Q's offset with fixed intervals for dma-perf application.
-
-2023.1.1 Updates
-----------------
-- Optimized the driver code and HW register settings for performance improvements.
-
-2023.1.2 Updates
-----------------
-- Added support for Fedora37 & CentOS9 distros.
-
-2023.1.3 Updates
-----------------
-- dma-ctl application is updated to append q params during queue start.
-
-2023.2.0 Updates
-----------------
-- Added driver support for CPM4 design.
-
-2023.2.1 Updates
-----------------
-- Added driver support to enable 10 bit tag for CPM5 design.
-
-KNOWN ISSUES:
-=============
-- CPM4 Only
-	- Due to HW PDI limitaion,
-		- VF is supported in poll mode only.
-		- VF functionality on VM is not verfied.
-
-- Observed MMAP failure for applications when device is binded QDMA Linux driver on Fedora37. Fix will be availbale in upcoming release.
-
-- CPM5 Only
-	- Performace optimizations are not finalized, Performance report with optimizations will be available in next patch release.
-
-- All Designs
-	- In interrupt mode, Sometimes completions are not received when C2H PIDX updates are held for 64 descriptors
-	- On QDMA4.0 2020.1 design, HW error observed during the probe of the VFs
-
-DRIVER LIMITATIONS:
-===================
-- CPM5 Only
-	- VF functionality is verified with 240 VF's as per CPM5 HW limitation
-
-- All Designs
-	- Driver compilation on Fedora 28 with gcc8.1 results in compilation warnings
-	- Big endian systems are not supported
-	- For optimal QDMA streaming performance, packet buffers of the descriptor ring should be aligned to at least 256 bytes.
-	- FLR is not supported in the Driver for CentOS because linux kernels provided in CentOS versions does not support the driver call back registration for FLR functionality
-
-- XRT Only
-	- QDMA: Bypass user BAR check for XRT application
-		- The existing driver code assmues the presence of the user BAR as indicated in the functional example design. If this user BAR is not detected during the driver probing process,
-                  it results in a failure. However, this check is specific to example design and some customer designs might not contain user BAR. So bypassing the user BAR check to prevent
-                  driver returning error and proceed further.
-
-
-
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
diff --git a/QDMA/linux-kernel/apps/Makefile b/QDMA/linux-kernel/apps/Makefile
deleted file mode 100755
index 9b7e987..0000000
--- a/QDMA/linux-kernel/apps/Makefile
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-SHELL = /bin/bash
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += $(EXTRA_FLAGS)
-
-srcdir := $(shell pwd)
-topdir := $(shell cd $(srcdir)/.. && pwd)
-bin_dir := $(topdir)/bin
-dma-ctl_dir = $(srcdir)/dma-ctl
-dma-from-device_dir = $(srcdir)/dma-from-device
-dma-to-device_dir = $(srcdir)/dma-to-device
-dma-xfer_dir = $(srcdir)/dma-xfer
-dma-perf_dir = $(srcdir)/dma-perf
-dma-latency_dir = $(srcdir)/dma-latency
-
-export topdir
-export bin_dir
-
-all: clean apps
-
-.PHONY: dma-from-device
-dma-from-device:
-	@echo "#############################";
-	@echo "####  dma-from-device    ####";
-	@echo "#############################";
-	$(MAKE) -C dma-from-device
-	@cp -f $(dma-from-device_dir)/dma-from-device $(bin_dir)	
-
-.PHONY: dma-to-device
-dma-to-device:
-	@echo "###########################";
-	@echo "####  dma-to-device    ####";
-	@echo "###########################";
-	$(MAKE) -C dma-to-device
-	@cp -f $(dma-to-device_dir)/dma-to-device $(bin_dir)	
-	
-.PHONY: dma-xfer
-dma-xfer:
-	@echo "###########################";
-	@echo "####  dma-xfer         #####";
-	@echo "###########################";
-	$(MAKE) -C dma-xfer
-	@cp -f $(dma-xfer_dir)/dma-xfer $(bin_dir)		
-
-.PHONY: dma-ctl
-dma-ctl:
-	@echo "#######################";
-	@echo "####  dma-ctl    ######";
-	@echo "#######################";
-	@mkdir -p -m 755 $(bin_dir)
-	$(MAKE) -C dma-ctl
-	@cp -f $(dma-ctl_dir)/dma-ctl $(bin_dir)	
-
-
-.PHONY: dma-perf
-dma-perf:
-	@echo "########################";
-	@echo "####  dma-perf    #######";
-	@echo "########################";
-	$(MAKE) -C dma-perf
-	@cp -f $(dma-perf_dir)/dma-perf $(bin_dir)	
-
-.PHONY: dma-latency
-dma-latency:
-	@echo "########################";
-	@echo "####  dma-latency   #######";
-	@echo "########################";
-	$(MAKE) -C dma-latency
-	@cp -f $(dma-latency_dir)/dma-latency $(bin_dir)	
-	
-.PHONY: apps
-apps: dma-ctl dma-from-device dma-to-device dma-xfer dma-perf dma-latency
-
-
-.PHONY: clean
-clean:
-	@echo "#############################";
-	@echo "####  dma-from-device    ####";
-	@echo "#############################";
-	$(MAKE) -C dma-from-device clean;
-	@echo "#############################";
-	@echo "####  dma-to-device      ####";
-	@echo "#############################";
-	$(MAKE) -C dma-to-device clean;
-	@echo "#############################";
-	@echo "####  dma-xfer            ####";
-	@echo "#############################";
-	$(MAKE) -C dma-xfer clean;
-	@echo "#############################";
-	@echo "####  dma-ctl             ####";
-	@echo "#############################";
-	$(MAKE) -C dma-ctl clean;
-	@echo "#############################";
-	@echo "####  dma-perf            ####";
-	@echo "#############################";
-	$(MAKE) -C dma-perf clean;
-	@echo "#############################";
-	@echo "####  dma-latency         ####";
-	@echo "#############################";
-	$(MAKE) -C dma-latency clean;
-	@rm -f $(bin_dir)/dma-ctl $(bin_dir)/dma-from-device $(bin_dir)/dma-to-device $(bin_dir)/dma-xfer $(bin_dir)/dma-perf $(bin_dir)/dma-latency
-	@for dir in $(ALLSUBDIRS); do \
-	   echo "#######################";\
-	   printf "####  %-8s%5s####\n" $$dir;\
-	   echo "#######################";\
-	  drvdir=$(shell pwd)/$$dir $(MAKE) -C $$dir clean;\
-	done;
-	@-/bin/rm -f *.symvers eval.mak 2>/dev/null;
-
diff --git a/QDMA/linux-kernel/apps/dma-ctl/Makefile b/QDMA/linux-kernel/apps/dma-ctl/Makefile
deleted file mode 100755
index ef55091..0000000
--- a/QDMA/linux-kernel/apps/dma-ctl/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-SHELL = /bin/bash
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-CTL = dma-ctl
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-CTL_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
-DMA-CTL_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
- 
-all: clean dma-ctl
-
-dma-ctl: $(DMA-CTL_OBJS)
-	$(CC) -pthread -lrt $^ -o $(DMA-CTL) -laio -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-	
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o $(DMA-CTL)
diff --git a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c
deleted file mode 100755
index 18ecd7b..0000000
--- a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.c
+++ /dev/null
@@ -1,1259 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <stddef.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <err.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "cmd_parse.h"
-#include "qdma_nl.h"
-#include "version.h"
-
-static int read_range(int argc, char *argv[], int i, unsigned int *v1,
-			unsigned int *v2);
-
-static const char *progname;
-#define DESC_SIZE_64B		3
-
-#define Q_ADD_ATTR_IGNORE_MASK ~((1 << QPARM_IDX)  | \
-				(1 << QPARM_MODE)  | \
-				(1 << QPARM_DIR))
-#define Q_START_ATTR_IGNORE_MASK ((1 << QPARM_MODE)  | \
-				(1 << QPARM_DESC) | \
-				(1 << QPARM_CMPT))
-#define Q_STOP_ATTR_IGNORE_MASK ~((1 << QPARM_IDX) | \
-				(1 << QPARM_DIR))
-#define Q_DEL_ATTR_IGNORE_MASK ~((1 << QPARM_IDX)  | \
-				(1 << QPARM_DIR))
-#define Q_DUMP_ATTR_IGNORE_MASK ~((1 << QPARM_IDX)  | \
-				(1 << QPARM_DIR) | \
-				(1 << QPARM_DESC) | \
-				(1 << QPARM_CMPT))
-#define Q_DUMP_PKT_ATTR_IGNORE_MASK ~((1 << QPARM_IDX)  | \
-					(1 << QPARM_DIR))
-#define Q_H2C_ATTR_IGNORE_MASK ((1 << QPARM_C2H_BUFSZ_IDX) | \
-				(1 << QPARM_CMPT_TMR_IDX) | \
-				(1 << QPARM_CMPT_CNTR_IDX) | \
-				(1 << QPARM_CMPT_TRIG_MODE) | \
-				(1 << QPARM_CMPTSZ))
-#define Q_CMPT_READ_ATTR_IGNORE_MASK ~((1 << QPARM_IDX) | \
-				      (1 << QPARM_DIR))
-#define Q_ADD_FLAG_IGNORE_MASK ~(XNL_F_QMODE_ST | \
-				XNL_F_QMODE_MM | \
-				XNL_F_QDIR_BOTH | XNL_F_Q_CMPL)
-#define Q_START_FLAG_IGNORE_MASK (XNL_F_QMODE_ST | \
-				XNL_F_QMODE_MM)
-#define Q_STOP_FLAG_IGNORE_MASK ~(XNL_F_QMODE_ST | \
-					XNL_F_QMODE_MM | \
-					XNL_F_QDIR_BOTH | XNL_F_Q_CMPL)
-#define Q_DEL_FLAG_IGNORE_MASK  ~(XNL_F_QMODE_ST | \
-					XNL_F_QMODE_MM | \
-					XNL_F_QDIR_BOTH | XNL_F_Q_CMPL)
-#define Q_DUMP_FLAG_IGNORE_MASK  ~(XNL_F_QMODE_ST | \
-					XNL_F_QMODE_MM | \
-					XNL_F_QDIR_BOTH | XNL_F_Q_CMPL)
-#define Q_DUMP_PKT_FLAG_IGNORE_MASK ~(XNL_F_QMODE_ST | \
-					XNL_F_QMODE_MM | \
-					XNL_F_QDIR_C2H)
-#define Q_H2C_FLAG_IGNORE_MASK  (XNL_F_C2H_CMPL_INTR_EN | \
-				XNL_F_CMPL_UDD_EN)
-
-#define Q_CMPT_READ_FLAG_IGNORE_MASK  ~(XNL_F_QMODE_ST | \
-					XNL_F_QMODE_MM | \
-					XNL_F_QDIR_BOTH | XNL_F_Q_CMPL)
-
-#ifdef ERR_DEBUG
-char *qdma_err_str[qdma_errs] = {
-	"err_ram_sbe",
-	"err_ram_dbe",
-	"err_dsc",
-	"err_trq",
-	"err_h2c_mm_0",
-	"err_h2c_mm_1",
-	"err_c2h_mm_0",
-	"err_c2h_mm_1",
-	"err_c2h_st",
-	"ind_ctxt_cmd_err",
-	"err_bdg",
-	"err_h2c_st",
-	"poison",
-	"ur_ca",
-	"param",
-	"addr",
-	"tag",
-	"flr",
-	"timeout",
-	"dat_poison",
-	"flr_cancel",
-	"dma",
-	"dsc",
-	"rq_cancel",
-	"dbe",
-	"sbe",
-	"unmapped",
-	"qid_range",
-	"vf_access_err",
-	"tcp_timeout",
-	"mty_mismatch",
-	"len_mismatch",
-	"qid_mismatch",
-	"desc_rsp_err",
-	"eng_wpl_data_par_err",
-	"msi_int_fail",
-	"err_desc_cnt",
-	"portid_ctxt_mismatch",
-	"portid_byp_in_mismatch",
-	"cmpt_inv_q_err",
-	"cmpt_qfull_err",
-	"cmpt_cidx_err",
-	"cmpt_prty_err",
-	"fatal_mty_mismatch",
-	"fatal_len_mismatch",
-	"fatal_qid_mismatch",
-	"timer_fifo_ram_rdbe",
-	"fatal_eng_wpl_data_par_err",
-	"pfch_II_ram_rdbe",
-	"cmpt_ctxt_ram_rdbe",
-	"pfch_ctxt_ram_rdbe",
-	"desc_req_fifo_ram_rdbe",
-	"int_ctxt_ram_rdbe",
-	"cmpt_coal_data_ram_rdbe",
-	"tuser_fifo_ram_rdbe",
-	"qid_fifo_ram_rdbe",
-	"payload_fifo_ram_rdbe",
-	"wpl_data_par_err",
-	"zero_len_desc_err",
-	"csi_mop_err",
-	"no_dma_dsc_err",
-	"sb_mi_h2c0_dat",
-	"sb_mi_c2h0_dat",
-	"sb_h2c_rd_brg_dat",
-	"sb_h2c_wr_brg_dat",
-	"sb_c2h_rd_brg_dat",
-	"sb_c2h_wr_brg_dat",
-	"sb_func_map",
-	"sb_dsc_hw_ctxt",
-	"sb_dsc_crd_rcv",
-	"sb_dsc_sw_ctxt",
-	"sb_dsc_cpli",
-	"sb_dsc_cpld",
-	"sb_pasid_ctxt_ram",
-	"sb_timer_fifo_ram",
-	"sb_payload_fifo_ram",
-	"sb_qid_fifo_ram",
-	"sb_tuser_fifo_ram",
-	"sb_wrb_coal_data_ram",
-	"sb_int_qid2vec_ram",
-	"sb_int_ctxt_ram",
-	"sb_desc_req_fifo_ram",
-	"sb_pfch_ctxt_ram",
-	"sb_wrb_ctxt_ram",
-	"sb_pfch_ll_ram",
-	"sb_h2c_pend_fifo",
-	"db_mi_h2c0_dat",
-	"db_mi_c2h0_dat",
-	"db_h2c_rd_brg_dat",
-	"db_h2c_wr_brg_dat",
-	"db_c2h_rd_brg_dat",
-	"db_c2h_wr_brg_dat",
-	"db_func_map",
-	"db_dsc_hw_ctxt",
-	"db_dsc_crd_rcv",
-	"db_dsc_sw_ctxt",
-	"db_dsc_cpli",
-	"db_dsc_cpld",
-	"db_pasid_ctxt_ram",
-	"db_timer_fifo_ram",
-	"db_payload_fifo_ram",
-	"db_qid_fifo_ram",
-	"db_tuser_fifo_ram",
-	"db_wrb_coal_data_ram",
-	"db_int_qid2vec_ram",
-	"db_int_ctxt_ram",
-	"db_desc_req_fifo_ram",
-	"db_pfch_ctxt_ram",
-	"db_wrb_ctxt_ram",
-	"db_pfch_ll_ram",
-	"db_h2c_pend_fifo",
-};
-#endif
-
-static void __attribute__((noreturn)) usage(FILE *fp)
-{
-	fprintf(fp, "Usage: %s [dev|qdma[vf]<N>] [operation] \n", progname);
-	fprintf(fp, "\tdev [operation]: system wide FPGA operations\n");
-	fprintf(fp,
-		"\t\tlist                    list all qdma functions\n");
-	fprintf(fp,
-		"\tqdma[N] [operation]: per QDMA FPGA operations\n");
-	fprintf(fp,
-		"\t\tcap....                 lists the Hardware and Software version and capabilities\n"
-		"\t\tstat                    statistics of qdma[N] device\n"
-		"\t\tstat clear              clear all statistics data of qdma[N} device\n"
-		"\t\tglobal_csr              dump the Global CSR of qdma[N} device\n"
-		"\t\tq list <start_idx> <num_Qs>  - List <num_Qs> queues from idx <start_idx>\n"
-		"\t\tq add idx <N> [mode <mm|st>] [dir <h2c|c2h|bi|cmpt>] - add a queue\n"
-		"\t\t                                                  *mode default to mm\n"
-		"\t\t                                                  *dir default to h2c\n"
-			"\t\tq add list <start_idx> <num_Qs> [mode <mm|st>] [dir <h2c|c2h|bi|cmpt>] - add multiple queues at once\n"
-	        "\t\tq start idx <N> [dir <h2c|c2h|bi|cmpt>] [idx_ringsz <0:15>] [idx_bufsz <0:15>] [idx_tmr <0:15>]\n"
-		   "                                    [idx_cntr <0:15>] [trigmode <every|usr_cnt|usr|usr_tmr|dis>] [cmptsz <0|1|2|3>] [sw_desc_sz <3>]\n"
-	        "                                    [mm_chn <0|1>] [desc_bypass_en] [pfetch_en] [pfetch_bypass_en] [dis_cmpl_status]\n"
-	        "                                    [dis_cmpl_status_acc] [dis_cmpl_status_pend_chk] [c2h_udd_en]\n"
-			"                                    [cmpl_ovf_dis] [fetch_credit  <h2c|c2h|bi|none>] [dis_cmpl_status] [c2h_cmpl_intr_en] [aperture_sz <aperture size power of 2>]- start a single queue\n"
-	        "\t\tq start list <start_idx> <num_Qs> [dir <h2c|c2h|bi|cmpt>] [idx_bufsz <0:15>] [idx_tmr <0:15>]\n"
-			"                                    [idx_cntr <0:15>] [trigmode <every|usr_cnt|usr|usr_tmr|dis>] [cmptsz <0|1|2|3>] [sw_desc_sz <3>]\n"
-	        "                                    [mm_chn <0|1>] [desc_bypass_en] [pfetch_en] [pfetch_bypass_en] [dis_cmpl_status]\n"
-	        "                                    [dis_cmpl_status_acc] [dis_cmpl_status_pend_chk] [cmpl_ovf_dis]\n"
-			"                                    [fetch_credit <h2c|c2h|bi|none>] [dis_cmpl_status] [c2h_cmpl_intr_en] [aperture_sz <aperture size power of 2>]- start multiple queues at once\n"
-	        "\t\tq stop idx <N> dir [<h2c|c2h|bi|cmpt>] - stop a single queue\n"
-	        "\t\tq stop list <start_idx> <num_Qs> dir [<h2c|c2h|bi|cmpt>] - stop list of queues at once\n"
-	        "\t\tq del idx <N> dir [<h2c|c2h|bi|cmpt>] - delete a queue\n"
-	        "\t\tq del list <start_idx> <num_Qs> dir [<h2c|c2h|bi|cmpt>] - delete list of queues at once\n"
-		"\t\tq dump idx <N> dir [<h2c|c2h|bi|cmpt>]   dump queue param\n"
-		"\t\tq dump list <start_idx> <num_Qs> dir [<h2c|c2h|bi|cmpt>] - dump queue param\n"
-		"\t\tq dump idx <N> dir [<h2c|c2h|bi>] desc <x> <y> - dump desc ring entry x ~ y\n"
-		"\t\tq dump list <start_idx> <num_Qs> dir [<h2c|c2h|bi>] desc <x> <y> - dump desc ring entry x ~ y\n"
-		"\t\tq dump idx <N> dir [<h2c|c2h|bi|cmpt>] cmpt <x> <y> - dump cmpt ring entry x ~ y\n"
-		"\t\tq dump list <start_idx> <num_Qs> dir [<h2c|c2h|bi|cmpt>] cmpt <x> <y> - dump cmpt ring entry x ~ y\n"
-		"\t\tq cmpt_read idx <N> - read the completion data\n"
-#ifdef ERR_DEBUG
-		"\t\tq err help - help to induce errors  \n"
-		"\t\tq err idx <N> [<err <[1|0]>>] dir <[h2c|c2h|bi]> - induce errors on q idx <N>  \n"
-#endif
-		);
-	fprintf(fp,
-		"\t\treg dump [dmap <Q> <N>]          - register dump. Only dump dmap registers if dmap is specified.\n"
-		"\t\t                                   specify dmap range to dump: Q=queue, N=num of queues\n"
-		"\t\treg read [bar <N>] <addr>        - read a register\n"
-		"\t\treg write [bar <N>] <addr> <val> - write a register\n"
-		"\t\treg info bar <N> <addr> [num_regs <M>] - dump detailed fields information of a register\n");
-	fprintf(fp,
-		"\t\tintring dump vector <N> <start_idx> <end_idx> - interrupt ring dump for vector number <N>  \n"
-		"\t\t                                                for intrrupt entries :<start_idx> --- <end_idx>\n");
-#ifdef TANDEM_BOOT_SUPPORTED
-	fprintf(fp, "\t\ten_st - enable streamig  \n");
-#endif
-	exit(fp == stderr ? 1 : 0);
-}
-
-static int arg_read_int(char *s, uint32_t *v)
-{
-    char *p;
-
-    *v = strtoul(s, &p, 0);
-    if (*p) {
-        warnx("bad parameter \"%s\", integer expected", s);
-        return -EINVAL;
-    }
-    return 0;
-}
-
-static int parse_ifname(char *name, struct xcmd_info *xcmd)
-{
-	int len = strlen(name);
-	int pos, i;
-	uint32_t v;
-	char *p;
-
-	/* qdmaN of qdmavfN*/
-	if (len > 11) {
-		warnx("interface name %s too long, expect qdma<N>.\n", name);
-		return -EINVAL;
-	}
-	if (strncmp(name, "qdma", 4)) {
-		warnx("bad interface name %s, expect qdma<N>.\n", name);
-		return -EINVAL;
-	}
-	if (name[4] == 'v' && name[5] == 'f') {
-		xcmd->vf = 1;
-		pos = 6;
-	} else {
-		xcmd->vf = 0;
-		pos = 4;
-	}
-	for (i = pos; i < len; i++) {
-		if (!isxdigit(name[i])) {
-			warnx("%s unexpected <qdmaN>, %d.\n", name, i);
-			return -EINVAL;
-		}
-	}
-
-	v = strtoul(name + pos, &p, 16);
-	if (*p) {
-		warnx("bad parameter \"%s\", integer expected", name + pos);
-		return -EINVAL;
-	}
-
-	xcmd->if_bdf = v;
-	return 0;
-}
-
-#define get_next_arg(argc, argv, i) \
-	if (++(*i) >= argc) { \
-		warnx("%s missing parameter after \"%s\".\n", __FUNCTION__, argv[--(*i)]); \
-		return -EINVAL; \
-	}
-
-#define __get_next_arg(argc, argv, i) \
-	if (++i >= argc) { \
-		warnx("%s missing parameter aft \"%s\".\n", __FUNCTION__, argv[--i]); \
-		return -EINVAL; \
-	}
-
-static int next_arg_read_int(int argc, char *argv[], int *i, unsigned int *v)
-{
-	get_next_arg(argc, argv, i);
-	return arg_read_int(argv[*i], v);
-}
-
-static int validate_regcmd(enum xnl_op_t qcmd, struct xcmd_reg	*regcmd)
-{
-	int invalid = 0;
-
-	switch(qcmd) {
-		case XNL_CMD_REG_DUMP:
-			break;
-		case XNL_CMD_REG_RD:
-		case XNL_CMD_REG_INFO_READ:
-		case XNL_CMD_REG_WRT:
-			if ((regcmd->bar != 0) && (regcmd->bar != 2) && (regcmd->bar != 4)) {
-				printf("dmactl: bar %u number out of range\n",
-				       regcmd->bar);
-				invalid = -EINVAL;
-				break;
-			}
-			break;
-		default:
-			invalid = -EINVAL;
-			break;
-	}
-
-	return invalid;
-}
-
-static int parse_reg_cmd(int argc, char *argv[], int i, struct xcmd_info *xcmd)
-{
-	struct xcmd_reg	*regcmd = &xcmd->req.reg;
-	int rv;
-	int args_valid;
-
-	/*
-	 * reg dump
-	 * reg read [bar <N>] <addr>
-	 * reg write [bar <N>] <addr> <val>
-	 */
-
-	memset(regcmd, 0, sizeof(struct xcmd_reg));
-	if (!strcmp(argv[i], "dump")) {
-		xcmd->op = XNL_CMD_REG_DUMP;
-		i++;
-
-		if (i < argc) {
-			if (!strcmp(argv[i], "dmap")) {
-				get_next_arg(argc, argv, &i);
-				rv = read_range(argc, argv, i, &regcmd->range_start,
-					&regcmd->range_end);
-				if (rv < 0)
-					return rv;
-				i = rv;
-			}
-		}
-
-	} else if (!strcmp(argv[i], "read")) {
-		xcmd->op = XNL_CMD_REG_RD;
-
-		get_next_arg(argc, argv, &i);
-		if (!strcmp(argv[i], "bar")) {
-			rv = next_arg_read_int(argc, argv, &i, &regcmd->bar);
-			if (rv < 0)
-				return rv;
-			regcmd->sflags |= XCMD_REG_F_BAR_SET;
-			get_next_arg(argc, argv, &i);
-		}
-		rv = arg_read_int(argv[i], &regcmd->reg);
-		if (rv < 0)
-			return rv;
-		regcmd->sflags |= XCMD_REG_F_REG_SET;
-
-		i++;
-
-	} else if (!strcmp(argv[i], "write")) {
-		xcmd->op = XNL_CMD_REG_WRT;
-
-		get_next_arg(argc, argv, &i);
-		if (!strcmp(argv[i], "bar")) {
-			rv = next_arg_read_int(argc, argv, &i, &regcmd->bar);
-			if (rv < 0)
-				return rv;
-			regcmd->sflags |= XCMD_REG_F_BAR_SET;
-			get_next_arg(argc, argv, &i);
-		}
-		rv = arg_read_int(argv[i], &xcmd->req.reg.reg);
-		if (rv < 0)
-			return rv;
-		regcmd->sflags |= XCMD_REG_F_REG_SET;
-
-		rv = next_arg_read_int(argc, argv, &i, &xcmd->req.reg.val);
-		if (rv < 0)
-			return rv;
-		regcmd->sflags |= XCMD_REG_F_VAL_SET;
-
-		i++;
-	} else if (!strcmp(argv[i], "info")) {
-		xcmd->op = XNL_CMD_REG_INFO_READ;
-		get_next_arg(argc, argv, &i);
-		if (!strcmp(argv[i], "bar")) {
-			rv = next_arg_read_int(argc, argv, &i, &regcmd->bar);
-			if (rv < 0)
-				return rv;
-			regcmd->sflags |= XCMD_REG_F_BAR_SET;
-			get_next_arg(argc, argv, &i);
-		}
-		rv = arg_read_int(argv[i], &xcmd->req.reg.reg);
-		if (rv < 0)
-			return rv;
-		regcmd->sflags |= XCMD_REG_F_REG_SET;
-		i++;
-
-		if (i < argc) {
-			if (!strcmp(argv[i], "num_regs")) {
-				rv = next_arg_read_int(argc, argv, &i, &regcmd->range_end);
-				if (rv < 0)
-					return rv;
-			}
-		} else
-			regcmd->range_end = 1;
-		i++;
-	}
-
-	args_valid = validate_regcmd(xcmd->op, regcmd);
-
-	return (args_valid == 0) ? i : args_valid;
-}
-
-static int read_range(int argc, char *argv[], int i, unsigned int *v1,
-			unsigned int *v2)
-{
-	int rv;
-
-	/* range */
-	rv = arg_read_int(argv[i], v1);
-	if (rv < 0)
-		return rv;
-
-	get_next_arg(argc, argv, &i);
-	rv = arg_read_int(argv[i], v2);
-	if (rv < 0)
-		return rv;
-
-	if (v2 < v1) {
-		warnx("invalid range %u ~ %u.\n", *v1, *v2);
-		return -EINVAL;
-	}
-
-	return ++i;
-}
-
-/** 1:1 mapping to entries in q_parm_type of nl_user.h */
-static char *qparm_type_str[QPARM_MAX] = {
-	"idx",
-	"mode",
-	"dir",
-	"desc",
-	"cmpt",
-	"cmptsz",
-	"sw_desc_sz",
-	"idx_ringsz",
-	"idx_bufsz",
-	"idx_tmr",
-	"idx_cntr",
-	"trigmode",
-#ifdef ERR_DEBUG
-	"err_no"
-#endif
-};
-
-/** 1:1 mapping for flags from qdma_nl.h #defines flags */
-static char *qflag_type_str[MAX_QFLAGS] = {
-	"mode",
-	"mode",
-	"dir",
-	"dir",
-	"pfetch_en",
-	"bypass",
-	"fetch_credit",
-	"fetch_credit",
-	"dis_cmpl_status_acc",
-	"dis_cmpl_status",
-	"dis_cmpl_status_pend_chk",
-	"dis_cmpl_status",
-	"c2h_cmpl_intr_en",
-	"c2h_udd_en",
-	"pftch_bypass_en",
-	"cmpl_ovf_dis",
-	"en_mm_cmpl"
-};
-
-#define IS_SIZE_IDX_VALID(x) (x < 16)
-
-static void print_ignored_params(uint32_t ignore_mask, uint8_t isflag,
-		char *ignored_dir)
-{
-	unsigned int maxcount = isflag ? MAX_QFLAGS : QPARM_MAX;
-	char **qparam = isflag ? qflag_type_str : qparm_type_str;
-	char *pdesc = isflag ? "flag" : "attr";
-	unsigned int i;
-
-	for (i = 0; ignore_mask && (i < maxcount); i++) {
-		if (ignore_mask & 0x01) {
-			if(ignored_dir == NULL)
-				warnx("Warn: Ignoring %s: %s", pdesc, qparam[i]);
-			else
-				warnx("Info: Ignoring %s \"%s\" for %s direction only", pdesc, qparam[i],
-						ignored_dir);
-		}
-		ignore_mask >>= 1;
-	}
-}
-
-
-static int validate_qcmd(enum xnl_op_t qcmd, struct xcmd_q_parm *qparm)
-{
-	int invalid = 0;
-	switch(qcmd) {
-		case XNL_CMD_Q_LIST:
-			if (qparm->sflags)
-				warnx("Warn: Ignoring all attributes and flags");
-			break;
-		case XNL_CMD_Q_ADD:
-			print_ignored_params(qparm->sflags &
-					     Q_ADD_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_ADD_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-		case XNL_CMD_Q_START:
-			if (!IS_SIZE_IDX_VALID(qparm->c2h_bufsz_idx)) {
-				warnx("dmactl: C2H Buf index out of range");
-				invalid = -EINVAL;
-			}
-			if (!IS_SIZE_IDX_VALID(qparm->qrngsz_idx)) {
-				warnx("dmactl: Queue ring size index out of range");
-				invalid = -EINVAL;
-			}
-			if (!IS_SIZE_IDX_VALID(qparm->cmpt_cntr_idx)) {
-				warnx("dmactl: CMPT counter index out of range");
-				invalid = -EINVAL;
-			}
-			if (!IS_SIZE_IDX_VALID(qparm->cmpt_tmr_idx)) {
-				warnx("dmactl: CMPT timer index out of range");
-				invalid = -EINVAL;
-			}
-			if (qparm->cmpt_entry_size >=
-					XNL_ST_C2H_NUM_CMPT_DESC_SIZES) {
-				warnx("dmactl: CMPT entry size out of range");
-				invalid = -EINVAL;
-			}
-			if (qparm->flags & XNL_F_PFETCH_BYPASS_EN) {
-				if (!(qparm->flags & XNL_F_DESC_BYPASS_EN)) {
-					printf("Error:desc bypass enable must be enabled for configuring pfetch bypass enable\n");
-					invalid = -EINVAL;
-					break;
-				}
-			}
-			if (qparm->flags & XNL_F_CMPL_UDD_EN) {
-				if (!(qparm->sflags & (1 << QPARM_CMPTSZ))) {
-					printf("Error: cmptsz required for enabling c2h udd packet\n");
-					invalid = -EINVAL;
-					break;
-				}
-			}
-
-			print_ignored_params(qparm->sflags &
-						Q_START_ATTR_IGNORE_MASK,
-						0, NULL);
-
-			if ((qparm->sflags & (1 << QPARM_SW_DESC_SZ))) {
-				/* TODO: in 2018.3 RTL1 , only 64B sw_desc_size is supported */
-				if (qparm->sw_desc_sz != DESC_SIZE_64B) {
-					warnx("dmactl: desc size out of range");
-					invalid = -EINVAL;
-				}
-			}
-			break;
-		case XNL_CMD_Q_STOP:
-			print_ignored_params(qparm->sflags &
-					     Q_STOP_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_STOP_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-		case XNL_CMD_Q_DEL:
-			print_ignored_params(qparm->sflags &
-					     Q_DEL_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_DEL_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-		case XNL_CMD_Q_CMPT:
-		case XNL_CMD_Q_DUMP:
-			if ((qparm->sflags & ((1 << QPARM_DESC) |
-					(1 << QPARM_CMPT))) == ((1 << QPARM_DESC) |
-							(1 << QPARM_CMPT))) {
-				invalid = -EINVAL;
-				printf("Error: Both desc and cmpt attr cannot be taken for Q DUMP\n");
-				break;
-			}
-		case XNL_CMD_Q_DESC:
-			print_ignored_params(qparm->sflags &
-					     Q_DUMP_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_DUMP_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-		case XNL_CMD_Q_RX_PKT:
-			if (qparm->flags & XNL_F_QDIR_H2C) {
-				printf("Rx dump packet is st c2h only command\n");
-				invalid = -EINVAL;
-				break;
-			}
-			print_ignored_params(qparm->sflags &
-					     Q_DUMP_PKT_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_DUMP_PKT_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-		case XNL_CMD_Q_CMPT_READ:
-			print_ignored_params(qparm->sflags &
-					     Q_CMPT_READ_ATTR_IGNORE_MASK, 0, NULL);
-			print_ignored_params(qparm->flags &
-					     Q_CMPT_READ_FLAG_IGNORE_MASK, 1, NULL);
-			break;
-#ifdef ERR_DEBUG
-		case XNL_CMD_Q_ERR_INDUCE:
-			break;
-#endif
-		default:
-			invalid = -EINVAL;
-			break;
-	}
-
-	return invalid;
-}
-
-#ifdef ERR_DEBUG
-static unsigned char get_err_num(char *err)
-{
-	uint32_t i;
-
-	for (i = 0; i < qdma_errs; i++)
-		if (!strcmp(err, qdma_err_str[i]))
-			break;
-
-	return i;
-}
-#endif
-
-static int read_qparm(int argc, char *argv[], int i, struct xcmd_q_parm *qparm,
-			unsigned int f_arg_required)
-{
-	int rv;
-	uint32_t v1;
-	unsigned int f_arg_set = 0;;
-	unsigned int mask;
-
-	/*
-	 * idx <val>
-	 * list <start_idx> <num_q>
-	 * ringsz <val>
-	 * bufsz <val>
-	 * mode <mm|st>
-	 * dir <h2c|c2h|bi>
-	 * cdev <0|1>
-	 * bypass <0|1>
-	 * desc <x> <y>
-	 * cmpt <x> <y>
-	 * cmptsz <0|1|2|3>
-	 */
-
-	qparm->idx = XNL_QIDX_INVALID;
-
-	while (i < argc) {
-#ifdef ERR_DEBUG
-		if ((f_arg_required & (1 << QPARAM_ERR_NO)) &&
-				(!strcmp(argv[i], "help"))) {
-			uint32_t j;
-
-			fprintf(stdout, "q err idx <N> <num_errs> [list of <err <[1|0]>>] dir <[h2c|c2h|bi]>\n");
-			fprintf(stdout, "Supported errors:\n");
-			for (j = 0; j < qdma_errs; j++)
-				fprintf(stdout, "\t%s\n", qdma_err_str[j]);
-
-			return argc;
-		}
-#endif
-		if (!strcmp(argv[i], "idx")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->idx = v1;
-			f_arg_set |= 1 << QPARM_IDX;
-			qparm->num_q = 1;
-#ifdef ERR_DEBUG
-			if (f_arg_required & (1 << QPARAM_ERR_NO)) {
-				unsigned char err_no;
-
-				get_next_arg(argc, argv, &i);
-
-				err_no = get_err_num(argv[i]);
-				if (err_no >= qdma_errs) {
-					fprintf(stderr,
-						"unknown err %s.\n",
-						argv[i]);
-					return -EINVAL;
-				}
-
-				rv = next_arg_read_int(argc, argv, &i, &v1);
-				if (rv < 0)
-					return rv;
-
-				qparm->err.en = v1 ? 1 : 0;
-				qparm->err.err_no = err_no;
-				printf("%s-%u: err_no/en: %u/%u\n", argv[i], qparm->idx, qparm->err.err_no, qparm->err.en);
-				i++;
-				f_arg_set |= 1 << QPARAM_ERR_NO;
-			} else
-				i++;
-#else
-			i++;
-#endif
-
-		} else if (!strcmp(argv[i], "list")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->idx = v1;
-			f_arg_set |= 1 << QPARM_IDX;
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->num_q = v1;
-			i++;
-
-		} else if (!strcmp(argv[i], "mode")) {
-			get_next_arg(argc, argv, (&i));
-
-			if (!strcmp(argv[i], "mm")) {
-				qparm->flags |= XNL_F_QMODE_MM;
-			} else if (!strcmp(argv[i], "st")) {
-				qparm->flags |= XNL_F_QMODE_ST;
-			} else {
-				warnx("unknown q mode %s.\n", argv[i]);
-				return -EINVAL;
-			}
-			f_arg_set |= 1 << QPARM_MODE;
-			i++;
-
-		} else if (!strcmp(argv[i], "dir")) {
-			get_next_arg(argc, argv, (&i));
-
-			if (!strcmp(argv[i], "h2c")) {
-				qparm->flags |= XNL_F_QDIR_H2C;
-			} else if (!strcmp(argv[i], "c2h")) {
-				qparm->flags |= XNL_F_QDIR_C2H;
-			} else if (!strcmp(argv[i], "bi")) {
-				qparm->flags |= XNL_F_QDIR_BOTH;
-			} else if (!strcmp(argv[i], "cmpt")) {
-				qparm->flags |= XNL_F_Q_CMPL;
-			} else {
-				warnx("unknown q dir %s.\n", argv[i]);
-				return -EINVAL;
-			}
-			f_arg_set |= 1 << QPARM_DIR;
-			i++;
-		} else if (!strcmp(argv[i], "idx_bufsz")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->c2h_bufsz_idx = v1;
-
-			f_arg_set |= 1 << QPARM_C2H_BUFSZ_IDX;
-			i++;
-
-		} else if (!strcmp(argv[i], "idx_ringsz")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->qrngsz_idx = v1;
-			f_arg_set |= 1 << QPARM_RNGSZ_IDX;
-			i++;
-		} else if (!strcmp(argv[i], "idx_tmr")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->cmpt_tmr_idx = v1;
-			f_arg_set |= 1 << QPARM_CMPT_TMR_IDX;
-			i++;
-		} else if (!strcmp(argv[i], "idx_cntr")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->cmpt_cntr_idx = v1;
-			f_arg_set |= 1 << QPARM_CMPT_CNTR_IDX;
-			i++;
-		} else if (!strcmp(argv[i], "mm_chn")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			qparm->mm_channel = v1;
-			f_arg_set |= 1 << QPARM_MM_CHANNEL;
-			i++;
-		} else if (!strcmp(argv[i], "cmpl_ovf_dis")) {
-			qparm->flags |= XNL_F_CMPT_OVF_CHK_DIS;
-			i++;
-		} else if (!strcmp(argv[i], "trigmode")) {
-			get_next_arg(argc, argv, (&i));
-
-			if (!strcmp(argv[i], "every")) {
-				v1 = 1;
-			} else if (!strcmp(argv[i], "usr_cnt")) {
-				v1 = 2;
-			} else if (!strcmp(argv[i], "usr")) {
-				v1 = 3;
-			} else if (!strcmp(argv[i], "usr_tmr")) {
-				v1=4;
-			} else if (!strcmp(argv[i], "cntr_tmr")) {
-				v1=5;
-			} else if (!strcmp(argv[i], "dis")) {
-				v1 = 0;
-			} else {
-				warnx("unknown q trigmode %s.\n", argv[i]);
-				return -EINVAL;
-			}
-
-			qparm->cmpt_trig_mode = v1;
-			f_arg_set |= 1 << QPARM_CMPT_TRIG_MODE;
-			i++;
-		} else if (!strcmp(argv[i], "desc")) {
-			get_next_arg(argc, argv, &i);
-			rv = read_range(argc, argv, i, &qparm->range_start,
-					&qparm->range_end);
-			if (rv < 0)
-				return rv;
-			i = rv;
-			f_arg_set |= 1 << QPARM_DESC;
-
-		} else if (!strcmp(argv[i], "cmpt")) {
-		    get_next_arg(argc, argv, &i);
-		    rv = read_range(argc, argv, i, &qparm->range_start,
-			    &qparm->range_end);
-		    if (rv < 0)
-			return rv;
-		    i = rv;
-		    f_arg_set |= 1 << QPARM_CMPT;
-		} else if (!strcmp(argv[i], "cmptsz")) {
-		    get_next_arg(argc, argv, &i);
-		    sscanf(argv[i], "%hhu", &qparm->cmpt_entry_size);
-		    f_arg_set |= 1 << QPARM_CMPTSZ;
-		    i++;
-		} else if (!strcmp(argv[i], "sw_desc_sz")) {
-		    get_next_arg(argc, argv, &i);
-		    sscanf(argv[i], "%hhu", &qparm->sw_desc_sz);
-		    f_arg_set |= 1 << QPARM_SW_DESC_SZ;
-		    i++;
-		} else if (!strcmp(argv[i], "pfetch_en")) {
-			qparm->flags |= XNL_F_PFETCH_EN;
-			i++;
-		} else if (!strcmp(argv[i], "ping_pong_en")) {
-			f_arg_set |= 1 << QPARM_PING_PONG_EN;
-			i++;
-		} else if (!strcmp(argv[i], "aperture_sz")) {
-			rv = next_arg_read_int(argc, argv, &i, &v1);
-			if (rv < 0)
-				return rv;
-
-			if(((v1 != 0) && ((v1 &(v1 - 1))))) {
-				warnx("Error: Keyhole aperture should be a size of 2\n");
-				return -EINVAL;
-			}
-
-			f_arg_set |= 1 << QPARM_KEYHOLE_EN;
-			qparm->aperture_sz = v1;
-			i++;
-		} else if (!strcmp(argv[i], "pfetch_bypass_en")) {
-			qparm->flags |= XNL_F_PFETCH_BYPASS_EN;
-			i++;
-		} else if (!strcmp(argv[i], "desc_bypass_en")) {
-			qparm->flags |= XNL_F_DESC_BYPASS_EN;
-			i++;
-		} else if (!strcmp(argv[i], "c2h_cmpl_intr_en")) {
-			qparm->flags |= XNL_F_C2H_CMPL_INTR_EN;
-			i++;
-		} else if (!strcmp(argv[i], "dis_cmpl_status")) {
-			qparm->flags &= ~XNL_F_CMPL_STATUS_EN;
-			i++;
-		} else if (!strcmp(argv[i], "dis_cmpl_status_acc")) {
-			qparm->flags &= ~XNL_F_CMPL_STATUS_ACC_EN;
-			i++;
-		} else if (!strcmp(argv[i], "dis_cmpl_status_pend_chk")) {
-			qparm->flags &= ~XNL_F_CMPL_STATUS_PEND_CHK;
-			i++;
-		} else if (!strcmp(argv[i], "fetch_credit")) {
-			get_next_arg(argc, argv, (&i));
-			if (!strcmp(argv[i], "h2c")) {
-				if (((qparm->flags & XNL_F_QDIR_H2C) == XNL_F_QDIR_H2C)
-					|| ((qparm->flags & XNL_F_QDIR_BOTH) == XNL_F_QDIR_BOTH))
-				v1 = Q_ENABLE_H2C_FETCH_CREDIT;
-				else {
-					warnx("Invalid Fetch credit option,%s",
-					"Q direction mismatch, not H2C dir\n");
-					return -EINVAL;
-				}
-			} else if (!strcmp(argv[i], "c2h")) {
-				if (((qparm->flags & XNL_F_QDIR_C2H) == XNL_F_QDIR_C2H)
-					|| ((qparm->flags & XNL_F_QDIR_BOTH) == XNL_F_QDIR_BOTH))
-				v1 = Q_ENABLE_C2H_FETCH_CREDIT;
-				else {
-					warnx("Invalid Fetch credit option,%s",
-					"Q direction mismatch, not C2H dir\n");
-					return -EINVAL;
-				}
-			} else if (!strcmp(argv[i], "bi")) {
-				if (((qparm->flags & XNL_F_QDIR_BOTH) == XNL_F_QDIR_BOTH))
-					v1 = Q_ENABLE_H2C_C2H_FETCH_CREDIT;
-				else {
-					warnx("Invalid Fetch credit option, %s",
-					"Q direction mismatch, not BI dir\n");
-					return -EINVAL;
-				}
-			} else if (!strcmp(argv[i], "none")){
-				v1 = Q_DISABLE_FETCH_CREDIT;
-			} else {
-				warnx("unknown fetch_credit option %s.\n", argv[i]);
-				return -EINVAL;
-			}
-			qparm->fetch_credit = v1;
-			i++;
-		} else if (!strcmp(argv[i], "c2h_udd_en")) {
-			qparm->flags |= XNL_F_CMPL_UDD_EN;
-			i++;
-		} else {
-			warnx("unknown q parameter %s.\n", argv[i]);
-			return -EINVAL;
-		}
-	}
-	if ((f_arg_required & (1 << QPARM_RNGSZ_IDX)) &&
-			!(f_arg_set & (1 << QPARM_RNGSZ_IDX))) {
-		warnx("Info: Default ring size set to 2048");
-		qparm->qrngsz_idx = 9;
-		f_arg_set |= 1 << QPARM_RNGSZ_IDX;
-	}
-	/* check for any missing mandatory parameters */
-	mask = f_arg_set & f_arg_required;
-	if (mask != f_arg_required) {
-		int i;
-		unsigned int bit_mask = 1;
-
-		for (i = 0; i < QPARM_MAX; i++, bit_mask <<= 1) {
-			if (!(bit_mask & f_arg_required))
-				continue;
-			warnx("missing q parameter %s.\n", qparm_type_str[i]);
-			return -EINVAL;
-		}
-	}
-
-
-	if (!(f_arg_set & 1 << QPARM_DIR) && !(qparm->flags & XNL_F_Q_CMPL)) {
-		/* default to H2C */
-		warnx("Warn: Default dir set to \'h2c\'");
-		f_arg_set |= 1 << QPARM_DIR;
-		qparm->flags |=  XNL_F_QDIR_H2C;
-	}
-
-	qparm->sflags = f_arg_set;
-
-	return argc;
-}
-
-static int parse_q_cmd(int argc, char *argv[], int i, struct xcmd_info *xcmd)
-{
-	struct xcmd_q_parm *qparm = &xcmd->req.qparm;
-	uint32_t v1;
-	unsigned int f_arg_set = 0;
-	int rv;
-	int args_valid;
-
-	/*
-	 * q list
-	 * q add idx <N> mode <mm|st> [dir <h2c|c2h|bi>] [cdev <0|1>] [cmptsz <0|1|2|3>]
-	 * q start idx <N> dir <h2c|c2h|bi>
-	 * q stop idx <N> dir <h2c|c2h|bi>
-	 * q del idx <N> dir <h2c|c2h|bi>
-	 * q dump idx <N> dir <h2c|c2h|bi>
-	 * q dump idx <N> dir <h2c|c2h|bi> desc <x> <y>
-	 * q dump idx <N> dir <h2c|c2h|bi> cmpt <x> <y>
-	 * q pkt idx <N>
-	 */
-
-	if (!strcmp(argv[i], "list")) {
-		xcmd->op = XNL_CMD_Q_LIST;
-		rv = next_arg_read_int(argc, argv, &i, &v1);
-		if (rv < 0)
-			return rv;
-		qparm->idx = v1;
-		f_arg_set |= 1 << QPARM_IDX;
-		rv = next_arg_read_int(argc, argv, &i, &v1);
-		if (rv < 0)
-			return rv;
-		qparm->num_q = v1;
-		return ++i;
-	} else if (!strcmp(argv[i], "add")) {
-		unsigned int mask;
-
-		xcmd->op = XNL_CMD_Q_ADD;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-		/* error checking of parameter values */
-		if (qparm->sflags & (1 << QPARM_MODE)) {
-			mask = XNL_F_QMODE_MM | XNL_F_QMODE_ST;
-			if ((qparm->flags & mask) == mask) {
-				warnx("mode mm/st cannot be combined.\n");
-				return -EINVAL;
-			}
-		} else {
-			/* default to MM */
-			warnx("Warn: Default mode set to \'mm\'");
-			qparm->sflags |= 1 << QPARM_MODE;
-			qparm->flags |=  XNL_F_QMODE_MM;
-		}
-
-	} else if (!strcmp(argv[i], "start")) {
-		xcmd->op = XNL_CMD_Q_START;
-		get_next_arg(argc, argv, &i);
-		qparm->fetch_credit = Q_ENABLE_C2H_FETCH_CREDIT;
-		qparm->flags |= (XNL_F_CMPL_STATUS_EN | XNL_F_CMPL_STATUS_ACC_EN |
-				XNL_F_CMPL_STATUS_PEND_CHK | XNL_F_CMPL_STATUS_DESC_EN |
-				XNL_F_FETCH_CREDIT);
-		rv = read_qparm(argc, argv, i, qparm, ((1 << QPARM_IDX) |
-				(1 << QPARM_RNGSZ_IDX)));
-		if ((qparm->flags & (XNL_F_QDIR_C2H | XNL_F_QMODE_ST)) ==
-				(XNL_F_QDIR_C2H | XNL_F_QMODE_ST)) {
-			if (!(qparm->sflags & (1 << QPARM_CMPTSZ))) {
-					/* default to 8B */
-					qparm->cmpt_entry_size = XNL_ST_C2H_CMPT_DESC_SIZE_8B;
-					qparm->sflags |=
-						(1 << QPARM_CMPTSZ);
-			}
-		}
-	} else if (!strcmp(argv[i], "stop")) {
-		xcmd->op = XNL_CMD_Q_STOP;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-	} else if (!strcmp(argv[i], "del")) {
-		xcmd->op = XNL_CMD_Q_DEL;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-	} else if (!strcmp(argv[i], "dump")) {
-		xcmd->op = XNL_CMD_Q_DUMP;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-	} else if (!strcmp(argv[i], "pkt")) {
-		xcmd->op = XNL_CMD_Q_RX_PKT;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-	} else if (!strcmp(argv[i], "cmpt_read")) {
-		xcmd->op = XNL_CMD_Q_CMPT_READ;
-		qparm->flags |= XNL_F_Q_CMPL;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, (1 << QPARM_IDX));
-#ifdef ERR_DEBUG
-	} else if (!strcmp(argv[i], "err")) {
-		xcmd->op = XNL_CMD_Q_ERR_INDUCE;
-		get_next_arg(argc, argv, &i);
-		rv = read_qparm(argc, argv, i, qparm, ((1 << QPARM_IDX) |
-		                (1 << QPARAM_ERR_NO)));
-#endif
-	} else {
-		printf("Error: Unknown q command\n");
-		return -EINVAL;
-	}
-
-	if (rv < 0)
-		return rv;
-	i = rv;
-
-	if (xcmd->op == XNL_CMD_Q_DUMP) {
-		unsigned int mask = (1 << QPARM_DESC) | (1 << QPARM_CMPT);
-
-		if ((qparm->sflags & mask) == mask) {
-			warnx("dump cmpt/desc cannot be combined.\n");
-			return -EINVAL;
-		}
-		if ((qparm->sflags & (1 << QPARM_DESC)))
-			xcmd->op = XNL_CMD_Q_DESC;
-		else if ((qparm->sflags & (1 << QPARM_CMPT)))
-			xcmd->op = XNL_CMD_Q_CMPT;
-	}
-
-	args_valid = validate_qcmd(xcmd->op, qparm);
-
-	qparm->sflags |= f_arg_set;
-	return (args_valid == 0) ? i : args_valid;
-}
-
-static int parse_dev_cmd(int argc, char *argv[], int i, struct xcmd_info *xcmd)
-{
-	if (!strcmp(argv[i], "list")) {
-		xcmd->op = XNL_CMD_DEV_LIST;
-		i++;
-	}
-
-	return i;
-}
-
-static int parse_stat_cmd(int argc, char *argv[], int i, struct xcmd_info *xcmd)
-{
-
-	xcmd->op = XNL_CMD_DEV_STAT;
-	if (i >= argc)
-		return i;
-	if (!strcmp(argv[i], "clear")) {
-		xcmd->op = XNL_CMD_DEV_STAT_CLEAR;
-		i++;
-	}
-	return i;
-}
-
-static int parse_intr_cmd(int argc, char *argv[], int i, struct xcmd_info *xcmd)
-{
-	struct xcmd_intr	*intrcmd = &xcmd->req.intr;
-	int rv;
-
-	/*
-	 * intr dump vector <N>
-	 */
-
-	memset(intrcmd, 0, sizeof(struct xcmd_intr));
-	if (!strcmp(argv[i], "dump")) {
-		xcmd->op = XNL_CMD_INTR_RING_DUMP;
-
-		get_next_arg(argc, argv, &i);
-		if (!strcmp(argv[i], "vector")) {
-			rv = next_arg_read_int(argc, argv, &i, &intrcmd->vector);
-			if (rv < 0)
-				return rv;
-		}
-		rv = next_arg_read_int(argc, argv, &i, &intrcmd->start_idx);
-		if (rv < 0) {
-			intrcmd->start_idx = 0;
-			intrcmd->end_idx = QDMA_MAX_INT_RING_ENTRIES - 1;
-			goto func_ret;
-		}
-		rv = next_arg_read_int(argc, argv, &i, &intrcmd->end_idx);
-		if (rv < 0)
-			intrcmd->end_idx = QDMA_MAX_INT_RING_ENTRIES - 1;
-	}
-func_ret:
-	i++;
-	return i;
-}
-
-int parse_cmd(int argc, char *argv[], struct xcmd_info *xcmd)
-{
-	char *ifname;
-	int i;
-	int rv;
-
-	memset(xcmd, 0, sizeof(struct xcmd_info));
-
-	progname = argv[0];
-
-	if (argc == 1)
-		usage(stderr);
-
-	if (argc == 2) {
-		if (!strcmp(argv[1], "?") || !strcmp(argv[1], "-h") ||
-		    !strcmp(argv[1], "help") || !strcmp(argv[1], "--help"))
-			usage(stdout);
-
-		if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) {
-			printf("%s version %s\n", PROGNAME, VERSION);
-			printf("%s\n", COPYRIGHT);
-			exit(0);
-		}
-	}
-
-	if (!strcmp(argv[1], "dev")) {
-		rv = parse_dev_cmd(argc, argv, 2, xcmd);
-		goto done;
-	}
-
-	/* which dma fpga */
-	ifname = argv[1];
-	rv = parse_ifname(ifname, xcmd);
-	if (rv < 0)
-		return rv;
-
-	if (argc == 2) {
-		rv = 2;
-		xcmd->op = XNL_CMD_DEV_INFO;
-		goto done;
-	}
-
-	i = 3;
-	if (!strcmp(argv[2], "reg")) {
-		rv = parse_reg_cmd(argc, argv, i, xcmd);
-	} else if (!strcmp(argv[2], "stat")) {
-		rv = parse_stat_cmd(argc, argv, i, xcmd);
-	} else if (!strcmp(argv[2], "q")) {
-		rv = parse_q_cmd(argc, argv, i, xcmd);
-	} else if (!strcmp(argv[2], "intring")){
-		rv = parse_intr_cmd(argc, argv, i, xcmd);
-	} else if (!strcmp(argv[2], "cap")) {
-		rv = 3;
-		xcmd->op = XNL_CMD_DEV_CAP;
-	} else if (!strcmp(argv[2], "global_csr")) {
-		rv = 3;
-		xcmd->op = XNL_CMD_GLOBAL_CSR;
-	} else if (!strcmp(argv[2], "info")) { /* not exposed. only for debug */
-		rv = 3;
-		xcmd->op = XNL_CMD_DEV_INFO;
-#ifdef TANDEM_BOOT_SUPPORTED
-	} else if (!strcmp(argv[2], "en_st")) {
-		rv = 3;
-		xcmd->op = XNL_CMD_EN_ST;
-#endif
-	} else {
-		warnx("bad parameter \"%s\".\n", argv[2]);
-		return -EINVAL;
-	}
-
-done:
-	if (rv < 0)
-		return rv;
-	i = rv;
-
-	if (i < argc) {
-		warnx("unexpected parameter \"%s\".\n", argv[i]);
-		return -EINVAL;
-	}
-	return 0;
-}
diff --git a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h b/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h
deleted file mode 100755
index ecd9224..0000000
--- a/QDMA/linux-kernel/apps/dma-ctl/cmd_parse.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef USER_CLI_CMD_PARSE_H_
-#define USER_CLI_CMD_PARSE_H_
-
-#include "qdma_nl.h"
-#include "dmautils.h"
-
-int parse_cmd(int argc, char *argv[], struct xcmd_info *xcmd);
-
-#endif /* USER_CLI_CMD_PARSE_H_ */
diff --git a/QDMA/linux-kernel/apps/dma-ctl/main.c b/QDMA/linux-kernel/apps/dma-ctl/main.c
deleted file mode 100755
index 2a80961..0000000
--- a/QDMA/linux-kernel/apps/dma-ctl/main.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <err.h>
-#include <errno.h>
-
-#include "cmd_parse.h"
-#include "dmautils.h"
-
-static int (*xnl_proc_fn[XNL_CMD_MAX])(struct xcmd_info *xcmd) = {
-	qdma_dev_list_dump,      /* XNL_CMD_DEV_LIST */
-	qdma_dev_info,           /* XNL_CMD_DEV_INFO */
-	qdma_dev_stat,           /* XNL_CMD_DEV_STAT */
-	qdma_dev_stat_clear,     /* XNL_CMD_DEV_STAT_CLEAR */
-	qdma_reg_dump,           /* XNL_CMD_REG_DUMP */
-	qdma_reg_read,           /* XNL_CMD_REG_RD */
-	qdma_reg_write,          /* XNL_CMD_REG_WRT */
-	qdma_dev_q_list_dump,    /* XNL_CMD_Q_LIST */
-	qdma_q_add,              /* XNL_CMD_Q_ADD */
-	qdma_q_start,            /* XNL_CMD_Q_START */
-	qdma_q_stop,             /* XNL_CMD_Q_STOP */
-	qdma_q_del,              /* XNL_CMD_Q_DEL */
-	qdma_q_dump,             /* XNL_CMD_Q_DUMP */
-	qdma_q_desc_dump,        /* XNL_CMD_Q_DESC */
-	qdma_q_desc_dump,        /* XNL_CMD_Q_CMPT */
-	NULL,                    /* XNL_CMD_Q_RX_PKT */
-	qdma_q_cmpt_read,        /* XNL_CMD_Q_CMPT_READ */
-#ifdef ERR_DEBUG
-	NULL,                    /* XNL_CMD_Q_ERR_INDUCE */
-#endif
-	qdma_dev_intr_ring_dump, /* XNL_CMD_INTR_RING_DUMP */
-	NULL,                    /* XNL_CMD_Q_UDD */
-	qdma_dev_get_global_csr, /* XNL_CMD_GLOBAL_CSR */
-	qdma_dev_cap,            /* XNL_CMD_DEV_CAP */
-	NULL,                    /* XNL_CMD_GET_Q_STATE */
-	qdma_reg_info_read,       /* XNL_CMD_REG_INFO_READ */
-#ifdef TANDEM_BOOT_SUPPORTED
-	qdma_en_st,           /* XNL_CMD_EN_ST */
-#endif
-};
-
-static const char *desc_engine_mode[] = {
-	"Internal and Bypass mode",
-	"Bypass only mode",
-	"Inernal only mode"
-};
-
-static void dump_dev_cap(struct xcmd_info *xcmd)
-{
-	printf("%s\n\n", xcmd->resp.cap.version_str);
-	printf("=============Hardware Capabilities============\n\n");
-	printf("Number of PFs supported                : %u\n", xcmd->resp.cap.num_pfs);
-	printf("Total number of queues supported       : %u\n", xcmd->resp.cap.num_qs);
-	printf("MM channels                            : %u\n", xcmd->resp.cap.mm_channel_max);
-	printf("FLR Present                            : %s\n", xcmd->resp.cap.flr_present ? "yes":"no");
-	printf("ST enabled                             : %s\n",	xcmd->resp.cap.st_en ? "yes":"no");
-	printf("MM enabled                             : %s\n", xcmd->resp.cap.mm_en ? "yes":"no");
-	printf("Mailbox enabled                        : %s\n", xcmd->resp.cap.mailbox_en ? "yes":"no");
-	printf("MM completion enabled                  : %s\n", xcmd->resp.cap.mm_cmpt_en ? "yes":"no");
-	printf("Debug Mode enabled                     : %s\n", xcmd->resp.cap.debug_mode ? "yes":"no");
-
-	if (xcmd->resp.cap.desc_eng_mode < sizeof(desc_engine_mode) / sizeof(desc_engine_mode[0])) {
-		printf("Desc Engine Mode                       : %s\n",
-			   desc_engine_mode[xcmd->resp.cap.desc_eng_mode]);
-	}else {
-		printf("Desc Engine Mode                       : INVALID\n");
-	}
-}
-
-static void dump_dev_info(struct xcmd_info *xcmd)
-{
-	printf("=============Device Information============\n");
-	printf("PCI                                    : %02x:%02x.%01x\n",
-	       xcmd->resp.dev_info.pci_bus,
-	       xcmd->resp.dev_info.pci_dev,
-	       xcmd->resp.dev_info.dev_func);
-	printf("HW q base                              : %u\n", xcmd->resp.dev_info.qbase);
-	printf("Max queues                             : %u\n",	xcmd->resp.dev_info.qmax);
-	printf("Config bar                             : %u\n", xcmd->resp.dev_info.config_bar);
-	printf("AXI Master Lite bar                    : %u\n", xcmd->resp.dev_info.user_bar);
-}
-
-static void dump_dev_stat(struct xcmd_info *xcmd)
-{
-	unsigned long long mmh2c_pkts;
-	unsigned long long mmc2h_pkts;
-	unsigned long long sth2c_pkts;
-	unsigned long long stc2h_pkts;
-	unsigned long long min_ping_pong_lat = 0;
-	unsigned long long max_ping_pong_lat = 0;
-	unsigned long long avg_ping_pong_lat = 0;
-
-	mmh2c_pkts = xcmd->resp.dev_stat.mm_h2c_pkts;
-	mmc2h_pkts = xcmd->resp.dev_stat.mm_c2h_pkts;
-	sth2c_pkts = xcmd->resp.dev_stat.st_h2c_pkts;
-	stc2h_pkts = xcmd->resp.dev_stat.st_c2h_pkts;
-	min_ping_pong_lat = xcmd->resp.dev_stat.ping_pong_lat_min;
-	max_ping_pong_lat = xcmd->resp.dev_stat.ping_pong_lat_max;
-	avg_ping_pong_lat = xcmd->resp.dev_stat.ping_pong_lat_avg;
-
-	printf("qdma%s%05x:statistics\n", xcmd->vf ? "vf" : "", xcmd->if_bdf);
-	printf("Total MM H2C packets processed = %llu\n", mmh2c_pkts);
-	printf("Total MM C2H packets processed = %llu\n", mmc2h_pkts);
-	printf("Total ST H2C packets processed = %llu\n", sth2c_pkts);
-	printf("Total ST C2H packets processed = %llu\n", stc2h_pkts);
-	printf("Min Ping Pong Latency = %llu\n", min_ping_pong_lat);
-	printf("Max Ping Pong Latency = %llu\n", max_ping_pong_lat);
-	printf("Avg Ping Pong Latency = %llu\n", avg_ping_pong_lat);
-}
-
-static void dump_dev_global_csr(struct xcmd_info *xcmd)
-{
-	printf("Global Ring Sizes:");
-	for ( int i=0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		printf("%d ",xcmd->resp.csr.ring_sz[i]);
-	printf("\nC2H Timer Counters:");
-	for ( int i=0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		printf("%d ",xcmd->resp.csr.c2h_timer_cnt[i]);
-	printf("\nC2H Counter Thresholds:");
-	for ( int i=0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		printf("%d ",xcmd->resp.csr.c2h_cnt_th[i]);
-	printf("\nC2H Buf Sizes:");
-	for ( int i=0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		printf("%d ",xcmd->resp.csr.c2h_buf_sz[i]);
-	printf("\nWriteback Interval:%d\n",xcmd->resp.csr.wb_intvl);
-
-}
-
-static void xnl_dump_response(const char *resp)
-{
-	printf("%s", resp);
-}
-
-void xnl_dump_cmd_resp(struct xcmd_info *xcmd)
-{
-
-	switch(xcmd->op) {
-        case XNL_CMD_DEV_CAP:
-        	dump_dev_cap(xcmd);
-		break;
-        case XNL_CMD_DEV_INFO:
-        	dump_dev_info(xcmd);
-		break;
-        case XNL_CMD_DEV_STAT:
-        	dump_dev_stat(xcmd);
-		break;
-        case XNL_CMD_REG_RD:
-		printf("qdma%s%05x, %02x:%02x.%02x, bar#%u, 0x%x = 0x%x.\n",
-				xcmd->vf ? "vf" :"",
-				xcmd->if_bdf, xcmd->resp.dev_info.pci_bus,
-				xcmd->resp.dev_info.pci_dev,
-				xcmd->resp.dev_info.dev_func, xcmd->req.reg.bar,
-				xcmd->req.reg.reg, xcmd->req.reg.val);
-		break;
-        case XNL_CMD_REG_WRT:
-		printf("qdma%s%05x, %02x:%02x.%02x, bar#%u, reg 0x%x, read back 0x%x.\n",
-			   xcmd->vf ? "vf" :"",
-			   xcmd->if_bdf, xcmd->resp.dev_info.pci_bus,
-			   xcmd->resp.dev_info.pci_dev,
-			   xcmd->resp.dev_info.dev_func, xcmd->req.reg.bar,
-			   xcmd->req.reg.reg, xcmd->req.reg.val);
-		break;
-	case XNL_CMD_GLOBAL_CSR:
-			dump_dev_global_csr(xcmd);
-		break;
-	case XNL_CMD_REG_INFO_READ:
-		break;
-	default:
-		break;
-	}
-}
-
-static int xnl_proc_cmd(struct xcmd_info *xcmd)
-{
-	xcmd->log_msg_dump = xnl_dump_response;
-	if (xnl_proc_fn[xcmd->op])
-		return xnl_proc_fn[xcmd->op](xcmd);
-
-	return -EOPNOTSUPP;
-}
-
-int main(int argc, char *argv[])
-{
-	struct xcmd_info xcmd;
-	int rv = 0;
-
-	memset(&xcmd, 0, sizeof(xcmd));
-
-	rv = parse_cmd(argc, argv, &xcmd);
-	if (rv < 0)
-		return rv;
-	rv = xnl_proc_cmd(&xcmd);
-	if (rv < 0)
-		return rv;
-	xnl_dump_cmd_resp(&xcmd);
-
-	return 0;
-}
diff --git a/QDMA/linux-kernel/apps/dma-ctl/version.h b/QDMA/linux-kernel/apps/dma-ctl/version.h
deleted file mode 100755
index e01b78a..0000000
--- a/QDMA/linux-kernel/apps/dma-ctl/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_CTL_VERSION_H
-#define __DMA_CTL_VERSION_H
-
-#define PROGNAME "dma-ctl"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-from-device/Makefile b/QDMA/linux-kernel/apps/dma-from-device/Makefile
deleted file mode 100755
index 95e66d2..0000000
--- a/QDMA/linux-kernel/apps/dma-from-device/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-FROM-DEVICE = dma-from-device
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-FROM-DEVICE_OBJS := dma_from_device.o
-DMA-FROM-DEVICE_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
-
-all: clean dma-from-device
-
-dma-from-device: $(DMA-FROM-DEVICE_OBJS)
-	$(CC) -lrt -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o
-	rm -rf *.o *.bin dma-from-device
diff --git a/QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c b/QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c
deleted file mode 100755
index fe34757..0000000
--- a/QDMA/linux-kernel/apps/dma-from-device/dma_from_device.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#define _DEFAULT_SOURCE
-#define _XOPEN_SOURCE 500
-#include <assert.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <time.h>
-
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "dma_xfer_utils.c"
-
-#define DEVICE_NAME_DEFAULT "/dev/qdma01000-MM-0"
-#define SIZE_DEFAULT (32)
-#define COUNT_DEFAULT (1)
-
-
-
-
-static struct option const long_opts[] = {
-	{"device", required_argument, NULL, 'd'},
-	{"address", required_argument, NULL, 'a'},
-	{"size", required_argument, NULL, 's'},
-	{"offset", required_argument, NULL, 'o'},
-	{"count", required_argument, NULL, 'c'},
-	{"file", required_argument, NULL, 'f'},
-	{"help", no_argument, NULL, 'h'},
-	{"verbose", no_argument, NULL, 'v'},
-	{0, 0, 0, 0}
-};
-
-static int test_dma(char *devname, uint64_t addr, uint64_t size,
-		    uint64_t offset, uint64_t count, char *ofname);
-static int no_write = 0;
-
-static void usage(const char *name)
-{
-	int i = 0;
-	fprintf(stdout, "%s\n\n", name);
-	fprintf(stdout, "usage: %s [OPTIONS]\n\n", name);
-	fprintf(stdout, "Read via SGDMA, optionally save output to a file\n\n");
-
-	fprintf(stdout, "  -%c (--%s) device (defaults to %s)\n",
-		long_opts[i].val, long_opts[i].name, DEVICE_NAME_DEFAULT);
-	i++;
-	fprintf(stdout, "  -%c (--%s) the start address on the AXI bus\n",
-	       long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout,
-		"  -%c (--%s) size of a single transfer in bytes, default %d.\n",
-		long_opts[i].val, long_opts[i].name, SIZE_DEFAULT);
-	i++;
-	fprintf(stdout, "  -%c (--%s) page offset of transfer\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) number of transfers, default is %d.\n",
-	       long_opts[i].val, long_opts[i].name, COUNT_DEFAULT);
-	i++;
-	fprintf(stdout,
-		"  -%c (--%s) file to write the data of the transfers\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) print usage help and exit\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) verbose output\n",
-		long_opts[i].val, long_opts[i].name);
-}
-
-int main(int argc, char *argv[])
-{
-	int cmd_opt;
-	char *device = DEVICE_NAME_DEFAULT;
-	uint64_t address = 0;
-	uint64_t size = SIZE_DEFAULT;
-	uint64_t offset = 0;
-	uint64_t count = COUNT_DEFAULT;
-	char *ofname = NULL;
-
-	while ((cmd_opt = getopt_long(argc, argv, "vhxc:f:d:a:s:o:", long_opts,
-			    NULL)) != -1) {
-		switch (cmd_opt) {
-		case 0:
-			/* long option */
-			break;
-		case 'd':
-			/* device node name */
-			device = strdup(optarg);
-			break;
-		case 'a':
-			/* RAM address on the AXI bus in bytes */
-			address = getopt_integer(optarg);
-			break;
-			/* RAM size in bytes */
-		case 's':
-			size = getopt_integer(optarg);
-			break;
-		case 'o':
-			offset = getopt_integer(optarg) & 4095;
-			break;
-			/* count */
-		case 'c':
-			count = getopt_integer(optarg);
-			break;
-			/* count */
-		case 'f':
-			ofname = strdup(optarg);
-			break;
-			/* print usage help and exit */
-    		case 'x':
-			no_write++;
-			break;
-		case 'v':
-			verbose = 1;
-			break;
-		case 'h':
-		default:
-			usage(argv[0]);
-			exit(0);
-			break;
-		}
-	}
-	if (verbose)
-	fprintf(stdout,
-		"dev %s, addr 0x%lx, size 0x%lx, offset 0x%lx, count %lu\n",
-		device, address, size, offset, count);
-
-	return test_dma(device, address, size, offset, count, ofname);
-}
-
-static int test_dma(char *devname, uint64_t addr, uint64_t size,
-		    uint64_t offset, uint64_t count, char *ofname)
-{
-	ssize_t rc;
-	uint64_t i;
-	char *buffer = NULL;
-	char *allocated = NULL;
-	struct timespec ts_start, ts_end;
-	int out_fd = -1;
-	int fpga_fd = open(devname, O_RDWR | O_NONBLOCK);
-	double total_time = 0;
-	double result;
-	double avg_time = 0;
-
-	if (fpga_fd < 0) {
-                fprintf(stderr, "unable to open device %s, %d.\n",
-                        devname, fpga_fd);
-		perror("open device");
-                return -EINVAL;
-        }
-
-	/* create file to write data to */
-	if (ofname) {
-		out_fd = open(ofname, O_RDWR | O_CREAT | O_TRUNC | O_SYNC,
-				0666);
-		if (out_fd < 0) {
-                        fprintf(stderr, "unable to open output file %s, %d.\n",
-                                ofname, out_fd);
-			perror("open output file");
-                        rc = -EINVAL;
-                        goto out;
-                }
-	}
-
-	posix_memalign((void **)&allocated, 4096 /*alignment */ , size + 4096);
-	if (!allocated) {
-		fprintf(stderr, "OOM %lu.\n", size + 4096);
-		rc = -ENOMEM;
-		goto out;
-	}
-
-	buffer = allocated + offset;
-	if (verbose)
-	fprintf(stdout, "host buffer 0x%lx, %p.\n", size + 4096, buffer);
-
-	for (i = 0; i < count; i++) {
-		clock_gettime(CLOCK_MONOTONIC, &ts_start);
-		/* lseek & read data from AXI MM into buffer using SGDMA */
-		rc = read_to_buffer(devname, fpga_fd, buffer, size, addr);
-		if (rc < 0)
-			goto out;
-		clock_gettime(CLOCK_MONOTONIC, &ts_end);
-
-		/* subtract the start time from the end time */
-		timespec_sub(&ts_end, &ts_start);
-		total_time += (ts_end.tv_sec + ((double)ts_end.tv_nsec/NSEC_DIV));
-		/* a bit less accurate but side-effects are accounted for */
-		if (verbose)
-		fprintf(stdout,
-			"#%lu: CLOCK_MONOTONIC %ld.%09ld sec. read %lu bytes\n",
-			i, ts_end.tv_sec, ts_end.tv_nsec, size);
-
-		/* file argument given? */
-		if ((out_fd >= 0) & (no_write == 0)) {
-			rc = write_from_buffer(ofname, out_fd, buffer,
-					 size, i*size);
-			if (rc < 0)
-				goto out;
-		}
-	}
-	avg_time = (double)total_time/(double)count;
-	result = ((double)size)/avg_time;
-	if (verbose)
-	printf("** Avg time device %s, total time %f nsec, avg_time = %f, size = %lu, BW = %f bytes/sec\n",
-		devname, total_time, avg_time, size, result);
-	dump_throughput_result(size, result);
-
-	rc = 0;
-
-out:
-	close(fpga_fd);
-	if (out_fd >= 0)
-		close(out_fd);
-	free(allocated);
-
-	return rc;
-}
diff --git a/QDMA/linux-kernel/apps/dma-from-device/version.h b/QDMA/linux-kernel/apps/dma-from-device/version.h
deleted file mode 100755
index 9eeb784..0000000
--- a/QDMA/linux-kernel/apps/dma-from-device/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_FROM_DEVICE_VERSION_H
-#define __DMA_FROM_DEVICE_VERSION_H
-
-#define PROGNAME "dma-from-device"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-latency/Makefile b/QDMA/linux-kernel/apps/dma-latency/Makefile
deleted file mode 100755
index 5654973..0000000
--- a/QDMA/linux-kernel/apps/dma-latency/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-LATENCY = dma-latency
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-LAT_OBJS := dmalat.o
-DMA-LAT_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
-
-all: clean dma-latency
-
-dma-latency: $(DMA-LAT_OBJS)
-	$(CC) -pthread -lrt -o $@ $^ -laio -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o
-	rm -rf *.o *.bin dma-latency
diff --git a/QDMA/linux-kernel/apps/dma-latency/Readme.txt b/QDMA/linux-kernel/apps/dma-latency/Readme.txt
deleted file mode 100755
index 9c07c2c..0000000
--- a/QDMA/linux-kernel/apps/dma-latency/Readme.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under both the BSD-style license (found in the
- * LICENSE file in the root directory of this source tree) and the GPLv2 (found
- * in the COPYING file in the root directory of this source tree).
- * You may select, at your option, one of the above-listed licenses.
- */
-
-What is the dma-lat tool?
-The intent of the tool is to gather metrics related how much time do packets
-take to loopback to the host when a packet is transmitted in the ST H2C direction 
-and the ST Traffic Generator loops back the same packet in the ST C2H direction.
-The RDTSC timestamp is inserted into the packet that is transmitted in the H2C 
-direction at the time of PIDX update. The timestamp at the time when the 
-data interrupt is hit is taken and the difference in the timestamps is used to
-measure the latency for the packet. The tool measures average, maximum and
-minimum latency in CPU tick counts. To obtain the latency numbers in nanosecs,
-the numbers reported by the tool need to be divided by the nominal CPU freq.
-
-How to use the tool?
-The tool takes in a configuration file as input which contains data such as the
-number of queues, packet sizes etc. Please refer to the Sample_dma_latency_config.txt
-for more information on what are available the configuraion parameters. 
-The command syntax is -
-dma-lat -c <config file>
-
-Important Note-
-To be able to get correct results for the latency numbers it is necessary that the 
-number of CPUs be restricted to 1 and hyperthreading be turned OFF from BIOS. This is 
-to ensure that the CPU core that sends out the H2C packet which contains the timestamp 
-is the same CPU that receives that data interrupt for the loopback. If this is not done
-then the packet might get transmitted from one CPU core with a different TSC timestamp, 
-and the interrupt might get hit on another CPU core which would cause an error in the 
-measurement. 
diff --git a/QDMA/linux-kernel/apps/dma-latency/dmalat.c b/QDMA/linux-kernel/apps/dma-latency/dmalat.c
deleted file mode 100755
index 98c157b..0000000
--- a/QDMA/linux-kernel/apps/dma-latency/dmalat.c
+++ /dev/null
@@ -1,1133 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <time.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <errno.h>
-#include <error.h>
-#include <sys/ioctl.h>
-#include </usr/include/pthread.h>
-#include "dmautils.h"
-#include "qdma_nl.h"
-
-static struct option const long_opts[] = {
-	{"config", required_argument, NULL, 'c'},
-	{0, 0, 0, 0}
-};
-
-static void prep_pci_dump(void);
-
-static void usage(const char *name)
-{
-	int i = 0;
-	fprintf(stdout, "%s\n\n", name);
-	fprintf(stdout, "usage: %s [OPTIONS]\n\n", name);
-
-	fprintf(stdout, "  -%c (--%s) config file that has configration for IO\n",
-		long_opts[i].val, long_opts[i].name);
-}
-
-static unsigned int num_trailing_blanks(char *word)
-{
-    unsigned int i = 0;
-    unsigned int slen = strlen(word);
-
-    if (!slen) return 0;
-    while (isspace(word[slen - i - 1])) {
-        i++;
-    }
-
-    return i;
-}
-
-static char * strip_blanks(char *word, long unsigned int *banlks)
-{
-    char *p = word;
-    unsigned int i = 0;
-
-    while (isblank(p[0])) {
-	p++;
-	i++;
-    }
-    if (banlks)
-	*banlks = i;
-
-    return p;
-}
-
-static unsigned int copy_value(char *src, char *dst, unsigned int max_len)
-{
-    char *p = src;
-    unsigned int i = 0;
-
-    while (max_len && !isspace(p[0])) {
-        dst[i] = p[0];
-        p++;
-        i++;
-        max_len--;
-    }
-
-    return i;
-}
-
-static char * strip_comments(char *word)
-{
-    size_t numblanks;
-    char *p = strip_blanks(word, &numblanks);
-
-    if (p[0] == '#')
-	return NULL;
-    else
-	p = strtok(word, "#");
-
-    return p;
-}
-
-#define PCI_DUMP_CMD_LEN 100
-#define QDMA_GLBL_MAX_ENTRIES  (16)
-
-enum q_mode {
-	Q_MODE_MM,
-	Q_MODE_ST,
-	Q_MODES
-};
-
-enum q_dir {
-	Q_DIR_H2C,
-	Q_DIR_C2H,
-	Q_DIR_BI,
-	Q_DIRS
-};
-
-
-struct io_info {
-	int pid;
-	char q_name[20];
-	char trig_mode[10];
-	unsigned char q_ctrl;
-	unsigned int q_added;
-	unsigned int q_started;
-	int fd;
-	unsigned int pf;
-	unsigned int qid;
-	enum q_mode mode;
-	enum q_dir dir;
-	unsigned int idx_tmr;
-	unsigned int idx_cnt;
-	unsigned int idx_rngsz;
-	unsigned int pfetch_en;
-	unsigned int pkt_sz;
-	unsigned int cmptsz;
-	unsigned int thread_id;
-};
-
-#define container_of(ptr, type, member) ({                      \
-        const struct iocb *__mptr = (ptr);    \
-        (type *)( (char *)__mptr - offsetof(type,member) );})
-
-static unsigned int io_exit = 0;
-static unsigned int force_exit = 0;
-static unsigned int num_q = 0;
-static unsigned int pkt_sz = 0;
-static unsigned int tsecs = 0;
-struct io_info info[8];
-static char cfg_name[20];
-static unsigned int pci_bus = 0;
-static unsigned int pci_dev = 0;
-static unsigned int vf_perf = 0;
-static char *dmactl_dev_prefix_str;
-char *pf_dmactl_prefix_str = "qdma";
-char *vf_dmactl_prefix_str = "qdmavf";
-int base_pid;
-enum q_mode mode = Q_MODE_ST;
-enum q_dir dir = Q_DIR_BI;
-unsigned int num_pf = 0;
-unsigned int pf_start = 0;
-unsigned int q_start = 0;
-unsigned int idx_rngsz = 0;
-unsigned int idx_tmr = 0;
-unsigned int idx_cnt = 0;
-unsigned int pfetch_en = 0;
-unsigned int cmptsz = 0;
-char trigmode[10];
-char pci_dump[PCI_DUMP_CMD_LEN];
-unsigned int dump_en = 0;
-static struct timespec g_ts_start;
-int *child_pid_lst = NULL;
-unsigned int glbl_rng_sz[QDMA_GLBL_MAX_ENTRIES];
-
-static int setup_thrd_env(struct io_info *_info, unsigned char is_new_fd);
-
-static int arg_read_int(char *s, uint32_t *v)
-{
-    char *p = NULL;
-
-
-    *v = strtoul(s, &p, 0);
-    if (*p && (*p != '\n') && !isblank(*p)) {
-	printf("Error:something not right%s %s %s",s, p, isblank(*p)? "true": "false");
-        return -EINVAL;
-    }
-    return 0;
-}
-
-static int arg_read_int_array(char *s, unsigned int *v, unsigned int max_arr_size)
-{
-    unsigned int slen = strlen(s);
-    unsigned int trail_blanks = num_trailing_blanks(s);
-    char *str = (char *)malloc(slen - trail_blanks + 1);
-    char *elem;
-    int cnt = 0;
-
-    memset(str, '\0', slen + 1);
-    strncpy(str, s + 1, slen - trail_blanks - 2);
-    str[slen] = '\0';
-
-    elem = strtok(str, " ,");/* space or comma separated */
-    while (elem != NULL) {
-	    int ret;
-
-        ret = arg_read_int(elem, &v[cnt]);
-        if (ret < 0) {
-            printf("ERROR: Invalid array element %sin %s\n", elem, s);
-            exit(0);
-        }
-        cnt++;
-        elem = strtok(NULL, " ,");
-        if (cnt > (int)max_arr_size) { /* to avoid out of bounds */
-            printf("ERROR: More than expected number of elements in %s - expected = %u\n",
-                   str, max_arr_size);
-            exit(0);
-        }
-    }
-    free(str);
-
-    return cnt;
-}
-
-static int get_array_len(char *s)
-{
-    int i, len = 0;
-
-    if (strlen(s) < 2)
-        return -EINVAL;
-    if ((s[0] != '(') && (s[strlen(s) - 1] != ')'))
-        return -EINVAL;
-    if ((s[0] == '(') && (s[1] == ')'))
-        return 0;
-    for (i = 0; i < (int)strlen(s); i++) {
-        if ((s[i] == ' ') || (s[i] == ',')) /* space or comma separated */
-                len++;
-        if (s[i] == ')')
-            break;
-    }
-
-    return (len + 1);
-
-}
-
-static void dump_thrd_info(struct io_info *_info) {
-	printf("q_name = %s\n", info->q_name);
-	printf("dir = %d\n", _info->dir);
-	printf("mode = %d\n", _info->mode);
-	printf("idx_cnt = %u\n", _info->idx_cnt);
-	printf("idx_rngsz = %u\n", _info->idx_rngsz);
-	printf("idx_tmr = %u\n", _info->idx_tmr);
-	printf("pf = %x\n", _info->pf);
-	printf("qid = %u\n", _info->qid);
-	printf("fd = %d\n", _info->fd);
-	printf("trig_mode = %s\n", _info->trig_mode);
-	printf("q_ctrl = %u\n", _info->q_ctrl);
-	printf("q_added = %u\n", _info->q_added);
-	printf("q_started = %u\n", _info->q_started);
-}
-
-static void xnl_dump_response(const char *resp)
-{
-	printf("%s", resp);
-}
-
-static int qdma_register_write(unsigned char is_vf,
-		unsigned int pf, int bar, unsigned long reg,
-		unsigned long value)
-{
-	struct xcmd_info xcmd;
-	struct xcmd_reg *regcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-
-	regcmd = &xcmd.req.reg;
-	xcmd.op = XNL_CMD_REG_WRT;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = pf;
-	xcmd.log_msg_dump = xnl_dump_response;
-	regcmd->bar = bar;
-	regcmd->reg = reg;
-	regcmd->val = value;
-	regcmd->sflags = XCMD_REG_F_BAR_SET |
-		XCMD_REG_F_REG_SET |
-		XCMD_REG_F_VAL_SET;
-
-	ret = qdma_reg_write(&xcmd);
-	if (ret < 0)
-		printf("QDMA_REG_WRITE Failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_register_read(unsigned char is_vf,
-		unsigned int pf, int bar, unsigned long reg,
-		unsigned int *reg_val)
-{
-	struct xcmd_info xcmd;
-	struct xcmd_reg *regcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-
-	regcmd = &xcmd.req.reg;
-	xcmd.op = XNL_CMD_REG_RD;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = pf;
-	xcmd.log_msg_dump = xnl_dump_response;
-	regcmd->bar = bar;
-	regcmd->reg = reg;
-	regcmd->sflags = XCMD_REG_F_BAR_SET |
-		XCMD_REG_F_REG_SET;
-
-	ret = qdma_reg_read(&xcmd);
-	if (ret < 0)
-		printf("QDMA_REG_READ Failed, ret :%d\n", ret);
-
-	*reg_val = regcmd->val;
-
-	return ret;
-}
-
-static int qdma_prepare_reg_dump(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_REG_DUMP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-
-	return 0;
-}
-
-static int qdma_registers_dump(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_reg_dump(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_reg_dump(&xcmd);
-	if (ret < 0)
-		printf("Q_ failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_add(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_ADD;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	qparm->sflags = qparm->flags;
-
-	return 0;
-}
-
-static int qdma_add_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_add(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_add(&xcmd);
-	if (ret < 0)
-		printf("Q_ADD failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_start(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_START;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-	qparm->fetch_credit = Q_ENABLE_C2H_FETCH_CREDIT;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	qparm->qrngsz_idx = info->idx_rngsz;
-
-	if ((info->dir == Q_DIR_C2H) && (info->mode == Q_MODE_ST)) {
-		if (cmptsz)
-			qparm->cmpt_entry_size = info->cmptsz;
-		else
-			qparm->cmpt_entry_size = XNL_ST_C2H_CMPT_DESC_SIZE_8B;
-		qparm->cmpt_tmr_idx = info->idx_tmr;
-		qparm->cmpt_cntr_idx = info->idx_cnt;
-
-		if (!strcmp(info->trig_mode, "every"))
-			qparm->cmpt_trig_mode = 1;
-		else if (!strcmp(info->trig_mode, "usr_cnt"))
-			qparm->cmpt_trig_mode = 2;
-		else if (!strcmp(info->trig_mode, "usr"))
-			qparm->cmpt_trig_mode = 3;
-		else if (!strcmp(info->trig_mode, "usr_tmr"))
-			qparm->cmpt_trig_mode=4;
-		else if (!strcmp(info->trig_mode, "cntr_tmr"))
-			qparm->cmpt_trig_mode=5;
-		else if (!strcmp(info->trig_mode, "dis"))
-			qparm->cmpt_trig_mode = 0;
-		else {
-			printf("Error: unknown q trigmode %s.\n", info->trig_mode);
-			return -EINVAL;
-		}
-
-		if (pfetch_en)
-			qparm->flags |= XNL_F_PFETCH_EN;
-	}
-
-	qparm->flags |= (XNL_F_CMPL_STATUS_EN | XNL_F_CMPL_STATUS_ACC_EN |
-			XNL_F_CMPL_STATUS_PEND_CHK | XNL_F_CMPL_STATUS_DESC_EN |
-			XNL_F_FETCH_CREDIT);
-
-	qparm->sflags |= (1 << QPARM_PING_PONG_EN);
-
-	return 0;
-}
-
-static int qdma_start_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_start(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_start(&xcmd);
-	if (ret < 0)
-		printf("Q_START failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_stop(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd)
-		return -EINVAL;
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_STOP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_stop_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_stop(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_stop(&xcmd);
-	if (ret < 0)
-		printf("Q_STOP failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_del(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_DEL;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_del_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_del(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_del(&xcmd);
-	if (ret < 0)
-		printf("Q_DEL failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_dump(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_DUMP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_dump_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_dump(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	return qdma_q_dump(&xcmd);
-}
-
-
-static void create_thread_info(void)
-{
-	unsigned int base = 0;
-	unsigned int q_ctrl = 1;
-	unsigned int i, k;
-	int last_fd = -1;
-	unsigned char is_new_fd = 1;
-	struct io_info *_info = info;
-
-	prep_pci_dump();
-
-	if ((mode == Q_MODE_ST) && (dir != Q_DIR_H2C)) {
-		qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x50, cmptsz);
-	}
-
-	for (k = 0; k < num_pf; k++) {
-		for (i = 0 ; i < num_q; i++) {
-			is_new_fd = 1;
-			snprintf(_info[base].q_name, 20, "%s%02x%02x%01x-%s-%u",
-			dmactl_dev_prefix_str, pci_bus, pci_dev,
-			pf_start+k, (mode == Q_MODE_MM) ? "MM" : "ST", q_start + i);
-
-			_info[base].dir = Q_DIR_H2C;
-			_info[base].mode = mode;
-			_info[base].idx_rngsz = idx_rngsz;
-			_info[base].pf = (pci_bus << 12) | (pci_dev << 4) | (pf_start + k);
-			_info[base].qid = q_start + i;
-			_info[base].q_ctrl = q_ctrl;
-			_info[base].pkt_sz = pkt_sz;
-			last_fd = setup_thrd_env(&_info[base], is_new_fd);
-			_info[base].fd = last_fd;
-			is_new_fd = 0;
-			// Adding the Queue in the C2H direction also
-			_info[base].dir = Q_DIR_C2H;
-			_info[base].pfetch_en = pfetch_en;
-			_info[base].idx_cnt = idx_cnt;
-			_info[base].idx_tmr = idx_tmr;
-			_info[base].cmptsz = cmptsz;
-			strncpy(_info[base].trig_mode, trigmode, 10);
-			last_fd = setup_thrd_env(&_info[base], is_new_fd);
-			_info[base].thread_id = base;
-			base++;
-		}
-
-	}
-	// Reset ST Traffic generator
-	qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x08, 0);
-	// Set the loopback bit for the ST traffic generator
-	qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x08, 1);
-
-	usleep(1000);
-
-}
-
-static void parse_config_file(const char *cfg_fname)
-{
-	char *linebuf = NULL;
-	char *realbuf;
-	FILE *fp;
-	size_t linelen = 0;
-	size_t numread;
-	size_t numblanks;
-	unsigned int linenum = 0;
-	char *config, *value;
-	unsigned int dir_factor = 1;
-	char rng_sz[100] = {'\0'};
-	char rng_sz_path[512] = {'\0'};
-    	int rng_sz_fd, ret = 0;
-
-	fp = fopen(cfg_fname, "r");
-	if (fp == NULL)
-		exit(EXIT_FAILURE);
-
-	while ((numread = getline(&linebuf, &linelen, fp)) != -1) {
-		numread--;
-		linenum++;
-		linebuf = strip_comments(linebuf);
-		if (!linebuf)
-			continue;
-		realbuf = strip_blanks(linebuf, &numblanks);
-		linelen -= numblanks;
-		if (0 == linelen)
-			continue;
-		config = strtok(realbuf, "=");
-		value = strtok(NULL, "=");
-		if (!strncmp(config, "name", 3)) {
-			copy_value(value, cfg_name, 20);
-		} else if (!strncmp(config, "pf_range", 8)) {
-			char *pf_range_start = strtok(value, ":");
-			char *pf_range_end = strtok(NULL, ":");
-			unsigned int start;
-			unsigned int end;
-			if (arg_read_int(pf_range_start, &start)) {
-				printf("Error: Invalid pf range start:%s\n", pf_range_start);
-				goto prase_cleanup;
-			}
-			if (arg_read_int(pf_range_end, &end)) {
-				printf("Error: Invalid pf range end:%s\n", pf_range_end);
-				goto prase_cleanup;
-			}
-
-			pf_start = start;
-			num_pf = end - start + 1;
-		} else if (!strncmp(config, "q_range", 7)) {
-			char *q_range_start = strtok(value, ":");
-			char *q_range_end = strtok(NULL, ":");
-			unsigned int start;
-			unsigned int end;
-			if (arg_read_int(q_range_start, &start)) {
-				printf("Error: Invalid q range start:%s\n", q_range_start);
-				goto prase_cleanup;
-			}
-			if (arg_read_int(q_range_end, &end)) {
-				printf("Error: Invalid q range end:%s\n", q_range_end);
-				goto prase_cleanup;
-			}
-
-			q_start = start;
-			num_q = end - start + 1;
-		} else if (!strncmp(config, "rngidx", 6)) {
-			if (arg_read_int(value, &idx_rngsz)) {
-				printf("Error: Invalid idx_rngsz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "tmr_idx", 7)) {
-			if (arg_read_int(value, &idx_tmr)) {
-				printf("Error: Invalid idx_tmr:%s\n", value);
-				goto prase_cleanup;
-			}
-		}
-		if (!strncmp(config, "cntr_idx", 8)) {
-		    if (arg_read_int(value, &idx_cnt)) {
-			printf("Error: Invalid idx_cnt:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "pfetch_en", 9)) {
-		    if (arg_read_int(value, &pfetch_en)) {
-			printf("Error: Invalid pfetch_en:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "cmptsz", 5)) {
-		    if (arg_read_int(value, &cmptsz)) {
-			printf("Error: Invalid cmptsz:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "dump_en", 5)) {
-		    if (arg_read_int(value, &dump_en)) {
-			printf("Error: Invalid dump_en:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "trig_mode", 9)) {
-		    copy_value(value, trigmode, 10);
-		} else if (!strncmp(config, "runtime", 9)) {
-			if (arg_read_int(value, &tsecs)) {
-				printf("Error: Invalid tsecs:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pkt_sz", 6)) {
-			if (arg_read_int(value, &pkt_sz)) {
-				printf("Error: Invalid pkt_sz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pci_bus", 7)) {
-			char *p;
-
-			pci_bus = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pci_dev", 7)) {
-			char *p;
-
-			pci_dev = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "vf_perf", 7)) {
-			char *p;
-
-			vf_perf = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-
-		}
-	}
-	fclose(fp);
-	if (vf_perf == 0) {
-		dmactl_dev_prefix_str = pf_dmactl_prefix_str;
-	} else {
-		dmactl_dev_prefix_str = vf_dmactl_prefix_str;
-	}
-
-	if (!pci_bus && !pci_dev) {
-		printf("Error: PCI bus information not provided\n");
-		exit(1);
-	}
-
-	snprintf(rng_sz_path, 200,"dma-ctl %s%05x global_csr | grep Global| cut -d : -f 2 > glbl_rng_sz",
-			 dmactl_dev_prefix_str, (pci_bus << 12) | (pci_dev << 4) | pf_start);
-	printf("%s\n", rng_sz_path);
-	system(rng_sz_path);
-	memset(rng_sz_path, 0, 200);
-	snprintf(rng_sz_path, 200, "glbl_rng_sz");
-
-	rng_sz_fd = open(rng_sz_path, O_RDONLY);
-	if (rng_sz_fd < 0) {
-		printf("Could not open %s\n", rng_sz_path);
-		exit(1);
-	}
-	ret = read(rng_sz_fd, &rng_sz[1], 99);
-	if (ret < 0) {
-		printf("Error: Could not read the file\n");
-		exit(1);
-	}
-	close(rng_sz_fd);
-	/* below 2 line a work around to use arg_read_int_array */
-	rng_sz[0] = ' ';
-	rng_sz[strlen(rng_sz)] = ' ';
-	ret = arg_read_int_array(rng_sz, glbl_rng_sz, QDMA_GLBL_MAX_ENTRIES);
-	if (ret <= 0) {
-		printf("Error: Invalid ring size array:%s\n", rng_sz);
-		exit(1);
-	}
-
-	create_thread_info();
-
-	return;
-
-prase_cleanup:
-	fclose(fp);
-	exit(-1);
-}
-
-/* Subtract timespec t2 from t1
- *
- * Both t1 and t2 must already be normalized
- * i.e. 0 <= nsec < 1000000000
- */
-static int timespec_check(struct timespec *t)
-{
-	if ((t->tv_nsec < 0) || (t->tv_nsec >= 1000000000))
-		return -1;
-	return 0;
-
-}
-
-static void timespec_sub(struct timespec *t1, struct timespec *t2)
-{
-	if (timespec_check(t1) < 0) {
-		fprintf(stderr, "invalid time #1: %lld.%.9ld.\n",
-			(long long)t1->tv_sec, t1->tv_nsec);
-		return;
-	}
-	if (timespec_check(t2) < 0) {
-		fprintf(stderr, "invalid time #2: %lld.%.9ld.\n",
-			(long long)t2->tv_sec, t2->tv_nsec);
-		return;
-	}
-	t1->tv_sec -= t2->tv_sec;
-	t1->tv_nsec -= t2->tv_nsec;
-	if (t1->tv_nsec >= 1000000000) {
-		t1->tv_sec++;
-		t1->tv_nsec -= 1000000000;
-	} else if (t1->tv_nsec < 0) {
-		t1->tv_sec--;
-		t1->tv_nsec += 1000000000;
-	}
-}
-
-static void io_proc_cleanup(struct io_info *_info)
-{
-	int s;
-	char reg_cmd[100] = {'\0'};
-
-	if (dump_en) {
-		s = qdma_dump_queue(vf_perf, _info);
-		if (s < 0) {
-			printf("Failed: queue_dump\nerrcode = %d\n", s);
-		}
-	}
-
-	s = qdma_stop_queue(vf_perf, _info);
-	if (s < 0) {
-		printf("Failed: queue_stop\nerrcode = %d\n", s);
-	}
-	_info->q_started = 0;
-
-	system(reg_cmd);
-
-	s = qdma_del_queue(vf_perf, _info);
-	if (s < 0) {
-		printf("Failed: queue_del\nerrcode = %d\n", s);
-	}
-	_info->q_added = 0;
-}
-
-static void *io_thread(void *argp)
-{
-
-	struct io_info *_info = (struct io_info *)argp;
-	char *buffer = NULL;
-
-	unsigned int io_sz = _info->pkt_sz;
-
-	posix_memalign((void **)&buffer, 4096 /*alignment */ , io_sz + 4096);
-	if (!buffer) {
-		printf("OOM \n");
-		return NULL;
-	}
-
-	do {
-
-		struct timespec ts_cur;
-
-		if (tsecs) {
-			if (clock_gettime(CLOCK_MONOTONIC, &ts_cur) != 0)
-				break;
-			timespec_sub(&ts_cur, &g_ts_start);
-			if (ts_cur.tv_sec >= tsecs)
-				break;
-		}
-
-		write(_info->fd, buffer ,io_sz);
-		read(_info->fd, buffer ,io_sz);
-
-
-	} while (tsecs && !force_exit);
-
-	free(buffer);
-
-	return NULL;
-}
-
-static void prep_pci_dump(void)
-{
-    memset(pci_dump, '\0', PCI_DUMP_CMD_LEN);
-    snprintf(pci_dump, PCI_DUMP_CMD_LEN, "lspci -s %02x:%02x.%01x -vvv", pci_bus, pci_dev, pf_start);
-}
-
-static int setup_thrd_env(struct io_info *_info, unsigned char is_new_fd)
-{
-	int s;
-
-	/* add queue */
-	s = qdma_add_queue(vf_perf, _info);
-	if (s < 0) {
-		exit(1);
-	}
-	_info->q_added++;
-
-	/* start queue */
-	/* start queue */
-	s = qdma_start_queue(vf_perf, _info);
-	if (s < 0)
-		exit(1);
-	_info->q_started++;
-
-	if (is_new_fd) {
-		char node[25] = {'\0'};
-
-		snprintf(node, 25, "/dev/%s", _info->q_name);
-		_info->fd = open(node, O_RDWR);
-		if (_info->fd < 0) {
-			printf("Error: Cannot find %s\n", node);
-			exit(1);
-		}
-	}
-
-	return _info->fd;
-}
-
-static void dump_result()
-{
-	char reg_cmd[100] = {'\0'};
-
-	snprintf(reg_cmd, 100, "dma-ctl %s%05x stat",
-		 dmactl_dev_prefix_str, info[0].pf);
-	system(reg_cmd);
-	memset(reg_cmd, 0, 100);
-	snprintf(reg_cmd, 100, "dma-ctl %s%05x stat clear",
-		 dmactl_dev_prefix_str, info[0].pf);
-	system(reg_cmd);
-	memset(reg_cmd, 0, 100);
-
-}
-
-static int is_valid_fd(int fd)
-{
-    return fcntl(fd, F_GETFL) != -1 || errno != EBADF;
-}
-
-static void cleanup(void) {
-
-	if (getpid() != base_pid)
-		return;
-
-	for (int i=0;i<num_q; i++) {
-		if (info[i].fd > 0 && is_valid_fd(info[i].fd))
-			close(info[i].fd);
-		info[i].dir = Q_DIR_H2C;
-		io_proc_cleanup(&info[i]);
-		info[i].dir = Q_DIR_C2H;
-		io_proc_cleanup(&info[i]);
-	}
-	dump_result();
-}
-
-int main(int argc, char *argv[])
-{
-
-	int cmd_opt;
-	char *cfg_fname = NULL;
-	unsigned int i = 0;
-	cpu_set_t set;
-	while ((cmd_opt = getopt_long(argc, argv, "vhxc:c:", long_opts,
-			    NULL)) != -1) {
-		switch (cmd_opt) {
-		case 0:
-			/* long option */
-			break;
-		case 'c':
-			/* config file name */
-			cfg_fname = strdup(optarg);
-			break;
-		default:
-			usage(argv[0]);
-			exit(0);
-			break;
-		}
-	}
-	if (cfg_fname == NULL)
-		return 1;
-
-	parse_config_file(cfg_fname);
-	atexit(cleanup);
-
-	printf("dmautils(%u) threads\n", num_q);
-	child_pid_lst = calloc(num_q, sizeof(int));
-	base_pid = getpid();
-
-	CPU_ZERO(&set);
-	CPU_SET(0, &set);
-        if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)
-        	printf("setaffinity for thrd%u failed\n", info[i].thread_id);
-
-	for (i = 0; i < num_q; i++) {
-		if (getpid() == base_pid)
-			child_pid_lst[i] = fork();
-		else
-			break;
-	}
-
-	clock_gettime(CLOCK_MONOTONIC, &g_ts_start);
-	if (getpid() == base_pid) {
-		for(i = 0; i < num_q; i++) {
-			waitpid(child_pid_lst[i], NULL, 0);
-		}
-		free(child_pid_lst);
-	        child_pid_lst = NULL;
-
-		qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x08, 0);
-
-	} else {
-		info[i-1].pid = getpid();
-		io_thread(&info[i-1]);
-	}
-	return 0;
-}
-
diff --git a/QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt b/QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt
deleted file mode 100755
index f710845..0000000
--- a/QDMA/linux-kernel/apps/dma-latency/sample_dma_latency_config.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-pf_range=0:0
-q_range=0:0
-flags=
-cmpl_status_acc=5
-dump_en=0
-tmr_idx=9
-cntr_idx=0
-trig_mode=cntr_tmr
-pfetch_en=1
-cmptsz=1
-rngidx=9
-runtime=1
-pkt_sz=64
-pci_bus=41
-pci_device=00
-
diff --git a/QDMA/linux-kernel/apps/dma-latency/version.h b/QDMA/linux-kernel/apps/dma-latency/version.h
deleted file mode 100755
index 650deb9..0000000
--- a/QDMA/linux-kernel/apps/dma-latency/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_LATENCY_VERSION_H
-#define __DMA_LATENCY_VERSION_H
-
-#define PROGNAME "dma-latency"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-perf/Makefile b/QDMA/linux-kernel/apps/dma-perf/Makefile
deleted file mode 100755
index 34ba484..0000000
--- a/QDMA/linux-kernel/apps/dma-perf/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-PERF = dma-perf
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-PERF_OBJS := dmaperf.o
-DMA-PERF_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
-
-all: clean dma-perf
-
-dma-perf: $(DMA-PERF_OBJS)
-	$(CC) -pthread -lrt -o $@ $^ -laio -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o
-	rm -rf *.o *.bin dma-perf
diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf.c b/QDMA/linux-kernel/apps/dma-perf/dmaperf.c
deleted file mode 100755
index 1d9638e..0000000
--- a/QDMA/linux-kernel/apps/dma-perf/dmaperf.c
+++ /dev/null
@@ -1,2275 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <semaphore.h>
-#include <time.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/shm.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <stdbool.h>
-#include <linux/types.h>
-#include <getopt.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <signal.h>
-#include <stddef.h>
-#include <errno.h>
-#include <error.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include </usr/include/pthread.h>
-#include <libaio.h>
-#include <sys/sysinfo.h>
-#include "dmautils.h"
-#include "qdma_nl.h"
-
-#define SEC2NSEC           1000000000
-#define SEC2USEC           1000000
-#define DEFAULT_PAGE_SIZE  4096
-#define PAGE_SHIFT         12
-
-#define DATA_VALIDATION 0
-
-static struct option const long_opts[] = {
-	{"config", required_argument, NULL, 'c'},
-	{0, 0, 0, 0}
-};
-
-static void prep_pci_dump(void);
-
-static void usage(const char *name)
-{
-	int i = 0;
-	fprintf(stdout, "%s\n\n", name);
-	fprintf(stdout, "usage: %s [OPTIONS]\n\n", name);
-
-	fprintf(stdout, "  -%c (--%s) config file that has configration for IO\n",
-		long_opts[i].val, long_opts[i].name);
-}
-
-static unsigned int num_trailing_blanks(char *word)
-{
-    unsigned int i = 0;
-    unsigned int slen = strlen(word);
-
-    if (!slen) return 0;
-    while (isspace(word[slen - i - 1])) {
-        i++;
-    }
-
-    return i;
-}
-
-static char * strip_blanks(char *word, long unsigned int *banlks)
-{
-    char *p = word;
-    unsigned int i = 0;
-
-    while (isblank(p[0])) {
-	p++;
-	i++;
-    }
-    if (banlks)
-	*banlks = i;
-
-    return p;
-}
-
-static unsigned int copy_value(char *src, char *dst, unsigned int max_len)
-{
-    char *p = src;
-    unsigned int i = 0;
-
-    while (max_len && !isspace(p[0])) {
-        dst[i] = p[0];
-        p++;
-        i++;
-        max_len--;
-    }
-
-    return i;
-}
-
-static char * strip_comments(char *word)
-{
-    size_t numblanks;
-    char *p = strip_blanks(word, &numblanks);
-
-    if (p[0] == '#')
-	return NULL;
-    else
-	p = strtok(word, "#");
-
-    return p;
-}
-
-#define MSEC2NSEC 1000000
-#define CMPL_STATUS_ACC_CMD_LEN 200
-#define PCI_DUMP_CMD_LEN 100
-
-#define QDMA_UL_SEND_MARKER_PACKET     (1 << 5)
-#define QDMA_UL_IMM_DUMP_C2H_DATA      (1 << 17)
-#define QDMA_UL_STOP_C2H_TRANSFER      (1 << 18)
-#define QDMA_UL_DROP_ENABLE            (1 << 19)
-#define QDMA_UL_IMM_DUMP_CMPT_FIFO     (1 << 20)
-#define QDMA_UL_STOP_CMPT_TRANSFER     (1 << 21)
-
-#define QDMA_GLBL_MAX_ENTRIES  (16)
-//#define DEBUG
-
-enum q_mode {
-	Q_MODE_MM,
-	Q_MODE_ST,
-	Q_MODES
-};
-
-enum q_dir {
-	Q_DIR_H2C,
-	Q_DIR_C2H,
-	Q_DIR_BI,
-	Q_DIRS
-};
-
-
-enum mm_channel_ctrl {
-	MM_CHANNEL_0, /*All Qs are assigned to channel 0*/
-	MM_CHANNEL_1, /*All Qs are assigned to channel 1*/
-	MM_CHANNEL_INTERLEAVE /*Odd queues are assigned to ch 1 and even Qs are assigned to channel 0*/
-};
-
-#define THREADS_SET_CPU_AFFINITY 0
-
-struct io_info {
-	unsigned int num_req_submitted;
-	unsigned int num_req_completed;
-	unsigned int num_req_completed_in_time;
-	int exit_check_count;
-	struct list_head *head;
-	struct list_head *tail;
-	sem_t llock;
-	int pid;
-	pthread_t evt_id;
-	char q_name[20];
-	char trig_mode[10];
-	unsigned char q_ctrl;
-	unsigned int q_added;
-	unsigned int q_started;
-	unsigned int q_wait_for_stop;
-	int fd;
-	unsigned int pf;
-	unsigned int qid;
-	enum q_mode mode;
-	enum q_dir dir;
-	unsigned int idx_tmr;
-	unsigned int idx_cnt;
-	unsigned int idx_rngsz;
-	unsigned int pfetch_en;
-	unsigned int pkt_burst;
-	unsigned int pkt_sz;
-	unsigned int cmptsz;
-	unsigned int stm_mode;
-	unsigned int pipe_gl_max;
-	unsigned int pipe_flow_id;
-	unsigned int pipe_slr_id;
-	unsigned int pipe_tdest;
-	unsigned int mm_chnl;
-	int keyhole_en;
-	unsigned int aperture_sz;
-	unsigned long int offset;
-#ifdef DEBUG
-	unsigned long long total_nodes;
-	unsigned long long freed_nodes;
-#endif
-	unsigned int thread_id;
-#if THREADS_SET_CPU_AFFINITY
-	int cpu;
-#endif
-};
-
-struct list_head {
-	struct list_head *next;
-	unsigned int max_events;
-	unsigned int completed_events;
-	io_context_t ctxt;
-};
-
-#define container_of(ptr, type, member) ({                      \
-        const struct iocb *__mptr = (ptr);    \
-        (type *)( (char *)__mptr - offsetof(type,member) );})
-
-static unsigned int *io_exit = 0;
-int io_exit_id;
-static unsigned int mm_chnl = 0;
-static unsigned int force_exit = 0;
-static unsigned int num_q = 0;
-static unsigned int pkt_sz = 0;
-static unsigned int num_pkts;
-static int keyhole_en = 0;
-static unsigned int aperture_sz = 0;
-/* For MM Channel =0 or 1 , offset is used for both MM Channels */
-static unsigned long int offset_ch0 = 0;
-/*In MM Channel interleaving offset_ch1 is the offset used for Channel 1*/
-static unsigned long int offset_ch1 = 0;
-static int offset_q_en= 0;
-static unsigned long int h2c_q_offset_intvl = 0;
-static unsigned long int c2h_q_offset_intvl = 0;
-static unsigned long int h2c_q_start_offset= 0;
-static unsigned long int c2h_q_start_offset= 0;
-static unsigned int tsecs = 0;
-struct io_info *info = NULL;
-static char cfg_name[20];
-static unsigned int pci_bus = 0;
-static unsigned int pci_dev = 0;
-static unsigned int vf_perf = 0;
-static char *dmactl_dev_prefix_str;
-char *pf_dmactl_prefix_str = "qdma";
-char *vf_dmactl_prefix_str = "qdmavf";
-unsigned int num_thrds = 0;
-unsigned int num_thrds_per_q = 1;
-int shmid;
-int base_pid;
-enum q_mode mode;
-enum q_dir dir;
-unsigned int num_pf = 0;
-unsigned int pf_start = 0;
-unsigned int q_start = 0;
-unsigned int idx_rngsz = 0;
-unsigned int idx_tmr = 0;
-unsigned int idx_cnt = 0;
-unsigned int pfetch_en = 0;
-unsigned int cmptsz = 0;
-unsigned int no_memcpy = 1;
-unsigned int stm_mode = 0;
-unsigned int *pipe_gl_max_lst = NULL;
-unsigned int *pipe_flow_id_lst = NULL;
-unsigned int *pipe_slr_id_lst = NULL;
-unsigned int *pipe_tdest_lst = NULL;
-char trigmode[10];
-char pci_dump[PCI_DUMP_CMD_LEN];
-unsigned int dump_en = 0;
-unsigned int marker_en = 1;
-static struct timespec g_ts_start;
-static unsigned char *q_lst_stop = NULL;
-int q_lst_stop_mid;
-int *child_pid_lst = NULL;
-unsigned int glbl_rng_sz[QDMA_GLBL_MAX_ENTRIES];
-#if THREADS_SET_CPU_AFFINITY
-unsigned int num_processors = 1;
-#endif
-#if DATA_VALIDATION
-unsigned short valid_data[2*1024];
-#endif
-
-static void clear_events(struct io_info *_info, struct list_head *node);
-static int setup_thrd_env(struct io_info *_info, unsigned char is_new_fd);
-
-static int arg_read_int(char *s, uint32_t *v)
-{
-    char *p = NULL;
-
-
-    *v = strtoul(s, &p, 0);
-    if (*p && (*p != '\n') && !isblank(*p)) {
-	printf("Error:something not right%s %s %s",s, p, isblank(*p)? "true": "false");
-        return -EINVAL;
-    }
-    return 0;
-}
-
-static int arg_read_long_uint(char *s, uint64_t *v)
-{
-    char *p = NULL;
-    *v = strtoull(s, &p, 0);
-    if (*p && (*p != '\n') && !isblank(*p)) {
-	printf("Error:something not right%s %s %s",s, p, isblank(*p)? "true": "false");
-        return -EINVAL;
-    }
-    return 0;
-}
-
-static int update_q_off(struct io_info *info)
-{
-	if (info->dir == Q_DIR_H2C) {
-		info->offset += h2c_q_start_offset + (info->qid * h2c_q_offset_intvl);
-	} else {
-		info->offset += c2h_q_start_offset + (info->qid * c2h_q_offset_intvl);
-	}
-}
-
-static int arg_read_int_array(char *s, unsigned int *v, unsigned int max_arr_size)
-{
-    unsigned int slen = strlen(s);
-    unsigned int trail_blanks = num_trailing_blanks(s);
-    char *str = (char *)malloc(slen - trail_blanks + 1);
-    char *elem;
-    int cnt = 0;
-
-    memset(str, '\0', slen + 1);
-    strncpy(str, s + 1, slen - trail_blanks - 2);
-    str[slen] = '\0';
-
-    elem = strtok(str, " ,");/* space or comma separated */
-    while (elem != NULL) {
-	    int ret;
-
-        ret = arg_read_int(elem, &v[cnt]);
-        if (ret < 0) {
-            printf("ERROR: Invalid array element %sin %s\n", elem, s);
-            exit(0);
-        }
-        cnt++;
-        elem = strtok(NULL, " ,");
-        if (cnt > (int)max_arr_size) { /* to avoid out of bounds */
-            printf("ERROR: More than expected number of elements in %s - expected = %u\n",
-                   str, max_arr_size);
-            exit(0);
-        }
-    }
-    free(str);
-
-    return cnt;
-}
-
-static int get_array_len(char *s)
-{
-    int i, len = 0;
-
-    if (strlen(s) < 2)
-        return -EINVAL;
-    if ((s[0] != '(') && (s[strlen(s) - 1] != ')'))
-        return -EINVAL;
-    if ((s[0] == '(') && (s[1] == ')'))
-        return 0;
-    for (i = 0; i < (int)strlen(s); i++) {
-        if ((s[i] == ' ') || (s[i] == ',')) /* space or comma separated */
-                len++;
-        if (s[i] == ')')
-            break;
-    }
-
-    return (len + 1);
-
-}
-
-static void dump_thrd_info(struct io_info *_info) {
-
-	printf("q_name = %s\n", _info->q_name);
-	printf("dir = %d\n", _info->dir);
-	printf("mode = %d\n", _info->mode);
-	printf("idx_cnt = %u\n", _info->idx_cnt);
-	printf("idx_rngsz = %u\n", _info->idx_rngsz);
-	printf("idx_tmr = %u\n", _info->idx_tmr);
-	printf("pf = %x\n", _info->pf);
-	printf("qid = %u\n", _info->qid);
-	printf("fd = %d\n", _info->fd);
-	printf("trig_mode = %s\n", _info->trig_mode);
-	printf("q_ctrl = %u\n", _info->q_ctrl);
-	printf("q_added = %u\n", _info->q_added);
-	printf("q_started = %u\n", _info->q_started);
-	printf("offset = 0x%lx\n", _info->offset);
-	if (stm_mode) {
-		printf("pipe_gl_max = %u\n", _info->pipe_gl_max);
-		printf("pipe_flow_id = %u\n", _info->pipe_flow_id);
-		printf("pipe_slr_id = %u\n", _info->pipe_slr_id);
-		printf("pipe_tdest = %u\n", _info->pipe_tdest);
-	}
-#if THREADS_SET_CPU_AFFINITY
-	printf("cpu = %u\n", _info->cpu);
-#endif
-}
-
-struct dma_meminfo {
-	void *memptr;
-	unsigned int num_blks;
-};
-
-#define USE_MEMPOOL
-
-struct mempool_handle {
-	void *mempool;
-	unsigned int mempool_blkidx;
-	unsigned int mempool_blksz;
-	unsigned int total_memblks;
-	struct dma_meminfo *mempool_info;
-#ifdef DEBUG
-	unsigned int id;
-	unsigned int loop;
-#endif
-};
-
-static struct mempool_handle ctxhandle;
-static struct mempool_handle iocbhandle;
-static struct mempool_handle datahandle;
-
-static void mempool_create(struct mempool_handle *mpool, unsigned int entry_size, unsigned int max_entries)
-{
-#ifdef USE_MEMPOOL
-	if (posix_memalign((void **)&mpool->mempool, DEFAULT_PAGE_SIZE,
-			   max_entries * (entry_size + sizeof(struct dma_meminfo)))) {
-		printf("OOM\n");
-		exit(1);
-	}
-	mpool->mempool_info = (struct dma_meminfo *)(((char *)mpool->mempool) + (max_entries * entry_size));
-#endif
-	mpool->mempool_blksz = entry_size;
-	mpool->total_memblks = max_entries;
-	mpool->mempool_blkidx = 0;
-}
-
-static void mempool_free(struct mempool_handle *mpool)
-{
-#ifdef USE_MEMPOOL
-	free(mpool->mempool);
-	mpool->mempool = NULL;
-#endif
-}
-
-static void *dma_memalloc(struct mempool_handle *mpool, unsigned int num_blks)
-{
-	unsigned int _mempool_blkidx = mpool->mempool_blkidx;
-	unsigned int tmp_blkidx = _mempool_blkidx;
-	unsigned int max_blkcnt = tmp_blkidx + num_blks;
-	unsigned int i, avail = 0;
-	void *memptr = NULL;
-	char *mempool = mpool->mempool;
-	struct dma_meminfo *_mempool_info = mpool->mempool_info;
-	unsigned int _total_memblks = mpool->total_memblks;
-
-#ifdef USE_MEMPOOL
-	if (max_blkcnt > _total_memblks) {
-		tmp_blkidx = 0;
-		max_blkcnt = num_blks;
-	}
-	for (i = tmp_blkidx; (i < _total_memblks) && (i < max_blkcnt); i++) {
-		if (_mempool_info[i].memptr) { /* occupied blks ahead */
-			i += _mempool_info[i].num_blks;
-			max_blkcnt = i + num_blks;
-			avail = 0;
-			tmp_blkidx = i;
-		} else
-			avail++;
-		if (max_blkcnt > _total_memblks) { /* reached the end of mempool. circle through*/
-			if (num_blks > _mempool_blkidx) return NULL; /* Continuous num_blks not available */
-			i = 0;
-			avail = 0;
-			max_blkcnt = num_blks;
-			tmp_blkidx = 0;
-		}
-	}
-	if (avail < num_blks) { /* no required available blocks */
-		return NULL;
-	}
-
-	memptr = &(mempool[tmp_blkidx * mpool->mempool_blksz]);
-	_mempool_info[tmp_blkidx].memptr = memptr;
-	_mempool_info[tmp_blkidx].num_blks = num_blks;
-	mpool->mempool_blkidx = tmp_blkidx + num_blks;
-#else
-	memptr = calloc(num_blks, mpool->mempool_blksz);
-#endif
-
-	return memptr;
-}
-
-static void dma_free(struct mempool_handle *mpool, void *memptr)
-{
-#ifdef USE_MEMPOOL
-	struct dma_meminfo *_meminfo = mpool->mempool_info;
-	unsigned int idx;
-
-	if (!memptr) return;
-
-	idx = (memptr - mpool->mempool)/mpool->mempool_blksz;
-#ifdef DEBUG
-	if (idx >= mpool->total_memblks) {
-		printf("Asserting: %u:Invalid memory index %u acquired\n", mpool->id, idx);
-		while(1);
-	}
-#endif
-
-	_meminfo[idx].num_blks = 0;
-	_meminfo[idx].memptr = NULL;
-#else
-	free(memptr);
-#endif
-}
-
-static void xnl_dump_response(const char *resp)
-{
-	printf("%s", resp);
-}
-
-static int qdma_register_write(unsigned char is_vf,
-		unsigned int pf, int bar, unsigned long reg,
-		unsigned long value)
-{
-	struct xcmd_info xcmd;
-	struct xcmd_reg *regcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-
-	regcmd = &xcmd.req.reg;
-	xcmd.op = XNL_CMD_REG_WRT;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = pf;
-	xcmd.log_msg_dump = xnl_dump_response;
-	regcmd->bar = bar;
-	regcmd->reg = reg;
-	regcmd->val = value;
-	regcmd->sflags = XCMD_REG_F_BAR_SET |
-		XCMD_REG_F_REG_SET |
-		XCMD_REG_F_VAL_SET;
-
-	ret = qdma_reg_write(&xcmd);
-	if (ret < 0)
-		printf("QDMA_REG_WRITE Failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_register_read(unsigned char is_vf,
-		unsigned int pf, int bar, unsigned long reg,
-		unsigned int *reg_val)
-{
-	struct xcmd_info xcmd;
-	struct xcmd_reg *regcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-
-	regcmd = &xcmd.req.reg;
-	xcmd.op = XNL_CMD_REG_RD;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = pf;
-	xcmd.log_msg_dump = xnl_dump_response;
-	regcmd->bar = bar;
-	regcmd->reg = reg;
-	regcmd->sflags = XCMD_REG_F_BAR_SET |
-		XCMD_REG_F_REG_SET;
-
-	ret = qdma_reg_read(&xcmd);
-	if (ret < 0)
-		printf("QDMA_REG_READ Failed, ret :%d\n", ret);
-
-	*reg_val = regcmd->val;
-
-	return ret;
-}
-
-static void create_thread_info(void)
-{
-	unsigned int base = 0;
-	unsigned int dir_factor = 1;
-	unsigned int q_ctrl = 1;
-	unsigned int i, j, k;
-	struct io_info *_info;
-	int last_fd = -1;
-	unsigned char is_new_fd = 1;
-#if THREADS_SET_CPU_AFFINITY
-	int h2c_cpu = 0;
-	int max_h2c_cpu = (num_processors / 2);
-	int c2h_cpu = max_h2c_cpu;
-	int max_c2h_cpu = (num_processors / 2) + ((num_processors % 2) ? 1 : 0);
-#endif
-
-	if (dir == Q_DIR_BI)
-		dir_factor = 2;
-	if ((shmid = shmget(IPC_PRIVATE, num_thrds * sizeof(struct io_info), IPC_CREAT | 0666)) < 0)
-	{
-		perror("smget returned -1\n");
-		error(-1, errno, " ");
-		exit(-1);
-	}
-	if ((q_lst_stop_mid = shmget(IPC_PRIVATE, dir_factor * num_q * num_pf, IPC_CREAT | 0666)) < 0)
-	{
-		perror("smget returned -1\n");
-		error(-1, errno, " ");
-		exit(-1);
-	}
-	if ((q_lst_stop = (unsigned char *) shmat(q_lst_stop_mid, NULL, 0)) == (unsigned char *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-		exit(1);
-	}
-	memset(q_lst_stop, 0 , num_q);
-	if (shmdt(q_lst_stop) == -1) {
-		perror("shmdt returned -1\n");
-	        error(-1, errno, " ");
-	}
-	if ((_info = (struct io_info *) shmat(shmid, NULL, 0)) == (struct io_info *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-	}
-
-	if ((io_exit_id = shmget(IPC_PRIVATE,sizeof(unsigned int), IPC_CREAT | 0666)) < 0)
-	{
-		perror("smget returned -1\n");
-		error(-1, errno, " ");
-		exit(-1);
-	}
-
-	if ((io_exit = (unsigned int *) shmat(io_exit_id, NULL, 0)) == (unsigned int *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-	}
-	prep_pci_dump();
-	if ((mode == Q_MODE_ST) && (dir != Q_DIR_H2C)) {
-		qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x50, cmptsz);
-		qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x90, pkt_sz);
-		usleep(1000);
-	}
-
-	base = 0;
-	for (k = 0; k < num_pf; k++) {
-		for (i = 0 ; i < num_q; i++) {
-			q_ctrl = 1;
-#if THREADS_SET_CPU_AFFINITY
-			if (h2c_cpu >= max_h2c_cpu)
-				h2c_cpu = 0;
-			if (c2h_cpu >= (max_h2c_cpu + max_h2c_cpu))
-				c2h_cpu = max_h2c_cpu;
-#endif
-			for (j = 0; j < num_thrds_per_q; j++) {
-				is_new_fd = 1;
-				if ((dir == Q_DIR_H2C) || (dir == Q_DIR_BI)) {
-					snprintf(_info[base].q_name, 20, "%s%02x%02x%01x-%s-%u",
-					dmactl_dev_prefix_str, pci_bus, pci_dev,
-					pf_start+k, (mode == Q_MODE_MM) ? "MM" : "ST", q_start + i);
-					_info[base].dir = Q_DIR_H2C;
-					_info[base].mode = mode;
-					_info[base].idx_rngsz = idx_rngsz;
-					_info[base].pf = (pci_bus << 12) | (pci_dev << 4) | (pf_start + k);
-					_info[base].qid = q_start + i;
-					_info[base].q_ctrl = q_ctrl;
-					_info[base].fd = last_fd;
-					_info[base].pkt_burst = num_pkts;
-					if(mm_chnl == MM_CHANNEL_INTERLEAVE)
-						_info[base].mm_chnl = _info[base].qid % 2;
-					else
-						_info[base].mm_chnl = mm_chnl;
-					_info[base].pkt_sz = pkt_sz;
-					if ((_info[base].mode == Q_MODE_ST) &&
-							(stm_mode)) {
-						_info[base].stm_mode = stm_mode;
-						_info[base].pipe_gl_max = pipe_gl_max_lst[(k*num_q) + i];
-						_info[base].pipe_flow_id = pipe_flow_id_lst[(k*num_q) + i];
-						_info[base].pipe_slr_id = pipe_slr_id_lst[(k*num_q) + i];
-						_info[base].pipe_tdest = pipe_tdest_lst[(k*num_q) + i];
-					}
-
-					if (_info[base].mode == Q_MODE_MM &&
-							keyhole_en) {
-						_info[base].aperture_sz = aperture_sz;
-					}
-					if(mm_chnl == MM_CHANNEL_INTERLEAVE && _info[base].mm_chnl )
-						_info[base].offset = offset_ch1;
-					else
-						_info[base].offset = offset_ch0;
-					if(offset_q_en)
-						update_q_off(&_info[base]);
-#if THREADS_SET_CPU_AFFINITY
-					_info[base].cpu = h2c_cpu;
-#endif
-					sem_init(&_info[base].llock, 0, 1);
-					if (q_ctrl != 0) {
-						last_fd = setup_thrd_env(&_info[base], is_new_fd);
-					}
-					_info[base].thread_id = base;
-//					dump_thrd_info(&_info[base]);
-					_info[base].exit_check_count = 0;
-					base++;
-					is_new_fd = 0;
-				}
-				if (dir != Q_DIR_H2C)
-				{
-					snprintf(_info[base].q_name, 20, "%s%02x%02x%01x-%s-%u",
-					dmactl_dev_prefix_str, pci_bus, pci_dev, pf_start+k, (mode == Q_MODE_MM) ? "MM" : "ST", q_start + i);
-					_info[base].exit_check_count = 0;
-					_info[base].dir = Q_DIR_C2H;
-					_info[base].mode = mode;
-					_info[base].idx_rngsz = idx_rngsz;
-					_info[base].pf = (pci_bus << 12) | (pci_dev << 4) | (pf_start + k);
-					_info[base].qid = q_start + i;
-					_info[base].q_ctrl = q_ctrl;
-					_info[base].pkt_burst = num_pkts;
-					if(mm_chnl == MM_CHANNEL_INTERLEAVE)
-						_info[base].mm_chnl = _info[base].qid % 2;
-					else
-						_info[base].mm_chnl = mm_chnl;
-					if(mm_chnl == MM_CHANNEL_INTERLEAVE && _info[base].mm_chnl )
-						_info[base].offset = offset_ch1;
-					else
-						_info[base].offset = offset_ch0;
-					if(offset_q_en)
-						update_q_off(&_info[base]);
-
-					_info[base].pkt_sz = pkt_sz;
-#if THREADS_SET_CPU_AFFINITY
-					_info[base].cpu = c2h_cpu;
-#endif
-					if (_info[base].mode == Q_MODE_ST) {
-						_info[base].pfetch_en = pfetch_en;
-						_info[base].idx_cnt = idx_cnt;
-						_info[base].idx_tmr = idx_tmr;
-						_info[base].cmptsz = cmptsz;
-						strncpy(_info[base].trig_mode, trigmode, 10);
-						if (stm_mode) {
-							_info[base].stm_mode = stm_mode;
-							_info[base].pipe_gl_max = pipe_gl_max_lst[(k*num_q) + i];
-							_info[base].pipe_flow_id = pipe_flow_id_lst[(k*num_q) + i];
-							_info[base].pipe_slr_id = pipe_slr_id_lst[(k*num_q) + i];
-							_info[base].pipe_tdest = pipe_tdest_lst[(k*num_q) + i];
-						}
-					}
-					sem_init(&_info[base].llock, 0, 1);
-					_info[base].fd = last_fd;
-					if (q_ctrl != 0) {
-						last_fd = setup_thrd_env(&_info[base], is_new_fd);
-					}
-					_info[base].thread_id = base;
-//					dump_thrd_info(&_info[base]);
-					base++;
-				}
-				q_ctrl = 0;
-			}
-#if THREADS_SET_CPU_AFFINITY
-			h2c_cpu++;
-			c2h_cpu++;
-#endif
-		}
-	}
-	if ((mode == Q_MODE_ST) && (dir != Q_DIR_H2C)) {
-		if (!stm_mode) {
-			qdma_register_write(vf_perf, (pci_bus << 12) | (pci_dev << 4) | pf_start, 2, 0x08,
-					QDMA_UL_IMM_DUMP_C2H_DATA | QDMA_UL_IMM_DUMP_CMPT_FIFO/* | QDMA_UL_DROP_ENABLE*/);
-			usleep(1000);
-		}
-	}
-	if (shmdt(_info) == -1) {
-		perror("shmdt returned -1\n");
-	        error(-1, errno, " ");
-	}
-}
-
-static void parse_config_file(const char *cfg_fname)
-{
-	char *linebuf = NULL;
-	char *realbuf;
-	FILE *fp;
-	size_t linelen = 0;
-	size_t numread;
-	size_t numblanks;
-	unsigned int linenum = 0;
-	char *config, *value;
-	unsigned int dir_factor = 1;
-	char rng_sz[100] = {'\0'};
-	char rng_sz_path[200] = {'\0'};
-    	int rng_sz_fd, ret = 0;
-
-	fp = fopen(cfg_fname, "r");
-	if (fp == NULL)
-		exit(EXIT_FAILURE);
-
-	while ((numread = getline(&linebuf, &linelen, fp)) != -1) {
-		numread--;
-		linenum++;
-		linebuf = strip_comments(linebuf);
-		if (!linebuf)
-			continue;
-		realbuf = strip_blanks(linebuf, &numblanks);
-		linelen -= numblanks;
-		if (0 == linelen)
-			continue;
-		config = strtok(realbuf, "=");
-		value = strtok(NULL, "=");
-		if (!strncmp(config, "mode", 4)) {
-			if (!strncmp(value, "mm", 2))
-				mode = Q_MODE_MM;
-			else if(!strncmp(value, "st", 2))
-				mode = Q_MODE_ST;
-			else {
-				printf("Error: Unkown mode");
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "dir", 3)) {
-			if (!strncmp(value, "h2c", 3))
-				dir = Q_DIR_H2C;
-			else if(!strncmp(value, "c2h", 3))
-				dir = Q_DIR_C2H;
-			else if(!strncmp(value, "bi", 2))
-				dir = Q_DIR_BI;
-			else {
-				printf("Error: Unkown dir");
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "name", 3)) {
-			copy_value(value, cfg_name, 20);
-		} else if (!strncmp(config, "pf_range", 8)) {
-			char *pf_range_start = strtok(value, ":");
-			char *pf_range_end = strtok(NULL, ":");
-			unsigned int start;
-			unsigned int end;
-			if (arg_read_int(pf_range_start, &start)) {
-				printf("Error: Invalid pf range start:%s\n", pf_range_start);
-				goto prase_cleanup;
-			}
-			if (arg_read_int(pf_range_end, &end)) {
-				printf("Error: Invalid pf range end:%s\n", pf_range_end);
-				goto prase_cleanup;
-			}
-
-			pf_start = start;
-			num_pf = end - start + 1;
-		} else if (!strncmp(config, "q_range", 7)) {
-			char *q_range_start = strtok(value, ":");
-			char *q_range_end = strtok(NULL, ":");
-			unsigned int start;
-			unsigned int end;
-			if (arg_read_int(q_range_start, &start)) {
-				printf("Error: Invalid q range start:%s\n", q_range_start);
-				goto prase_cleanup;
-			}
-			if (arg_read_int(q_range_end, &end)) {
-				printf("Error: Invalid q range end:%s\n", q_range_end);
-				goto prase_cleanup;
-			}
-
-			q_start = start;
-			num_q = end - start + 1;
-		} else if (!strncmp(config, "rngidx", 6)) {
-			if (arg_read_int(value, &idx_rngsz)) {
-				printf("Error: Invalid idx_rngsz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "tmr_idx", 7)) {
-			if (arg_read_int(value, &idx_tmr)) {
-				printf("Error: Invalid idx_tmr:%s\n", value);
-				goto prase_cleanup;
-			}
-		}
-		if (!strncmp(config, "cntr_idx", 8)) {
-		    if (arg_read_int(value, &idx_cnt)) {
-			printf("Error: Invalid idx_cnt:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "pfetch_en", 9)) {
-		    if (arg_read_int(value, &pfetch_en)) {
-			printf("Error: Invalid pfetch_en:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "cmptsz", 5)) {
-		    if (arg_read_int(value, &cmptsz)) {
-			printf("Error: Invalid cmptsz:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "dump_en", 5)) {
-		    if (arg_read_int(value, &dump_en)) {
-			printf("Error: Invalid dump_en:%s\n", value);
-			goto prase_cleanup;
-		    }
-		} else if (!strncmp(config, "trig_mode", 9)) {
-		    copy_value(value, trigmode, 10);
-		} else if (!strncmp(config, "runtime", 9)) {
-			if (arg_read_int(value, &tsecs)) {
-				printf("Error: Invalid tsecs:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "num_threads", 11)) {
-			if (arg_read_int(value, &num_thrds_per_q)) {
-				printf("Error: Invalid num_threads:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pkt_sz", 6)) {
-			if (arg_read_int(value, &pkt_sz)) {
-				printf("Error: Invalid pkt_sz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "mm_chnl", 7)) {
-			if (arg_read_int(value, &mm_chnl)) {
-				printf("Error: Invalid mm_chnl:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "num_pkt", 7)) {
-			if (arg_read_int(value, &num_pkts)) {
-				printf("Error: Invalid num_pkt:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "aperture_sz", 11)) {
-			if (arg_read_int(value, &aperture_sz)) {
-				printf("Error: Invalid aperture size:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "offset_ch1", 10)) {
-			if (arg_read_long_uint(value, &offset_ch1)) {
-				printf("Error: Invalid aperture offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "offset_q_en", 11)) {
-			if (arg_read_int(value, &offset_q_en)) {
-				printf("Error: Invalid offset_q_en option:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "h2c_q_offset_intvl", 18)) {
-			if (arg_read_long_uint(value, &h2c_q_offset_intvl)) {
-				printf("Error: Invalid H2C q offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "c2h_q_offset_intvl", 18)) {
-			if (arg_read_long_uint(value, &c2h_q_offset_intvl)) {
-				printf("Error: Invalid C2H q offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "h2c_q_start_offset", 18)) {
-			if (arg_read_long_uint(value, &h2c_q_start_offset)) {
-				printf("Error: Invalid H2C q offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "c2h_q_start_offset", 18)) {
-			if (arg_read_long_uint(value, &c2h_q_start_offset)) {
-				printf("Error: Invalid H2C q offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "offset_ch0", 10)) {
-			if (arg_read_long_uint(value, &offset_ch0)) {
-				printf("Error: Invalid aperture offset:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "keyhole_en", 7)) {
-			if (arg_read_int(value, &keyhole_en)) {
-				printf("Error: Invalid keyhole option:%s\n", value);
-				goto prase_cleanup;
-			}
-		}
-		else if (!strncmp(config, "no_memcpy", 9)) {
-			if (arg_read_int(value, &no_memcpy)) {
-				printf("Error: Invalid no_memcpy:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "stm_mode", 8)) {
-			if (arg_read_int(value, &stm_mode)) {
-				printf("Error: Invalid stm_mode:%s\n", value);
-				goto prase_cleanup;
-			}
-	        } else if (!strncmp(config, "pipe_gl_max_lst", 15)) {
-	            int arr_len = get_array_len(value);
-	            int i;
-
-	            if ((arr_len < 0) || (arr_len != (int)(num_q*num_pf))) {
-	                printf("ERROR: Invalid number of entries in pipe_gl_max_lst - %s\n", value);
-	                exit(1);
-	            }
-	            if (arr_len) {
-			    pipe_gl_max_lst = (unsigned int *)calloc(arr_len, sizeof(unsigned int));
-			    int ret = arg_read_int_array(value, pipe_gl_max_lst, arr_len);
-			    if (ret <= 0) {
-				printf("Error: Invalid pipe_gl_max_lst:%s\n", value);
-				exit(1);
-			    }
-	            }
-	        } else if (!strncmp(config, "pipe_flow_id_lst", 16)) {
-	            int arr_len = get_array_len(value);
-	            int i;
-
-	            if ((arr_len < 0) || (arr_len != (int)(num_q*num_pf))) {
-	                printf("ERROR: Invalid number of entries in pipe_flow_id_lst - %s\n", value);
-	                exit(1);
-	            }
-	            if (arr_len) {
-			    pipe_flow_id_lst = (unsigned int *)calloc(arr_len, sizeof(unsigned int));
-			    int ret = arg_read_int_array(value, pipe_flow_id_lst, arr_len);
-			    if (ret <= 0) {
-				printf("Error: Invalid pipe_flow_id_lst:%s\n", value);
-				exit(1);
-			    }
-	            }
-	        } else if (!strncmp(config, "pipe_slr_id_lst", 15)) {
-	            int arr_len = get_array_len(value);
-	            int i;
-
-	            if ((arr_len < 0) || (arr_len != (int)(num_q*num_pf))) {
-	                printf("ERROR: Invalid number of entries in pipe_slr_id_lst - %s\n", value);
-	                exit(1);
-	            }
-	            if (arr_len) {
-			    pipe_slr_id_lst = (unsigned int *)calloc(arr_len, sizeof(unsigned int));
-			    int ret = arg_read_int_array(value, pipe_slr_id_lst, arr_len);
-			    if (ret <= 0) {
-				printf("Error: Invalid pipe_slr_id_lst:%s\n", value);
-				exit(1);
-			    }
-	            }
-	        } else if (!strncmp(config, "pipe_tdest_lst", 15)) {
-	            int arr_len = get_array_len(value);
-	            int i;
-
-	            if ((arr_len < 0) || (arr_len != (int)(num_q*num_pf))) {
-	                printf("ERROR: Invalid number of entries in pipe_tdest_lst - %s\n", value);
-	                exit(1);
-	            }
-	            if (arr_len) {
-			    pipe_tdest_lst = (unsigned int *)calloc(arr_len, sizeof(unsigned int));
-			    int ret = arg_read_int_array(value, pipe_tdest_lst, arr_len);
-			    if (ret <= 0) {
-				printf("Error: Invalid pipe_tdest_lst:%s\n", value);
-				exit(1);
-			    }
-	            }
-		} else if (!strncmp(config, "pci_bus", 7)) {
-			char *p;
-
-			pci_bus = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pci_dev", 7)) {
-			char *p;
-
-			pci_dev = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-
-		} else if (!strncmp(config, "marker_en", 9)) {
-			char *p;
-
-			marker_en = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "vf_perf", 7)) {
-			char *p;
-
-			vf_perf = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-
-		}
-	}
-
-	fclose(fp);
-	if (vf_perf == 0) {
-		dmactl_dev_prefix_str = pf_dmactl_prefix_str;
-	} else {
-		dmactl_dev_prefix_str = vf_dmactl_prefix_str;
-	}
-	if (stm_mode && (!pipe_gl_max_lst || !pipe_flow_id_lst ||
-			!pipe_slr_id_lst || !pipe_tdest_lst)) {
-		printf("Error: STM Attributes missing\n");
-		exit(1);
-	}
-
-	if (!pci_bus && !pci_dev) {
-		printf("Error: PCI bus information not provided\n");
-		exit(1);
-	}
-
-	snprintf(rng_sz_path, 200,"dma-ctl %s%05x global_csr | grep \"Global Ring\"| cut -d \":\" -f 2 > glbl_rng_sz",
-			 dmactl_dev_prefix_str, (pci_bus << 12) | (pci_dev << 4) | pf_start);
-	system(rng_sz_path);
-	snprintf(rng_sz_path, 200, "glbl_rng_sz");
-
-	rng_sz_fd = open(rng_sz_path, O_RDONLY);
-	if (rng_sz_fd < 0) {
-		printf("Could not open %s\n", rng_sz_path);
-		exit(1);
-	}
-	ret = read(rng_sz_fd, &rng_sz[1], 99);
-	if (ret < 0) {
-		printf("Error: Could not read the file\n");
-		exit(1);
-	}
-	close(rng_sz_fd);
-	/* below 2 line a work around to use arg_read_int_array */
-	rng_sz[0] = ' ';
-	rng_sz[strlen(rng_sz)] = ' ';
-	ret = arg_read_int_array(rng_sz, glbl_rng_sz, QDMA_GLBL_MAX_ENTRIES);
-	if (ret <= 0) {
-		printf("Error: Invalid ring size array:%s\n", rng_sz);
-		exit(1);
-	}
-
-	if (dir == Q_DIR_BI)
-		dir_factor = 2;
-	num_thrds = num_pf * num_q * dir_factor * num_thrds_per_q;
-	create_thread_info();
-	if (stm_mode) {
-		free(pipe_tdest_lst);
-		free(pipe_slr_id_lst);
-		free(pipe_flow_id_lst);
-		free(pipe_gl_max_lst);
-	}
-	return;
-
-prase_cleanup:
-	fclose(fp);
-}
-
-#define MAX_AIO_EVENTS 65536
-
-static void list_add_tail(struct io_info *_info, struct list_head *node)
-{
-    sem_wait(&_info->llock);
-    if (_info->head == NULL) {
-        _info->head = node;
-        _info->tail = node;
-    } else {
-        _info->tail->next = node;
-        _info->tail = node;
-    }
-#ifdef DEBUG
-    _info->total_nodes++;
-#endif
-    sem_post( &_info->llock);
-}
-
-static void list_add_head(struct io_info *_info, struct list_head *node)
-{
-    sem_wait(&_info->llock);
-    node->next = _info->head;
-    if (_info->head == NULL) {
-        _info->tail = node;
-    }
-    _info->head = node;
-    sem_post( &_info->llock);
-}
-
-static struct list_head *list_pop(struct io_info *_info)
-{
-	struct list_head *node = NULL;
-
-	sem_wait(&_info->llock);
-	node = _info->head;
-	if (_info->head == _info->tail)
-		_info->tail = NULL;
-
-	if (node)
-		_info->head = node->next;
-
-	sem_post(&_info->llock);
-
-	return node;
-}
-
-static void list_free(struct io_info *_info)
-{
-	struct list_head *node = NULL;
-
-	sem_wait(&_info->llock);
-#ifdef DEBUG
-	printf("Need to free %llu nodes in thrd%u\n", _info->total_nodes - _info->freed_nodes, _info->thread_id);
-#endif
-	node = _info->head;
-
-	while (node != NULL) {
-		struct list_head *prev_node = NULL;
-
-		clear_events(_info, node);
-		io_destroy(node->ctxt);
-		prev_node = node;
-		node = node->next;
-		dma_free(&ctxhandle, prev_node);
-#ifdef DEBUG
-		_info->freed_nodes++;
-#endif
-	}
-	sem_post(&_info->llock);
-}
-
-/* Subtract timespec t2 from t1
- *
- * Both t1 and t2 must already be normalized
- * i.e. 0 <= nsec < 1000000000
- */
-static int timespec_check(struct timespec *t)
-{
-	if ((t->tv_nsec < 0) || (t->tv_nsec >= 1000000000))
-		return -1;
-	return 0;
-
-}
-
-static void timespec_sub(struct timespec *t1, struct timespec *t2)
-{
-	if (timespec_check(t1) < 0) {
-		fprintf(stderr, "invalid time #1: %lld.%.9ld.\n",
-			(long long)t1->tv_sec, t1->tv_nsec);
-		return;
-	}
-	if (timespec_check(t2) < 0) {
-		fprintf(stderr, "invalid time #2: %lld.%.9ld.\n",
-			(long long)t2->tv_sec, t2->tv_nsec);
-		return;
-	}
-	t1->tv_sec -= t2->tv_sec;
-	t1->tv_nsec -= t2->tv_nsec;
-	if (t1->tv_nsec >= 1000000000) {
-		t1->tv_sec++;
-		t1->tv_nsec -= 1000000000;
-	} else if (t1->tv_nsec < 0) {
-		t1->tv_sec--;
-		t1->tv_nsec += 1000000000;
-	}
-}
-
-static void clear_events(struct io_info *_info, struct list_head *node) {
-	struct io_event *events = NULL;
-	int num_events = 0;
-	unsigned int j, bufcnt;
-	struct timespec ts_cur = {1, 0};
-
-	if (node->max_events <= node->completed_events)
-		return;
-#ifdef DEBUG
-	printf("Thrd%u: Need to clear %u/%u events in node %p\n",
-	       _info->thread_id, node->max_events - node->completed_events,
-	       node->max_events, node);
-#endif
-	events = calloc(node->max_events - node->completed_events, sizeof(struct io_event));
-	if (events == NULL) {
-		printf("OOM\n");
-		return;
-	}
-	do {
-		num_events = io_getevents(node->ctxt, 1,
-					  node->max_events - node->completed_events, events,
-					  &ts_cur);
-		for (j = 0; (num_events > 0) && (j < num_events); j++) {
-			struct iocb *iocb = (struct iocb *)events[j].obj;
-			struct iovec *iov;
-
-			node->completed_events++;
-			if (!iocb) {
-				printf("Error: Invalid IOCB from events\n");
-				continue;
-			}
-
-			iov = (struct iovec *)iocb->u.c.buf;
-
-			for (bufcnt = 0; bufcnt < iocb->u.c.nbytes; bufcnt++)
-				dma_free(&datahandle, iov[bufcnt].iov_base);
-			dma_free(&iocbhandle, iocb);
-		}
-	} while ((num_events > 0) && (node->max_events > node->completed_events));
-
-	free(events);
-}
-
-// this function returns 1 as long as long as traffic can run,
-// returns 0 when it is safe to exit the thread
-static int thread_exit_check(struct io_info *_info) {
-	if((0 == *io_exit) && (0 == force_exit) ){
-		return 1;
-	} else {
-		if ((_info->num_req_submitted != _info->num_req_completed) && _info->exit_check_count < 10000) {
-			if(_info->exit_check_count == 0) {
-				_info->num_req_completed_in_time = _info->num_req_completed;
-			}
-			_info->exit_check_count++;
-			usleep(100);
-			return 1;
-		} else {
-		    printf("Exit Check: tid =%u, req_sbmitted=%u req_completed=%u dir=%s, intime=%u loop_count=%d, \n",
-			   _info->thread_id, _info->num_req_submitted,
-			   _info->num_req_completed,_info->dir == Q_DIR_H2C ? "H2C": "C2H",
-			   _info->num_req_completed_in_time,  _info->exit_check_count);
-		    if(_info->exit_check_count != 0 ) {
-			    _info->num_req_completed = _info->num_req_completed_in_time;
-		    }
-		    return 0;
-		}
-
-	}
-}
-
-
-
-static void *event_mon(void *argp)
-{
-	struct io_info *_info = (struct io_info *)argp;
-	unsigned int j, bufcnt;
-	struct io_event *events = NULL;
-	int num_events = 0;
-	struct timespec ts_cur = {0, 0};
-#if DATA_VALIDATION
-	unsigned short *rcv_data;
-	unsigned int k;
-#endif
-
-	events = calloc(MAX_AIO_EVENTS, sizeof(struct io_event));
-	if (events == NULL) {
-		printf("OOM\n");
-		exit(1);
-	}
-
-	while (thread_exit_check(_info)) {
-		struct list_head *node = list_pop(_info);
-
-		if (!node)
-			continue;
-
-		memset(events, 0, MAX_AIO_EVENTS * sizeof(struct io_event));
-		do {
-			num_events = io_getevents(node->ctxt, 1,
-						  node->max_events - node->completed_events, events,
-						  &ts_cur);
-			for (j = 0; (num_events > 0) && (j < num_events); j++) {
-				struct iocb *iocb = (struct iocb *)events[j].obj;
-				struct iovec *iov = NULL;
-
-				if (!iocb) {
-					printf("Error: Invalid IOCB from events\n");
-					continue;
-				}
-				_info->num_req_completed += events[j].res;
-
-				iov = (struct iovec *)(iocb->u.c.buf);
-				if (!iov) {
-					printf("invalid buffer\n");
-					continue;
-				}
-#if DATA_VALIDATION
-				rcv_data = iov[0].iov_base;
-				for (k = 0; k < (iov[0].iov_len/2) && events[j].res && !(events[j].res2); k += 8) {
-					printf("%04x: %04x %04x %04x %04x %04x %04x %04x %04x\n", k,
-							rcv_data[k], rcv_data[k+1], rcv_data[k+2],
-							rcv_data[k+3], rcv_data[k+4], rcv_data[k+5],
-							rcv_data[k+6], rcv_data[k+7]);
-				}
-#endif
-				for (bufcnt = 0; (bufcnt < iocb->u.c.nbytes) && iov; bufcnt++)
-					dma_free(&datahandle, iov[bufcnt].iov_base);
-				dma_free(&iocbhandle, iocb);
-			}
-			if (num_events > 0)
-			    node->completed_events += num_events;
-			if (node->completed_events >= node->max_events) {
-				io_destroy(node->ctxt);
-				dma_free(&ctxhandle, node);
-				break;
-			}
-		} while(thread_exit_check(_info));
-		if (node->completed_events < node->max_events)
-		    list_add_head(_info, node);
-	}
-	free(events);
-#ifdef DEBUG
-	printf("Exiting evt_thrd: %u\n", _info->thread_id);
-#endif
-
-	return NULL;
-}
-
-static int qdma_prepare_reg_dump(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_REG_DUMP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-
-	return 0;
-}
-
-static int qdma_registers_dump(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_reg_dump(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_reg_dump(&xcmd);
-	if (ret < 0)
-		printf("Q_ failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_add(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_ADD;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	qparm->sflags = qparm->flags;
-
-	return 0;
-}
-
-static int qdma_add_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_add(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_add(&xcmd);
-	if (ret < 0)
-		printf("Q_ADD failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_start(struct xcmd_info *xcmd,
-		unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-	unsigned int f_arg_set = 0;
-
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_START;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-	f_arg_set |= 1 << QPARM_IDX;
-	qparm->fetch_credit = Q_ENABLE_C2H_FETCH_CREDIT;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-	f_arg_set |= 1 << QPARM_MODE;
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	f_arg_set |= 1 << QPARM_DIR;
-	qparm->qrngsz_idx = info->idx_rngsz;
-	f_arg_set |= 1 << QPARM_RNGSZ_IDX;
-	if ((info->dir == Q_DIR_C2H) && (info->mode == Q_MODE_ST)) {
-		if (cmptsz)
-			qparm->cmpt_entry_size = info->cmptsz;
-		else
-			qparm->cmpt_entry_size = XNL_ST_C2H_CMPT_DESC_SIZE_8B;
-		f_arg_set |= 1 << QPARM_CMPTSZ;
-		qparm->cmpt_tmr_idx = info->idx_tmr;
-		f_arg_set |= 1 << QPARM_CMPT_TMR_IDX;
-		qparm->cmpt_cntr_idx = info->idx_cnt;
-		f_arg_set |= 1 << QPARM_CMPT_CNTR_IDX;
-
-		if (!strcmp(info->trig_mode, "every"))
-			qparm->cmpt_trig_mode = 1;
-		else if (!strcmp(info->trig_mode, "usr_cnt"))
-			qparm->cmpt_trig_mode = 2;
-		else if (!strcmp(info->trig_mode, "usr"))
-			qparm->cmpt_trig_mode = 3;
-		else if (!strcmp(info->trig_mode, "usr_tmr"))
-			qparm->cmpt_trig_mode=4;
-		else if (!strcmp(info->trig_mode, "cntr_tmr"))
-			qparm->cmpt_trig_mode=5;
-		else if (!strcmp(info->trig_mode, "dis"))
-			qparm->cmpt_trig_mode = 0;
-		else {
-			printf("Error: unknown q trigmode %s.\n", info->trig_mode);
-			return -EINVAL;
-		}
-		f_arg_set |= 1 << QPARM_CMPT_TRIG_MODE;
-		if (pfetch_en)
-			qparm->flags |= XNL_F_PFETCH_EN;
-	}
-
-	if (info->mode == Q_MODE_MM) {
-		qparm->mm_channel = info->mm_chnl;
-		f_arg_set |= 1 <<QPARM_MM_CHANNEL;
-	}
-
-
-	if ((info->dir == Q_DIR_H2C) && (info->mode == Q_MODE_MM)) {
-		if (keyhole_en) {
-			qparm->aperture_sz = info->aperture_sz;
-			f_arg_set |= 1 << QPARM_KEYHOLE_EN;
-		}
-	}
-
-	qparm->flags |= (XNL_F_CMPL_STATUS_EN | XNL_F_CMPL_STATUS_ACC_EN |
-			XNL_F_CMPL_STATUS_PEND_CHK | XNL_F_CMPL_STATUS_DESC_EN |
-			XNL_F_FETCH_CREDIT);
-
-	qparm->sflags = f_arg_set;
-	return 0;
-}
-
-static int qdma_start_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_start(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_start(&xcmd);
-	if (ret < 0)
-		printf("Q_START failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_stop(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd)
-		return -EINVAL;
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_STOP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_stop_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_stop(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_stop(&xcmd);
-	if (ret < 0)
-		printf("Q_STOP failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_del(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_DEL;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_del_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_del(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_del(&xcmd);
-	if (ret < 0)
-		printf("Q_DEL failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_prepare_q_dump(struct xcmd_info *xcmd, unsigned char is_vf,
-		struct io_info *info)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_DUMP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = info->pf;
-	xcmd->log_msg_dump = xnl_dump_response;
-	qparm->idx = info->qid;
-	qparm->num_q = 1;
-
-	if (info->mode == Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (info->mode == Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (info->dir == Q_DIR_H2C)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (info->dir == Q_DIR_C2H)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-	return 0;
-}
-
-static int qdma_dump_queue(unsigned char is_vf, struct io_info *info)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_dump(&xcmd, is_vf, info);
-	if (ret < 0)
-		return ret;
-
-	return qdma_q_dump(&xcmd);
-}
-
-static void io_proc_cleanup(struct io_info *_info)
-{
-	unsigned int i;
-	unsigned int q_offset;
-	unsigned int dir_factor = (dir == Q_DIR_BI) ? 1 : 2;
-	unsigned int q_lst_idx_base;
-	unsigned char is_q_stop = (_info->q_ctrl && _info->q_started);
-	int reg_value = 0;
-
-	*io_exit = 1;
-	pthread_join(_info->evt_id, NULL);
-
-	q_offset = (_info->dir == Q_DIR_H2C) ? 0 : num_q;
-	if (dir != Q_DIR_BI)
-		q_offset = 0;
-	q_lst_idx_base = ((((_info->pf & 0x0000F) - pf_start) * num_q * dir_factor)
-			  + q_offset);
-	_info->q_wait_for_stop = 1;
-
-	while (is_q_stop) {
-		unsigned int j = 0;
-		for (i = 0; i < num_thrds; i++) {
-			if ((info[i].pf != _info->pf) || (info[i].qid != _info->qid)
-			    || (info[i].dir != _info->dir))
-				continue;
-			if (info[i].q_wait_for_stop)
-				j++;
-			else
-				break;
-		}
-		if (j != num_thrds_per_q)
-			sched_yield();
-		else
-			break;
-	}
-
-	if ((mode == Q_MODE_ST) && (dir != Q_DIR_H2C)) {
-		do {
-			for (i = 0; i < num_thrds; i++) {
-				if (!info[i].q_wait_for_stop)
-					break;
-			}
-			if (i == num_thrds)
-				break;
-		} while (1);
-
-		if (!stm_mode && _info->pid == base_pid) {
-			qdma_register_write(vf_perf, _info->pf, 2, 0x08,
-					    QDMA_UL_STOP_C2H_TRANSFER | QDMA_UL_STOP_CMPT_TRANSFER |
-					    QDMA_UL_IMM_DUMP_CMPT_FIFO | QDMA_UL_IMM_DUMP_C2H_DATA);
-
-			if (marker_en) {
-				qdma_register_write(vf_perf, _info->pf, 2, 0x08,
-						    QDMA_UL_IMM_DUMP_C2H_DATA | QDMA_UL_IMM_DUMP_CMPT_FIFO
-						    | QDMA_UL_SEND_MARKER_PACKET);
-
-				usleep(1000);
-
-				unsigned retry = 50;
-				while (retry) {
-					qdma_register_read(vf_perf, _info->pf, 2, 0x18, &reg_value);
-
-					usleep(500);
-					if (reg_value == 0x1)
-						break;
-					else
-						printf("Didnt received the c2h marker completion, retry count = %u\n",
-						       (50 - (retry - 1)));
-
-					usleep(500);
-					retry--;
-				}
-			}
-		}
-	}
-
-	if (is_q_stop) {
-		int s;
-		if (dump_en) {
-			s = qdma_dump_queue(vf_perf, _info);
-			if (s < 0) {
-				printf("Failed: queue_dump\nerrcode = %d\n", s);
-			}
-		}
-
-		if (_info->q_started) {
-			s = qdma_stop_queue(vf_perf, _info);
-			if (s < 0) {
-				printf("Failed: queue_stop\nerrcode = %d\n", s);
-			}
-		}
-		_info->q_started = 0;
-
-		q_lst_stop[q_lst_idx_base + _info->qid - q_start] = 1;
-	}
-
-	while (!(q_lst_stop[q_lst_idx_base + _info->qid - q_start])) {
-		sched_yield();
-	}
-
-	if (shmdt(q_lst_stop) == -1) {
-		perror("shmdt returned -1\n");
-		error(-1, errno, " ");
-	}
-
-	list_free(_info);
-
-	mempool_free(&iocbhandle);
-	mempool_free(&ctxhandle);
-	mempool_free(&datahandle);
-}
-
-static void *io_thread(void *argp)
-{
-	struct io_info *_info = (struct io_info *)argp;
-	int ret;
-	int s;
-	unsigned int max_io = MAX_AIO_EVENTS;
-	unsigned int cnt = 0;
-	pthread_attr_t attr;
-	unsigned int io_sz = _info->pkt_sz;
-	unsigned int burst_cnt = _info->pkt_burst;
-	unsigned int num_desc;
-	unsigned int max_reqs;
-	struct iocb *io_list[1];
-
-	if ((_info->mode == Q_MODE_ST) && (_info->dir == Q_DIR_C2H)) {
-		io_sz = _info->pkt_burst * _info->pkt_sz;
-		burst_cnt = 1;
-	}
-	num_desc = (io_sz + DEFAULT_PAGE_SIZE - 1) >> PAGE_SHIFT;
-	max_reqs = glbl_rng_sz[idx_rngsz];
-	mempool_create(&datahandle, num_desc*DEFAULT_PAGE_SIZE,  max_reqs + (burst_cnt * num_desc));
-	mempool_create(&ctxhandle, sizeof(struct list_head), max_reqs);
-	mempool_create(&iocbhandle, sizeof(struct iocb) + (burst_cnt * sizeof(struct iovec)), max_reqs + (burst_cnt * num_desc));
-#ifdef DEBUG
-	ctxhandle.id = 1;
-	datahandle.id = 0;
-	iocbhandle.id = 2;
-#endif
-	s = pthread_attr_init(&attr);
-	if (s != 0)
-		printf("pthread_attr_init failed\n");
-	if (pthread_create(&_info->evt_id, &attr, event_mon, _info))
-		exit(1);
-
-	do {
-		struct list_head *node = NULL;
-		struct timespec ts_cur;
-
-		if (tsecs) {
-			if (clock_gettime(CLOCK_MONOTONIC, &ts_cur) != 0)
-				break;
-			timespec_sub(&ts_cur, &g_ts_start);
-			if (ts_cur.tv_sec >= tsecs)
-				break;
-		}
-		node = dma_memalloc(&ctxhandle, 1);
-		if (!node) {
-			continue;
-		}
-		ret = io_queue_init(max_io, &node->ctxt);
-		if (ret != 0) {
-			printf("Error: io_setup error %d on %u\n", ret, _info->thread_id);
-			dma_free(&ctxhandle, node);
-			sched_yield();
-			continue;
-		}
-		cnt = 0;
-		node->max_events = max_io;
-		list_add_tail(_info, node);
-		do {
-			struct iovec *iov = NULL;
-			unsigned int iovcnt;
-			if (tsecs) {
-				ret = clock_gettime(CLOCK_MONOTONIC, &ts_cur);
-				timespec_sub(&ts_cur, &g_ts_start);
-				if (ts_cur.tv_sec >= tsecs) {
-					node->max_events = cnt;
-					break;
-				}
-			}
-
-			if (((_info->num_req_submitted - _info->num_req_completed) *
-					num_desc) > max_reqs) {
-				sched_yield();
-				continue;
-			}
-
-			io_list[0] = dma_memalloc(&iocbhandle, 1);
-			if (io_list[0] == NULL) {
-				if (cnt) {
-					node->max_events = cnt;
-					break;
-				}
-				else {
-					sched_yield();
-					continue;
-				}
-			}
-			iov = (struct iovec *)(io_list[0] + 1);
-			for (iovcnt = 0; iovcnt < burst_cnt; iovcnt++) {
-				iov[iovcnt].iov_base = dma_memalloc(&datahandle, 1);
-				if (iov[iovcnt].iov_base == NULL)
-					break;
-				iov[iovcnt].iov_len = io_sz;
-			}
-			if (iovcnt == 0) {
-				dma_free(&iocbhandle, io_list[0]);
-				continue;
-			}
-			if (_info->dir == Q_DIR_H2C) {
-				io_prep_pwritev(io_list[0],
-					       _info->fd,
-					       iov,
-					       iovcnt,
-					       _info->offset);
-			} else {
-				io_prep_preadv(io_list[0],
-					       _info->fd,
-					       iov,
-					       iovcnt,
-					       _info->offset);
-			}
-
-			ret = io_submit(node->ctxt, 1, io_list);
-			if(ret != 1) {
-				printf("Error: io_submit error:%d on %s for %u\n", ret, _info->q_name, cnt);
-				for (; iovcnt > 0; iovcnt--)
-					dma_free(&datahandle, iov[iovcnt].iov_base);
-				dma_free(&iocbhandle, io_list[0]);
-				node->max_events = cnt;
-				break;
-			} else {
-				cnt++;
-				_info->num_req_submitted += iovcnt;
-			}
-		} while (tsecs && !force_exit && (cnt < max_io));
-	} while (tsecs && !force_exit);
-
-	io_proc_cleanup(_info);
-
-	return NULL;
-}
-
-static void prep_pci_dump(void)
-{
-    memset(pci_dump, '\0', PCI_DUMP_CMD_LEN);
-    snprintf(pci_dump, PCI_DUMP_CMD_LEN, "lspci -s %02x:%02x.%01x -vvv", pci_bus, pci_dev, pf_start);
-}
-
-static int setup_thrd_env(struct io_info *_info, unsigned char is_new_fd)
-{
-	int s;
-
-	/* add queue */
-	s = qdma_add_queue(vf_perf, _info);
-	if (s < 0) {
-		exit(1);
-	}
-	_info->q_added++;
-
-	/* start queue */
-	s = qdma_start_queue(vf_perf, _info);
-	if (s < 0)
-		exit(1);
-	_info->q_started++;
-
-	if (is_new_fd) {
-		char node[25] = {'\0'};
-
-		snprintf(node, 25, "/dev/%s", _info->q_name);
-		_info->fd = open(node, O_RDWR);
-		if (_info->fd < 0) {
-			printf("Error: Cannot find %s\n", node);
-			exit(1);
-		}
-	}
-
-	s = ioctl(_info->fd, 0, &no_memcpy);
-	if (s != 0) {
-		printf("failed to set non memcpy\n");
-		exit(1);
-	}
-
-	return _info->fd;
-}
-
-static void dump_result(unsigned long long total_io_sz)
-{
-	unsigned long long gig_div = ((unsigned long long)tsecs * 1000000000);
-	unsigned long long meg_div = ((unsigned long long)tsecs * 1000000);
-	unsigned long long kil_div = ((unsigned long long)tsecs * 1000);
-	unsigned long long byt_div = ((unsigned long long)tsecs);
-
-	if ((total_io_sz/gig_div)) {
-		printf("BW = %f GB/sec\n", ((double)total_io_sz/gig_div));
-	} else if ((total_io_sz/meg_div)) {
-		printf("BW = %f MB/sec\n", ((double)total_io_sz/meg_div));
-	} else if ((total_io_sz/kil_div)) {
-		printf("BW = %f KB/sec\n", ((double)total_io_sz/kil_div));
-	} else
-		printf("BW = %f Bytes/sec\n", ((double)total_io_sz/byt_div));
-}
-
-static int is_valid_fd(int fd)
-{
-    return fcntl(fd, F_GETFL) != -1 || errno != EBADF;
-}
-
-static void cleanup(void)
-{
-	int i;
-	unsigned long long total_num_h2c_ios = 0;
-	unsigned long long total_num_c2h_ios = 0;
-	unsigned long long total_io_sz = 0;
-	int s;
-
-	if ((*io_exit == 0)) {
-		printf("force exit: cleaning up\n");
-		force_exit = 1;
-		if (getpid() != base_pid) {
-			if (shmdt(info) == -1){
-				perror("shmdt returned -1\n");
-				error(-1, errno, " ");
-			}
-			if ((shmdt(q_lst_stop) == -1)) {
-				perror("shmdt returned -1\n");
-				error(-1, errno, " ");
-			}
-		} else
-			for (i = 1; i < num_thrds; i++)
-				wait(NULL);
-	}/* else
-		printf("normal exit: cleaning up\n");*/
-
-	if (getpid() != base_pid) return;
-
-	if (child_pid_lst != NULL)
-		free(child_pid_lst);
-	if (shmctl(q_lst_stop_mid, IPC_RMID, NULL) == -1) {
-		perror("shmctl returned -1\n");
-	        error(-1, errno, " ");
-	}
-	if (info == NULL) return;
-
-	if (dump_en) {
-		s = system(pci_dump);
-		if (s != 0) {
-		    printf("Failed: %s\nerrcode = %d\n", pci_dump, s);
-		}
-
-		if(!vf_perf) {
-			s = qdma_registers_dump(vf_perf, &info[0]);
-			if (s < 0) {
-				printf("qdma_registers_dump failed. Errcode = %d\n", s);
-			}
-		}
-	}
-
-	for (i = 0; i < num_thrds; i++) {
-		if (info[i].q_ctrl && info[i].q_started) {
-			if (dump_en) {
-				s = qdma_dump_queue(vf_perf, &info[i]);
-				if (s < 0) {
-					printf("Failed: queue_dump\nerrcode = %d\n", s);
-				}
-			}
-
-			s = qdma_stop_queue(vf_perf, &info[i]);
-			if (s < 0) {
-				printf("Failed: queue_stop\nerrcode = %d\n", s);
-			}
-			info[i].q_started = 0;
-		}
-		if ((info[i].q_ctrl != 0) && (info[i].fd > 0) && is_valid_fd(info[i].fd))
-			close(info[i].fd);
-		if (info[i].q_ctrl && info[i].q_added) {
-			s = qdma_del_queue(vf_perf, &info[i]);
-			if (s < 0) {
-				printf("Failed: queue_del\nerrcode = %d\n", s);
-			}
-			info[i].q_added = 0;
-		}
-	}
-
-
-	if(marker_en) {
-		if (info[0].mode == Q_MODE_ST && info[0].dir == Q_DIR_C2H) {
-			qdma_register_write(vf_perf, info[0].pf, 2, 0x08,
-					QDMA_UL_IMM_DUMP_C2H_DATA | QDMA_UL_IMM_DUMP_CMPT_FIFO);
-		}
-	}
-
-	/* accumulate the statistics */
-	for (i = 0; i < num_thrds; i++) {
-		if (info[i].dir == Q_DIR_H2C)
-			total_num_h2c_ios += info[i].num_req_completed;
-		else {
-			if (info[i].mode == Q_MODE_ST)
-				info[i].num_req_completed *= info[i].pkt_burst;
-			total_num_c2h_ios += info[i].num_req_completed;
-		}
-	}
-	if (shmdt(info) == -1){
-		perror("shmdt returned -1\n");
-		error(-1, errno, " ");
-	}
-	if (shmctl(shmid, IPC_RMID, NULL) == -1) {
-		perror("shmctl returned -1\n");
-	        error(-1, errno, " ");
-	}
-	if (shmdt(io_exit) == -1){
-		perror("shmdt returned -1\n");
-		error(-1, errno, " ");
-	}
-	if (shmctl(io_exit_id, IPC_RMID, NULL) == -1) {
-		perror("shmctl returned -1\n");
-	        error(-1, errno, " ");
-	}
-	if (tsecs == 0) tsecs = 1;
-	if (0 != total_num_h2c_ios) {
-		total_io_sz = (total_num_h2c_ios*pkt_sz);
-		printf("WRITE: total pps = %llu", total_num_h2c_ios/tsecs);
-		printf(" ");
-		dump_result(total_io_sz);
-	}
-	if (0 != total_num_c2h_ios) {
-		total_io_sz = (total_num_c2h_ios*pkt_sz);
-		printf("READ: total pps = %llu", total_num_c2h_ios/tsecs);
-		printf(" ");
-		dump_result(total_io_sz);
-	}
-	if ((0 == total_num_h2c_ios) && (0 == total_num_c2h_ios))
-		printf("No IOs happened\n");
-}
-
-int main(int argc, char *argv[])
-{
-	int cmd_opt;
-	char *cfg_fname = NULL;
-	unsigned int i;
-	unsigned int aio_max_nr = 0xFFFFFFFF;
-	char aio_max_nr_cmd[100] = {'\0'};
-#if THREADS_SET_CPU_AFFINITY
-	cpu_set_t set;
-#endif
-
-	while ((cmd_opt = getopt_long(argc, argv, "vhxc:c:", long_opts,
-			    NULL)) != -1) {
-		switch (cmd_opt) {
-		case 0:
-			/* long option */
-			break;
-		case 'c':
-			/* config file name */
-			cfg_fname = strdup(optarg);
-			break;
-		default:
-			usage(argv[0]);
-			exit(0);
-			break;
-		}
-	}
-	if (cfg_fname == NULL)
-		return 1;
-
-#if THREADS_SET_CPU_AFFINITY
-	num_processors = get_nprocs_conf();
-	CPU_ZERO(&set);
-#endif
-#if DATA_VALIDATION
-	for (i = 0; i < 2*1024; i++)
-		valid_data[i] = i;
-#endif
-	parse_config_file(cfg_fname);
-	atexit(cleanup);
-
-	snprintf(aio_max_nr_cmd, 100, "echo %u > /proc/sys/fs/aio-max-nr", aio_max_nr);
-	system(aio_max_nr_cmd);
-
-	printf("dmautils(%u) threads\n", num_thrds);
-	child_pid_lst = calloc(num_thrds, sizeof(int));
-	base_pid = getpid();
-	child_pid_lst[0] = base_pid;
-	for (i = 1; i < num_thrds; i++) {
-		if (getpid() == base_pid)
-			child_pid_lst[i] = fork();
-		else
-			break;
-	}
-	if ((info = (struct io_info *) shmat(shmid, NULL, 0)) == (struct io_info *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-		exit(1);
-	}
-	if ((q_lst_stop = (unsigned char *) shmat(q_lst_stop_mid, NULL, 0)) == (unsigned char *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-		exit(1);
-	}
-
-	clock_gettime(CLOCK_MONOTONIC, &g_ts_start);
-	if (getpid() == base_pid) {
-		io_thread(&info[0]);
-#if THREADS_SET_CPU_AFFINITY
-		for (j = 0; j < num_processors; j++) {
-			if (j != info[0].cpu)
-				CPU_SET(j, &set);
-		}
-		if (sched_setaffinity(base_pid, sizeof(set), &set) == -1)
-			printf("setaffinity for thrd%u failed\n", info[i].thread_id);
-#endif
-	        for(i = 1; i < num_thrds; i++) {
-	            waitpid(child_pid_lst[i], NULL, 0);
-	        }
-	        free(child_pid_lst);
-	        child_pid_lst = NULL;
-	} else {
-		info[i].pid = getpid();
-#if THREADS_SET_CPU_AFFINITY
-		for (j = 0; j < num_processors; j++) {
-			if (j != info[i].cpu)
-				CPU_SET(j, &set);
-		}
-		if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)
-			printf("setaffinity for thrd%u failed\n", info[i].thread_id);
-#endif
-		io_thread(&info[i - 1]);
-		if ((shmdt(info) == -1)) {
-			perror("shmdt returned -1\n");
-			error(-1, errno, " ");
-		}
-	}
-
-	*io_exit = 1;
-	return 0;
-}
-
diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-bi.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-bi.zip
deleted file mode 100644
index d22e34b60e59af5345d7ab816aed07a7f895cd40..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 112903
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

diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-c2h-pfetch1.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-c2h-pfetch1.zip
deleted file mode 100644
index ad4ee63946fb6e86a615f3c4884a4b5ebb2ea274..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 111916
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
LAykWzfq?-4Gjtx|

diff --git a/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-h2c.zip b/QDMA/linux-kernel/apps/dma-perf/dmaperf_config/st-h2c.zip
deleted file mode 100644
index 7203da66afd92e6603ca511d048a8dc64566564c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 105919
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

diff --git a/QDMA/linux-kernel/apps/dma-perf/version.h b/QDMA/linux-kernel/apps/dma-perf/version.h
deleted file mode 100755
index 53a766a..0000000
--- a/QDMA/linux-kernel/apps/dma-perf/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_PERF_VERSION_H
-#define __DMA_PERF_VERSION_H
-
-#define PROGNAME "dma-perf"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-to-device/Makefile b/QDMA/linux-kernel/apps/dma-to-device/Makefile
deleted file mode 100755
index bccb834..0000000
--- a/QDMA/linux-kernel/apps/dma-to-device/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-TO-DEVICE = dma-to-device
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-TO-DEVICE_OBJS := dma_to_device.o
-DMA-TO-DEVICE_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
-
-all: clean dma-to-device
-
-dma-to-device: $(DMA-TO-DEVICE_OBJS)
-	$(CC) -lrt -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o
-	rm -rf *.o *.bin dma-to-device
diff --git a/QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c b/QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c
deleted file mode 100755
index 49d53b0..0000000
--- a/QDMA/linux-kernel/apps/dma-to-device/dma_to_device.c
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#define _DEFAULT_SOURCE
-#define _XOPEN_SOURCE 500
-#include <assert.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <time.h>
-
-#include <sys/mman.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "dma_xfer_utils.c"
-
-#define DEVICE_NAME_DEFAULT "/dev/qdma01000-MM-0"
-#define SIZE_DEFAULT (32)
-#define COUNT_DEFAULT (1)
-
-static struct option const long_opts[] = {
-	{"device", required_argument, NULL, 'd'},
-	{"address", required_argument, NULL, 'a'},
-	{"size", required_argument, NULL, 's'},
-	{"offset", required_argument, NULL, 'o'},
-	{"count", required_argument, NULL, 'c'},
-	{"data infile", required_argument, NULL, 'f'},
-	{"data outfile", required_argument, NULL, 'w'},
-	{"help", no_argument, NULL, 'h'},
-	{"verbose", no_argument, NULL, 'v'},
-	{0, 0, 0, 0}
-};
-
-static int test_dma(char *devname, uint64_t addr, uint64_t size,
-		    uint64_t offset, uint64_t count, char *infname, char *);
-
-static void usage(const char *name)
-{
-	int i = 0;
-
-	fprintf(stdout, "%s\n\n", name);
-	fprintf(stdout, "usage: %s [OPTIONS]\n\n", name);
-	fprintf(stdout,
-		"Write via SGDMA, optionally read input from a file.\n\n");
-
-	fprintf(stdout, "  -%c (--%s) device (defaults to %s)\n",
-		long_opts[i].val, long_opts[i].name, DEVICE_NAME_DEFAULT);
-	i++;
-	fprintf(stdout, "  -%c (--%s) the start address on the AXI bus\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout,
-		"  -%c (--%s) size of a single transfer in bytes, default %d,\n",
-		long_opts[i].val, long_opts[i].name, SIZE_DEFAULT);
-	i++;
-	fprintf(stdout, "  -%c (--%s) page offset of transfer\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) number of transfers, default %d\n",
-		long_opts[i].val, long_opts[i].name, COUNT_DEFAULT);
-	i++;
-	fprintf(stdout, "  -%c (--%s) filename to read the data from.\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout,
-		"  -%c (--%s) filename to write the data of the transfers\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) print usage help and exit\n",
-		long_opts[i].val, long_opts[i].name);
-	i++;
-	fprintf(stdout, "  -%c (--%s) verbose output\n",
-		long_opts[i].val, long_opts[i].name);
-}
-
-int main(int argc, char *argv[])
-{
-	int cmd_opt;
-	char *device = DEVICE_NAME_DEFAULT;
-	uint64_t address = 0;
-	uint64_t size = SIZE_DEFAULT;
-	uint64_t offset = 0;
-	uint64_t count = COUNT_DEFAULT;
-	char *infname = NULL;
-	char *ofname = NULL;
-
-	while ((cmd_opt =
-		getopt_long(argc, argv, "vhc:f:d:a:s:o:w:", long_opts,
-			    NULL)) != -1) {
-		switch (cmd_opt) {
-		case 0:
-			/* long option */
-			break;
-		case 'd':
-			/* device node name */
-			//fprintf(stdout, "'%s'\n", optarg);
-			device = strdup(optarg);
-			break;
-		case 'a':
-			/* RAM address on the AXI bus in bytes */
-			address = getopt_integer(optarg);
-			break;
-		case 's':
-			/* size in bytes */
-			size = getopt_integer(optarg);
-			break;
-		case 'o':
-			offset = getopt_integer(optarg) & 4095;
-			break;
-			/* count */
-		case 'c':
-			count = getopt_integer(optarg);
-			break;
-			/* count */
-		case 'f':
-			infname = strdup(optarg);
-			break;
-		case 'w':
-			ofname = strdup(optarg);
-			break;
-			/* print usage help and exit */
-		case 'v':
-			verbose = 1;
-			break;
-		case 'h':
-		default:
-			usage(argv[0]);
-			exit(0);
-			break;
-		}
-	}
-
-	if (verbose)
-		fprintf(stdout,
-		"dev %s, address 0x%lx, size 0x%lx, offset 0x%lx, count %lu\n",
-		device, address, size, offset, count);
-
-	return test_dma(device, address, size, offset, count, infname, ofname);
-}
-
-static int test_dma(char *devname, uint64_t addr, uint64_t size,
-		    uint64_t offset, uint64_t count, char *infname,
-		    char *ofname)
-{
-	uint64_t i;
-	ssize_t rc;
-	char *buffer = NULL;
-	char *allocated = NULL;
-	struct timespec ts_start, ts_end;
-	int infile_fd = -1;
-	int outfile_fd = -1;
-	int fpga_fd = open(devname, O_RDWR);
-	double total_time = 0;
-	double result;
-	double avg_time = 0;
-
-
-	if (fpga_fd < 0) {
-		fprintf(stderr, "unable to open device %s, %d.\n",
-			devname, fpga_fd);
-		perror("open device");
-		return -EINVAL;
-	}
-
-	if (infname) {
-		infile_fd = open(infname, O_RDONLY);
-		if (infile_fd < 0) {
-			fprintf(stderr, "unable to open input file %s, %d.\n",
-				infname, infile_fd);
-			perror("open input file");
-			rc = -EINVAL;
-			goto out;
-		}
-	}
-
-	if (ofname) {
-		outfile_fd =
-		    open(ofname, O_RDWR | O_CREAT | O_TRUNC | O_SYNC,
-			 0666);
-		if (outfile_fd < 0) {
-			fprintf(stderr, "unable to open output file %s, %d.\n",
-				ofname, outfile_fd);
-			perror("open output file");
-			rc = -EINVAL;
-			goto out;
-		}
-	}
-
-	posix_memalign((void **)&allocated, 4096 /*alignment */ , size + 4096);
-	if (!allocated) {
-		fprintf(stderr, "OOM %lu.\n", size + 4096);
-		rc = -ENOMEM;
-		goto out;
-	}
-	buffer = allocated + offset;
-	if (verbose)
-		fprintf(stdout, "host buffer 0x%lx = %p\n",
-			size + 4096, buffer);
-
-	if (infile_fd >= 0) {
-		rc = read_to_buffer(infname, infile_fd, buffer, size, 0);
-		if (rc < 0)
-			goto out;
-	}
-
-	for (i = 0; i < count; i++) {
-		/* write buffer to AXI MM address using SGDMA */
-		clock_gettime(CLOCK_MONOTONIC, &ts_start);
-
-		rc = write_from_buffer(devname, fpga_fd, buffer, size, addr);
-		if (rc < 0)
-			goto out;
-
-		rc = clock_gettime(CLOCK_MONOTONIC, &ts_end);
-		/* subtract the start time from the end time */
-		timespec_sub(&ts_end, &ts_start);
-		total_time += (ts_end.tv_sec + ((double)ts_end.tv_nsec/NSEC_DIV));
-		/* a bit less accurate but side-effects are accounted for */
-		if (verbose)
-		fprintf(stdout,
-			"#%lu: CLOCK_MONOTONIC %ld.%09ld sec. write %lu bytes\n",
-			i, ts_end.tv_sec, ts_end.tv_nsec, size);
-
-		if (outfile_fd >= 0) {
-			rc = write_from_buffer(ofname, outfile_fd, buffer,
-						 size, i * size);
-			if (rc < 0)
-				goto out;
-		}
-	}
-	avg_time = (double)total_time/(double)count;
-	result = ((double)size)/avg_time;
-	if (verbose)
-	printf("** Avg time device %s, total time %f nsec, avg_time = %f, size = %lu, BW = %f bytes/sec\n",
-		devname, total_time, avg_time, size, result);
-	dump_throughput_result(size, result);
-
-	rc = 0;
-
-out:
-	close(fpga_fd);
-	if (infile_fd >= 0)
-		close(infile_fd);
-	if (outfile_fd >= 0)
-		close(outfile_fd);
-	free(allocated);
-
-	return rc;
-}
diff --git a/QDMA/linux-kernel/apps/dma-to-device/version.h b/QDMA/linux-kernel/apps/dma-to-device/version.h
deleted file mode 100755
index b14cefc..0000000
--- a/QDMA/linux-kernel/apps/dma-to-device/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_TO_DEVICE_VERSION_H
-#define __DMA_TO_DEVICE_VERSION_H
-
-#define PROGNAME "dma-to-device"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-utils/Makefile b/QDMA/linux-kernel/apps/dma-utils/Makefile
deleted file mode 100755
index f6d9ecd..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include
-CFLAGS += $(EXTRA_FLAGS)
-
-all: dmautils.o dmactl.o dmactl_reg.o dmaxfer.o dma_xfer_utils.o
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	rm -rf *.o
diff --git a/QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c b/QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c
deleted file mode 100755
index d3fefd2..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dma_xfer_utils.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <unistd.h>
-#include <time.h>
-#include <errno.h>
-#include <sys/types.h>
-
-/*
- * man 2 write:
- * On Linux, write() (and similar system calls) will transfer at most
- * 	0x7ffff000 (2,147,479,552) bytes, returning the number of bytes
- *	actually transferred.  (This is true on both 32-bit and 64-bit
- *	systems.)
- */
-
-#define RW_MAX_SIZE	0x7ffff000
-#define GB_DIV 1000000000
-#define MB_DIV 1000000
-#define KB_DIV 1000
-#define NSEC_DIV 1000000000
-
-int verbose = 0;
-
-void dump_throughput_result(uint64_t size, float result) {
-	printf("size=%lu ", size);
-	if (((long long)(result)/GB_DIV)) {
-		printf("Average BW = %f GB/sec\n", ((double)result/GB_DIV));
-	} else if (((long long)(result)/MB_DIV)) {
-		printf("Average BW = %f MB/sec\n", ((double)result/MB_DIV));
-	} else if (((long long)(result)/KB_DIV)) {
-		printf("Average BW = %f KB/sec\n", ((double)result/KB_DIV));
-	} else
-		printf("Average BW = %f Bytes/sec\n", ((double)result));
-}
-
-uint64_t getopt_integer(char *optarg)
-{
-	int rc;
-	uint64_t value;
-
-	rc = sscanf(optarg, "0x%lx", &value);
-	if (rc <= 0)
-		sscanf(optarg, "%lu", &value);
-	//printf("sscanf() = %d, value = 0x%lx\n", rc, value);
-
-	return value;
-}
-
-ssize_t read_to_buffer(char *fname, int fd, char *buffer, uint64_t size,
-			uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > RW_MAX_SIZE)
-			bytes = RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				fprintf(stderr,
-					"%s, seek off 0x%lx failed %zd.\n",
-					fname, offset, rc);
-				perror("seek file");
-				return -EIO;
-			}
-			if (rc != offset) {
-				fprintf(stderr,
-					"%s, seek off 0x%lx != 0x%lx.\n",
-					fname, rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* read data from file into memory buffer */
-		rc = read(fd, buf, bytes);
-		if (rc < 0) {
-			fprintf(stderr,
-				"%s, read off 0x%lx + 0x%lx failed %zd.\n",
-				fname, offset, bytes, rc);
-			perror("read file");
-			return -EIO;
-		}
-		if (rc != bytes) {
-			fprintf(stderr,
-				"%s, R off 0x%lx, 0x%lx != 0x%lx.\n",
-				fname, count, rc, bytes);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-	} while (count < size);
-
-	if (count != size) {
-		fprintf(stderr, "%s, R failed 0x%lx != 0x%lx.\n",
-				fname, count, size);
-		return -EIO;
-	}
-	return count;
-}
-
-ssize_t write_from_buffer(char *fname, int fd, char *buffer, uint64_t size,
-			uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > RW_MAX_SIZE)
-			bytes = RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				fprintf(stderr,
-					"%s, seek off 0x%lx failed %zd.\n",
-					fname, offset, rc);
-				perror("seek file");
-				return -EIO;
-			}
-			if (rc != offset) {
-				fprintf(stderr,
-					"%s, seek off 0x%lx != 0x%lx.\n",
-					fname, rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* write data to file from memory buffer */
-		rc = write(fd, buf, bytes);
-		if (rc < 0) {
-			fprintf(stderr, "%s, W off 0x%lx, 0x%lx failed %zd.\n",
-				fname, offset, bytes, rc);
-			perror("write file");
-			return -EIO;
-		}
-		if (rc != bytes) {
-			fprintf(stderr, "%s, W off 0x%lx, 0x%lx != 0x%lx.\n",
-				fname, offset, rc, bytes);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-	} while (count < size);
-
-	if (count != size) {
-		fprintf(stderr, "%s, R failed 0x%lx != 0x%lx.\n",
-				fname, count, size);
-		return -EIO;
-	}
-	return count;
-}
-
-
-/* Subtract timespec t2 from t1
- *
- * Both t1 and t2 must already be normalized
- * i.e. 0 <= nsec < 1000000000
- */
-static int timespec_check(struct timespec *t)
-{
-	if ((t->tv_nsec < 0) || (t->tv_nsec >= 1000000000))
-		return -1;
-	return 0;
-
-}
-
-void timespec_sub(struct timespec *t1, struct timespec *t2)
-{
-	if (timespec_check(t1) < 0) {
-		fprintf(stderr, "invalid time #1: %lld.%.9ld.\n",
-			(long long)t1->tv_sec, t1->tv_nsec);
-		return;
-	}
-	if (timespec_check(t2) < 0) {
-		fprintf(stderr, "invalid time #2: %lld.%.9ld.\n",
-			(long long)t2->tv_sec, t2->tv_nsec);
-		return;
-	}
-	t1->tv_sec -= t2->tv_sec;
-	t1->tv_nsec -= t2->tv_nsec;
-	if (t1->tv_nsec >= 1000000000) {
-		t1->tv_sec++;
-		t1->tv_nsec -= 1000000000;
-	} else if (t1->tv_nsec < 0) {
-		t1->tv_sec--;
-		t1->tv_nsec += 1000000000;
-	}
-}
-
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmactl.c b/QDMA/linux-kernel/apps/dma-utils/dmactl.c
deleted file mode 100755
index 988d482..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmactl.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019-2022,  Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023,  Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <unistd.h>
-#include <err.h>
-#include <errno.h>
-#include <sys/socket.h>
-#include <linux/genetlink.h>
-#include "qdma_nl.h"
-#include "dmaxfer.h"
-#include "dmactl_internal.h"
-
-#define MAX_KMALLOC_SIZE	(4*1024*1024)
-
-//#define DEBUG 1
-/*
- * netlink message
- */
-struct xnl_hdr {
-	struct nlmsghdr n;
-	struct genlmsghdr g;
-};
-
-struct xnl_cb {
-	int fd;
-	unsigned short family;
-	unsigned int snd_seq;
-	unsigned int rcv_seq;
-};
-
-struct xnl_gen_msg {
-	struct xnl_hdr hdr;
-	char data[0];
-};
-
-void xnl_close(struct xnl_cb *cb)
-{
-	close(cb->fd);
-}
-
-static int xnl_send(struct xnl_cb *cb, struct xnl_hdr *hdr,
-		    void (*log_err)(const char *))
-{
-	int rv;
-	struct sockaddr_nl addr = {
-		.nl_family = AF_NETLINK,
-	};
-
-	hdr->n.nlmsg_seq = cb->snd_seq;
-	cb->snd_seq++;
-
-	rv = sendto(cb->fd, (char *)hdr, hdr->n.nlmsg_len, 0,
-			(struct sockaddr *)&addr, sizeof(addr));
-	if (rv != hdr->n.nlmsg_len) {
-		if (log_err)
-			log_err("nl send err");
-		return -1;
-	}
-
-	return 0;
-}
-
-static int xnl_recv(struct xnl_cb *cb, struct xnl_hdr *hdr, int dlen,
-		    void (*log_err)(const char *))
-{
-	int rv;
-
-	memset(hdr, 0, sizeof(struct xnl_gen_msg) + dlen);
-
-	rv = recv(cb->fd, hdr, dlen, 0);
-	if (rv < 0) {
-		if (log_err)
-			log_err("nl recv err");
-		return -1;
-	}
-	/* as long as there is attribute, even if it is shorter than expected */
-	if (!NLMSG_OK((&hdr->n), rv) && (rv <= sizeof(struct xnl_hdr))) {
-		char err_msg[100] = {'\0'};
-
-		snprintf(err_msg, 100,
-			 "nl recv:, invalid message, cmd 0x%x, %d,%d.\n",
-			 hdr->g.cmd, dlen, rv);
-		if (log_err)
-			log_err(err_msg);
-		return -1;
-	}
-
-	if (hdr->n.nlmsg_type == NLMSG_ERROR) {
-		char err_msg[100] = {'\0'};
-
-		snprintf(err_msg, 100, "nl recv, msg error, cmd 0x%x\n",
-				hdr->g.cmd);
-		if (log_err)
-			log_err(err_msg);
-		return -1;
-	}
-
-	return 0;
-}
-
-static inline struct xnl_gen_msg *xnl_msg_alloc(unsigned int dlen,
-						void (*log_err)(const char *))
-{
-	struct xnl_gen_msg *msg;
-	unsigned int extra_mem = (XNL_ATTR_MAX * (sizeof(struct nlattr) +
-			sizeof(uint32_t)));
-
-	if (dlen)
-		extra_mem = dlen;
-
-	msg = malloc(sizeof(struct xnl_gen_msg) + extra_mem);
-	if (!msg) {
-		char err_msg[100] = {'\0'};
-
-		snprintf(err_msg, 100, "%s: OOM, %u.\n",
-			 __FUNCTION__, extra_mem);
-		if (log_err)
-			log_err(err_msg);
-		return NULL;
-	}
-
-	memset(msg, 0, sizeof(struct xnl_gen_msg) + extra_mem);
-	return msg;
-}
-
-static int xnl_connect(struct xnl_cb *cb, int vf, void (*log_err)(const char *))
-{
-	int fd;
-	struct sockaddr_nl addr;
-	struct xnl_gen_msg *msg = xnl_msg_alloc(0, log_err);
-	struct xnl_hdr *hdr = &msg->hdr;
-	struct nlattr *attr;
-	int rv = -1;
-
-	fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_GENERIC);
-	if (fd < 0) {
-		if (log_err)
-			log_err("nl socket err");
-		rv = fd;
-		goto out;
-        }
-	cb->fd = fd;
-
-	memset(&addr, 0, sizeof(struct sockaddr_nl));
-	addr.nl_family = AF_NETLINK;
-	rv = bind(fd, (struct sockaddr *)&addr, sizeof(struct sockaddr_nl));
-	if (rv < 0) {
-		if (log_err)
-			log_err("nl bind err");
-		goto out;
-	}
-
-	hdr->n.nlmsg_type = GENL_ID_CTRL;
-	hdr->n.nlmsg_flags = NLM_F_REQUEST;
-	hdr->n.nlmsg_pid = getpid();
-	hdr->n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-
-        hdr->g.cmd = CTRL_CMD_GETFAMILY;
-        hdr->g.version = XNL_VERSION;
-
-	attr = (struct nlattr *)(hdr + 1);
-	attr->nla_type = CTRL_ATTR_FAMILY_NAME;
-	cb->family = CTRL_ATTR_FAMILY_NAME;
-
-	if (vf) {
-		attr->nla_len = strlen(XNL_NAME_VF) + 1 + NLA_HDRLEN;
-		memcpy((char *)(attr + 1), XNL_NAME_VF, sizeof(XNL_NAME_VF) - 1);
-	} else {
-		attr->nla_len = strlen(XNL_NAME_PF) + 1 + NLA_HDRLEN;
-		memcpy((char *)(attr + 1), XNL_NAME_PF, sizeof(XNL_NAME_PF) - 1);
-	}
-        hdr->n.nlmsg_len += NLMSG_ALIGN(attr->nla_len);
-
-	rv = xnl_send(cb, hdr, log_err);
-	if (rv < 0)
-		goto out;
-
-	rv = xnl_recv(cb, hdr, XNL_RESP_BUFLEN_MIN, NULL);
-	if (rv < 0)
-		goto out;
-
-	attr = (struct nlattr *)((char *)attr + NLA_ALIGN(attr->nla_len));
-	/* family ID */
-        if (attr->nla_type == CTRL_ATTR_FAMILY_ID)
-		cb->family = *(__u16 *)(attr + 1);
-
-	rv = 0;
-
-out:
-	free(msg);
-	return rv;
-}
-
-
-static void xnl_msg_set_hdr(struct xnl_hdr *hdr, int family, int op)
-{
-	hdr->n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
-	hdr->n.nlmsg_type = family;
-	hdr->n.nlmsg_flags = NLM_F_REQUEST;
-	hdr->n.nlmsg_pid = getpid();
-
-	hdr->g.cmd = op;
-}
-
-static int xnl_msg_add_int_attr(struct xnl_hdr *hdr, enum xnl_attr_t type,
-				unsigned int v)
-{
-	struct nlattr *attr = (struct nlattr *)((char *)hdr + hdr->n.nlmsg_len);
-
-        attr->nla_type = (__u16)type;
-        attr->nla_len = sizeof(__u32) + NLA_HDRLEN;
-	*(__u32 *)(attr+ 1) = v;
-
-        hdr->n.nlmsg_len += NLMSG_ALIGN(attr->nla_len);
-	return 0;
-}
-
-static int xnl_msg_add_str_attr(struct xnl_hdr *hdr, enum xnl_attr_t type,
-				char *s)
-{
-	struct nlattr *attr = (struct nlattr *)((char *)hdr + hdr->n.nlmsg_len);
-	int len = strlen(s);
-
-        attr->nla_type = (__u16)type;
-        attr->nla_len = len + 1 + NLA_HDRLEN;
-
-	strcpy((char *)(attr + 1), s);
-
-        hdr->n.nlmsg_len += NLMSG_ALIGN(attr->nla_len);
-	return 0;
-}
-
-static int recv_attrs(struct xnl_hdr *hdr, struct xcmd_info *xcmd,
-		      uint32_t *attrs)
-{
-	unsigned char *p = (unsigned char *)(hdr + 1);
-	int maxlen = hdr->n.nlmsg_len - NLMSG_LENGTH(GENL_HDRLEN);
-
-	while (maxlen > 0) {
-		struct nlattr *na = (struct nlattr *)p;
-		int len = NLA_ALIGN(na->nla_len);
-
-		if (na->nla_type >= XNL_ATTR_MAX) {
-			void (*log_err)(const char *) = xcmd->log_msg_dump;
-			char err_msg[100] = {'\0'};
-
-			snprintf(err_msg, 100,
-				 "unknown attr type %d, len %d.\n",
-				 na->nla_type, na->nla_len);
-			if (log_err)
-				log_err(err_msg);
-			return -EINVAL;
-		}
-
-		if (na->nla_type == XNL_ATTR_GENMSG) {
-			if (xcmd->log_msg_dump)
-				xcmd->log_msg_dump((const char *)(na + 1));
-		} else {
-			attrs[na->nla_type] = *(uint32_t *)(na + 1);
-		}
-
-		p += len;
-		maxlen -= len;
-	}
-
-	return 0;
-}
-
-static int get_cmd_resp_buf_len(enum xnl_op_t op, struct xcmd_info *xcmd)
-{
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	unsigned int row_len = 50;
-
-	switch (op) {
-		case XNL_CMD_Q_DESC:
-        	row_len *= 2;
-        case XNL_CMD_Q_CMPT:
-        	buf_len += ((xcmd->req.qparm.range_end -
-        			xcmd->req.qparm.range_start)*row_len);
-        	break;
-        case XNL_CMD_INTR_RING_DUMP:
-        	buf_len += ((xcmd->req.intr.end_idx -
-				     xcmd->req.intr.start_idx)*row_len);
-        	break;
-        case XNL_CMD_DEV_LIST:
-        case XNL_CMD_DEV_INFO:
-        case XNL_CMD_DEV_CAP:
-        case XNL_CMD_Q_START:
-        case XNL_CMD_Q_STOP:
-        case XNL_CMD_Q_DEL:
-        case XNL_CMD_GLOBAL_CSR:
-            return buf_len;
-        case XNL_CMD_Q_ADD:
-        case XNL_CMD_Q_DUMP:
-        case XNL_CMD_Q_LIST:
-        case XNL_CMD_Q_CMPT_READ:
-            break;
-        case XNL_CMD_REG_DUMP:
-		case XNL_CMD_REG_INFO_READ:
-            buf_len = XNL_RESP_BUFLEN_MAX * 6;
-        break;
-		case XNL_CMD_DEV_STAT:
-			buf_len = XNL_RESP_BUFLEN_MAX;
-		break;
-		default:
-        	buf_len = XNL_RESP_BUFLEN_MIN;
-        	return buf_len;
-	}
-	if ((xcmd->req.qparm.flags & XNL_F_QDIR_BOTH) == XNL_F_QDIR_BOTH)
-		buf_len *= 2;
-	if(xcmd->req.qparm.num_q > 1)
-			buf_len *= xcmd->req.qparm.num_q;
-	if(buf_len > MAX_KMALLOC_SIZE)
-		buf_len = MAX_KMALLOC_SIZE;
-	return buf_len;
-}
-
-
-static int recv_nl_msg(struct xnl_hdr *hdr, struct xcmd_info *xcmd,
-		       uint32_t *attrs)
-{
-	if (!attrs)
-		return 0;
-	recv_attrs(hdr, xcmd, attrs);
-
-	if (attrs[XNL_ATTR_ERROR] != 0)
-		return (int)attrs[XNL_ATTR_ERROR];
-
-	return 0;
-}
-
-static void xnl_msg_add_extra_config_attrs(struct xnl_hdr *hdr,
-                                       struct xcmd_info *xcmd)
-{
-	if (xcmd->req.qparm.sflags & (1 << QPARM_RNGSZ_IDX))
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QRNGSZ_IDX,
-		                     xcmd->req.qparm.qrngsz_idx);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_C2H_BUFSZ_IDX))
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_C2H_BUFSZ_IDX,
-		                     xcmd->req.qparm.c2h_bufsz_idx);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_CMPTSZ))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_CMPT_DESC_SIZE,
-		                     xcmd->req.qparm.cmpt_entry_size);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_SW_DESC_SZ))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_SW_DESC_SIZE,
-		                     xcmd->req.qparm.sw_desc_sz);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_CMPT_TMR_IDX))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_CMPT_TIMER_IDX,
-		                     xcmd->req.qparm.cmpt_tmr_idx);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_CMPT_CNTR_IDX))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_CMPT_CNTR_IDX,
-		                     xcmd->req.qparm.cmpt_cntr_idx);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_MM_CHANNEL))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_MM_CHANNEL,
-		                     xcmd->req.qparm.mm_channel);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_CMPT_TRIG_MODE))
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_CMPT_TRIG_MODE,
-		                     xcmd->req.qparm.cmpt_trig_mode);
-	if (xcmd->req.qparm.sflags & (1 << QPARM_PING_PONG_EN)) {
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_PING_PONG_EN,
-							 xcmd->req.qparm.ping_pong_en);
-	}
-	if (xcmd->req.qparm.sflags & (1 << QPARM_KEYHOLE_EN)) {
-		xnl_msg_add_int_attr(hdr,  XNL_ATTR_APERTURE_SZ,
-							 xcmd->req.qparm.aperture_sz);
-	}
-}
-
-static int xnl_parse_response(struct xnl_cb *cb, struct xnl_hdr *hdr,
-			      struct xcmd_info *xcmd, unsigned int dlen,
-			      uint32_t *attrs)
-{
-	struct nlattr *attr;
-	int rv;
-
-	rv = xnl_recv(cb, hdr, dlen, xcmd->log_msg_dump);
-	if (rv < 0)
-		goto out;
-
-	rv = recv_nl_msg(hdr, xcmd, attrs);
-out:
-	return rv;
-}
-
-static int xnl_send_cmd(struct xnl_cb *cb, struct xnl_hdr *hdr,
-			struct xcmd_info *xcmd, unsigned int dlen)
-{
-	struct nlattr *attr;
-	int rv;
-
-	attr = (struct nlattr *)(hdr + 1);
-
-	xnl_msg_add_int_attr(hdr, XNL_ATTR_DEV_IDX, xcmd->if_bdf);
-
-	switch(xcmd->op) {
-        case XNL_CMD_DEV_LIST:
-        case XNL_CMD_DEV_INFO:
-        case XNL_CMD_DEV_STAT:
-        case XNL_CMD_DEV_STAT_CLEAR:
-		/* no parameter */
-		break;
-        case XNL_CMD_Q_LIST:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_Q, xcmd->req.qparm.num_q);
-        case XNL_CMD_Q_ADD:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_Q, xcmd->req.qparm.num_q);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QFLAG, xcmd->req.qparm.flags);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN, dlen );
-		break;
-        case XNL_CMD_Q_START:
-        	xnl_msg_add_extra_config_attrs(hdr, xcmd);
-        case XNL_CMD_Q_STOP:
-        case XNL_CMD_Q_DEL:
-        case XNL_CMD_Q_DUMP:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_Q, xcmd->req.qparm.num_q);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QFLAG, xcmd->req.qparm.flags);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN, dlen);
-		break;
-        case XNL_CMD_Q_DESC:
-        case XNL_CMD_Q_CMPT:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_Q, xcmd->req.qparm.num_q);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QFLAG, xcmd->req.qparm.flags);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RANGE_START,
-					xcmd->req.qparm.range_start);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RANGE_END,
-					xcmd->req.qparm.range_end);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN, dlen);
-		break;
-        case XNL_CMD_Q_RX_PKT:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_Q, xcmd->req.qparm.num_q);
-		/* hard coded to C2H */
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QFLAG, XNL_F_QDIR_C2H);
-		break;
-        case XNL_CMD_Q_CMPT_READ:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QIDX, xcmd->req.qparm.idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_QFLAG, xcmd->req.qparm.flags);
-		/*xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_ENTRIES,
-					xcmd->u.qparm.num_entries);*/
-		break;
-        case XNL_CMD_INTR_RING_DUMP:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_INTR_VECTOR_IDX,
-		                     xcmd->req.intr.vector);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_INTR_VECTOR_START_IDX,
-		                     xcmd->req.intr.start_idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_INTR_VECTOR_END_IDX,
-		                     xcmd->req.intr.end_idx);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN, dlen);
-		break;
-        case XNL_CMD_REG_RD:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_BAR_NUM,
-    							 xcmd->req.reg.bar);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_ADDR,
-							 xcmd->req.reg.reg);
-		break;
-        case XNL_CMD_REG_WRT:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_BAR_NUM,
-    							 xcmd->req.reg.bar);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_ADDR,
-							 xcmd->req.reg.reg);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_VAL,
-							 xcmd->req.reg.val);
-		break;
-		case XNL_CMD_REG_INFO_READ:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_BAR_NUM,
-								 xcmd->req.reg.bar);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_REG_ADDR,
-							 xcmd->req.reg.reg);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_NUM_REGS,
-							 xcmd->req.reg.range_end);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN,
-				dlen);
-		break;
-        case XNL_CMD_REG_DUMP:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_RSP_BUF_LEN,
-				dlen);
-		break;
-		case XNL_CMD_GLOBAL_CSR:
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_CSR_INDEX,
-				0);
-		xnl_msg_add_int_attr(hdr, XNL_ATTR_CSR_COUNT,
-				QDMA_GLOBAL_CSR_ARRAY_SZ);
-		break;
-	default:
-		break;
-	}
-
-	rv = xnl_send(cb, hdr, xcmd->log_msg_dump);
-	if (rv < 0)
-		goto out;
-
-out:
-	return rv;
-}
-
-void xnl_parse_dev_info_attrs(uint32_t *attrs, struct xcmd_info *xcmd)
-{
-	unsigned int usr_bar;
-	struct xnl_dev_info *dev_info = &xcmd->resp.dev_info;
-
-	dev_info->config_bar = attrs[XNL_ATTR_DEV_CFG_BAR];
-	usr_bar = (int)attrs[XNL_ATTR_DEV_USR_BAR];
-	dev_info->qmax = attrs[XNL_ATTR_DEV_QSET_MAX];
-	dev_info->qbase = attrs[XNL_ATTR_DEV_QSET_QBASE];
-	dev_info->pci_bus = attrs[XNL_ATTR_PCI_BUS];
-	dev_info->pci_dev = attrs[XNL_ATTR_PCI_DEV];
-	dev_info->dev_func = attrs[XNL_ATTR_PCI_FUNC];
-
-	if (usr_bar+1 == 0)
-		dev_info->user_bar = 2;
-	else
-		dev_info->user_bar = usr_bar;
-}
-
-void xnl_parse_dev_stat_attrs(uint32_t *attrs, struct xcmd_info *xcmd)
-{
-	unsigned int pkts;
-	struct xnl_dev_stat *dev_stat = &xcmd->resp.dev_stat;
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_MMH2C_PKTS1];
-	dev_stat->mm_h2c_pkts = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_MMH2C_PKTS2];
-	dev_stat->mm_h2c_pkts |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_MMC2H_PKTS1];
-	dev_stat->mm_c2h_pkts = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_MMC2H_PKTS2];
-	dev_stat->mm_c2h_pkts |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_STH2C_PKTS1];
-	dev_stat->st_h2c_pkts = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_STH2C_PKTS2];
-	dev_stat->st_h2c_pkts |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_STC2H_PKTS1];
-	dev_stat->st_c2h_pkts = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_STC2H_PKTS2];
-	dev_stat->st_c2h_pkts |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATMAX1];
-	dev_stat->ping_pong_lat_max = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATMAX2];
-	dev_stat->ping_pong_lat_max |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1];
-	dev_stat->ping_pong_lat_min = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2];
-	dev_stat->ping_pong_lat_min |= (((unsigned long long)pkts) << 32);
-
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATAVG1];
-	dev_stat->ping_pong_lat_avg = pkts;
-	pkts = attrs[XNL_ATTR_DEV_STAT_PING_PONG_LATAVG2];
-	dev_stat->ping_pong_lat_avg |= (((unsigned long long)pkts) << 32);
-}
-
-void xnl_parse_dev_cap_attrs(struct xnl_hdr *hdr, uint32_t *attrs,
-				    struct xcmd_info *xcmd)
-{
-	unsigned char *p = (unsigned char *)(hdr + 1);
-	struct nlattr *na = (struct nlattr *)p;
-
-	xcmd->resp.cap.mailbox_en = attrs[XNL_ATTR_DEV_MAILBOX_ENABLE];
-	xcmd->resp.cap.mm_channel_max = attrs[XNL_ATTR_DEV_MM_CHANNEL_MAX];
-	xcmd->resp.cap.num_pfs = attrs[XNL_ATTR_DEV_NUM_PFS];
-	xcmd->resp.cap.num_qs = attrs[XNL_ATTR_DEV_NUMQS];
-	xcmd->resp.cap.flr_present = attrs[XNL_ATTR_DEV_FLR_PRESENT];
-	xcmd->resp.cap.mm_en = attrs[XNL_ATTR_DEV_MM_ENABLE];
-	xcmd->resp.cap.debug_mode = attrs[XNL_ATTR_DEBUG_EN];
-	xcmd->resp.cap.desc_eng_mode = attrs[XNL_ATTR_DESC_ENGINE_MODE];
-	xcmd->resp.cap.mm_cmpt_en =
-			attrs[XNL_ATTR_DEV_MM_CMPT_ENABLE];
-	xcmd->resp.cap.st_en = attrs[XNL_ATTR_DEV_ST_ENABLE];
-	if (na->nla_type == XNL_ATTR_VERSION_INFO) {
-		strncpy(xcmd->resp.cap.version_str, (char *)(na + 1), QDMA_VERSION_INFO_STR_LENGTH);
-	}
-	if (na->nla_type == XNL_ATTR_DEVICE_TYPE) {
-		strncpy(xcmd->resp.cap.version_str, (char *)(na + 1), QDMA_VERSION_INFO_STR_LENGTH);
-	}
-	if (na->nla_type == XNL_ATTR_IP_TYPE) {
-		strncpy(xcmd->resp.cap.version_str, (char *)(na + 1), QDMA_VERSION_INFO_STR_LENGTH);
-	}
-}
-
-void xnl_parse_reg_attrs(uint32_t *attrs, struct xcmd_info *xcmd)
-{
-	xcmd->req.reg.val = attrs[XNL_ATTR_REG_VAL];
-}
-
-static void xnl_parse_q_state_attrs(uint32_t *attrs, struct xcmd_info *xcmd)
-{
-	xcmd->resp.q_info.flags = attrs[XNL_ATTR_QFLAG];
-	xcmd->resp.q_info.qidx = attrs[XNL_ATTR_QIDX];
-	xcmd->resp.q_info.state = attrs[XNL_ATTR_Q_STATE];
-}
-
-static void xnl_parse_csr_attrs(struct xnl_hdr *hdr, uint32_t *attrs, struct xcmd_info *xcmd)
-{
-	unsigned char *p = (unsigned char *)(hdr + 1);
-	struct nlattr *na = (struct nlattr *)p;
-
-	if (na->nla_type == XNL_ATTR_GLOBAL_CSR) {
-		memcpy(&xcmd->resp.csr,(void *) (na + 1),
-			   sizeof(struct global_csr_conf));
-
-	}
-
-}
-
-static void xnl_parse_cmd_attrs(struct xnl_hdr *hdr, struct xcmd_info *xcmd,
-				uint32_t *attrs)
-{
-	switch(xcmd->op) {
-        case XNL_CMD_DEV_INFO:
-        	xnl_parse_dev_info_attrs(attrs, xcmd);
-		break;
-        case XNL_CMD_DEV_STAT:
-        	xnl_parse_dev_stat_attrs(attrs, xcmd);
-		break;
-        case XNL_CMD_DEV_CAP:
-        	xnl_parse_dev_cap_attrs(hdr, attrs, xcmd);
-		break;
-        case XNL_CMD_REG_RD:
-        case XNL_CMD_REG_WRT:
-        	xnl_parse_reg_attrs(attrs, xcmd);
-		break;
-        case XNL_CMD_GET_Q_STATE:
-        	xnl_parse_q_state_attrs(attrs, xcmd);
-		break;
-        case XNL_CMD_GLOBAL_CSR:
-		xnl_parse_csr_attrs(hdr, attrs, xcmd);
-		break;
-	default:
-		break;
-	}
-}
-
-int xnl_common_msg_send(struct xcmd_info *cmd, uint32_t *attrs)
-{
-	int rv;
-	struct xnl_gen_msg *msg = NULL;
-	struct xnl_hdr *hdr;
-	struct xnl_cb cb;
-	unsigned int dlen;
-
-	rv = xnl_connect(&cb, cmd->vf, cmd->log_msg_dump);
-	if (rv < 0)
-		return rv;
-	dlen = get_cmd_resp_buf_len(cmd->op, cmd);
-	msg = xnl_msg_alloc(dlen, cmd->log_msg_dump);
-	if (!msg)
-		goto close;
-	hdr = &msg->hdr;
-
-	xnl_msg_set_hdr(hdr, cb.family, cmd->op);
-
-	rv = xnl_send_cmd(&cb, hdr, cmd, dlen);
-	if (rv < 0)
-		goto free_mem;
-
-	rv = xnl_parse_response(&cb, hdr, cmd, dlen, attrs);
-	if (rv < 0)
-		goto free_mem;
-	xnl_parse_cmd_attrs(hdr, cmd, attrs);
-free_mem:
-	free(msg);
-close:
-	xnl_close(&cb);
-
-	return rv;
-}
-
-int qdma_dev_list_dump(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	xnl_common_msg_send(cmd, attrs);
-	cmd->vf = 1;
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_dev_info(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-	int rv;
-
-	rv = xnl_common_msg_send(cmd, attrs);
-	if (rv < 0)
-		return rv;
-}
-
-int qdma_dev_cap(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-	int rv;
-
-	rv = xnl_common_msg_send(cmd, attrs);
-	if (rv < 0)
-		return rv;
-}
-
-int qdma_dev_stat(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-	int rv;
-
-	rv = xnl_common_msg_send(cmd, attrs);
-	if (rv < 0)
-		return rv;
-}
-
-int qdma_dev_stat_clear(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_dev_intr_ring_dump(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_dev_get_global_csr(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_dev_q_list_dump(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_add(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_del(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_start(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-	int rv = 0;
-	if ((cmd->req.qparm.flags & XNL_F_QDIR_BOTH) ==
-		XNL_F_QDIR_BOTH) {
-
-		if ((cmd->req.qparm.fetch_credit &
-			Q_ENABLE_C2H_FETCH_CREDIT) == Q_ENABLE_C2H_FETCH_CREDIT)
-			cmd->req.qparm.flags |= XNL_F_FETCH_CREDIT;
-		else
-			cmd->req.qparm.flags &= ~XNL_F_FETCH_CREDIT;
-
-		cmd->req.qparm.flags = ((cmd->req.qparm.flags &
-						(~XNL_F_QDIR_BOTH)) | XNL_F_QDIR_C2H);
-
-		rv = xnl_common_msg_send(cmd, attrs);
-		if (rv < 0)
-			return rv;
-
-		if ((cmd->req.qparm.fetch_credit &
-			Q_ENABLE_H2C_FETCH_CREDIT) == Q_ENABLE_H2C_FETCH_CREDIT)
-			cmd->req.qparm.flags |= XNL_F_FETCH_CREDIT;
-		else
-			cmd->req.qparm.flags &= ~XNL_F_FETCH_CREDIT;
-
-		cmd->req.qparm.flags = ((cmd->req.qparm.flags &
-						(~XNL_F_QDIR_BOTH)) | XNL_F_QDIR_H2C);
-
-		return xnl_common_msg_send(cmd, attrs);
-	} else {
-		if ((cmd->req.qparm.flags & XNL_F_QDIR_H2C) ==
-			XNL_F_QDIR_H2C) {
-			if ((cmd->req.qparm.fetch_credit &
-				Q_ENABLE_H2C_FETCH_CREDIT) == Q_ENABLE_H2C_FETCH_CREDIT)
-				cmd->req.qparm.flags |= XNL_F_FETCH_CREDIT;
-			else
-				cmd->req.qparm.flags &= ~XNL_F_FETCH_CREDIT;
-		} else if ((cmd->req.qparm.flags & XNL_F_QDIR_C2H) ==
-			XNL_F_QDIR_C2H) {
-			if ((cmd->req.qparm.fetch_credit &
-				Q_ENABLE_C2H_FETCH_CREDIT) == Q_ENABLE_C2H_FETCH_CREDIT)
-					cmd->req.qparm.flags |= XNL_F_FETCH_CREDIT;
-			else
-				cmd->req.qparm.flags &= ~XNL_F_FETCH_CREDIT;
-		}
-		return xnl_common_msg_send(cmd, attrs);
-	}
-}
-
-int qdma_q_stop(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_dump(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_get_state(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-
-int qdma_q_desc_dump(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_q_cmpt_read(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	return xnl_common_msg_send(cmd, attrs);
-}
-
-int qdma_reg_read(struct xcmd_info *cmd)
-{
-	return proc_reg_cmd(cmd);
-}
-
-int qdma_reg_write(struct xcmd_info *cmd)
-{
-	return proc_reg_cmd(cmd);
-}
-
-int qdma_reg_info_read(struct xcmd_info *cmd)
-{
-	return proc_reg_cmd(cmd);
-}
-
-int qdma_reg_dump(struct xcmd_info *cmd)
-{
-	return proc_reg_cmd(cmd);
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-int qdma_en_st(struct xcmd_info *cmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-	int rv;
-
-	rv = xnl_common_msg_send(cmd, attrs);
-	if (rv < 0)
-		return rv;
-}
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h b/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h
deleted file mode 100755
index 7283f7c..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmactl_internal.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019 - 2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef _QDMACTL_INTERNAL_H_
-#define _QDMACTL_INTERNAL_H_
-
-#include <stdint.h>
-
-#include "dmautils.h"
-
-int proc_reg_cmd(struct xcmd_info *xcmd);
-int is_valid_addr(unsigned char bar_no, unsigned int reg_addr);
-int xnl_common_msg_send(struct xcmd_info *cmd, uint32_t *attrs);
-
-#endif /* _QDMACTL_INTERNAL_H_ */
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c b/QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c
deleted file mode 100755
index 549d67a..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmactl_reg.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019 - 2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <endian.h>
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include "qdma_nl.h"
-#include "dmactl_internal.h"
-
-#define QDMA_CFG_BAR_SIZE 0xB400
-#define QDMA_USR_BAR_SIZE 0x100
-
-/* Macros for reading device capability */
-#define QDMA_GLBL2_MISC_CAP                       0x134
-#define     QDMA_GLBL2_MM_CMPT_EN_MASK            0x4
-#define QDMA_GLBL2_CHANNEL_MDMA                   0x118
-#define     QDMA_GLBL2_ST_C2H_MASK                0x10000
-#define     QDMA_GLBL2_ST_H2C_MASK                0x20000
-#define     QDMA_GLBL2_MM_C2H_MASK                0x100
-#define     QDMA_GLBL2_MM_H2C_MASK                0x1
-
-#define QDMA_MM_EN_SHIFT          0
-#define QDMA_CMPT_EN_SHIFT        1
-#define QDMA_ST_EN_SHIFT          2
-#define QDMA_MAILBOX_EN_SHIFT     3
-
-#define QDMA_MM_MODE              (1 << QDMA_MM_EN_SHIFT)
-#define QDMA_COMPLETION_MODE      (1 << QDMA_CMPT_EN_SHIFT)
-#define QDMA_ST_MODE              (1 << QDMA_ST_EN_SHIFT)
-#define QDMA_MAILBOX              (1 << QDMA_MAILBOX_EN_SHIFT)
-
-
-#define QDMA_MM_ST_MODE \
-	(QDMA_MM_MODE | QDMA_COMPLETION_MODE | QDMA_ST_MODE)
-
-#define GET_CAPABILITY_MASK(mm_en, st_en, mm_cmpt_en, mailbox_en)  \
-	((mm_en << QDMA_MM_EN_SHIFT) | \
-			((mm_cmpt_en | st_en) << QDMA_CMPT_EN_SHIFT) | \
-			(st_en << QDMA_ST_EN_SHIFT) | \
-			(mailbox_en << QDMA_MAILBOX_EN_SHIFT))
-
-struct xreg_info {
-	const char name[32];
-	uint32_t addr;
-	uint32_t repeat;
-	uint32_t step;
-	uint8_t shift;
-	uint8_t len;
-	uint8_t mode;
-};
-
-static struct xreg_info qdma_user_regs[] = {
-	{"ST_C2H_QID", 0x0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKTLEN", 0x4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CONTROL", 0x8, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_C2H_CONTROL:
-	 *	[1] : start C2H
-	 *	[2] : immediate data
-	 *	[3] : every packet statrs with 00 instead of continuous data
-	 *	      stream until # of packets is complete
-	 *	[31]: gen_user_reset_n
-	 */
-	{"ST_H2C_CONTROL", 0xC, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_H2C_CONTROL:
-	 *	[0] : clear match for H2C transfer
-	 */
-	{"ST_H2C_STATUS", 0x10, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_H2C_XFER_CNT", 0x14, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_CNT", 0x20, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_DATA", 0x30, 8, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_SIZE", 0x50, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_SCRATCH_REG", 0x60, 2, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_DROP", 0x88, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_ACCEPT", 0x8C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DSC_BYPASS_LOOP", 0x90, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT", 0x94, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_MASK", 0x98, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_VEC", 0x9C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DMA_CONTROL", 0xA0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"VDM_MSG_READ", 0xA4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-
-	{"", 0, 0, 0 }
-};
-
-
-static struct xreg_info qdma_cpm_dmap_regs[] = {
-/* QDMA_TRQ_SEL_QUEUE_PF (0x6400) */
-	{"DMAP_SEL_INT_CIDX", 0x6400, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"DMAP_SEL_H2C_DSC_PIDX", 0x6404, 512, 0x10, 0, 0,  QDMA_MM_ST_MODE},
-	{"DMAP_SEL_C2H_DSC_PIDX", 0x6408, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"DMAP_SEL_CMPT_CIDX", 0x640C, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"", 0, 0, 0 }
-};
-
-static struct xreg_info qdma_dmap_regs[] = {
-/* QDMA_TRQ_SEL_QUEUE_PF (0x6400) */
-	{"DMAP_SEL_INT_CIDX", 0x6400, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"DMAP_SEL_H2C_DSC_PIDX", 0x6404, 512, 0x10, 0, 0,  QDMA_MM_ST_MODE},
-	{"DMAP_SEL_C2H_DSC_PIDX", 0x6408, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"DMAP_SEL_CMPT_CIDX", 0x640C, 512, 0x10, 0, 0, QDMA_MM_ST_MODE},
-	{"", 0, 0, 0 }
-};
-
-/*
- * Register I/O through mmap of BAR0.
- */
-
-/* /sys/bus/pci/devices/0000:<bus>:<dev>.<func>/resource<bar#> */
-#define get_syspath_bar_mmap(s, bus,dev,func,bar) \
-	snprintf(s, sizeof(s), \
-		"/sys/bus/pci/devices/0000:%02x:%02x.%x/resource%u", \
-		bus, dev, func, bar)
-
-static uint32_t *mmap_bar(char *fname, size_t len, int prot)
-{
-	int fd;
-	uint32_t *bar;
-
-	fd = open(fname, (prot & PROT_WRITE) ? O_RDWR : O_RDONLY);
-	if (fd < 0)
-		return NULL;
-
-	bar = mmap(NULL, len, prot, MAP_SHARED, fd, 0);
-	close(fd);
-
-	return bar == MAP_FAILED ? NULL : bar;
-}
-
-static int32_t reg_read_mmap(struct xnl_dev_info *dev_info,
-			     unsigned char barno,
-			     struct xcmd_info *xcmd)
-{
-	uint32_t *bar;
-	char fname[256];
-	int rv = 0;
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	get_syspath_bar_mmap(fname, dev_info->pci_bus, dev_info->pci_dev,
-			     dev_info->dev_func, barno);
-
-	bar = mmap_bar(fname, xcmd->req.reg.reg + 4, PROT_READ);
-	if (!bar) {
-		if (xcmd->op == XNL_CMD_REG_WRT)
-			xcmd->op = XNL_CMD_REG_RD;
-
-		rv  = xnl_common_msg_send(xcmd, attrs);
-
-		return rv;
-	}
-
-	xcmd->req.reg.val = le32toh(bar[xcmd->req.reg.reg / 4]);
-	munmap(bar, xcmd->req.reg.reg + 4);
-
-	return rv;
-}
-
-static int32_t reg_write_mmap(struct xnl_dev_info *dev_info,
-			      unsigned char barno,
-			      struct xcmd_info *xcmd)
-{
-	uint32_t *bar;
-	char fname[256];
-	int rv = 0;
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	get_syspath_bar_mmap(fname, dev_info->pci_bus, dev_info->pci_dev,
-			     dev_info->dev_func, barno);
-
-	bar = mmap_bar(fname, xcmd->req.reg.reg + 4, PROT_WRITE);
-	if (!bar) {
-		rv  = xnl_common_msg_send(xcmd, attrs);
-
-		return rv;
-	}
-
-	bar[xcmd->req.reg.reg / 4] = htole32(xcmd->req.reg.val);
-	munmap(bar, xcmd->req.reg.reg + 4);
-	return 0;
-}
-
-static void print_repeated_reg(uint32_t *bar, struct xreg_info *xreg,
-		unsigned start, unsigned limit, struct xnl_dev_info *dev_info,
-		struct xcmd_info *xcmd, void (*log_reg)(const char *))
-{
-	int i;
-	int end = start + limit;
-	int step = xreg->step ? xreg->step : 4;
-	uint32_t val;
-	int32_t rv = 0;
-	char reg_dump[100];
-
-	for (i = start; i < end; i++) {
-		uint32_t addr = xreg->addr + (i * step);
-		char name[40];
-		snprintf(name, 40, "%s_%d",
-				xreg->name, i);
-
-		if (xcmd == NULL) {
-			val = le32toh(bar[addr / 4]);
-		} else {
-			xcmd->req.reg.reg = addr;
-			rv = reg_read_mmap(dev_info, xcmd->req.reg.bar, xcmd);
-			if (rv < 0) {
-				snprintf(reg_dump, 100, "\n");
-				if (log_reg)
-					log_reg(reg_dump);
-				continue;
-			}
-		}
-		snprintf(reg_dump, 100, "[%#7x] %-47s %#-10x %u\n",
-			addr, name, val, val);
-		if (log_reg)
-			log_reg(reg_dump);
-	}
-}
-
-static void read_config_regs(uint32_t *bar, struct xnl_dev_info *xdev,
-			     struct xcmd_info *xcmd)
-{
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	/* Get the capabilities of the Device */
-	xcmd->op = XNL_CMD_REG_DUMP;
-	xnl_common_msg_send(xcmd, attrs);
-}
-
-static void read_regs(uint32_t *bar, struct xreg_info *reg_list,
-		      struct xnl_dev_info *xdev, struct xcmd_info *xcmd,
-		      void (*log_reg)(const char *))
-{
-	struct xreg_info *xreg = reg_list;
-	uint32_t val;
-	int32_t rv = 0;
-	char reg_dump[100] = {'\0'};
-
-	for (xreg = reg_list; strlen(xreg->name); xreg++) {
-
-		if (!xreg->len) {
-			if (xreg->repeat) {
-				if (xcmd == NULL)
-					print_repeated_reg(bar, xreg, 0,
-							   xreg->repeat, NULL,
-							   NULL, log_reg);
-				else
-					print_repeated_reg(NULL, xreg, 0,
-							   xreg->repeat, xdev,
-							   xcmd, log_reg);
-			} else {
-				uint32_t addr = xreg->addr;
-				if (xcmd == NULL) {
-					val = le32toh(bar[addr / 4]);
-				} else {
-					xcmd->req.reg.reg = addr;
-					rv = reg_read_mmap(xdev,
-							   xcmd->req.reg.bar,
-							   xcmd);
-					if (rv < 0)
-						continue;
-				}
-				snprintf(reg_dump, 100,
-					 "[%#7x] %-47s %#-10x %u\n",
-					 addr, xreg->name, val, val);
-				if (log_reg)
-					log_reg(reg_dump);
-			}
-		} else {
-			uint32_t addr = xreg->addr;
-			uint32_t val = 0;
-			if (xcmd == NULL) {
-				val = le32toh(bar[addr / 4]);
-			} else {
-				xcmd->req.reg.reg = addr;
-				rv = reg_read_mmap(xdev, xcmd->req.reg.bar,
-						   xcmd);
-				if (rv < 0)
-					continue;
-			}
-
-			uint32_t v = (val >> xreg->shift) &
-					((1 << xreg->len) - 1);
-
-			snprintf(reg_dump, 100,
-				 "    %*u:%d %-47s %#-10x %u\n",
-				 xreg->shift < 10 ? 3 : 2,
-				 xreg->shift + xreg->len - 1,
-				 xreg->shift, xreg->name, v, v);
-			if (log_reg)
-				log_reg(reg_dump);
-		}
-		memset(reg_dump, '\0', 100);
-	}
-}
-
-static void reg_dump_mmap(struct xnl_dev_info *dev_info, unsigned char barno,
-			struct xreg_info *reg_list, unsigned int max,
-			struct xcmd_info *xcmd)
-{
-	uint32_t *bar;
-	char fname[256];
-
-	get_syspath_bar_mmap(fname, dev_info->pci_bus, dev_info->pci_dev,
-			     dev_info->dev_func, barno);
-
-	if ((barno == dev_info->config_bar) && (reg_list == NULL))
-		read_config_regs(NULL, dev_info, xcmd);
-	else {
-		bar = mmap_bar(fname, max, PROT_READ);
-		if (!bar) {
-			xcmd->req.reg.bar = barno;
-			xcmd->op = XNL_CMD_REG_RD;
-			read_regs(NULL, reg_list, dev_info, xcmd,
-					  xcmd->log_msg_dump);
-		} else {
-			read_regs(bar, reg_list, NULL, NULL, xcmd->log_msg_dump);
-			munmap(bar, max);
-		}
-	}
-	return;
-}
-
-
-static void reg_dump_range(struct xnl_dev_info *dev_info, unsigned char barno,
-			 unsigned int max, struct xreg_info *reg_list,
-			 unsigned int start, unsigned int limit,
-			 struct xcmd_info *xcmd)
-{
-	struct xreg_info *xreg = reg_list;
-	uint32_t *bar;
-	char fname[256];
-
-	get_syspath_bar_mmap(fname, dev_info->pci_bus, dev_info->pci_dev,
-			     dev_info->dev_func, barno);
-
-	bar = mmap_bar(fname, max, PROT_READ);
-	if (!bar) {
-		xcmd->op = XNL_CMD_REG_RD;
-		xcmd->req.reg.bar = barno;
-		for (xreg = reg_list; strlen(xreg->name); xreg++) {
-			print_repeated_reg(NULL, xreg, start, limit, dev_info,
-					   xcmd, xcmd->log_msg_dump);
-		}
-		return;
-	}
-
-	for (xreg = reg_list; strlen(xreg->name); xreg++) {
-		print_repeated_reg(bar, xreg, start, limit, NULL, NULL,
-				   xcmd->log_msg_dump);
-	}
-
-	munmap(bar, max);
-}
-
-static inline void print_seperator(struct xcmd_info *xcmd)
-{
-	char buffer[81];
-
-	memset(buffer, '#', 80);
-	buffer[80] = '\0';
-
-	if (xcmd && xcmd->log_msg_dump)
-		xcmd->log_msg_dump(buffer);
-}
-
-int proc_reg_cmd(struct xcmd_info *xcmd)
-{
-	struct xcmd_reg *regcmd;
-	struct xcmd_info dev_xcmd;
-	int32_t rv = 0;
-	char reg_dump[100];
-	unsigned int barno;
-	unsigned char version[QDMA_VERSION_INFO_STR_LENGTH];
-	int32_t v;
-	unsigned char op;
-	uint32_t attrs[XNL_ATTR_MAX] = {0};
-
-	memcpy(&dev_xcmd, xcmd, sizeof(dev_xcmd));
-
-	dev_xcmd.op = XNL_CMD_DEV_CAP;
-	rv = qdma_dev_cap(&dev_xcmd);
-	if (rv < 0)
-		return rv;
-
-	strcpy(version, dev_xcmd.resp.cap.version_str);
-
-	op = xcmd->op;
-	xcmd->op = XNL_CMD_DEV_INFO;
-	rv = qdma_dev_info(xcmd);
-	if (rv < 0)
-		return rv;
-	xcmd->op = op;
-	regcmd = &xcmd->req.reg;
-	barno = (regcmd->sflags & XCMD_REG_F_BAR_SET) ?
-			 regcmd->bar : xcmd->resp.dev_info.config_bar;
-	regcmd->bar = barno;
-
-	switch (xcmd->op) {
-	case XNL_CMD_REG_RD:
-		rv = reg_read_mmap(&xcmd->resp.dev_info, barno, xcmd);
-		if (rv < 0)
-			return rv;
-		break;
-	case XNL_CMD_REG_WRT:
-		v = reg_write_mmap(&xcmd->resp.dev_info, barno, xcmd);
-		if (v < 0)
-			return rv;
-		rv = reg_read_mmap(&xcmd->resp.dev_info, barno, xcmd);
-		if (rv < 0)
-			return rv;
-		break;
-	case XNL_CMD_REG_DUMP:
-		print_seperator(xcmd);
-
-		if (xcmd->vf)
-			snprintf(reg_dump, 100, "\n###\t\tqdmavf%05x, pci %02x:%02x.%02x, reg dump\n",
-				xcmd->if_bdf, xcmd->resp.dev_info.pci_bus,
-				xcmd->resp.dev_info.pci_dev, xcmd->resp.dev_info.dev_func);
-		else
-			snprintf(reg_dump, 100, "\n###\t\tqdma%05x, pci %02x:%02x.%02x, reg dump\n",
-				xcmd->if_bdf, xcmd->resp.dev_info.pci_bus,
-				xcmd->resp.dev_info.pci_dev, xcmd->resp.dev_info.dev_func);
-		if (xcmd->log_msg_dump)
-			xcmd->log_msg_dump(reg_dump);
-
-		print_seperator(xcmd);
-		snprintf(reg_dump, 100, "\nAXI Master Lite Bar #%d\n",
-			 xcmd->resp.dev_info.user_bar);
-		if (xcmd->log_msg_dump)
-			xcmd->log_msg_dump(reg_dump);
-
-		reg_dump_mmap(&xcmd->resp.dev_info, xcmd->resp.dev_info.user_bar,
-			      qdma_user_regs, QDMA_USR_BAR_SIZE, xcmd);
-
-		snprintf(reg_dump, 100, "\nCONFIG BAR #%d\n",
-			xcmd->resp.dev_info.config_bar);
-		if (xcmd->log_msg_dump)
-			xcmd->log_msg_dump(reg_dump);
-		reg_dump_mmap(&xcmd->resp.dev_info, xcmd->resp.dev_info.config_bar, NULL,
-				QDMA_CFG_BAR_SIZE, xcmd);
-		break;
-	case XNL_CMD_REG_INFO_READ:
-		xnl_common_msg_send(xcmd, attrs);
-		break;
-	default:
-		break;
-	}
-
-	return 0;
-}
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmautils.c b/QDMA/linux-kernel/apps/dma-utils/dmautils.c
deleted file mode 100755
index 358530b..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmautils.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019 - 2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-#include "dmautils.h"
-
-#include <stdint.h>
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-
-#include "qdma_nl.h"
-#include "dmaxfer.h"
-#include "version.h"
-
-#define QDMA_Q_NAME_LEN 100
-
-enum qdma_reg_op {
-	QDMA_Q_REG_DUMP,
-	QDMA_Q_REG_RD,
-	QDMA_Q_REG_WR,
-};
-
-
-int qdmautils_sync_xfer(char *filename, enum qdmautils_io_dir dir, void *buf,
-			unsigned int xfer_len)
-{
-	return dmaxfer_iosubmit(filename, dir, DMAXFER_IO_SYNC, buf, xfer_len);
-}
-
-int qdmautils_async_xfer(char *filename, enum qdmautils_io_dir dir, void *buf,
-			unsigned int xfer_len)
-{
-	return dmaxfer_iosubmit(filename, dir, DMAXFER_IO_ASYNC, buf, xfer_len);
-}
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmautils.h b/QDMA/linux-kernel/apps/dma-utils/dmautils.h
deleted file mode 100755
index 2df9416..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmautils.h
+++ /dev/null
@@ -1,619 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019 - 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-#ifndef QDMAUTILS_H
-#define QDMAUTILS_H
-
-
-/** @QDMA_GLOBAL_CSR_ARRAY_SZ: QDMA Global CSR array size */
-#define QDMA_GLOBAL_CSR_ARRAY_SZ        16
-
-/**
- * enum dmautils_io_dir - DMA direction to perform
- */
-enum qdmautils_io_dir {
-	/** @DMAXFER_IO_READ: DMA card to host */
-	DMAXFER_IO_READ,
-	/** @DMAXFER_IO_WRITE: DMA host to card */
-	DMAXFER_IO_WRITE,
-};
-
-
-enum qdma_q_fetch_credit {
-	/** @NONE: Disable Fetch Credit**/
-	Q_DISABLE_FETCH_CREDIT = 0,
-	/** @Q_H2C: Enable fetch credit for H2C direction */
-	Q_ENABLE_H2C_FETCH_CREDIT,
-	/** @Q_C2H: Enable fetch credit for C2H direction */
-	Q_ENABLE_C2H_FETCH_CREDIT,
-	/** @Q_H2C_C2H: Enable fetch credit for H2C and C2H direction */
-	Q_ENABLE_H2C_C2H_FETCH_CREDIT,
-};
-
-
-/**
- * enum qdma_q_state - QDMA q state
- */
-enum qdma_q_state {
-	/** @Q_STATE_DISABLED: Queue is not taken */
-	Q_STATE_DISABLED = 0,
-	/** @Q_STATE_ENABLED: Assigned/taken. Partial config is done */
-	Q_STATE_ENABLED,
-	/** @Q_STATE_ONLINE: Resource/context is initialized for the queue and is available for
-	 *  data consumption
-	 */
-	Q_STATE_ONLINE,
-};
-
-/** @set_qparam - helper macro to set  q param
- *  @xcmd: pointer to xcmd_info
- *  @var_ptr: pointer to the variable to be updated in xcmd->u.qparm
- *  @param_type: type of the q param that is being updated
- *  @val: calue to be updated in @var_ptr
- */
-#define set_qparam(xcmd, var_ptr, param_type, val) \
-        do {\
-        	*var_ptr = val; \
-		xcmd->sflags |= (1 << param_type); \
-	} while (0);
-
-/**
- * enum qdma_q_parm_type - QDMA q param type to indicate what all params are
- *                         provided
- */
-enum qdma_q_parm_type {
-	/** @QPARM_IDX: q index param */
-	QPARM_IDX,
-	/** @QPARM_MODE: q mode param */
-	QPARM_MODE,
-	/** @QPARM_DIR: q direction param */
-	QPARM_DIR,
-	/** @QPARM_DESC: q desc request param */
-	QPARM_DESC,
-	/** @QPARM_CMPT: q cmpt desc request param */
-	QPARM_CMPT,
-	/** @QPARM_CMPTSZ: q cmpt size param */
-	QPARM_CMPTSZ,
-	/** @QPARM_SW_DESC_SZ: q sw desc size param */
-	QPARM_SW_DESC_SZ,
-	/** @QPARM_RNGSZ_IDX: q ring size idx param */
-	QPARM_RNGSZ_IDX,
-	/** @QPARM_C2H_BUFSZ_IDX: q c2h buf size idx param */
-	QPARM_C2H_BUFSZ_IDX,
-	/** @QPARM_CMPT_TMR_IDX: q cmpt timer idx param */
-	QPARM_CMPT_TMR_IDX,
-	/** @QPARM_CMPT_CNTR_IDX: q cmpt counter idx param */
-	QPARM_CMPT_CNTR_IDX,
-	/** @QPARM_CMPT_TRIG_MODE: q cmpt trigger mode param  */
-	QPARM_CMPT_TRIG_MODE,
-	/** @QPARM_PING_PONG_EN: ping pong param  */
-	QPARM_PING_PONG_EN,
-	/** @KEYHOLE_PARAM: keyhole feature aperture */
-	QPARM_KEYHOLE_EN,
-	/** @QPARM_MM_CHANNEL: q mm channel enable param */
-	QPARM_MM_CHANNEL,
-	/** @QPARM_MAX: max q param */
-	QPARM_MAX,
-};
-
-/**
- * struct xcmd_q_parm - QDMA q param information
- */
-struct xcmd_q_parm {
-	/** @sflags: flgas to indicate the presence of parms with
-	 *           @qdma_q_parm_type */
-	unsigned int sflags;
-	/** @sflags: flgas to indicate the presence of features */
-	unsigned int flags;
-	/** @idx:  index of queue */
-	unsigned int idx;
-	/** @num_q: num of queue */
-	unsigned int num_q;
-	/** @range_start:  start of range */
-	unsigned int range_start;
-	/** @range_end:  end of range */
-	unsigned int range_end;
-	/** @sw_desc_sz: SW desc size */
-	unsigned char sw_desc_sz;
-	/** @cmpt_entry_size: completion desc size */
-	unsigned char cmpt_entry_size;
-	/** @qrngsz_idx: ring size idx */
-	unsigned char qrngsz_idx;
-	/** @c2h_bufsz_idx: c2h buf size index */
-	unsigned char c2h_bufsz_idx;
-	/** @cmpt_tmr_idx: cmpt timer index */
-	unsigned char cmpt_tmr_idx;
-	/** @cmpt_cntr_idx: cmpt counter index */
-	unsigned char cmpt_cntr_idx;
-	/** @cmpt_trig_mode: cmpt trigger mode */
-	unsigned char cmpt_trig_mode;
-	/** @mm_channel: mm channel enable */
-	unsigned char mm_channel;
-	/** @fetch_credit: fetch credit enable */
-	unsigned char fetch_credit;
-	/** @is_qp: queue pair */
-	unsigned char is_qp;
-	/** @ping_pong_en: ping pong en */
-	unsigned char ping_pong_en;
-	/** @aperture_sz: aperture_size for keyhole transfers*/
-	unsigned int aperture_sz;
-};
-
-/**
- * struct xcmd_intr - QDMA dev interrupt ring dump
- */
-struct xcmd_intr {
-	/** @vector: vector number */
-	unsigned int vector;
-	/** @start_idx: start idx of interrupt ring descriptor */
-	int start_idx;
-	/** @end_idx: end idx of interrupt ring descriptor */
-	int end_idx;
-};
-
-/** @QDMA_VERSION_INFO_STR_LENGTH: QDMA version string length */
-#define QDMA_VERSION_INFO_STR_LENGTH            256
-
-/**
- * struct xcmd_dev_cap - QDMA device capabilites
- */
-struct xcmd_dev_cap {
-	/** @version_str: qdma version string */
-	char version_str[QDMA_VERSION_INFO_STR_LENGTH];
-	/** @num_qs: HW qmax */
-	unsigned int num_qs;
-	/** @num_pfs: HW number of pf */
-	unsigned int num_pfs;
-	/** @flr_present: flr support */
-	unsigned int flr_present;
-	/** @mm_en: MM mode support */
-	unsigned int mm_en;
-	/** @mm_cmpt_en: MM CMPT mode support */
-	unsigned int mm_cmpt_en;
-	/** @st_en: ST mode support */
-	unsigned int st_en;
-	/** @mailbox_en: Mailbox support */
-	unsigned int mailbox_en;
-	/** @mm_channel_max: Max MM channel */
-	unsigned int mm_channel_max;
-	/** @debug_mode: Debug Mode*/
-	unsigned int debug_mode;
-	/** @desc_eng_mode: Descriptor Engine Mode*/
-	unsigned int desc_eng_mode;
-};
-
-/**
- * struct xcmd_reg - register access command info
- */
-struct xcmd_reg {
-	/** @sflags: flags to indicate parameter presence */
-	unsigned int sflags;
-	/** @XCMD_REG_F_BAR_SET: bar param set */
-#define XCMD_REG_F_BAR_SET	0x1
-	/** @XCMD_REG_F_REG_SET: reg param set */
-#define XCMD_REG_F_REG_SET	0x2
-	/** @XCMD_REG_F_VAL_SET: val param set */
-#define XCMD_REG_F_VAL_SET	0x4
-	/** @bar: bar number */
-	unsigned int bar;
-	/** @reg: register offset */
-	unsigned int reg;
-	/** @val: value */
-	unsigned int val;
-	/** @range_start: range start */
-	unsigned int range_start;
-	/** @range_end: range end */
-	unsigned int range_end;
-};
-
-/**
- * struct xnl_dev_info - device information
- */
-struct xnl_dev_info {
-	/** @pci_bus: pci bus */
-	unsigned char pci_bus;
-	/** @pci_dev: pci device */
-	unsigned char pci_dev;
-	/** @dev_func: pci function */
-	unsigned char dev_func;
-	/** @config_bar: config bar */
-	unsigned char config_bar;
-	/** @user_bar: AXI Master Lite(user bar) */
-	unsigned char user_bar;
-	/** @qmax: SW qmax */
-	unsigned int qmax;
-	/** @qbase: HW q base */
-	unsigned int qbase;
-};
-
-/**
- * struct xnl_dev_stat - device statistics
- */
-struct xnl_dev_stat {
-	/** @mm_h2c_pkts: MM H2C packets processed */
-	unsigned long long mm_h2c_pkts;
-	/** @mm_c2h_pkts: MM C2H packets processed */
-	unsigned long long mm_c2h_pkts;
-	/** @st_h2c_pkts: ST H2C packets processed */
-	unsigned long long st_h2c_pkts;
-	/** @st_c2h_pkts: ST C2H packets processed */
-	unsigned long long st_c2h_pkts;
-	/** max ping_pong latency */
-	unsigned long long ping_pong_lat_max;
-	/** min ping_pong latency */
-	unsigned long long ping_pong_lat_min;
-	/** avg ping_pong latency */
-	unsigned long long ping_pong_lat_avg;
-};
-
-/**
- * struct xnl_q_info - q state information
- */
-struct xnl_q_info {
-	/** @flags: feature flags enabled */
-	unsigned int flags;
-	/** @qidx: index of queue */
-	unsigned int qidx;
-	/** @state: queue state */
-	enum qdma_q_state state;
-};
-
-/**
- * struct global_csr_conf - Global CSR information
- */
-struct global_csr_conf {
-	/** @ring_sz: Descriptor ring size ie. queue depth */
-	unsigned int ring_sz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @c2h_timer_cnt: C2H timer count  list */
-	unsigned int c2h_timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @c2h_cnt_th: C2H counter threshold list*/
-	unsigned int c2h_cnt_th[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @c2h_buf_sz: C2H buffer size list */
-	unsigned int c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @wb_intvl: Writeback interval */
-	unsigned int wb_intvl;
-};
-
-
-/**
- * struct xcmd_info - command information
- */
-struct xcmd_info {
-	/** @vf: is VF */
-	unsigned char vf:1;
-	/** @op: operation */
-	unsigned char op:7;
-	/** @req: union of other information for request */
-	union {
-		/** @intr: interrupt ring info */
-		struct xcmd_intr intr;
-		/** @reg: reg command info */
-		struct xcmd_reg reg;
-		/** @qparm: q command info */
-		struct xcmd_q_parm qparm;
-	} req;
-	/** @resp: union of information from response */
-	union {
-		/** @cap: device capabilities response */
-		struct xcmd_dev_cap cap;
-		/** @dev_stat: device stat response */
-		struct xnl_dev_stat dev_stat;
-		/** @dev_info: device info response */
-		struct xnl_dev_info dev_info;
-		/** @q_info: queue info response */
-		struct xnl_q_info q_info;
-		/** @csr: CSR reponse */
-		struct global_csr_conf csr;
-	} resp;
-	/** @if_bdf: interface BDF */
-	unsigned int if_bdf;
-	/** @log_msg_dump: log messages dumping function */
-	void (*log_msg_dump)(const char *resp_str);
-};
-
-/** @QDMAUTILS_VERSION_LEN: qdmautils version string length */
-#define QDMAUTILS_VERSION_LEN   10
-/**
- * struct qdmautils_version - qdmautils version information
- */
-struct qdmautils_version {
-	char version[QDMAUTILS_VERSION_LEN];
-};
-
-/*****************************************************************************/
-/**
- * qdmautils_get_version() - Get qdmautils version
- *
- * @ver:	Pointer to the output data structure where version is to be
- *              updated
- *
- * Return:	Nothing
- *
- *****************************************************************************/
-void qdmautils_get_version(struct qdmautils_version *ver);
-
-/*****************************************************************************/
-/**
- * qdma_dev_list_dump() - dump device list
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_list_dump(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_info() - get device information provided by cmd->u.dev_info
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_info(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_cap() - get device capabilities provided by cmd->u.dev_cap
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_cap(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_stat() - get device statistics provided by cmd->u.dev_stat
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_stat(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_stat_clear() - clear device statistics
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_stat_clear(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_intr_ring_dump() - dump device interrupt ring
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_intr_ring_dump(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_dev_get_global_csr() - get global CSR provided by cmd->u.csr
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_get_global_csr(struct xcmd_info *cmd);
-
-
-/*****************************************************************************/
-/**
- * qdma_dev_q_list_dump() - dump device q list
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_dev_q_list_dump(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_add() - add a queue
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_add(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_del() - delete a queue
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_del(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_start() - start a queue
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_start(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_stop() - stop a queue
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_stop(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_get_state() - get q state information provided by cmd->u.q_info
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_get_state(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_dump() - dump q context
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_dump(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_desc_dump() - dump q sw/cmpt descriptors
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_desc_dump(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_q_cmpt_read() - dump last cmpt descriptor of the queue
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_q_cmpt_read(struct xcmd_info *cmd);
-
-
-/*****************************************************************************/
-/**
- * qdma_reg_read() - read register
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_reg_read(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_reg_info_read() - read register fields information
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_reg_info_read(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_reg_write() - write register
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_reg_write(struct xcmd_info *cmd);
-
-/*****************************************************************************/
-/**
- * qdma_reg_dump() - dump registers
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_reg_dump(struct xcmd_info *cmd);
-
-
-/*****************************************************************************/
-/**
- * qdmautils_ioctl_nomemcpy() - set no memcpy from ioctl for the cdev
- *
- * @filename:	filename on which ioctl needs to be done
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdmautils_ioctl_nomemcpy(char *filename);
-
-/*****************************************************************************/
-/**
- * qdmautils_sync_xfer() - sync transfer
- *
- * @filename:	filename on which transfer needs to be done
- * @dir:	direction oif operation
- * @buf:        pointer to buffer
- * @xfer_len:   size of transfer
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdmautils_sync_xfer(char *filename, enum qdmautils_io_dir dir, void *buf,
-		   unsigned int xfer_len);
-
-/*****************************************************************************/
-/**
- * qdmautils_async_xfer() - async trasnfer
- *
- * @filename:	filename on which transfer needs to be done
- * @dir:	direction oif operation
- * @buf:        pointer to buffer
- * @xfer_len:   size of transfer
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdmautils_async_xfer(char *filename, enum qdmautils_io_dir dir, void *buf,
-		   unsigned int xfer_len);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * qdma_en_st() - Enable Streaming
- *
- * @cmd:	command information
- *
- * Return:	>=0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_en_st(struct xcmd_info *cmd);
-#endif
-
-#endif /* QDMAUTILS_H */
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c b/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c
deleted file mode 100755
index b0c9b8e..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.c
+++ /dev/null
@@ -1,1118 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#include <semaphore.h>
-#include <time.h>
-#include <sys/wait.h>
-#include <sys/types.h>
-#include <sys/shm.h>
-#include <fcntl.h>
-#include <stdbool.h>
-#include <linux/types.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <signal.h>
-#include <stddef.h>
-#include <errno.h>
-#include <error.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include </usr/include/pthread.h>
-#include <libaio.h>
-#include <sys/sysinfo.h>
-#include <sys/uio.h>
-#include "dmaxfer.h"
-
-#define SEC2NSEC           1000000000
-#define SEC2USEC           1000000
-
-#define DATA_VALIDATION 0
-#define MSEC2NSEC 1000000
-
-struct dmaxfer_perf_handle {
-	int shmid;
-	unsigned int active_threads;
-	int *child_pid_lst;
-};
-
-struct dma_meminfo {
-	void *memptr;
-	unsigned int num_blks;
-};
-
-enum dmaio_direction {
-	DMAIO_READ,
-	DMAIO_WRITE,
-	DMAIO_RDWR,
-};
-
-#define USE_MEMPOOL
-
-struct mempool_handle {
-	void *mempool;
-	unsigned int mempool_blkidx;
-	unsigned int mempool_blksz;
-	unsigned int total_memblks;
-	struct dma_meminfo *mempool_info;
-#ifdef DEBUG
-	unsigned int id;
-	unsigned int loop;
-#endif
-};
-
-struct io_info {
-	unsigned int num_req_submitted;
-	unsigned int num_req_completed;
-	struct list_head *head;
-	struct list_head *tail;
-	sem_t llock;
-	int pid;
-	int fd;
-	pthread_t evt_id;
-	enum dmaio_direction dir;
-#ifdef DEBUG
-	unsigned long long total_nodes;
-	unsigned long long freed_nodes;
-#endif
-	unsigned int thread_id;
-	unsigned int max_reqs;
-	struct dmaxfer_io_info *dinfo;
-	bool io_exit;
-	bool force_exit;
-	struct timespec g_ts_start;
-	struct timespec ts_cur;
-	struct mempool_handle ctxhandle;
-	struct mempool_handle iocbhandle;
-	struct mempool_handle datahandle;
-};
-
-struct list_head {
-	struct list_head *next;
-	unsigned int max_events;
-	unsigned int completed_events;
-	io_context_t ctxt;
-};
-
-#if DATA_VALIDATION
-unsigned short valid_data[2*1024];
-#endif
-
-static void clear_events(struct io_info *_info, struct list_head *node);
-static void dump_thrd_info(struct io_info *_info) {
-	printf("dir = %d\n", _info->dir);
-}
-
-static int mempool_create(struct mempool_handle *mpool, unsigned int entry_size,
-		unsigned int max_entries)
-{
-#ifdef USE_MEMPOOL
-	if (posix_memalign((void **)&mpool->mempool, DMAPERF_PAGE_SIZE,
-			   max_entries * (entry_size + sizeof(struct dma_meminfo)))) {
-		printf("OOM Mempool\n");
-		return -ENOMEM;
-	}
-	mpool->mempool_info = (struct dma_meminfo *)(((char *)mpool->mempool) + (max_entries * entry_size));
-#endif
-	mpool->mempool_blksz = entry_size;
-	mpool->total_memblks = max_entries;
-	mpool->mempool_blkidx = 0;
-
-	return 0;
-}
-
-static void mempool_free(struct mempool_handle *mpool)
-{
-#ifdef USE_MEMPOOL
-	free(mpool->mempool);
-	mpool->mempool = NULL;
-#endif
-}
-
-static void *dma_memalloc(struct mempool_handle *mpool, unsigned int num_blks)
-{
-	unsigned int _mempool_blkidx = mpool->mempool_blkidx;
-	unsigned int tmp_blkidx = _mempool_blkidx;
-	unsigned int max_blkcnt = tmp_blkidx + num_blks;
-	unsigned int i, avail = 0;
-	void *memptr = NULL;
-	char *mempool = mpool->mempool;
-	struct dma_meminfo *_mempool_info = mpool->mempool_info;
-	unsigned int _total_memblks = mpool->total_memblks;
-
-#ifdef USE_MEMPOOL
-	if (max_blkcnt > _total_memblks) {
-		tmp_blkidx = 0;
-		max_blkcnt = num_blks;
-	}
-	for (i = tmp_blkidx; (i < _total_memblks) && (i < max_blkcnt); i++) {
-		if (_mempool_info[i].memptr) { /* occupied blks ahead */
-			i += _mempool_info[i].num_blks;
-			max_blkcnt = i + num_blks;
-			avail = 0;
-			tmp_blkidx = i;
-		} else
-			avail++;
-		if (max_blkcnt > _total_memblks) { /* reached the end of mempool. circle through*/
-			if (num_blks > _mempool_blkidx) return NULL; /* Continuous num_blks not available */
-			i = 0;
-			avail = 0;
-			max_blkcnt = num_blks;
-			tmp_blkidx = 0;
-		}
-	}
-	if (avail < num_blks) { /* no required available blocks */
-		return NULL;
-	}
-
-	memptr = &(mempool[tmp_blkidx * mpool->mempool_blksz]);
-	_mempool_info[tmp_blkidx].memptr = memptr;
-	_mempool_info[tmp_blkidx].num_blks = num_blks;
-	mpool->mempool_blkidx = tmp_blkidx + num_blks;
-#else
-	memptr = calloc(num_blks, mpool->mempool_blksz);
-#endif
-
-	return memptr;
-}
-
-static void dma_free(struct mempool_handle *mpool, void *memptr)
-{
-#ifdef USE_MEMPOOL
-	struct dma_meminfo *_meminfo = mpool->mempool_info;
-	unsigned int idx;
-
-	if (!memptr) return;
-
-	idx = (memptr - mpool->mempool)/mpool->mempool_blksz;
-#ifdef DEBUG
-	if (idx >= mpool->total_memblks) {
-		printf("Asserting: %u:Invalid memory index %u acquired\n", mpool->id, idx);
-		while(1);
-	}
-#endif
-
-	_meminfo[idx].num_blks = 0;
-	_meminfo[idx].memptr = NULL;
-#else
-	free(memptr);
-#endif
-}
-
-static int dmasetio_info(struct io_info *info, struct dmaxfer_io_info *ptr,
-		unsigned int base, enum dmaio_direction dir)
-{
-
-	int fd;
-	unsigned int flags;
-
-	info[base].dir = dir;
-	info[base].dinfo = ptr;
-	info[base].thread_id = base;
-	info[base].max_reqs = ptr->max_req_outstanding;
-	sem_init(&info[base].llock, 0, 1);
-
-	if (dir == DMAIO_READ)
-	       flags = O_RDONLY | O_NONBLOCK;
-	else
-	       flags = O_WRONLY | O_NONBLOCK;
-
-	fd = open(ptr->file_name, flags);
-	if (fd < 0)
-		return fd;
-	info[base].fd = fd;
-
-	return 0;
-}
-
-static int create_thread_info(struct dmaxfer_io_info *list,
-		unsigned int num_entries,
-		unsigned int num_jobs)
-{
-	unsigned int base = 0;
-	unsigned int i, j;
-	struct io_info *_info;
-	int shmid;
-
-	if ((shmid = shmget(IPC_PRIVATE,
-			num_jobs * sizeof(struct io_info),
-			IPC_CREAT | 0666)) < 0)
-	{
-		perror("smget returned -1\n");
-		error(-1, errno, " ");
-		return -EINVAL;
-	}
-
-	if ((_info = (struct io_info *) shmat(shmid, NULL, 0)) == (struct io_info *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-	}
-
-	for (i = 0; i < num_entries; i++) {
-		for (j = 0; j < list[i].num_jobs; j++) {
-			if ((list[i].write == DMAIO_RDWR) ||
-					(list[i].write == DMAIO_READ)) {
-				dmasetio_info(_info, list + i, base,
-					      DMAIO_READ);
-				base++;
-			}
-			if ((list[i].write == DMAIO_RDWR) ||
-					(list[i].write == DMAIO_WRITE)) {
-				dmasetio_info(_info, list + i, base,
-					      DMAIO_WRITE);
-				base++;
-			}
-			//dump_thrd_info(&_info[i]);
-		}
-	}
-
-	if (shmdt(_info) == -1) {
-		perror("shmdt returned -1\n");
-	        error(-1, errno, " ");
-	}
-	return shmid;
-}
-
-#define MAX_AIO_EVENTS 65536
-
-static void list_add_tail(struct io_info *_info, struct list_head *node)
-{
-    sem_wait(&_info->llock);
-    if (_info->head == NULL) {
-        _info->head = node;
-        _info->tail = node;
-    } else {
-        _info->tail->next = node;
-        _info->tail = node;
-    }
-#ifdef DEBUG
-    _info->total_nodes++;
-#endif
-    sem_post( &_info->llock);
-}
-
-static void list_add_head(struct io_info *_info, struct list_head *node)
-{
-    sem_wait(&_info->llock);
-    node->next = _info->head;
-    if (_info->head == NULL) {
-        _info->tail = node;
-    }
-    _info->head = node;
-    sem_post( &_info->llock);
-}
-
-static struct list_head *list_pop(struct io_info *_info)
-{
-	struct list_head *node = NULL;
-
-	sem_wait(&_info->llock);
-	node = _info->head;
-	if (_info->head == _info->tail)
-		_info->tail = NULL;
-
-	if (node)
-		_info->head = node->next;
-
-	sem_post(&_info->llock);
-
-	return node;
-}
-
-static void list_free(struct io_info *_info)
-{
-	struct list_head *node = NULL;
-	struct list_head *prev_node = NULL;
-
-	sem_wait(&_info->llock);
-#ifdef DEBUG
-	printf("Need to free %llu nodes in thrd%u\n", _info->total_nodes - _info->freed_nodes, _info->thread_id);
-#endif
-	node = _info->head;
-
-	while (node != NULL) {
-		clear_events(_info, node);
-		io_destroy(node->ctxt);
-		prev_node = node;
-		node = node->next;
-		dma_free(&_info->ctxhandle, prev_node);
-#ifdef DEBUG
-		_info->freed_nodes++;
-#endif
-	}
-	sem_post(&_info->llock);
-}
-
-/* Subtract timespec t2 from t1
- *
- * Both t1 and t2 must already be normalized
- * i.e. 0 <= nsec < 1000000000
- */
-static int timespec_check(struct timespec *t)
-{
-	if ((t->tv_nsec < 0) || (t->tv_nsec >= 1000000000))
-		return -1;
-	return 0;
-
-}
-
-void xfer_timespec_sub(struct timespec *t1, struct timespec *t2)
-{
-	if (timespec_check(t1) < 0) {
-		fprintf(stderr, "invalid time #1: %lld.%.9ld.\n",
-			(long long)t1->tv_sec, t1->tv_nsec);
-		return;
-	}
-	if (timespec_check(t2) < 0) {
-		fprintf(stderr, "invalid time #2: %lld.%.9ld.\n",
-			(long long)t2->tv_sec, t2->tv_nsec);
-		return;
-	}
-	t1->tv_sec -= t2->tv_sec;
-	t1->tv_nsec -= t2->tv_nsec;
-	if (t1->tv_nsec >= 1000000000) {
-		t1->tv_sec++;
-		t1->tv_nsec -= 1000000000;
-	} else if (t1->tv_nsec < 0) {
-		t1->tv_sec--;
-		t1->tv_nsec += 1000000000;
-	}
-}
-
-static void clear_events(struct io_info *_info, struct list_head *node) {
-	struct io_event *events = NULL;
-	int num_events = 0;
-	unsigned int j, bufcnt;
-	struct timespec ts_cur = {1, 0};
-	struct mempool_handle *iocbhandle;
-	struct mempool_handle *datahandle;
-
-	iocbhandle = &_info->iocbhandle;
-	datahandle = &_info->datahandle;
-
-	if (node->max_events <= node->completed_events)
-		return;
-#ifdef DEBUG
-	printf("Thrd%u: Need to clear %u/%u events in node %p\n",
-	       _info->thread_id, node->max_events - node->completed_events,
-	       node->max_events, node);
-#endif
-	events = calloc(node->max_events - node->completed_events, sizeof(struct io_event));
-	if (events == NULL) {
-		printf("[%s] OOM\n", __func__);
-		return;
-	}
-	do {
-		num_events = io_getevents(node->ctxt, 1,
-					  node->max_events - node->completed_events, events,
-					  &ts_cur);
-		for (j = 0; (num_events > 0) && (j < num_events); j++) {
-			struct iocb *iocb = (struct iocb *)events[j].obj;
-			struct iovec *iov;
-
-			node->completed_events++;
-			if (!iocb) {
-				printf("Error: Invalid IOCB from events\n");
-				continue;
-			}
-
-			iov = (struct iovec *)iocb->u.c.buf;
-
-			for (bufcnt = 0; bufcnt < iocb->u.c.nbytes; bufcnt++)
-				dma_free(datahandle, iov[bufcnt].iov_base);
-			dma_free(iocbhandle, iocb);
-		}
-	} while ((num_events > 0) && (node->max_events > node->completed_events));
-
-	free(events);
-}
-
-static void *event_mon(void *handle)
-{
-	unsigned int j, bufcnt;
-	struct io_info *_info;
-	struct io_event *events = NULL;
-	int num_events = 0;
-	struct timespec ts_cur = {0, 0};
-#if DATA_VALIDATION
-	unsigned short *rcv_data;
-	unsigned int k;
-#endif
-	struct mempool_handle *ctxhandle;
-	struct mempool_handle *iocbhandle;
-	struct mempool_handle *datahandle;
-
-	_info = (struct io_info *) handle;
-
-
-	ctxhandle = &_info->ctxhandle;
-	iocbhandle = &_info->iocbhandle;
-	datahandle = &_info->datahandle;
-
-	events = calloc(MAX_AIO_EVENTS, sizeof(struct io_event));
-	if (events == NULL) {
-		printf("OOM AIO_EVENTS\n");
-		return NULL;
-	}
-	while (_info->io_exit == 0 && _info->force_exit == 0) {
-		struct list_head *node = list_pop(_info);
-
-		if (!node)
-			continue;
-
-		memset(events, 0, MAX_AIO_EVENTS * sizeof(struct io_event));
-		do {
-			num_events = io_getevents(node->ctxt, 1,
-						  node->max_events - node->completed_events,
-						  events, &ts_cur);
-			for (j = 0; (num_events > 0) && (j < num_events); j++) {
-				struct iocb *iocb = (struct iocb *)events[j].obj;
-				struct iovec *iov = NULL;
-
-				if (!iocb) {
-					printf("Error: Invalid IOCB from events\n");
-					continue;
-				}
-				_info->num_req_completed += events[j].res;
-
-				iov = (struct iovec *)(iocb->u.c.buf);
-				if (!iov) {
-					printf("invalid buffer\n");
-					continue;
-				}
-#if DATA_VALIDATION
-				rcv_data = iov[0].iov_base;
-				for (k = 0; k < (iov[0].iov_len/2) && events[j].res && !(events[j].res2); k += 8) {
-					printf("%04x: %04x %04x %04x %04x %04x %04x %04x %04x\n", k,
-							rcv_data[k], rcv_data[k+1], rcv_data[k+2],
-							rcv_data[k+3], rcv_data[k+4], rcv_data[k+5],
-							rcv_data[k+6], rcv_data[k+7]);
-				}
-#endif
-				for (bufcnt = 0; (bufcnt < iocb->u.c.nbytes) && iov; bufcnt++)
-					dma_free(datahandle, iov[bufcnt].iov_base);
-				dma_free(iocbhandle, iocb);
-			}
-			if (num_events > 0)
-			    node->completed_events += num_events;
-			if (node->completed_events >= node->max_events) {
-				io_destroy(node->ctxt);
-				dma_free(ctxhandle, node);
-				break;
-			}
-		} while ((_info->io_exit == 0) && (_info->force_exit == 0));
-
-		if (node->completed_events < node->max_events)
-		    list_add_head(_info, node);
-	}
-	free(events);
-#ifdef DEBUG
-	printf("Exiting evt_thrd: %u\n", _info->thread_id);
-#endif
-
-	return NULL;
-}
-
-static void io_proc_cleanup(struct io_info *_info)
-{
-	_info->io_exit = 1;
-	pthread_join(_info->evt_id, NULL);
-	list_free(_info);
-	mempool_free(&_info->iocbhandle);
-	mempool_free(&_info->ctxhandle);
-	mempool_free(&_info->datahandle);
-	close(_info->fd);
-}
-
-static void *io_thread(struct io_info *_info)
-{
-	struct dmaxfer_io_info *dinfo;
-	int ret;
-	int s;
-	unsigned int tsecs;
-	unsigned int max_io = MAX_AIO_EVENTS;
-	unsigned int cnt = 0;
-	pthread_attr_t attr;
-	unsigned int io_sz;
-	unsigned int burst_cnt;
-	unsigned int num_desc;
-	unsigned int max_reqs;
-	struct iocb *io_list[1];
-	struct mempool_handle *ctxhandle;
-	struct mempool_handle *iocbhandle;
-	struct mempool_handle *datahandle;
-
-	ctxhandle = &_info->ctxhandle;
-	iocbhandle = &_info->iocbhandle;
-	datahandle = &_info->datahandle;
-
-	dinfo = _info->dinfo;
-	io_sz = dinfo->pkt_sz;
-	burst_cnt = dinfo->pkt_burst;
-	tsecs = dinfo->runtime;
-	num_desc = (io_sz + DMAPERF_PAGE_SIZE - 1) >> DMAPERF_PAGE_SHIFT;
-	max_reqs = _info->max_reqs;
-
-	mempool_create(datahandle, num_desc*DMAPERF_PAGE_SIZE,
-			max_reqs + (burst_cnt * num_desc));
-	mempool_create(ctxhandle, sizeof(struct list_head), max_reqs);
-	mempool_create(iocbhandle,
-			sizeof(struct iocb) + (burst_cnt * sizeof(struct iovec)),
-			max_reqs + (burst_cnt * num_desc));
-#ifdef DEBUG
-	ctxhandle->id = 1;
-	datahandle->id = 0;
-	iocbhandle->id = 2;
-#endif
-	s = pthread_attr_init(&attr);
-	if (s != 0)
-		printf("pthread_attr_init failed\n");
-	if (pthread_create(&_info->evt_id, &attr, event_mon, _info))
-		return NULL;
-
-	clock_gettime(CLOCK_MONOTONIC, &_info->g_ts_start);
-
-	do {
-		struct list_head *node = NULL;
-		struct timespec ts_cur;
-
-		if (tsecs) {
-			ret = clock_gettime(CLOCK_MONOTONIC, &ts_cur);
-			xfer_timespec_sub(&ts_cur, &_info->g_ts_start);
-			if (ts_cur.tv_sec >= tsecs)
-				break;
-		}
-		node = dma_memalloc(ctxhandle, 1);
-		if (!node) {
-			continue;
-		}
-		ret = io_queue_init(max_io, &node->ctxt);
-		if (ret != 0) {
-			printf("Error: io_setup error %d on %u\n", ret, _info->thread_id);
-			dma_free(ctxhandle, node);
-			sched_yield();
-			continue;
-		}
-		cnt = 0;
-		node->max_events = max_io;
-		list_add_tail(_info, node);
-		do {
-			struct iovec *iov = NULL;
-			unsigned int iovcnt;
-			if (tsecs) {
-				ret = clock_gettime(CLOCK_MONOTONIC, &ts_cur);
-				xfer_timespec_sub(&ts_cur, &_info->g_ts_start);
-				if (ts_cur.tv_sec >= tsecs) {
-					node->max_events = cnt;
-					break;
-				}
-			}
-
-			if (((_info->num_req_submitted - _info->num_req_completed) *
-					num_desc) > max_reqs) {
-				sched_yield();
-				continue;
-			}
-
-			io_list[0] = dma_memalloc(iocbhandle, 1);
-			if (io_list[0] == NULL) {
-				if (cnt) {
-					node->max_events = cnt;
-					break;
-				}
-				else {
-					sched_yield();
-					continue;
-				}
-			}
-			iov = (struct iovec *)(io_list[0] + 1);
-			for (iovcnt = 0; iovcnt < burst_cnt; iovcnt++) {
-				iov[iovcnt].iov_base = dma_memalloc(datahandle, 1);
-				if (iov[iovcnt].iov_base == NULL)
-					break;
-				iov[iovcnt].iov_len = io_sz;
-			}
-			if (iovcnt == 0) {
-				dma_free(iocbhandle, io_list[0]);
-				continue;
-			}
-			if (_info->dir == DMAIO_WRITE) {
-#if 0
-				printf("DEBUG WRITE: _info->fd :%d iov:%d iovcnt:%d\n",
-
-						_info->fd, iov, iovcnt);
-#endif
-				io_prep_pwritev(io_list[0],
-					       _info->fd,
-					       iov,
-					       iovcnt,
-					       0);
-			} else {
-				io_prep_preadv(io_list[0],
-					       _info->fd,
-					       iov,
-					       iovcnt,
-					       0);
-			}
-
-			ret = io_submit(node->ctxt, 1, io_list);
-			if(ret != 1) {
-				for (; iovcnt > 0; iovcnt--)
-					dma_free(datahandle, iov[iovcnt].iov_base);
-				dma_free(iocbhandle, io_list[0]);
-				node->max_events = cnt;
-				break;
-			} else {
-				cnt++;
-				_info->num_req_submitted += iovcnt;
-				sched_yield();
-			}
-		} while (!_info->force_exit && (cnt < max_io));
-	} while (!_info->force_exit);
-	io_proc_cleanup(_info);
-
-	return _info;
-}
-
-#ifdef DEBUG
-static void dump_result(unsigned long long total_io_sz)
-{
-	unsigned long long gig_div = ((unsigned long long)tsecs * 1000000000);
-	unsigned long long meg_div = ((unsigned long long)tsecs * 1000000);
-	unsigned long long kil_div = ((unsigned long long)tsecs * 1000);
-	unsigned long long byt_div = ((unsigned long long)tsecs);
-
-	if ((total_io_sz/gig_div)) {
-		printf("BW = %f GB/sec\n", ((double)total_io_sz/gig_div));
-	} else if ((total_io_sz/meg_div)) {
-		printf("BW = %f MB/sec\n", ((double)total_io_sz/meg_div));
-	} else if ((total_io_sz/kil_div)) {
-		printf("BW = %f KB/sec\n", ((double)total_io_sz/kil_div));
-	} else
-		printf("BW = %f Bytes/sec\n", ((double)total_io_sz/byt_div));
-}
-#endif
-
-int is_valid_fd(int fd)
-{
-    return fcntl(fd, F_GETFL) != -1 || errno != EBADF;
-}
-
-static void cleanup(struct dmaxfer_io_info *list,
-		    unsigned int num_entries,
-		    unsigned int num_threads)
-{
-    struct io_info *info;
-    struct dmaxfer_io_info *dinfo;
-	struct dmaxfer_perf_handle *handle;
-	int shmid;
-    int i;
-
-	if (!list || !num_entries)
-		return;
-
-	handle = (struct dmaxfer_perf_handle *)list->handle;
-	if (!handle)
-		return;
-
-	if (handle->shmid > 0)
-		shmid = handle->shmid;
-	else
-		return;
-
-    if ((info = (struct io_info *)shmat(shmid, NULL, 0)) ==
-            (struct io_info *) -1) {
-        perror("Process shmat returned NULL\n");
-        error(-1, errno, " ");
-        return;
-    }
-
-    /* accumulate the statistics */
-	for (i = 0; i < num_threads; i++) {
-		dinfo = info[i].dinfo;
-		dinfo->pps += info[i].num_req_completed;
-	}
-    for (i = 0; i < num_entries; i++) {
-	    dinfo = &list[i];
-	    dinfo->pps /= dinfo->runtime;
-    }
-
-    if (shmdt(info) == -1) {
-        perror("shmdt returned -1\n");
-        error(-1, errno, " ");
-    }
-
-    if (shmctl(shmid, IPC_RMID, NULL) == -1) {
-        perror("shmctl returned -1\n");
-            error(-1, errno, " ");
-    }
-}
-
-int dmaxfer_perf_run(struct dmaxfer_io_info *list,
-		unsigned int num_entries)
-{
-	unsigned int i;
-	unsigned int aio_max_nr = 0xFFFFFFFF;
-	char aio_max_nr_cmd[100] = {'\0'};
-	unsigned int num_thrds = 0;
-	unsigned int tot_num_jobs;
-	struct dmaxfer_perf_handle *handle;
-	struct io_info *info;
-	int shmid;
-	int base_pid;
-	int *child_pid_lst;
-
-#if DATA_VALIDATION
-	for (i = 0; i < 2*1024; i++)
-		valid_data[i] = i;
-#endif
-
-	if (!list) {
-		perror("Invalid configuration\n");
-		return -EINVAL;
-	}
-
-
-	snprintf(aio_max_nr_cmd, 100, "echo %u > /proc/sys/fs/aio-max-nr",
-		 aio_max_nr);
-	system(aio_max_nr_cmd);
-
-	handle = (struct dmaxfer_perf_handle *)calloc(1, sizeof(struct dmaxfer_perf_handle));
-	if (!handle)
-		return -ENOMEM;
-
-	/** Validate input config and calculate SHM segments required */
-	tot_num_jobs = 0;
-	for (i = 0; i < num_entries; i++) {
-		if (!list[i].file_name) {
-			perror("Invalid device File Name\n");
-			error(-1, errno, " ");
-			return -EINVAL;
-		}
-
-		if (list[i].num_jobs <= 0) {
-			perror("Invalid number of jobs at entry\n");
-			return -EINVAL;
-		}
-		if (list[i].write == DMAIO_RDWR)
-			tot_num_jobs += list[i].num_jobs * 2;
-		else
-			tot_num_jobs += list[i].num_jobs;
-		list[i].handle = (unsigned long)handle;
-	}
-
-	shmid = create_thread_info(list, num_entries, tot_num_jobs);
-	if (shmid < 0) {
-		printf("ERROR: Invalid SHMID\n");
-		return shmid;
-	}
-
-	handle->shmid = shmid;
-	handle->active_threads = num_thrds = tot_num_jobs;
-	printf("dmautils(%u) threads\n", num_thrds);
-	base_pid = getpid();
-	if (num_thrds > 1) {
-		handle->child_pid_lst = child_pid_lst = calloc(num_thrds, sizeof(int));
-		child_pid_lst[0] = base_pid;
-		for (i = 1; i < num_thrds; i++) {
-			if (getpid() == base_pid)
-				child_pid_lst[i] = fork();
-			else
-				break;
-		}
-	}
-
-	if ((info = (struct io_info *) shmat(shmid, NULL, 0)) == (struct io_info *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-		return -EINVAL;
-	}
-
-	if (getpid() == base_pid) {
-		info->pid = base_pid;
-		io_thread(info);
-		if (num_thrds > 1) {
-			for(i = 1; i < num_thrds; i++) {
-				waitpid(child_pid_lst[i], NULL, 0);
-				info[i].pid = 0;
-				handle->active_threads--;
-			}
-			free(handle->child_pid_lst);
-			handle->child_pid_lst = NULL;
-		}
-		if ((shmdt(info) == -1)) {
-			perror("shmdt returned -1\n");
-			error(-1, errno, " ");
-		}
-		cleanup(list, num_entries, num_thrds);
-		//active_threads = 0;
-	} else {
-		info[i - 1].pid = getpid();
-		io_thread(&info[i - 1]);
-		if ((shmdt(info) == -1)) {
-			perror("shmdt returned -1\n");
-			error(-1, errno, " ");
-		}
-		return (i - 1);
-	}
-
-	return 0;
-}
-
-#define RW_MAX_SIZE	0x7ffff000
-static ssize_t write_from_buffer(int fd,  char *buffer, uint64_t size,
-			uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > RW_MAX_SIZE)
-			bytes = RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				fprintf(stderr,
-					"seek off 0x%lx failed %zd.\n",
-					offset, rc);
-				perror("seek file");
-				return -EIO;
-			}
-			if (rc != offset) {
-				fprintf(stderr,
-					"seek off 0x%lx != 0x%lx.\n",
-					rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* write data to file from memory buffer */
-		rc = write(fd, buf, bytes);
-		if (rc < 0) {
-			fprintf(stderr, "W off 0x%lx, 0x%lx failed %zd.\n",
-				offset, bytes, rc);
-			perror("write file");
-			return -EIO;
-		}
-		if (rc != bytes) {
-			fprintf(stderr, "W off 0x%lx, 0x%lx != 0x%lx.\n",
-				offset, rc, bytes);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-	} while (count < size);
-
-	if (count != size) {
-		fprintf(stderr, "R failed 0x%lx != 0x%lx.\n",
-				count, size);
-		return -EIO;
-	}
-
-	return count;
-}
-
-static ssize_t read_to_buffer(int fd, char *buffer, uint64_t size,
-			uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > RW_MAX_SIZE)
-			bytes = RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				fprintf(stderr,
-					"seek off 0x%lx failed %zd.\n",
-					offset, rc);
-				perror("seek file");
-				return -EIO;
-			}
-			if (rc != offset) {
-				fprintf(stderr,
-					"seek off 0x%lx != 0x%lx.\n",
-					rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* read data from file into memory buffer */
-		rc = read(fd, buf, bytes);
-		if (rc < 0) {
-			fprintf(stderr,
-				"read off 0x%lx + 0x%lx failed %zd.\n",
-				offset, bytes, rc);
-			perror("read file");
-			return -EIO;
-		}
-		if (rc != bytes) {
-			fprintf(stderr,
-				"R off 0x%lx, 0x%lx != 0x%lx.\n",
-				count, rc, bytes);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-	} while (count < size);
-
-	if (count != size) {
-		fprintf(stderr, "R failed 0x%lx != 0x%lx.\n",
-				count, size);
-		return -EIO;
-	}
-
-	return count;
-}
-
-ssize_t dmaperf_asynciosubmit(int fd, char *buffer, ssize_t size,
-		uint64_t offset, bool write)
-{
-	io_context_t aioctx;
-	struct iocb *iocb;
-	struct iocb *iocbp;
-	struct iovec *iov;
-	struct io_event event;
-	struct timespec ts_cur = {1, 0};
-	unsigned int num_events;
-	int ret;
-
-	memset(&aioctx, 0, sizeof(aioctx));
-	ret = io_queue_init(1, &aioctx);
-	if (ret != 0) {
-		printf("Error: io_setup error %d\n", ret);
-		return ret;
-	}
-
-	iocb = (struct iocb *) calloc(sizeof(struct iocb), 1);
-	if (!iocb) {
-		printf("Error: OOM iocb\n");
-		return -ENOMEM;
-	}
-
-	if (write)
-		io_prep_pwrite(iocb, fd, buffer, 1, offset);
-	else
-		io_prep_pread(iocb, fd, buffer, 1, offset);
-
-	ret = io_submit(aioctx, 1, &iocb);
-	if(ret != 1) {
-		printf("Error: io_submit failed\n");
-		io_destroy(aioctx);
-		return ret;
-	}
-
-	num_events = io_getevents(aioctx, 1, 1,
-			&event, &ts_cur);
-
-	if (num_events != 1) {
-		printf("Error: io_getevents timed out\n");
-		return -EIO;
-	}
-
-	iocbp = (struct iocb *)event.obj;
-	if (!iocbp) {
-		printf("Error: Invalid IOCB from events\n");
-		return -EIO;
-	}
-
-	iov = (struct iovec *)(iocbp->u.c.buf);
-	if (!iov) {
-		printf("invalid buffer\n");
-		return -EIO;
-	}
-
-	return size;
-}
-
-ssize_t dmaxfer_iosubmit(char *fname, unsigned char write,
-		enum dmaxfer_io_type io_type, char *buffer,
-		uint64_t size)
-{
-	unsigned int flags;
-	ssize_t count;
-	int fd;
-	unsigned int base = 0;
-
-	if (!fname || !buffer || size == 0) {
-		printf("Invalid arguments\n");
-		return -EINVAL;
-	}
-
-	if (write)
-		flags = O_WRONLY | O_NONBLOCK;
-	else
-		flags = O_RDONLY | O_NONBLOCK;
-
-	fd = open(fname, flags);
-	if (fd < 0)
-		return fd;
-
-	if (io_type == DMAXFER_IO_SYNC)
-		if (write)
-			count = write_from_buffer(fd, buffer, size, base);
-		else
-			count = read_to_buffer(fd, buffer, size, base);
-	else
-		count = dmaperf_asynciosubmit(fd, buffer, size, base, write);
-
-	close(fd);
-
-	return count;
-}
-
-void dmaxfer_perf_stop(struct dmaxfer_io_info *list,
-			unsigned int num_entries)
-{
-	struct dmaxfer_perf_handle *handle;
-	struct io_info *info;
-	int shmid;
-	int i;
-
-	handle = (struct dmaxfer_perf_handle *)list->handle;
-	if (!handle)
-		return;
-
-	if (handle->shmid <= 0)
-		return;
-	shmid = handle->shmid;
-
-	if ((info = (struct io_info *)shmat(shmid, NULL, 0)) == (struct io_info *) -1) {
-		perror("Process shmat returned NULL\n");
-		error(-1, errno, " ");
-		return;
-	}
-
-	for (i = 0; i < handle->active_threads; i++) {
-		sem_wait(&info[i].llock);
-		info[i].io_exit = 1;
-		sem_post(&info[i].llock);
-	}
-}
diff --git a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.h b/QDMA/linux-kernel/apps/dma-utils/dmaxfer.h
deleted file mode 100755
index 0dda0d1..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/dmaxfer.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019 - 2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMAXFER_H__
-#define __DMAXFER_H__
-
-#include "dmautils.h"
-#define DMAPERF_PAGE_SIZE          4096
-#define DMAPERF_PAGE_SHIFT         12
-
-
-enum dmaxfer_io_type {
-	DMAXFER_IO_SYNC,
-	DMAXFER_IO_ASYNC
-};
-
-struct dmaxfer_io_info {
-	char *file_name;
-	unsigned char write;
-	int num_jobs;
-	int pkt_sz;
-	int pkt_burst;
-	int runtime;
-	unsigned int max_req_outstanding;
-	unsigned long long int pps;
-	int (*app_env_init)(unsigned long *handle);
-	int (*app_env_exit)(unsigned long *handle);
-	unsigned long handle;
-};
-
-int dmaxfer_perf_run(struct dmaxfer_io_info *list,
-		unsigned int num_entries);
-void dmaxfer_perf_stop(struct dmaxfer_io_info *list,
-			unsigned int num_entries);
-ssize_t dmaxfer_iosubmit(char *fname, unsigned char write,
-			 enum dmaxfer_io_type io_type, char *buffer,
-			 uint64_t size);
-#endif /* __DMAXFER_H__ */
diff --git a/QDMA/linux-kernel/apps/dma-utils/version.h b/QDMA/linux-kernel/apps/dma-utils/version.h
deleted file mode 100755
index 7e540ef..0000000
--- a/QDMA/linux-kernel/apps/dma-utils/version.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019-2022,  Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023,  Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __DMA_UTILS_VERSION_H
-#define __DMA_UTILS_VERSION_H
-
-#define LIBNAME "dma-utils"
-#define QDMATUILS_VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/dma-xfer/Makefile b/QDMA/linux-kernel/apps/dma-xfer/Makefile
deleted file mode 100755
index f30478a..0000000
--- a/QDMA/linux-kernel/apps/dma-xfer/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-CC ?= gcc
-
-CFLAGS += -g
-#CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../dma-utils
-CFLAGS += $(EXTRA_FLAGS)
-
-DMA-XFER = dma-xfer
-DMA-UTILS_OBJS := $(patsubst %.c,%.o,$(wildcard ../dma-utils/*.c))
-DMA-XFER_OBJS := dmaxfer.o
-DMA-XFER_OBJS += $(DMA-UTILS_OBJS)
-
-ifneq ($(CROSS_COMPILE_FLAG),)
-	CC=$(CROSS_COMPILE_FLAG)gcc
-endif
-
-all: clean dma-xfer
-
-dma-xfer: $(DMA-XFER_OBJS)
-	$(CC) -pthread -lrt  $^ -o $(DMA-XFER) -laio -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE
-
-%.o: %.c
-	$(CC) $(CFLAGS) -c -std=c99 -o $@ $< -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGE_FILE_SOURCE -D_AIO_AIX_SOURCE
-
-clean:
-	@rm -f *.o */*.o ../dma-utils/*.o
-	rm -rf *.o *.bin dma-xfer
diff --git a/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c b/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c
deleted file mode 100755
index 23945bd..0000000
--- a/QDMA/linux-kernel/apps/dma-xfer/dmaxfer.c
+++ /dev/null
@@ -1,1266 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/shm.h>
-#include <fcntl.h>
-#include <stdbool.h>
-#include <linux/types.h>
-#include <getopt.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <stddef.h>
-#include <ctype.h>
-#include <errno.h>
-#include <error.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-#include <sys/sysinfo.h>
-#include "version.h"
-#include "dmautils.h"
-#include "qdma_nl.h"
-#include "dmaxfer.h"
-
-#define QDMA_Q_NAME_LEN     100
-#define QDMA_ST_MAX_PKT_SIZE 0x7000
-#define QDMA_RW_MAX_SIZE	0x7ffff000
-#define QDMA_GLBL_MAX_ENTRIES  (16)
-
-static struct queue_info *q_info;
-static int q_count;
-
-enum qdma_q_dir {
-	QDMA_Q_DIR_H2C,
-	QDMA_Q_DIR_C2H,
-	QDMA_Q_DIR_BIDI
-};
-
-enum qdma_q_mode {
-	QDMA_Q_MODE_MM,
-	QDMA_Q_MODE_ST
-};
-
-struct queue_info {
-	char *q_name;
-	int qid;
-	int pf;
-	enum qdmautils_io_dir dir;
-};
-
-enum qdma_q_mode mode;
-enum qdma_q_dir dir;
-static char cfg_name[64];
-static unsigned int pkt_sz;
-static unsigned int pci_bus;
-static unsigned int pci_dev;
-static int fun_id = -1;
-static int is_vf;
-static unsigned int q_start;
-static unsigned int num_q;
-static unsigned int idx_rngsz;
-static unsigned int idx_tmr;
-static unsigned int idx_cnt;
-static unsigned int pfetch_en;
-static unsigned int cmptsz;
-static char input_file[128];
-static char output_file[128];
-static int io_type;
-static char trigmode_str[10];
-static unsigned char trig_mode;
-
-static struct option const long_opts[] = {
-	{"config", required_argument, NULL, 'c'},
-	{0, 0, 0, 0}
-};
-
-static void prep_reg_dump(void);
-
-static void usage(const char *name)
-{
-	fprintf(stdout, "%s\n\n", name);
-	fprintf(stdout, "usage: %s [OPTIONS]\n\n", name);
-
-	fprintf(stdout, "  -%c (--%s) config file that has configration for IO\n",
-			long_opts[0].val, long_opts[0].name);
-	fprintf(stdout, "  -v (--version), to print version name\n");
-}
-
-static unsigned int num_trailing_blanks(char *word)
-{
-	unsigned int i = 0;
-	unsigned int slen = strlen(word);
-
-	if (!slen) return 0;
-	while (isspace(word[slen - i - 1])) {
-		i++;
-	}
-
-	return i;
-}
-
-static char * strip_blanks(char *word, long unsigned int *banlks)
-{
-	char *p = word;
-	unsigned int i = 0;
-
-	while (isblank(p[0])) {
-		p++;
-		i++;
-	}
-	if (banlks)
-		*banlks = i;
-
-	return p;
-}
-
-static unsigned int copy_value(char *src, char *dst, unsigned int max_len)
-{
-	char *p = src;
-	unsigned int i = 0;
-
-	while (max_len && !isspace(p[0])) {
-		dst[i] = p[0];
-		p++;
-		i++;
-		max_len--;
-	}
-
-	return i;
-}
-
-static char * strip_comments(char *word)
-{
-	size_t numblanks;
-	char *p = strip_blanks(word, &numblanks);
-
-	if (p[0] == '#')
-		return NULL;
-	else
-		p = strtok(word, "#");
-
-	return p;
-}
-
-static int arg_read_int(char *s, uint32_t *v)
-{
-	char *p = NULL;
-
-
-	*v = strtoul(s, &p, 0);
-	if (*p && (*p != '\n') && !isblank(*p)) {
-		printf("Error:something not right%s %s %s",
-				s, p, isblank(*p)? "true": "false");
-		return -EINVAL;
-	}
-	return 0;
-}
-
-static int arg_read_int_array(char *s, unsigned int *v, unsigned int max_arr_size)
-{
-	unsigned int slen = strlen(s);
-	unsigned int trail_blanks = num_trailing_blanks(s);
-	char *str = (char *)malloc(slen - trail_blanks + 1);
-	char *elem;
-	int cnt = 0;
-	int ret;
-
-	memset(str, '\0', slen + 1);
-	strncpy(str, s + 1, slen - trail_blanks - 2);
-	str[slen] = '\0';
-
-	elem = strtok(str, " ,");/* space or comma separated */
-	while (elem != NULL) {
-		ret = arg_read_int(elem, &v[cnt]);
-		if (ret < 0) {
-			printf("ERROR: Invalid array element %sin %s\n", elem, s);
-			exit(0);
-		}
-		cnt++;
-		elem = strtok(NULL, " ,");
-		if (cnt > (int)max_arr_size) { /* to avoid out of bounds */
-			printf("ERROR: More than expected number of elements in %s - expected = %u\n",
-					str, max_arr_size);
-			exit(0);
-		}
-	}
-	free(str);
-
-	return cnt;
-}
-
-static int get_array_len(char *s)
-{
-	int i, len = 0;
-
-	if (strlen(s) < 2)
-		return -EINVAL;
-	if ((s[0] != '(') && (s[strlen(s) - 1] != ')'))
-		return -EINVAL;
-	if ((s[0] == '(') && (s[1] == ')'))
-		return 0;
-	for (i = 0; i < (int)strlen(s); i++) {
-		if ((s[i] == ' ') || (s[i] == ',')) /* space or comma separated */
-			len++;
-		if (s[i] == ')')
-			break;
-	}
-
-	return (len + 1);
-
-}
-
-static ssize_t read_to_buffer(char *fname, int fd, char *buffer,
-		uint64_t size, uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > QDMA_RW_MAX_SIZE)
-			bytes = QDMA_RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				printf("Error: %s, seek off 0x%lx failed %zd\n",
-						fname, offset, rc);
-				return -EIO;
-			}
-			if (rc != offset) {
-				printf("Error: %s, seek off 0x%lx != 0x%lx\n",
-						fname, rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* read data from file into memory buffer */
-		rc = read(fd, buf, bytes);
-		if (rc < 0) {
-			printf("Failed to Read %s, read off 0x%lx + 0x%lx failed %zd\n",
-					fname, offset, bytes, rc);
-			return -EIO;
-		}
-		if (rc != bytes) {
-			printf("Failed to read %lx bytes from file %s, curr read:%lx\n",
-					bytes, fname, rc);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-
-	} while (count < size);
-
-	if (count != size) {
-		printf("Failed to read %lx bytes from %s 0x%lx != 0x%lx.\n",
-				size, fname, count, size);
-		return -EIO;
-	}
-
-	return count;
-}
-
-static ssize_t write_from_buffer(char *fname, int fd, char *buffer,
-		uint64_t size, uint64_t base)
-{
-	ssize_t rc;
-	uint64_t count = 0;
-	char *buf = buffer;
-	off_t offset = base;
-
-	do { /* Support zero byte transfer */
-		uint64_t bytes = size - count;
-
-		if (bytes > QDMA_RW_MAX_SIZE)
-			bytes = QDMA_RW_MAX_SIZE;
-
-		if (offset) {
-			rc = lseek(fd, offset, SEEK_SET);
-			if (rc < 0) {
-				printf("Error: %s, seek off 0x%lx failed %zd\n",
-						fname, offset, rc);
-				return -EIO;
-			}
-			if (rc != offset) {
-				printf("Error: %s, seek off 0x%lx != 0x%lx\n",
-						fname, rc, offset);
-				return -EIO;
-			}
-		}
-
-		/* write data to file from memory buffer */
-		rc = write(fd, buf, bytes);
-		if (rc < 0) {
-			printf("Failed to Read %s, read off 0x%lx + 0x%lx failed %zd\n",
-					fname, offset, bytes, rc);
-			return -EIO;
-		}
-		if (rc != bytes) {
-			printf("Failed to read %lx bytes from file %s, curr read:%lx\n",
-					bytes, fname, rc);
-			return -EIO;
-		}
-
-		count += bytes;
-		buf += bytes;
-		offset += bytes;
-
-	} while (count < size);
-
-	if (count != size) {
-		printf("Failed to read %lx bytes from %s 0x%lx != 0x%lx\n",
-				size, fname, count, size);
-		return -EIO;
-	}
-
-	return count;
-}
-
-static int parse_config_file(const char *cfg_fname)
-{
-	char *linebuf = NULL;
-	char *realbuf;
-	FILE *fp;
-	size_t linelen = 0;
-	size_t numread;
-	size_t numblanks;
-	unsigned int linenum = 0;
-	char *config, *value;
-	unsigned int dir_factor = 1;
-	char rng_sz[100] = {'\0'};
-	char rng_sz_path[200] = {'\0'};
-	int rng_sz_fd, ret = 0;
-	int input_file_provided = 0;
-	int output_file_provided = 0;
-	struct stat st;
-
-	fp = fopen(cfg_fname, "r");
-	if (fp == NULL) {
-		printf("Failed to open Config File [%s]\n", cfg_fname);
-		return -EINVAL;
-	}
-
-	while ((numread = getline(&linebuf, &linelen, fp)) != -1) {
-		numread--;
-		linenum++;
-		linebuf = strip_comments(linebuf);
-		if (linebuf == NULL)
-			continue;
-		realbuf = strip_blanks(linebuf, &numblanks);
-		linelen -= numblanks;
-		if (0 == linelen)
-			continue;
-		config = strtok(realbuf, "=");
-		value = strtok(NULL, "=");
-		if (!strncmp(config, "mode", 4)) {
-			if (!strncmp(value, "mm", 2))
-				mode = QDMA_Q_MODE_MM;
-			else if(!strncmp(value, "st", 2))
-				mode = QDMA_Q_MODE_ST;
-			else {
-				printf("Error: Unknown mode\n");
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "dir", 3)) {
-			if (!strncmp(value, "h2c", 3))
-				dir = QDMA_Q_DIR_H2C;
-			else if(!strncmp(value, "c2h", 3))
-				dir = QDMA_Q_DIR_C2H;
-			else if(!strncmp(value, "bi", 2))
-				dir = QDMA_Q_DIR_BIDI;
-			else if(!strncmp(value, "cmpt", 4)) {
-				printf("Error: cmpt type queue validation is not supported\n");
-				goto prase_cleanup;
-			} else {
-				printf("Error: Unknown direction\n");
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "name", 3)) {
-			copy_value(value, cfg_name, 64);
-		} else if (!strncmp(config, "function", 8)) {
-			if (arg_read_int(value, &fun_id)) {
-				printf("Error: Invalid function:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "is_vf", 5)) {
-			if (arg_read_int(value, &is_vf)) {
-				printf("Error: Invalid is_vf param:%s\n", value);
-				goto prase_cleanup;
-			}
-			if (is_vf > 1) {
-				printf("Error: is_vf value is %d, expected 0 or 1\n",
-						is_vf);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "q_range", 7)) {
-			char *q_range_start = strtok(value, ":");
-			char *q_range_end = strtok(NULL, ":");
-			unsigned int start;
-			unsigned int end;
-			if (arg_read_int(q_range_start, &start)) {
-				printf("Error: Invalid q range start:%s\n", q_range_start);
-				goto prase_cleanup;
-			}
-			if (arg_read_int(q_range_end, &end)) {
-				printf("Error: Invalid q range end:%s\n", q_range_end);
-				goto prase_cleanup;
-			}
-
-			q_start = start;
-			num_q = end - start + 1;
-		} else if (!strncmp(config, "rngidx", 6)) {
-			if (arg_read_int(value, &idx_rngsz)) {
-				printf("Error: Invalid idx_rngsz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "tmr_idx", 7)) {
-			if (arg_read_int(value, &idx_tmr)) {
-				printf("Error: Invalid idx_tmr:%s\n", value);
-				goto prase_cleanup;
-			}
-		}
-		if (!strncmp(config, "cntr_idx", 8)) {
-			if (arg_read_int(value, &idx_cnt)) {
-				printf("Error: Invalid idx_cnt:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pfetch_en", 9)) {
-			if (arg_read_int(value, &pfetch_en)) {
-				printf("Error: Invalid pfetch_en:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "cmptsz", 5)) {
-			if (arg_read_int(value, &cmptsz)) {
-				printf("Error: Invalid cmptsz:%s\n", value);
-				goto prase_cleanup;
-			}
-		}  else if (!strncmp(config, "trig_mode", 9)) {
-			copy_value(value, trigmode_str, 10);
-		}  else if (!strncmp(config, "pkt_sz", 6)) {
-			if (arg_read_int(value, &pkt_sz)) {
-				printf("Error: Invalid pkt_sz:%s\n", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pci_bus", 7)) {
-			char *p;
-
-			pci_bus = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "pci_dev", 7)) {
-			char *p;
-
-			pci_dev = strtoul(value, &p, 16);
-			if (*p && (*p != '\n')) {
-				printf("Error: bad parameter \"%s\", integer expected", value);
-				goto prase_cleanup;
-			}
-		} else if (!strncmp(config, "inputfile", 7)) {
-			copy_value(value, input_file, 128);
-			input_file_provided = 1;
-		} else if (!strncmp(config, "outputfile", 7)) {
-			copy_value(value, output_file, 128);
-			output_file_provided = 1;
-		} else if (!strncmp(config, "io_type", 6)) {
-			if (!strncmp(value, "io_sync", 6))
-				io_type = 0;
-			else if (!strncmp(value, "io_async", 6))
-				io_type = 1;
-			else {
-				printf("Error: Unknown io_type\n");
-				goto prase_cleanup;
-			}
-		}
-	}
-	fclose(fp);
-
-	if (!pci_bus && !pci_dev) {
-		printf("Error: PCI bus information not provided\n");
-		return -EINVAL;
-	}
-
-	if (fun_id < 0) {
-		printf("Error: Valid function required\n");
-		return -EINVAL;
-	}
-
-	if (fun_id <= 3 && is_vf) {
-		printf("Error: invalid is_vf and fun_id values."
-				"Fun_id for vf must be higer than 3\n");
-		return -EINVAL;
-	}
-
-	if (mode == QDMA_Q_MODE_ST && pkt_sz > QDMA_ST_MAX_PKT_SIZE) {
-		printf("Error: Pkt size [%u] larger than supported size [%d]\n",
-				pkt_sz, QDMA_ST_MAX_PKT_SIZE);
-		return -EINVAL;
-	}
-
-	if ((dir == QDMA_Q_DIR_H2C) || (dir == QDMA_Q_DIR_BIDI)) {
-		if (!input_file_provided) {
-			printf("Error: Input File required for Host to Card transfers\n");
-			return -EINVAL;
-		}
-
-		ret = stat(input_file, &st);
-		if (ret < 0) {
-			printf("Error: Failed to read input file [%s] length\n",
-					input_file);
-			return ret;
-		}
-
-		if (pkt_sz > st.st_size) {
-			printf("Error: File [%s] length is lesser than pkt_sz %u\n",
-					input_file, pkt_sz);
-			return -EINVAL;
-		}
-	}
-
-	if (((dir == QDMA_Q_DIR_C2H) || (dir == QDMA_Q_DIR_BIDI)) &&
-			!output_file_provided) {
-		printf("Error: Data output file was not provided\n");
-		return -EINVAL;
-	}
-
-	if (!strcmp(trigmode_str, "every"))
-		trig_mode = 1;
-	else if (!strcmp(trigmode_str, "usr_cnt"))
-		trig_mode = 2;
-	else if (!strcmp(trigmode_str, "usr"))
-		trig_mode = 3;
-	else if (!strcmp(trigmode_str, "usr_tmr"))
-		trig_mode=4;
-	else if (!strcmp(trigmode_str, "cntr_tmr"))
-		trig_mode=5;
-	else if (!strcmp(trigmode_str, "dis"))
-		trig_mode = 0;
-	else {
-		printf("Error: unknown q trigmode %s.\n", trigmode_str);
-		return -EINVAL;
-	}
-
-	return 0;
-
-prase_cleanup:
-	fclose(fp);
-	return -EINVAL;
-}
-
-static inline void qdma_q_prep_name(struct queue_info *q_info, int qid, int pf)
-{
-	q_info->q_name = calloc(QDMA_Q_NAME_LEN, 1);
-	snprintf(q_info->q_name, QDMA_Q_NAME_LEN, "/dev/qdma%s%05x-%s-%d",
-			(is_vf) ? "vf" : "",
-			(pci_bus << 12) | (pci_dev << 4) | pf,
-			(mode == QDMA_Q_MODE_MM) ? "MM" : "ST",
-			qid);
-}
-
-static int qdma_validate_qrange(void)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	xcmd.op = XNL_CMD_DEV_INFO;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = (pci_bus << 12) | (pci_dev << 4) | fun_id;
-
-	/* Get dev info from qdma driver */
-	ret = qdma_dev_info(&xcmd);
-	if (ret < 0) {
-		printf("Failed to read qmax for PF: %d\n", fun_id);
-		return ret;
-	}
-
-	if (!xcmd.resp.dev_info.qmax) {
-		printf("Error: invalid qmax assigned to function :%d qmax :%u\n",
-				fun_id, xcmd.resp.dev_info.qmax);
-		return -EINVAL;
-	}
-
-	if (xcmd.resp.dev_info.qmax <  num_q) {
-		printf("Error: Q Range is beyond QMAX %u "
-				"Funtion: %x Q start :%u Q Range End :%u\n",
-				xcmd.resp.dev_info.qmax, fun_id, q_start, q_start + num_q);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static int qdma_prepare_q_stop(struct xcmd_info *xcmd,
-		enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd)
-		return -EINVAL;
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_STOP;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = (pci_bus << 12) | (pci_dev << 4) | pf;
-	qparm->idx = qid;
-	qparm->num_q = 1;
-
-	if (mode == QDMA_Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (mode == QDMA_Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else
-		return -EINVAL;
-
-	if (dir == DMAXFER_IO_WRITE)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (dir == DMAXFER_IO_READ)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else
-		return -EINVAL;
-
-
-	return 0;
-}
-
-static int qdma_prepare_q_start(struct xcmd_info *xcmd,
-		enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_q_parm *qparm;
-
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_START;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = (pci_bus << 12) | (pci_dev << 4) | pf;
-	qparm->idx = qid;
-	qparm->num_q = 1;
-
-	if (mode == QDMA_Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (mode == QDMA_Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else {
-		printf("Error: Invalid mode\n");
-		return -EINVAL;
-	}
-
-	if (dir == DMAXFER_IO_WRITE)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (dir == DMAXFER_IO_READ)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else {
-		printf("Error: Invalid Direction\n");
-		return -EINVAL;
-	}
-
-	qparm->qrngsz_idx = idx_rngsz;
-
-	if ((dir == QDMA_Q_DIR_C2H) && (mode == QDMA_Q_MODE_ST)) {
-		if (cmptsz)
-			qparm->cmpt_entry_size = cmptsz;
-		else
-			qparm->cmpt_entry_size = XNL_ST_C2H_CMPT_DESC_SIZE_8B;
-		qparm->cmpt_tmr_idx = idx_tmr;
-		qparm->cmpt_cntr_idx = idx_cnt;
-		qparm->cmpt_trig_mode = trig_mode;
-		if (pfetch_en)
-			qparm->flags |= XNL_F_PFETCH_EN;
-	}
-
-	qparm->flags |= (XNL_F_CMPL_STATUS_EN | XNL_F_CMPL_STATUS_ACC_EN |
-			XNL_F_CMPL_STATUS_PEND_CHK | XNL_F_CMPL_STATUS_DESC_EN |
-			XNL_F_FETCH_CREDIT);
-
-	return 0;
-}
-
-static int qdma_prepare_q_del(struct xcmd_info *xcmd,
-		enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_DEL;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = (pci_bus << 12) | (pci_dev << 4) | pf;
-	qparm->idx = qid;
-	qparm->num_q = 1;
-
-	if (mode == QDMA_Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (mode == QDMA_Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else {
-		printf("Error: Invalid mode\n");
-		return -EINVAL;
-	}
-
-	if (dir == DMAXFER_IO_WRITE)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (dir == DMAXFER_IO_READ)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else {
-		printf("Error: Invalid Direction\n");
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-static int qdma_prepare_q_add(struct xcmd_info *xcmd,
-		enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_q_parm *qparm;
-
-	if (!xcmd) {
-		printf("Error: Invalid Input Param\n");
-		return -EINVAL;
-	}
-
-	qparm = &xcmd->req.qparm;
-
-	xcmd->op = XNL_CMD_Q_ADD;
-	xcmd->vf = is_vf;
-	xcmd->if_bdf = (pci_bus << 12) | (pci_dev << 4) | pf;
-	qparm->idx = qid;
-	qparm->num_q = 1;
-
-	if (mode == QDMA_Q_MODE_MM)
-		qparm->flags |= XNL_F_QMODE_MM;
-	else if (mode == QDMA_Q_MODE_ST)
-		qparm->flags |= XNL_F_QMODE_ST;
-	else {
-		printf("Error: Invalid mode\n");
-		return -EINVAL;
-	}
-	if (dir == DMAXFER_IO_WRITE)
-		qparm->flags |= XNL_F_QDIR_H2C;
-	else if (dir == DMAXFER_IO_READ)
-		qparm->flags |= XNL_F_QDIR_C2H;
-	else {
-		printf("Error: Invalid Direction\n");
-		return -EINVAL;
-	}
-	qparm->sflags = qparm->flags;
-
-	return 0;
-}
-
-static int qdma_destroy_queue(enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_stop(&xcmd, dir, qid, pf);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_stop(&xcmd);
-	if (ret < 0)
-		printf("Q_STOP failed, ret :%d\n", ret);
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	qdma_prepare_q_del(&xcmd, dir, qid, pf);
-	ret = qdma_q_del(&xcmd);
-	if (ret < 0)
-		printf("Q_DEL failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static int qdma_create_queue(enum qdmautils_io_dir dir,
-		int qid, int pf)
-{
-	struct xcmd_info xcmd;
-	int ret;
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_add(&xcmd, dir, qid, pf);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_add(&xcmd);
-	if (ret < 0) {
-		printf("Q_ADD failed, ret :%d\n", ret);
-		return ret;
-	}
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	ret = qdma_prepare_q_start(&xcmd, dir, qid, pf);
-	if (ret < 0)
-		return ret;
-
-	ret = qdma_q_start(&xcmd);
-	if (ret < 0) {
-		printf("Q_START failed, ret :%d\n", ret);
-		qdma_prepare_q_del(&xcmd, dir, qid, pf);
-		qdma_q_del(&xcmd);
-	}
-
-	return ret;
-}
-
-static int qdma_prepare_queue(struct queue_info *q_info,
-		enum qdmautils_io_dir dir, int qid, int pf)
-{
-	int ret;
-
-	if (!q_info) {
-		printf("Error: Invalid queue info\n");
-		return -EINVAL;
-	}
-
-	qdma_q_prep_name(q_info, qid, pf);
-	q_info->dir = dir;
-	ret = qdma_create_queue(q_info->dir, qid, pf);
-	if (ret < 0) {
-		printf("Q creation Failed PF:%d QID:%d\n",
-				pf, qid);
-		return ret;
-	}
-	q_info->qid = qid;
-	q_info->pf = pf;
-
-	return ret;
-}
-
-static int qdma_register_write(unsigned int pf, int bar,
-		unsigned long reg, unsigned long value)
-{
-	struct xcmd_info xcmd;
-	struct xcmd_reg *regcmd;
-	int ret;
-	regcmd = &xcmd.req.reg;
-	xcmd.op = XNL_CMD_REG_WRT;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = (pci_bus << 12) | (pci_dev << 4) | pf;
-	regcmd->bar = bar;
-	regcmd->reg = reg;
-	regcmd->val = value;
-	regcmd->sflags = XCMD_REG_F_BAR_SET |
-		XCMD_REG_F_REG_SET |
-		XCMD_REG_F_VAL_SET;
-
-	ret = qdma_reg_write(&xcmd);
-	if (ret < 0)
-		printf("QDMA_REG_WRITE Failed, ret :%d\n", ret);
-
-	return ret;
-}
-
-static void qdma_queues_cleanup(struct queue_info *q_info, int q_count)
-{
-	unsigned int q_index;
-
-	if (!q_info || q_count < 0)
-		return;
-
-	for (q_index = 0; q_index < q_count; q_index++) {
-		qdma_destroy_queue(q_info[q_index].dir,
-				q_info[q_index].qid,
-				q_info[q_index].pf);
-		free(q_info[q_index].q_name);
-	}
-}
-
-static int qdma_setup_queues(struct queue_info **pq_info)
-{
-	struct queue_info *q_info;
-	unsigned int qid;
-	unsigned int q_count;
-	unsigned int q_index;
-	int ret;
-
-	if (!pq_info) {
-		printf("Error: Invalid queue info\n");
-		return -EINVAL;
-	}
-
-	if (dir == QDMA_Q_DIR_BIDI)
-		q_count = num_q * 2;
-	else
-		q_count = num_q;
-
-	*pq_info = q_info = (struct queue_info *)calloc(q_count, sizeof(struct queue_info));
-	if (!q_info) {
-		printf("Error: OOM\n");
-		return -ENOMEM;
-	}
-
-	q_index = 0;
-	for (qid = 0; qid < num_q; qid++) {
-		if ((dir == QDMA_Q_DIR_BIDI) ||
-				(dir == QDMA_Q_DIR_H2C)) {
-			ret = qdma_prepare_queue(q_info + q_index,
-					DMAXFER_IO_WRITE,
-					qid + q_start,
-					fun_id);
-			if (ret < 0)
-				break;
-			q_index++;
-		}
-		if ((dir == QDMA_Q_DIR_BIDI) ||
-				(dir == QDMA_Q_DIR_C2H)) {
-			ret = qdma_prepare_queue(q_info + q_index,
-					DMAXFER_IO_READ,
-					qid + q_start,
-					fun_id);
-			if (ret < 0)
-				break;
-			q_index++;
-		}
-	}
-	if (ret < 0) {
-		qdma_queues_cleanup(q_info, q_index);
-		return ret;
-	}
-
-	return q_count;
-}
-
-
-static void qdma_env_cleanup()
-{
-	qdma_queues_cleanup(q_info, q_count);
-
-	if (q_info)
-		free(q_info);
-	q_info = NULL;
-	q_count = 0;
-}
-
-static int qdma_trigger_data_generator(struct queue_info *q_info)
-{
-	struct xcmd_info xcmd;
-	unsigned char user_bar;
-	unsigned int qbase;
-	int ret;
-
-	if (!q_info) {
-		printf("Error: Invalid queue info\n");
-		return -EINVAL;
-	}
-
-	memset(&xcmd, 0, sizeof(struct xcmd_info));
-	xcmd.op = XNL_CMD_DEV_INFO;
-	xcmd.vf = is_vf;
-	xcmd.if_bdf = (pci_bus << 12) | (pci_dev << 4) | q_info->pf;
-
-	ret = qdma_dev_info(&xcmd);
-	if (ret < 0) {
-		printf("Failed to read qmax for PF: %d\n", q_info->pf);
-		return ret;
-	}
-
-	user_bar = xcmd.resp.dev_info.user_bar;
-	qbase = xcmd.resp.dev_info.qbase;
-
-	/* Disable DMA Bypass */
-	ret = qdma_register_write(q_info->pf, user_bar, 0x90, 0);
-	if (ret < 0) {
-		printf("Failed to program HWQID PF :%d QID :%d\n",
-				q_info->pf, q_info->qid);
-		return ret;
-	}
-
-	/* Program HW QID */
-	ret = qdma_register_write(q_info->pf, user_bar, 0x0,
-			q_info->qid + qbase);
-	if (ret < 0) {
-		printf("Failed to program HWQID PF :%d QID :%d\n",
-				q_info->pf, q_info->qid);
-	}
-
-	/* Set the transfer size to data generator */
-	ret = qdma_register_write(q_info->pf, user_bar, 0x04,
-			pkt_sz);
-	if (ret < 0) {
-		printf("Failed to set transfer size PF :%d QID :%d\n",
-				q_info->pf, q_info->qid);
-	}
-
-	/* num packets to generate, setting to 1 */
-	ret = qdma_register_write(q_info->pf, user_bar, 0x20,
-			1);
-	if (ret < 0) {
-		printf("Failed to set transfer size PF :%d QID :%d\n",
-				q_info->pf, q_info->qid);
-	}
-
-	/* trigger data generator */
-	ret = qdma_register_write(q_info->pf, user_bar, 0x08,
-			2);
-	if (ret < 0) {
-		printf("Failed to set transfer size PF :%d QID :%d\n",
-				q_info->pf, q_info->qid);
-	}
-
-	return 0;
-}
-
-static int qdmautils_read(struct queue_info *q_info,
-		char *output_file, int io_type)
-{
-	int outfile_fd = -1;
-	char *buffer = NULL;
-	char *allocated = NULL;
-	unsigned int size;
-	unsigned int offset;
-	int ret;
-
-	if (!q_info || !input_file) {
-		printf("Error: Invalid input params\n");
-		return -EINVAL;
-	}
-
-	size = pkt_sz;
-
-	outfile_fd = open(output_file, O_WRONLY | O_CREAT | O_TRUNC | O_SYNC);
-	if (outfile_fd < 0) {
-		printf("Error: unable to open/create output file %s, ret :%d\n",
-				output_file, outfile_fd);
-		perror("open/create output file");
-		return outfile_fd;
-	}
-
-	offset = 0;
-	posix_memalign((void **)&allocated, 4096 /*alignment */ , size + 4096);
-	if (!allocated) {
-		printf("Error: OOM %u.\n", size + 4096);
-		ret = -ENOMEM;
-		goto out;
-	}
-	buffer = allocated + offset;
-
-	if (io_type == 0) {
-		ret = qdmautils_sync_xfer(q_info->q_name,
-				q_info->dir, buffer, size);
-		if (ret < 0)
-			printf("Error: QDMA SYNC transfer Failed, ret :%d\n", ret);
-		else
-			printf("PF :%d Queue :%d C2H Sync transfer success\n", q_info->pf, q_info->qid);
-	} else {
-		ret = qdmautils_async_xfer(q_info->q_name,
-				q_info->dir, buffer, size);
-		if (ret < 0)
-			printf("Error: QDMA ASYNC transfer Failed, ret :%d\n", ret);
-		else
-			printf("PF :%d Queue :%d C2H ASync transfer success\n", q_info->pf, q_info->qid);
-	}
-	if (ret < 0)
-		goto out;
-
-	ret = write_from_buffer(output_file, outfile_fd, buffer, size, offset);
-	if (ret < 0)
-		printf("Error: Write from buffer to %s failed\n", output_file);
-out:
-	free(allocated);
-	close(outfile_fd);
-
-	return ret;
-}
-
-static int qdmautils_write(struct queue_info *q_info,
-		char *input_file, int io_type)
-{
-	int infile_fd = -1;
-	int outfile_fd = -1;
-	char *buffer = NULL;
-	char *allocated = NULL;
-	unsigned int size;
-	unsigned int offset;
-	int ret;
-	enum qdmautils_io_dir dir;
-
-	if (!q_info || !input_file) {
-		printf("Error: Invalid input params\n");
-		return -EINVAL;
-	}
-
-	size = pkt_sz;
-
-	infile_fd = open(input_file, O_RDONLY | O_NONBLOCK);
-	if (infile_fd < 0) {
-		printf("Error: unable to open input file %s, ret :%d\n",
-				input_file, infile_fd);
-		return infile_fd;
-	}
-
-	offset = 0;
-	posix_memalign((void **)&allocated, 4096 /*alignment */ , size + 4096);
-	if (!allocated) {
-		printf("Error: OOM %u.\n", size + 4096);
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	buffer = allocated + offset;
-	ret = read_to_buffer(input_file, infile_fd, buffer, size, 0);
-	if (ret < 0)
-		goto out;
-
-	if (io_type == 0) {
-		ret = qdmautils_sync_xfer(q_info->q_name,
-				q_info->dir, buffer, size);
-		if (ret < 0)
-			printf("Error: QDMA SYNC transfer Failed, ret :%d\n", ret);
-		else
-			printf("PF :%d Queue :%d H2C Sync transfer success\n", q_info->pf, q_info->qid);
-	} else {
-		ret = qdmautils_async_xfer(q_info->q_name,
-				q_info->dir, buffer, size);
-		if (ret < 0)
-			printf("Error: QDMA ASYNC transfer Failed, ret :%d\n", ret);
-		else
-			printf("PF :%d Queue :%d H2C Async transfer success\n", q_info->pf, q_info->qid);
-	}
-
-out:
-	free(allocated);
-	close(infile_fd);
-
-	return ret;
-}
-
-static int qdmautils_xfer(struct queue_info *q_info,
-		unsigned int count, int io_type)
-{
-	int ret;
-	int i;
-
-	if (!q_info || count == 0) {
-		printf("Error: Invalid input params\n");
-		return -EINVAL;
-	}
-
-	for (i = 0; i < count; i++) {
-		if (q_info[i].dir == DMAXFER_IO_WRITE) {
-			/* Transfer DATA from inputfile to Device */
-			ret = qdmautils_write(q_info + i, input_file, io_type);
-			if (ret < 0)
-				printf("qdmautils_write failed, ret :%d\n", ret);
-		} else {
-			if (mode == QDMA_Q_MODE_ST) {
-				/* Generate ST - C2H Data before trying to read from Card */
-				ret = qdma_trigger_data_generator(q_info + i);
-				if (ret < 0) {
-					printf("Failed to trigger data generator\n");
-					return ret;
-				}
-			}
-			/* Reads data from Device and writes into output file */
-			ret = qdmautils_read(q_info + i, output_file, io_type);
-			if (ret < 0)
-				printf("qdmautils_read failed, ret :%d\n", ret);
-		}
-
-		if (ret < 0)
-			break;
-	}
-
-	return ret;
-}
-
-int main(int argc, char *argv[])
-{
-	char *cfg_fname;
-	int cmd_opt;
-	int ret;
-
-	if (argc == 2) {
-		if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) {
-			printf("%s version %s\n", PROGNAME, VERSION);
-			printf("%s\n", COPYRIGHT);
-			return 0;
-		}
-	}
-
-	cfg_fname = NULL;
-	while ((cmd_opt = getopt_long(argc, argv, "vhxc:c:", long_opts,
-					NULL)) != -1) {
-		switch (cmd_opt) {
-			case 0:
-				/* long option */
-				break;
-			case 'c':
-				/* config file name */
-				cfg_fname = strdup(optarg);
-				break;
-			default:
-				usage(argv[0]);
-				exit(0);
-				break;
-		}
-	}
-
-	if (cfg_fname == NULL) {
-		printf("Config file required.\n");
-		usage(argv[0]);
-		return -EINVAL;
-	}
-
-	ret = parse_config_file(cfg_fname);
-	if (ret < 0) {
-		printf("Config File has invalid parameters\n");
-		return ret;
-	}
-
-	ret = qdma_validate_qrange();
-	if (ret < 0)
-		return ret;
-
-	q_count = 0;
-	/* Addition and Starting of queues handled here */
-	q_count = qdma_setup_queues(&q_info);
-	if (q_count < 0) {
-		printf("qdma_setup_queues failed, ret:%d\n", q_count);
-		return q_count;
-	}
-
-	/* queues has to be deleted upon termination */
-	atexit(qdma_env_cleanup);
-	/* Perform DMA transfers on each Queue */
-	ret = qdmautils_xfer(q_info, q_count, io_type);
-	if (ret < 0)
-		printf("Qdmautils Transfer Failed, ret :%d\n", ret);
-
-	return ret;
-}
diff --git a/QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt b/QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt
deleted file mode 100755
index d4a2c82..0000000
--- a/QDMA/linux-kernel/apps/dma-xfer/sample_qdma_xfer_config.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-#/*
-# * This file is part of the QDMA userspace application
-# * to enable the user to execute the QDMA functionality
-# *
-# * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is licensed under BSD-style license (found in the
-# * LICENSE file in the root directory of this source tree)
-# */
-
-name=mm_sample
-pci_bus=d8
-pci_device=00
-function=0 #fun_id
-is_vf=0
-mode=mm #mode
-dir=bi #dir
-q_range=0:0 #no spaces
-tmr_idx=6
-cntr_idx=6
-cmptsz=0
-trig_mode=cntr_tmr
-pfetch_en=0
-rngidx=0
-pkt_sz=1024
-io_type=io_async
-inputfile=INPUT
-outputfile=OUTPUT
diff --git a/QDMA/linux-kernel/apps/dma-xfer/version.h b/QDMA/linux-kernel/apps/dma-xfer/version.h
deleted file mode 100755
index 31e8654..0000000
--- a/QDMA/linux-kernel/apps/dma-xfer/version.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * This file is part of the QDMA userspace application
- * to enable the user to execute the QDMA functionality
- *
- * Copyright (c) 2019-2022,  Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023,  Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-#ifndef __DMA_XFER_VERSION_H
-#define __DMA_XFER_VERSION_H
-
-#define PROGNAME "dma-xfer"
-#define VERSION "2023.2.0"
-#define COPYRIGHT "Copyright (c) 2022-2023 Advanced Micro Devices Inc."
-
-#endif
diff --git a/QDMA/linux-kernel/apps/include/qdma_nl.h b/QDMA/linux-kernel/apps/include/qdma_nl.h
deleted file mode 100755
index fd8b43c..0000000
--- a/QDMA/linux-kernel/apps/include/qdma_nl.h
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under both the BSD-style license (found in the
- * LICENSE file in the root directory of this source tree) and the GPLv2 (found
- * in the COPYING file in the root directory of this source tree).
- * You may select, at your option, one of the above-listed licenses.
- */
-
-#ifndef QDMA_NL_H__
-#define QDMA_NL_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma netlink interfaces
- *
- ** physical function name (no more than 15 characters) */
-#define XNL_NAME_PF		"xnl_pf"
-/** virtual function name */
-#define XNL_NAME_VF		"xnl_vf"
-/** qdma netlink interface version number */
-#define XNL_VERSION		0x1
-
-/** qdma nl interface minimum response buffer length*/
-#define XNL_RESP_BUFLEN_MIN	 256
-/** qdma nl interface maximum response buffer length*/
-#define XNL_RESP_BUFLEN_MAX	 (2048 * 10)
-/** qdma nl interface error buffer length*/
-#define XNL_ERR_BUFLEN		 64
-/** qdma nl command parameter length*/
-#define XNL_STR_LEN_MAX		 20
-
-/** Q parameter: value to indicate invalid qid*/
-#define XNL_QIDX_INVALID	0xFFFF
-/** Q parameter: streaming mode*/
-#define XNL_F_QMODE_ST	        0x00000001
-/** Q parameter: memory management mode*/
-#define XNL_F_QMODE_MM	        0x00000002
-/** Q parameter: queue in h2c direction*/
-#define XNL_F_QDIR_H2C	        0x00000004
-/** Q parameter: queue in c2h direction*/
-#define XNL_F_QDIR_C2H	        0x00000008
-/** Q parameter: queue in both directions*/
-#define XNL_F_QDIR_BOTH         (XNL_F_QDIR_H2C | XNL_F_QDIR_C2H)
-/** Q parameter: queue in prefetch mode*/
-#define XNL_F_PFETCH_EN         0x00000010
-/** Q parameter: enable the bypass for the queue*/
-#define XNL_F_DESC_BYPASS_EN	0x00000020
-/** Q parameter: fetch credits*/
-#define XNL_F_FETCH_CREDIT      0x00000040
-/** Q parameter: enable writeback accumulation*/
-#define XNL_F_CMPL_STATUS_ACC_EN        0x00000080
-/** Q parameter: enable writeback*/
-#define XNL_F_CMPL_STATUS_EN            0x00000100
-/** Q parameter: enable writeback pending check*/
-#define XNL_F_CMPL_STATUS_PEND_CHK      0x00000200
-/** Q parameter: enable writeback status descriptor*/
-#define XNL_F_CMPL_STATUS_DESC_EN  0x00000400
-/** Q parameter: enable queue completion interrupt*/
-#define XNL_F_C2H_CMPL_INTR_EN  0x00000800
-/** Q parameter: enable user defined data*/
-#define XNL_F_CMPL_UDD_EN       0x00001000
-/** Q parameter: enable the pfetch bypass for the queue */
-#define XNL_F_PFETCH_BYPASS_EN  0x00002000
-/** Q parameter: disable CMPT overflow check */
-#define XNL_F_CMPT_OVF_CHK_DIS	0x00004000
-/** Q parameter: Completion Queue? */
-#define XNL_F_Q_CMPL         0x00008000
-
-/** maximum number of queue flags to control queue configuration*/
-#define MAX_QFLAGS 17
-
-/** maximum number of interrupt ring entries*/
-#define QDMA_MAX_INT_RING_ENTRIES 512
-
-/**
- * xnl_attr_t netlink attributes for qdma(variables):
- * the index in this enum is used as a reference for the type,
- * userspace application has to indicate the corresponding type
- * the policy is used for security considerations
- */
-enum xnl_attr_t {
-	XNL_ATTR_GENMSG,		/**< generatl message */
-	XNL_ATTR_DRV_INFO,		/**< device info */
-
-	XNL_ATTR_DEV_IDX,		/**< device index */
-	XNL_ATTR_PCI_BUS,		/**< pci bus number */
-	XNL_ATTR_PCI_DEV,		/**< pci device number */
-	XNL_ATTR_PCI_FUNC,		/**< pci function id */
-
-	XNL_ATTR_DEV_STAT_MMH2C_PKTS1,	/**< number of MM H2C packets */
-	XNL_ATTR_DEV_STAT_MMH2C_PKTS2,	/**< number of MM H2C packets */
-	XNL_ATTR_DEV_STAT_MMC2H_PKTS1,	/**< number of MM C2H packets */
-	XNL_ATTR_DEV_STAT_MMC2H_PKTS2,	/**< number of MM C2H packets */
-	XNL_ATTR_DEV_STAT_STH2C_PKTS1,	/**< number of ST H2C packets */
-	XNL_ATTR_DEV_STAT_STH2C_PKTS2,	/**< number of ST H2C packets */
-	XNL_ATTR_DEV_STAT_STC2H_PKTS1,	/**< number of ST C2H packets */
-	XNL_ATTR_DEV_STAT_STC2H_PKTS2,	/**< number of ST C2H packets */
-
-	XNL_ATTR_DEV_CFG_BAR,		/**< device config bar number */
-	XNL_ATTR_DEV_USR_BAR,		/**< device AXI Master Lite(user bar) number */
-	XNL_ATTR_DEV_QSET_MAX,		/**< max queue sets */
-	XNL_ATTR_DEV_QSET_QBASE,	/**< queue base start */
-
-	XNL_ATTR_VERSION_INFO,		/**< version info */
-	XNL_ATTR_DEVICE_TYPE,		/**< device type */
-	XNL_ATTR_IP_TYPE,		/**< ip type */
-	XNL_ATTR_DEV_NUMQS,		/**< num of queues */
-	XNL_ATTR_DEV_NUM_PFS,		/**< num of PFs */
-	XNL_ATTR_DEV_MM_CHANNEL_MAX,	/**< mm channels */
-	XNL_ATTR_DEV_MAILBOX_ENABLE,	/**< mailbox enable */
-	XNL_ATTR_DEV_FLR_PRESENT,	/**< flr present */
-	XNL_ATTR_DEV_ST_ENABLE,		/**< device st capability */
-	XNL_ATTR_DEV_MM_ENABLE,		/**< device mm capability */
-	XNL_ATTR_DEV_MM_CMPT_ENABLE,	/**< device mm cmpt capability */
-
-	XNL_ATTR_REG_BAR_NUM,		/**< register bar number */
-	XNL_ATTR_REG_ADDR,		/**< register address */
-	XNL_ATTR_REG_VAL,		/**< register value */
-
-	XNL_ATTR_CSR_INDEX,		/**< csr index */
-	XNL_ATTR_CSR_COUNT,		/**< csr count */
-
-	XNL_ATTR_QIDX,			/**< queue index */
-	XNL_ATTR_NUM_Q,			/**< number of queues */
-	XNL_ATTR_QFLAG,			/**< queue config flags */
-
-	XNL_ATTR_CMPT_DESC_SIZE,	/**< completion descriptor size */
-	XNL_ATTR_SW_DESC_SIZE,		/**< software descriptor size */
-	XNL_ATTR_QRNGSZ_IDX,		/**< queue ring index */
-	XNL_ATTR_C2H_BUFSZ_IDX,		/**< c2h buffer idex */
-	XNL_ATTR_CMPT_TIMER_IDX,	/**< completion timer index */
-	XNL_ATTR_CMPT_CNTR_IDX,		/**< completion counter index */
-	XNL_ATTR_CMPT_TRIG_MODE,	/**< completion trigger mode */
-	XNL_ATTR_MM_CHANNEL,		/**< mm channel */
-	XNL_ATTR_CMPT_ENTRIES_CNT,      /**< completion entries count */
-
-	XNL_ATTR_RANGE_START,		/**< range start */
-	XNL_ATTR_RANGE_END,		/**< range end */
-
-	XNL_ATTR_INTR_VECTOR_IDX,	/**< interrupt vector index */
-	XNL_ATTR_INTR_VECTOR_START_IDX, /**< interrupt vector start index */
-	XNL_ATTR_INTR_VECTOR_END_IDX,	/**< interrupt vector end index */
-	XNL_ATTR_RSP_BUF_LEN,		/**< response buffer length */
-	XNL_ATTR_GLOBAL_CSR,		/**< global csr data */
-	XNL_ATTR_PIPE_GL_MAX,		/**< max no. of gl for pipe */
-	XNL_ATTR_PIPE_FLOW_ID,          /**< pipe flow id */
-	XNL_ATTR_PIPE_SLR_ID,           /**< pipe slr id */
-	XNL_ATTR_PIPE_TDEST,            /**< pipe tdest */
-	XNL_ATTR_DEV_STM_BAR,		/**< device STM bar number */
-	XNL_ATTR_Q_STATE,
-	XNL_ATTR_ERROR,
-	XNL_ATTR_PING_PONG_EN,
-	XNL_ATTR_APERTURE_SZ,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMAX1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMAX2,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATAVG1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATAVG2,
-	XNL_ATTR_DEV,
-	XNL_ATTR_DEBUG_EN,	/** Debug Regs Capability*/
-	XNL_ATTR_DESC_ENGINE_MODE, /** Descriptor Engine Capability */
-#ifdef ERR_DEBUG
-	XNL_ATTR_QPARAM_ERR_INFO,	/**< queue param info */
-#endif
-	XNL_ATTR_NUM_REGS,			/**< number of regs */
-	XNL_ATTR_MAX,
-};
-
-/**
- * xnl_st_c2h_cmpt_desc_size
- * c2h writeback descriptor sizes
- */
-enum xnl_st_c2h_cmpt_desc_size {
-	XNL_ST_C2H_CMPT_DESC_SIZE_8B,	/**< 8B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_16B,	/**< 16B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_32B,	/**< 32B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_64B,	/**< 64B descriptor */
-	XNL_ST_C2H_NUM_CMPT_DESC_SIZES	/**< Num of desc sizes */
-};
-
-enum xnl_qdma_rngsz_idx {
-	XNL_QDMA_RNGSZ_2048_IDX,
-	XNL_QDMA_RNGSZ_64_IDX,
-	XNL_QDMA_RNGSZ_128_IDX,
-	XNL_QDMA_RNGSZ_192_IDX,
-	XNL_QDMA_RNGSZ_256_IDX,
-	XNL_QDMA_RNGSZ_384_IDX,
-	XNL_QDMA_RNGSZ_512_IDX,
-	XNL_QDMA_RNGSZ_768_IDX,
-	XNL_QDMA_RNGSZ_1024_IDX,
-	XNL_QDMA_RNGSZ_1536_IDX,
-	XNL_QDMA_RNGSZ_3072_IDX,
-	XNL_QDMA_RNGSZ_4096_IDX,
-	XNL_QDMA_RNGSZ_6144_IDX,
-	XNL_QDMA_RNGSZ_8192_IDX,
-	XNL_QDMA_RNGSZ_12288_IDX,
-	XNL_QDMA_RNGSZ_16384_IDX,
-	XNL_QDMA_RNGSZ_IDXS
-};
-
-
-static const char *xnl_attr_str[XNL_ATTR_MAX + 1] = {
-	"GENMSG",		        /**< XNL_ATTR_GENMSG */
-	"DRV_INFO",		        /**< XNL_ATTR_DRV_INFO */
-	"DEV_IDX",		        /**< XNL_ATTR_DEV_IDX */
-	"DEV_PCIBUS",			/**< XNL_ATTR_PCI_BUS */
-	"DEV_PCIDEV",			/**< XNL_ATTR_PCI_DEV */
-	"DEV_PCIFUNC",			/**< XNL_ATTR_PCI_FUNC */
-	"DEV_STAT_MMH2C_PKTS1",		/**< number of MM H2C packkts */
-	"DEV_STAT_MMH2C_PKTS2",		/**< number of MM H2C packkts */
-	"DEV_STAT_MMC2H_PKTS1",		/**< number of MM C2H packkts */
-	"DEV_STAT_MMC2H_PKTS2",		/**< number of MM C2H packkts */
-	"DEV_STAT_STH2C_PKTS1",		/**< number of ST H2C packkts */
-	"DEV_STAT_STH2C_PKTS2",		/**< number of ST H2C packkts */
-	"DEV_STAT_STC2H_PKTS1",		/**< number of ST C2H packkts */
-	"DEV_STAT_STC2H_PKTS2",		/**< number of ST C2H packkts */
-	"DEV_CFG_BAR",			/**< XNL_ATTR_DEV_CFG_BAR */
-	"DEV_USR_BAR",			/**< XNL_ATTR_DEV_USER_BAR */
-	"DEV_QSETMAX",			/**< XNL_ATTR_DEV_QSET_MAX */
-	"DEV_QBASE",			/**< XNL_ATTR_DEV_QSET_QBASE */
-	"VERSION_INFO",			/**< XNL_ATTR_VERSION_INFO */
-	"DEVICE_TYPE",			/**< XNL_ATTR_DEVICE_TYPE */
-	"IP_TYPE",			/**< XNL_ATTR_IP_TYPE */
-	"DEV_NUMQS",			/**<XNL_ATTR_DEV_NUMQS */
-	"DEV_NUM_PFS",			/**<XNL_ATTR_DEV_NUM_PFS */
-	"DEV_MM_CHANNEL_MAX",		/**<XNL_ATTR_DEV_MM_CHANNEL_MAX */
-	"DEV_MAILBOX_ENABLE",		/**<XNL_ATTR_DEV_MAILBOX_ENABLE */
-	"DEV_FLR_PRESENT",		/**<XNL_ATTR_DEV_FLR_PRESENT */
-	"DEV_ST_ENABLE",		/**<XNL_ATTR_DEV_ST_ENABLE */
-	"DEV_MM_ENABLE",		/**<XNL_ATTR_DEV_MM_ENABLE */
-	"DEV_MM_CMPT_ENABLE",		/**<XNL_ATTR_DEV_MM_CMPT_ENABLE */
-	"REG_BAR",		        /**< XNL_ATTR_REG_BAR_NUM */
-	"REG_ADDR",		        /**< XNL_ATTR_REG_ADDR */
-	"REG_VAL",		        /**< XNL_ATTR_REG_VAL */
-	"CSR_INDEX",			/**< XNL_ATTR_CSR_INDEX*/
-	"CSR_COUNT",			/**< XNL_ATTR_CSR_COUNT*/
-	"QIDX",			        /**< XNL_ATTR_QIDX */
-	"NUM_Q",		        /**< XNL_ATTR_NUM_Q */
-	"QFLAG",		        /**< XNL_ATTR_QFLAG */
-	"CMPT_DESC_SZ",			/**< XNL_ATTR_CMPT_DESC_SIZE */
-	"SW_DESC_SIZE",			/**< XNL_ATTR_SW_DESC_SIZE */
-	"QRINGSZ_IDX",			/**< XNL_ATTR_QRNGSZ */
-	"C2H_BUFSZ_IDX",		/**< XNL_ATTR_QBUFSZ */
-	"CMPT_TIMER_IDX",		/**< XNL_ATTR_CMPT_TIMER_IDX */
-	"CMPT_CNTR_IDX",		/**< XNL_ATTR_CMPT_CNTR_IDX */
-	"CMPT_TRIG_MODE",		/**< XNL_ATTR_CMPT_TRIG_MODE */
-	"RANGE_START",			/**< XNL_ATTR_RANGE_START */
-	"RANGE_END",			/**< XNL_ATTR_RANGE_END */
-	"INTR_VECTOR_IDX",		/**< XNL_ATTR_INTR_VECTOR_IDX */
-	"INTR_VECTOR_START_IDX",	/**< XNL_ATTR_INTR_VECTOR_START_IDX */
-	"INTR_VECTOR_END_IDX",		/**< XNL_ATTR_INTR_VECTOR_END_IDX */
-	"RSP_BUF_LEN",			/**< XNL_ATTR_RSP_BUF_LEN */
-	"GLOBAL_CSR",			/**< global csr data */
-	"PIPE_GL_MAX",			/**< max no. of gl for pipe */
-	"PIPE_FLOW_ID",			/**< pipe flow id */
-	"PIPE_SLR_ID",			/**< pipe slr id */
-	"PIPE_TDEST",			/**< pipe tdest */
-	"DEV_STM_BAR",			/**< device STM bar number */
-	"Q_STATE",			/**< XNL_ATTR_Q_STATE*/
-	"ERROR",			/**< XNL_ATTR_ERROR */
-	"PING_PONG_EN",		/**< XNL_PING_PONG_EN */
-	"DEV_ATTR",			/**< XNL_ATTR_DEV */
-	"XNL_ATTR_DEBUG_EN",	/** XNL_ATTR_DEBUG_EN */
-	"XNL_ATTR_DESC_ENGINE_MODE",	/** XNL_ATTR_DESC_ENGINE_MODE */
-#ifdef ERR_DEBUG
-	"QPARAM_ERR_INFO",		/**< queue param info */
-#endif
-	"ATTR_MAX",
-
-};
-
-
-
-/* commands, 0 ~ 0x7F */
-/**
- * xnl_op_t - XNL command types
- */
-enum xnl_op_t {
-	XNL_CMD_DEV_LIST,	/**< list all the qdma devices */
-	XNL_CMD_DEV_INFO,	/**< dump the device information */
-	XNL_CMD_DEV_STAT,	/**< dump the device statistics */
-	XNL_CMD_DEV_STAT_CLEAR,	/**< reset the device statistics */
-
-	XNL_CMD_REG_DUMP,	/**< dump the register information */
-	XNL_CMD_REG_RD,		/**< read a register value */
-	XNL_CMD_REG_WRT,	/**< write value to a register */
-
-	XNL_CMD_Q_LIST,		/**< list all the queue present in the system */
-	XNL_CMD_Q_ADD,		/**< add a queue */
-	XNL_CMD_Q_START,	/**< start a queue */
-	XNL_CMD_Q_STOP,		/**< stop a queue */
-	XNL_CMD_Q_DEL,		/**< delete a queue */
-	XNL_CMD_Q_DUMP,		/**< dump queue information*/
-	XNL_CMD_Q_DESC,		/**< dump descriptor information*/
-	XNL_CMD_Q_CMPT,		/**< dump writeback descriptor information*/
-	XNL_CMD_Q_RX_PKT,	/**< dump packet information*/
-	XNL_CMD_Q_CMPT_READ,	/**< read the cmpt data */
-#ifdef ERR_DEBUG
-	XNL_CMD_Q_ERR_INDUCE,	/**< induce an error*/
-#endif
-
-	XNL_CMD_INTR_RING_DUMP,	/**< dump interrupt ring information*/
-	XNL_CMD_Q_UDD,		/**< dump the user defined data */
-	XNL_CMD_GLOBAL_CSR,	/**< get all global csr register values */
-	XNL_CMD_DEV_CAP,	/**< list h/w capabilities , hw and sw version */
-	XNL_CMD_GET_Q_STATE,	/**< get the queue state */
-	XNL_CMD_REG_INFO_READ,  /**< read register info */
-#ifdef TANDEM_BOOT_SUPPORTED
-	XNL_CMD_EN_ST,  	/**< Enable Streaming */
-#endif
-	XNL_CMD_MAX,		/**< max number of XNL commands*/
-};
-
-/**
- * XNL command operation type
- */
-static const char *xnl_op_str[XNL_CMD_MAX] = {
-	"DEV_LIST",		/** XNL_CMD_DEV_LIST */
-	"DEV_INFO",		/** XNL_CMD_DEV_INFO */
-	"DEV_STAT",		/** XNL_CMD_DEV_STAT */
-	"DEV_STAT_CLEAR",	/** XNL_CMD_DEV_STAT_CLEAR */
-
-	"REG_DUMP",		/** XNL_CMD_REG_DUMP */
-	"REG_READ",		/** XNL_CMD_REG_RD */
-	"REG_WRITE",		/** XNL_CMD_REG_WRT */
-
-	"Q_LIST",		/** XNL_CMD_Q_LIST */
-	"Q_ADD",		/** XNL_CMD_Q_ADD */
-	"Q_START",		/** XNL_CMD_Q_START */
-	"Q_STOP",		/** XNL_CMD_Q_STOP */
-	"Q_DEL",		/** XNL_CMD_Q_DEL */
-	"Q_DUMP",		/** XNL_CMD_Q_DUMP */
-	"Q_DESC",		/** XNL_CMD_Q_DESC */
-	"Q_CMPT",		/** XNL_CMD_Q_CMPT */
-	"Q_RX_PKT",		/** XNL_CMD_Q_RX_PKT */
-	"Q_CMPT_READ",		/** XNL_CMD_Q_CMPT_READ */
-#ifdef ERR_DEBUG
-	"Q_ERR_INDUCE",		/** XNL_CMD_Q_ERR_INDUCE */
-#endif
-	"INTR_RING_DUMP",	/** XNL_CMD_INTR_RING_DUMP */
-	"Q_UDD_DUMP",		/** XNL_CMD_Q_UDD */
-	"GLOBAL_CSR",		/** XNL_CMD_GLOBAL_CSR*/
-	"DEV_CAP",			/** XNL_CMD_DEV_CAP */
-	"GET_Q_STATE",		/** XNL_CMD_GET_Q_STATE */
-	"REG_INFO_READ",		/** XNL_CMD_REG_INFO_READ */
-#ifdef TANDEM_BOOT_SUPPORTED
-	"EN_ST"				/** XNL_CMD_EN_ST */
-#endif
-};
-
-enum qdma_queue_state {
-	QUEUE_DISABLED,
-	QUEUE_ENABLED,
-	QUEUE_ONLINE
-};
-
-
-/**
- * qdma_err_idx - Induce error
- */
-enum qdma_err_idx {
-	err_ram_sbe,
-	err_ram_dbe,
-	err_dsc,
-	err_trq,
-	err_h2c_mm_0,
-	err_h2c_mm_1,
-	err_c2h_mm_0,
-	err_c2h_mm_1,
-	err_c2h_st,
-	ind_ctxt_cmd_err,
-	err_bdg,
-	err_h2c_st,
-	poison,
-	ur_ca,
-	param,
-	addr,
-	tag,
-	flr,
-	timeout,
-	dat_poison,
-	flr_cancel,
-	dma,
-	dsc,
-	rq_cancel,
-	dbe,
-	sbe,
-	unmapped,
-	qid_range,
-	vf_access_err,
-	tcp_timeout,
-	mty_mismatch,
-	len_mismatch,
-	qid_mismatch,
-	desc_rsp_err,
-	eng_wpl_data_par_err,
-	msi_int_fail,
-	err_desc_cnt,
-	portid_ctxt_mismatch,
-	portid_byp_in_mismatch,
-	cmpt_inv_q_err,
-	cmpt_qfull_err,
-	cmpt_cidx_err,
-	cmpt_prty_err,
-	fatal_mty_mismatch,
-	fatal_len_mismatch,
-	fatal_qid_mismatch,
-	timer_fifo_ram_rdbe,
-	fatal_eng_wpl_data_par_err,
-	pfch_II_ram_rdbe,
-	cmpt_ctxt_ram_rdbe,
-	pfch_ctxt_ram_rdbe,
-	desc_req_fifo_ram_rdbe,
-	int_ctxt_ram_rdbe,
-	cmpt_coal_data_ram_rdbe,
-	tuser_fifo_ram_rdbe,
-	qid_fifo_ram_rdbe,
-	payload_fifo_ram_rdbe,
-	wpl_data_par_err,
-	zero_len_desc_err,
-	csi_mop_err,
-	no_dma_dsc_err,
-	sb_mi_h2c0_dat,
-	sb_mi_c2h0_dat,
-	sb_h2c_rd_brg_dat,
-	sb_h2c_wr_brg_dat,
-	sb_c2h_rd_brg_dat,
-	sb_c2h_wr_brg_dat,
-	sb_func_map,
-	sb_dsc_hw_ctxt,
-	sb_dsc_crd_rcv,
-	sb_dsc_sw_ctxt,
-	sb_dsc_cpli,
-	sb_dsc_cpld,
-	sb_pasid_ctxt_ram,
-	sb_timer_fifo_ram,
-	sb_payload_fifo_ram,
-	sb_qid_fifo_ram,
-	sb_tuser_fifo_ram,
-	sb_wrb_coal_data_ram,
-	sb_int_qid2vec_ram,
-	sb_int_ctxt_ram,
-	sb_desc_req_fifo_ram,
-	sb_pfch_ctxt_ram,
-	sb_wrb_ctxt_ram,
-	sb_pfch_ll_ram,
-	sb_h2c_pend_fifo,
-	db_mi_h2c0_dat,
-	db_mi_c2h0_dat,
-	db_h2c_rd_brg_dat,
-	db_h2c_wr_brg_dat,
-	db_c2h_rd_brg_dat,
-	db_c2h_wr_brg_dat,
-	db_func_map,
-	db_dsc_hw_ctxt,
-	db_dsc_crd_rcv,
-	db_dsc_sw_ctxt,
-	db_dsc_cpli,
-	db_dsc_cpld,
-	db_pasid_ctxt_ram,
-	db_timer_fifo_ram,
-	db_payload_fifo_ram,
-	db_qid_fifo_ram,
-	db_tuser_fifo_ram,
-	db_wrb_coal_data_ram,
-	db_int_qid2vec_ram,
-	db_int_ctxt_ram,
-	db_desc_req_fifo_ram,
-	db_pfch_ctxt_ram,
-	db_wrb_ctxt_ram,
-	db_pfch_ll_ram,
-	db_h2c_pend_fifo,
-	qdma_errs
-};
-
-#endif /* ifndef QDMA_NL_H__ */
diff --git a/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h b/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h
deleted file mode 100755
index 4e83373..0000000
--- a/QDMA/linux-kernel/apps/include/qdma_user_reg_dump.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under both the BSD-style license (found in the
- * LICENSE file in the root directory of this source tree) and the GPLv2 (found
- * in the COPYING file in the root directory of this source tree).
- * You may select, at your option, one of the above-listed licenses.
- */
-
-#include "qdma_reg_dump.h"
-
-#ifndef __QDMA_USER_REG_DUMP_H__
-#define __QDMA_USER_REG_DUMP_H__
-
-
-
-static struct xreg_info qdma_user_regs[] = {
-	{"ST_C2H_QID", 0x0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKTLEN", 0x4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CONTROL", 0x8, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_C2H_CONTROL:
-	 *	[1] : start C2H
-	 *	[2] : immediate data
-	 *	[3] : every packet statrs with 00 instead of continuous data
-	 *	      stream until # of packets is complete
-	 *	[31]: gen_user_reset_n
-	 */
-	{"ST_H2C_CONTROL", 0xC, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_H2C_CONTROL:
-	 *	[0] : clear match for H2C transfer
-	 */
-	{"ST_H2C_STATUS", 0x10, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_H2C_XFER_CNT", 0x14, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_CNT", 0x20, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_DATA", 0x30, 8, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_SIZE", 0x50, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_SCRATCH_REG", 0x60, 2, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_DROP", 0x88, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_ACCEPT", 0x8C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DSC_BYPASS_LOOP", 0x90, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT", 0x94, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_MASK", 0x98, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_VEC", 0x9C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DMA_CONTROL", 0xA0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"VDM_MSG_READ", 0xA4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-
-	{"", 0, 0, 0 }
-};
-
-
-#endif
diff --git a/QDMA/linux-kernel/apps/include/xdev_regs.h b/QDMA/linux-kernel/apps/include/xdev_regs.h
deleted file mode 100755
index 1434dce..0000000
--- a/QDMA/linux-kernel/apps/include/xdev_regs.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under both the BSD-style license (found in the
- * LICENSE file in the root directory of this source tree) and the GPLv2 (found
- * in the COPYING file in the root directory of this source tree).
- * You may select, at your option, one of the above-listed licenses.
- */
-
-#ifndef __XDEV_REGS_H__
-#define __XDEV_REGS_H__
-
-struct xreg_info {
-	const char name[32];
-	uint32_t addr;
-	unsigned int repeat;
-	unsigned int step;
-	unsigned char shift;
-	unsigned char len;
-	unsigned char filler[2];
-};
-
-static struct xreg_info qdma_config_regs[] = {
-
-	/* QDMA_TRQ_SEL_GLBL1 (0x00000) */
-	{"CFG_BLOCK_ID",				0x00, 0, 0, 0, 0,},
-	{"CFG_BUSDEV",					0x04, 0, 0, 0, 0,},
-	{"CFG_PCIE_MAX_PL_SZ",				0x08, 0, 0, 0, 0,},
-	{"CFG_PCIE_MAX_RDRQ_SZ",			0x0C, 0, 0, 0, 0,},
-	{"CFG_SYS_ID",					0x10, 0, 0, 0, 0,},
-	{"CFG_MSI_EN",					0x14, 0, 0, 0, 0,},
-	{"CFG_PCIE_DATA_WIDTH",				0x18, 0, 0, 0, 0,},
-	{"CFG_PCIE_CTRL",				0x1C, 0, 0, 0, 0,},
-	{"CFG_AXI_USR_MAX_PL_SZ",			0x40, 0, 0, 0, 0,},
-	{"CFG_AXI_USR_MAX_RDRQ_SZ",			0x44, 0, 0, 0, 0,},
-	{"CFG_MISC_CTRL",				0x4C, 0, 0, 0, 0,},
-	{"CFG_SCRATCH_REG",				0x80, 8, 0, 0, 0,},
-	{"QDMA_RAM_SBE_MSK_A",				0xF0, 0, 0, 0, 0,},
-	{"QDMA_RAM_SBE_STS_A",				0xF4, 0, 0, 0, 0,},
-	{"QDMA_RAM_DBE_MSK_A",				0xF8, 0, 0, 0, 0,},
-	{"QDMA_RAM_DBE_STS_A",				0xFC, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_GLBL2 (0x00100) */
-	{"GLBL2_ID",					0x100, 0, 0, 0, 0,},
-	{"GLBL2_PF_BL_INT",				0x104, 0, 0, 0, 0,},
-	{"GLBL2_PF_VF_BL_INT",				0x108, 0, 0, 0, 0,},
-	{"GLBL2_PF_BL_EXT",				0x10C, 0, 0, 0, 0,},
-	{"GLBL2_PF_VF_BL_EXT",				0x110, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_INST",				0x114, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_QDMA",				0x118, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_STRM",				0x11C, 0, 0, 0, 0,},
-	{"GLBL2_QDMA_CAP",				0x120, 0, 0, 0, 0,},
-	{"GLBL2_PASID_CAP",				0x128, 0, 0, 0, 0,},
-	{"GLBL2_FUNC_RET",				0x12C, 0, 0, 0, 0,},
-	{"GLBL2_SYS_ID",				0x130, 0, 0, 0, 0,},
-	{"GLBL2_MISC_CAP",				0x134, 0, 0, 0, 0,},
-	{"GLBL2_DBG_PCIE_RQ",				0x1B8, 2, 0, 0, 0,},
-	{"GLBL2_DBG_AXIMM_WR",				0x1C0, 2, 0, 0, 0,},
-	{"GLBL2_DBG_AXIMM_RD",				0x1C8, 2, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_GLBL (0x00200) */
-	{"GLBL_RNGSZ",					0x204, 16, 0, 0, 0,},
-	{"GLBL_ERR_STAT",				0x248, 0,  0, 0, 0,},
-	{"GLBL_ERR_MASK",				0x24C, 0,  0, 0, 0,},
-	{"GLBL_DSC_CFG",				0x250, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_STS",				0x254, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_MSK",				0x258, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_LOG",				0x25C, 2,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_STS",				0x264, 0,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_MSK",				0x268, 0,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_LOG",				0x26C, 0,  0, 0, 0,},
-	{"GLBL_DSC_DBG_DAT",				0x270, 2,  0, 0, 0,},
-	{"GLBL_DSC_ERR_LOG2",				0x27C, 0,  0, 0, 0,},
-	{"GLBL_INTERRUPT_CFG",				0x288, 0,  0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_FMAP (0x00400 - 0x7FC) * TODO: max 256, display 4 for now */
-	{"TRQ_SEL_FMAP",				0x400, 4, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_IND (0x00800) */
-	{"IND_CTXT_DATA",				0x804, 8, 0, 0, 0,},
-	{"IND_CTXT_MASK",				0x824, 8, 0, 0, 0,},
-	{"IND_CTXT_CMD",				0x844, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_C2H (0x00A00) */
-	{"C2H_TIMER_CNT",				0xA00, 16, 0, 0, 0,},
-	{"C2H_CNT_THRESH",				0xA40, 16, 0, 0, 0,},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",		0xA88, 0, 0, 0, 0,},
-	{"C2H_STAT_S_AXIS_CMPT_ACCEPTED",		0xA8C, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED",		0xA90, 0, 0, 0, 0,},
-	{"C2H_STAT_AXIS_PKG_CMP",			0xA94, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_ACCEPTED",			0xA98, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_CMP",			0xA9C, 0, 0, 0, 0,},
-	{"C2H_STAT_WRQ_OUT",				0xAA0, 0, 0, 0, 0,},
-	{"C2H_STAT_WPL_REN_ACCEPTED",			0xAA4, 0, 0, 0, 0,},
-	{"C2H_STAT_TOTAL_WRQ_LEN",			0xAA8, 0, 0, 0, 0,},
-	{"C2H_STAT_TOTAL_WPL_LEN",			0xAAC, 0, 0, 0, 0,},
-	{"C2H_BUF_SZ",					0xAB0, 16, 0, 0, 0,},
-	{"C2H_ERR_STAT",				0xAF0, 0, 0, 0, 0,},
-	{"C2H_ERR_MASK",				0xAF4, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_STAT",				0xAF8, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_MASK",				0xAFC, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_ENABLE",			0xB00, 0, 0, 0, 0,},
-	{"GLBL_ERR_INT",				0xB04, 0, 0, 0, 0,},
-	{"C2H_PFCH_CFG",				0xB08, 0, 0, 0, 0,},
-	{"C2H_INT_TIMER_TICK",				0xB0C, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED",		0xB10, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED",		0xB14, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_REQ",				0xB18, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG",			0xB1C, 4, 0, 0, 0,},
-	{"C2H_DBG_PFCH_ERR_CTXT",			0xB2C, 0, 0, 0, 0,},
-	{"C2H_FIRST_ERR_QID",				0xB30, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_IN",				0xB34, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_OUT",				0xB38, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_DRP",				0xB3C, 0, 0, 0, 0,},
-	{"STAT_NUM_STAT_DESC_OUT",			0xB40, 0, 0, 0, 0,},
-	{"STAT_NUM_DSC_CRDT_SENT",			0xB44, 0, 0, 0, 0,},
-	{"STAT_NUM_FCH_DSC_RCVD",			0xB48, 0, 0, 0, 0,},
-	{"STAT_NUM_BYP_DSC_RCVD",			0xB4C, 0, 0, 0, 0,},
-	{"C2H_CMPT_COAL_CFG",				0xB50, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_REQ",				0xB54, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_MM_REQ",				0xB58, 0, 0, 0, 0,},
-	{"C2H_INTR_ERR_INT_REQ",			0xB5C, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_REQ",				0xB60, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_ACK",		0xB64, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_FAIL",		0xB68, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_NO_MSIX",			0xB6C, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_CTXT_INVAL",		0xB70, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_MSIX_ACK",			0xB74, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL",			0xB78, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_NO_MSIX",			0xB7C, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL",			0xB80, 0, 0, 0, 0,},
-	{"C2H_STAT_WR_CMP",				0xB84, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG_4",			0xB88, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG_5",			0xB8C, 0, 0, 0, 0,},
-	{"C2H_DBG_PFCH_QID",				0xB90, 0, 0, 0, 0,},
-	{"C2H_DBG_PFCH",				0xB94, 0, 0, 0, 0,},
-	{"C2H_INT_DEBUG",				0xB98, 0, 0, 0, 0,},
-	{"C2H_STAT_IMM_ACCEPTED",			0xB9C, 0, 0, 0, 0,},
-	{"C2H_STAT_MARKER_ACCEPTED",			0xBA0, 0, 0, 0, 0,},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED",		0xBA4, 0, 0, 0, 0,},
-	{"C2H_C2H_PAYLOAD_FIFO_CRDT_CNT",		0xBA8, 0, 0, 0, 0,},
-
-	{"C2H_INTR_DYN_REQ",				0xBAC, 0, 0, 0, 0,},
-	{"C2H_INTR_DYN_MSIX",				0xBB0, 0, 0, 0, 0,},
-	{"C2H_DROP_LEN_MISMATCH",			0xBB4, 0, 0, 0, 0,},
-	{"C2H_DROP_DESC_RSP_LEN",			0xBB8, 0, 0, 0, 0,},
-	{"C2H_DROP_QID_FIFO_LEN",			0xBBC, 0, 0, 0, 0,},
-	{"C2H_DROP_PAYLOAD_CNT",			0xBC0, 0, 0, 0, 0,},
-	{"QDMA_C2H_CMPT_FORMAT",			0xBC4, 7, 0, 0, 0,},
-	{"C2H_PFCH_CACHE_DEPTH",			0xBE0, 0, 0, 0, 0,},
-	{"C2H_CMPT_COAL_BUF_DEPTH",			0xBE4, 0, 0, 0, 0,},
-	{"C2H_PFCH_CRDT",				0xBE8, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_H2C(0x00E00) Register Space*/
-	{"H2C_ERR_STAT",				0xE00, 0, 0, 0, 0,},
-	{"H2C_ERR_MASK",				0xE04, 0, 0, 0, 0,},
-	{"H2C_FIRST_ERR_QID",				0xE08, 0, 0, 0, 0,},
-	{"H2C_DBG_REG",					0xE0C, 5, 0, 0, 0,},
-	{"H2C_FATAL_ERR_EN",				0xE20, 0, 0, 0, 0,},
-	{"H2C_REQ_THROT",				0xE24, 0, 0, 0, 0,},
-	{"H2C_ALN_DBG_REG0",				0xE28, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_C2H_MM (0x1000) */
-	{"C2H_MM_CONTROL",				0x1004, 3, 0, 0, 0,},
-	{"C2H_MM_STATUS",				0x1040, 2, 0, 0, 0,},
-	{"C2H_MM_CMPL_DSC_CNT",				0x1048, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_CODE_EN_MASK",			0x1054, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_CODE",				0x1058, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_INFO",				0x105C, 0, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_CTRL",			0x10C0, 0, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_CY_CNT",			0x10C4, 2, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_DATA_CNT",			0x10CC, 2, 0, 0, 0,},
-	{"C2H_MM_DBG_INFO",				0x10E8, 2, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_H2C_MM (0x1200)*/
-	{"H2C_MM_CONTROL",				0x1204, 3, 0, 0, 0,},
-	{"H2C_MM_STATUS",				0x1240, 0, 0, 0, 0,},
-	{"H2C_MM_CMPL_DSC_CNT",				0x1248, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_CODE_EN_MASK",			0x1254, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_CODE",				0x1258, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_INFO",				0x125C, 0, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_CTRL",			0x12C0, 0, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_CY_CNT",			0x12C4, 2, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_DATA_CNT",			0x12CC, 2, 0, 0, 0,},
-	{"H2C_MM_DBG_INFO",				0x12E8, 0, 0, 0, 0,},
-	{"H2C_MM_REQ_THROT",				0x12EC, 0, 0, 0, 0,},
-
-	/* QDMA_PF_MAILBOX (0x2400) */
-	{"FUNC_STATUS",					0x2400, 0, 0, 0, 0,},
-	{"FUNC_CMD",					0x2404, 0, 0, 0, 0,},
-	{"FUNC_INTR_VEC",				0x2408, 0, 0, 0, 0,},
-	{"TARGET_FUNC",					0x240C, 0, 0, 0, 0,},
-	{"INTR_CTRL",					0x2410, 0, 0, 0, 0,},
-	{"PF_ACK",					0x2420, 8, 0, 0, 0,},
-	{"FLR_CTRL_STATUS",				0x2500, 0, 0, 0, 0,},
-	{"MSG_IN",					0x2800, 32, 0, 0, 0,},
-	{"MSG_OUT",					0x2C00, 32, 0, 0, 0,},
-
-	{"", 0, 0, 0 }
-};
-
-static struct xreg_info qdma_user_regs[] = {
-	{"ST_C2H_QID",					0x0, 0, 0, 0, 0,},
-	{"ST_C2H_PKTLEN",				0x4, 0, 0, 0, 0,},
-	{"ST_C2H_CONTROL",				0x8, 0, 0, 0, 0,},
-	/*  ST_C2H_CONTROL:
-	 *	[1] : start C2H
-	 *	[2] : immediate data
-	 *	[3] : every packet statrs with 00 instead of continuous data
-	 *	      stream until # of packets is complete
-	 *	[31]: gen_user_reset_n
-	 */
-	{"ST_H2C_CONTROL",				0xC, 0, 0, 0, 0,},
-	/*  ST_H2C_CONTROL:
-	 *	[0] : clear match for H2C transfer
-	 */
-	{"ST_H2C_STATUS",				0x10, 0, 0, 0, 0,},
-	{"ST_H2C_XFER_CNT",				0x14, 0, 0, 0, 0,},
-	{"ST_C2H_PKT_CNT",				0x20, 0, 0, 0, 0,},
-	{"ST_C2H_CMPT_DATA",				0x30, 8, 0, 0, 0,},
-	{"ST_C2H_CMPT_SIZE",				0x50, 0, 0, 0, 0,},
-	{"ST_SCRATCH_REG",				0x60, 2, 0, 0, 0,},
-	{"ST_C2H_PKT_DROP",				0x88, 0, 0, 0, 0,},
-	{"ST_C2H_PKT_ACCEPT",				0x8C, 0, 0, 0, 0,},
-	{"DSC_BYPASS_LOOP",				0x90, 0, 0, 0, 0,},
-	{"USER_INTERRUPT",				0x94, 0, 0, 0, 0,},
-	{"USER_INTERRUPT_MASK",				0x98, 0, 0, 0, 0,},
-	{"USER_INTERRUPT_VEC",				0x9C, 0, 0, 0, 0,},
-	{"DMA_CONTROL",					0xA0, 0, 0, 0, 0,},
-	{"VDM_MSG_READ",				0xA4, 0, 0, 0, 0,},
-
-	{"", 0, 0, 0 }
-};
-
-#endif
diff --git a/QDMA/linux-kernel/bsd_license.txt b/QDMA/linux-kernel/bsd_license.txt
deleted file mode 100755
index 20693b4..0000000
--- a/QDMA/linux-kernel/bsd_license.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is licensed under both the BSD-style license (found in the
- * LICENSE file in the root directory of this source tree) and the GPLv2 (found
- * in the COPYING file in the root directory of this source tree).
- * You may select, at your option, one of the above-listed licenses.
- */
-
diff --git a/QDMA/linux-kernel/docs/README b/QDMA/linux-kernel/docs/README
deleted file mode 100755
index bc04f89..0000000
--- a/QDMA/linux-kernel/docs/README
+++ /dev/null
@@ -1,323 +0,0 @@
-###############################################################################
-
-                 Xilinx QDMA Software README
-
-###############################################################################
-
-
-_____________________________________________________________________________
-Contents
-
-1.   Installation
-     1.1   Compiling the QDMA Software
-     1.2   Installing the compiled binaries
-     1.3   Loading the Kernel module
-2    Configuration
-     2.1   Configuring Queues
-3.   Xilinx "dma-ctl" Command-line Utility
-     3.1   Using dma-ctl for query the QDMA devices/functions
-     3.2   Using dma-ctl for Queue control
-4.   QDMA test script
-     Sample scripts to run simple MM and ST transfers 
-_____________________________________________________________________________
-
-1. Installation:
-
-  1.1 Compiling the QDMA Software:
-  --------------------------------
-
-  In order to compile the Xilinx QDMA software, a configured and compiled
-  Linux kernel source tree is required. The source tree may be only compiled
-  header files, or a complete tree. The source tree needs to be configured
-  and the header files need to be compiled. And, the Linux kernel must be
-  configured to use  modules.
-
-  Additionally, the /lib/modules must have been set up for this particular
-  kernel
-  (i.e. "make modules_install" has been run with the Linux kernel source tree).
-
-  a.	QDMA Linux Kernel Driver is available in Xilinx github at 
-		https://github.com/Xilinx/dma_ip_drivers/QDMA/linux-kernel
-
-  b.	Compile the Xilinx QDMA Linux driver:
-
-  	[xilinx@]# make
-
-	a sub-directory bin/ will be created as a result of running "make".
-
-	By default, both PF driver (qdma-pf.ko) and VF driver (qdma-vf.ko) will
-	be compiled along with all the sample applications
-
-
-	If only PF driver needs to be compiled:
-  	[xilinx@]# make driver MODULE=mod_pf
-
-	If only VF driver needs to be compiled:
-  	[xilinx@]# make driver MODULE=mod_vf
-
-	Important Note for VF 4K queue support for CPM5 design only
-    -----------------------------------------------------------
-
-    To enable VF 4K queue driver support for CPM5 design, QDMA Linux driver need
-    to compile by enabling the EQDMA_CPM5_VF_GT_256Q_SUPPORTED macro
-
-    [xilinx@]# make EQDMA_CPM5_VF_GT_256Q_SUPPORTED=1
-
-  1.2 Installing the compiled binaries:
-  -------------------------------------
-
-  To install the QDMA software, the installer must be the root user, then
-  run "make install".
-
-	Run "make install-mods" to install the drivers in /lib/modules/<kernel version>/qdma/
-
-	Run "make install-apps" to install the applications in "/user/local/sbin"
-
-  Example application software to issue DMA requests:
-  dma-to-device for H2C queues and dma-from-device for C2H queues will be installed in /user/local/sbin.
-
-
-  1.3 Loading the Kernel module:
-  --------------------------------
-
-  Kernel module cane be loaded in following different modes
-  0 - Auto Mode, driver decides to process the request in poll or interrupt mode
-  1 - Poll Mode
-  2 - Direct Interrupt Mode
-  3 - Interrupt Aggregation Mode or Indirect Interrupt Mode
-  4 - Legacy Interrupt Mode
-
-  Find the QDMA device bus number from lspci. Ex : 01:00.0 is the BDF of the device.
-  By default, all the functions are loaded in Auto Mode.
-  
-  In order to pass the module parameters while loading a driver, a config file "qdma.conf" needs to be placed in /etc/modprobe.d directory. Format of the qdma.conf is as below
-
-	------------------------------------------------------------------------------------------------------------------
-	options <module_name> mode=<bus_num>:<pf_num>:<mode>,<bus_num>:<pf_num>:<mode>,<bus_num>:<pf_num>:<mode>,.....
-	options <module_name> config_bar=<bus_num>:<pf_num>:<config_bar>,<bus_num>:<pf_num>:<config_bar>,<bus_num>:<pf_num>:<config_bar>,.....
-	options <module_name> master_pf=<bus_num>:<master_pf>,<bus_num>:<master_pf>
-	------------------------------------------------------------------------------------------------------------------
-
-	- module_name:  Name of the mode. For PF: qdma-pf and for VF: qdma-vf
-	- bus_num : Bus number of the PCIe endpoint card
-	- func_num : Function number of the corressponding bus_num
-	- mode: Mode in which the driver needs to be loaded
-	- config_bar: Config bar number
-	- master_pf: Master PF  
-	- num_threads: number of threads for monitoring the writeback of completions
-
-   Sample qdma.conf can be found below:
-
-	------------------------------------------------------------------------------------------------------------------
-	options qdma-pf mode=0x06:0:2,0x06:1:3,0x06:2:0,0x07:2:1
-	options qdma-vf mode=0x06:0:2,0x06:1:3
-	------------------------------------------------------------------------------------------------------------------
-
-  An auxillary script, qdma_generate_conf_file.sh has been added to the scripts folder which helps create the qdma.conf 
-  config file and copies it to the /etc/modprobe.d location. The script can be used as shown below - 
-  ./scripts/qdma_generate_conf_file.sh <bus_num> <num_pfs> <mode> <config_bar> <master_pf>
-
-  For loading the driver, execute the following command:
-  PF Driver:
-	modprobe qdma-pf
-  VF Driver:
-	modprobe qdma-vf
-
-  Now the QDMA software is ready for use.
-
-  Please note that having the qdma-pf.ko and qdma-vf.ko files in the /lib/modules/<kernel version>/qdma/ will cause
-  automatic loading of the driver modules at boot time. To avoid this, it is recommended to have the drivers 
-  blacklisted. 
-  This can be done by adding the below 2 lines in the /etc/modprobe.d/blacklist.conf file -
-  blacklist qdma-pf
-  blacklist qdma-vf
-  
-
-2. Configuration
-
-  2.1 Configuring Queues
-  -------------------------------------
-
-  To configure a QDMA queue, there are three minimum required parameters
-  (in the form of key value pairs) needed to be configured.
-
-       idx <N>:	        The 0-based queue index on the function.
-       mode <mm | st>:  queue mode, default to "mm"
-       dir <h2c | c2h>: queue direction, default to "h2c"
-
-  - "idx" is a 0-based unique index on the function.
-    *QDMA3.1, the range can be
-	0 ~ 2047 on a physical function and
-	0 ~ 2047 on a virtual function
-	
-    *QDMA4.0, the range can be
-	0 ~ 2047 on a physical function and
-	0 ~ 256 on a virtual function
-
-  - "mode" is the operation mode of the queue.
-	It is either memory mapped (mm) or streaming mode (st)
-
-  - "dir" is the direction of the queue.
-	It is either host to card (h2c) or card to host (c2h).
-
-  A h2c queue and a c2h queue can share the same index. In other word, a index
-  represents a pair of queues: one on h2c direction and the other on the c2h
-  direction.
-
-
-3. Xilinx "dma-ctl" Command-line Configuration Utility:
-
-  The Xilinx QDMA control tool, dma-ctl, is a Command Line utility
-  which is installed in /usr/local/sbin/ and allows administration of the
-  Xilinx QDMA queues. It can perform the following functions:
-
-  - query the qdma functions/devices the driver has bind into.
-
-  - list all of the queues on a device/function
-  - add/configure a new queues on a device/function
-  - start an already added/configured queue (i.e., bring the queue online)
-  - stop an started queue (i.e., bring the queue offline)
-  - delete an already added/configured queue
-
-  register access:
-  - read a register
-  - write a register
-  - dump the qdma config bar and user bar registers
-
-  debug helper
-  - display a queue's configuration parameters
-  - display a queue's descriptor ring entries
-  - display a ch2 queue's completion ring entries
-  - display the interrupt ring entries in indirect interrupt mode
-
-  Apart from the above basic commands, there are various other commands
-  available in dma-ctl to add/start/stop/del list of queues at the same time
-
-  For help run:
-    dma-ctl -h
-       (or)
-    man dma-ctl
-
-
-  3.1 Using dma-ctl for query the QDMA devices/functions
-  -------------------------------------
-
-  Please refer dma-ctl man page to find all options and parameters
-  available.
-
-    1. Get the list of devices the driver has bind with
-
-      [root@]# dma-ctl dev list
-
-	qdma06000	0000:06:00.0	max QP: 32
-	qdma06001	0000:06:00.1	max QP: 32
-
-      The above example output shows 2 QDMA functions/devices.
-      one is at pci BDF: 06:00.0
-      the other is at pci BDF: 06:00.1
-
-
-  3.2 Using dma-ctl for Queue control
-  -------------------------------------
-
-  Please refer dma-ctl man page to find all options and parameters available.
-
-    a. Add/Configure a queue
-
-      To add a MM H2C queue on qdma06000 in the above example:
-
-      [root@]# dma-ctl qdma06000 q add idx 0 mode mm dir h2c
-
-      *A character device /dev/qdma06000-MM-0 would be created.
-
-      To add a MM C2H queue on qdma06000:
-
-      [root@]# dma-ctl qdma06000 q add idx 0 mode mm dir c2h
-
-      *A character device /dev/qdma06000-MM-0 would be created.
-
-    b. Start an added queue
-
-      To start the MM H2C queue on qdma06000 added in the previous example:
-
-      [root@]# dma-ctl qdma06000 q start idx 0 dir h2c
-
-      *After the queue is started the normal read and write operation can be
-       performed on the character device /dev/qdma06000-MM-0.
-
-      To start the MM C2H queue on qdma06000 added in the previous example:
-
-      [root@]# dma-ctl qdma06000 q start idx 0 dir c2h
-
-      *After the queue is started the normal read and write operation can be
-       performed on the character device /dev/qdma06000-MM-0.
-
-    c. Stop a queue
-
-      [root@]# dma-ctl qdma06000 q stop idx 0 dir h2c
-      [root@]# dma-ctl qdma06000 q stop idx 0 dir c2h
-
-
-    d. Delete a queue
-
-      [root@]# dma-ctl qdma06000 q del idx 0 dir h2c
-      [root@]# dma-ctl qdma06000 q del idx 0 dir c2h
-
-
-4. QDMA test script
-
-    Test scripts are in scripts/ directory
-
-    To use the scripts in this directory, "make" and "make install" must be run
-    install the dma-from-device and dma-to-device applications.
-
-    qdma_run_test.sh 
-	The script does the following dma operations:
-
-    	PF AXI-MM :     H2C/C2H AXI-MM transfer and check for data correctness.
-	PF AXI-ST-H2C : H2C AXI-ST transfer and read data register on user side
-  		        to check if the data if correct.
-	PF AXI-ST-C2H : C2H AXI-St transfer and check data for correctness.
-
-	All the above transfers are done for 4 [0 to 3] Queues.
-
-    qdma_run_test_mm_vf.sh
-    	VF AXI-MM : Script runs H2C/C2H AXI-MM transfer and check for data
-		    correctness.
-
-	All the above transfers are done for 4 [0 to 3] Queues.
-
-    qdma_run_test_st_vf.sh
-	VF AXI-ST-H2C : H2C AXI-ST transfer and read data register on user side
-	  	        to check if the data if correct.
-	VF AXI-ST-C2H : C2H AXI-St transfer and check data for correctness.
-
-	All the above transfers are done for 4 [0 to 3] Queues.
-
-
-
-
-
-
-  /*
-  * This file is part of the Xilinx DMA IP Core driver for Linux
-  *
-  * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-  * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
-  *
-  * This source code is free software; you can redistribute it and/or modify it
-  * under the terms and conditions of the GNU General Public License,
-  * version 2, as published by the Free Software Foundation.
-  *
-  * This program is distributed in the hope that it will be useful, but WITHOUT
-  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-  * more details.
-  *
-  * The full GNU General Public License is included in this distribution in
-  * the file called "COPYING".
-  */
-
-
-
-
diff --git a/QDMA/linux-kernel/docs/dma-ctl.8.gz b/QDMA/linux-kernel/docs/dma-ctl.8.gz
deleted file mode 100755
index afbdec93ccc2ecc2688830be6dd5b0a5b9bf2f60..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2403
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

diff --git a/QDMA/linux-kernel/driver/Makefile b/QDMA/linux-kernel/driver/Makefile
deleted file mode 100755
index 7d1377a..0000000
--- a/QDMA/linux-kernel/driver/Makefile
+++ /dev/null
@@ -1,272 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-SHELL = /bin/bash
-
-#
-# makefile parameters:
-# - KDIR/KSRC/KOBJ=, optional
-# - install_path=,			override all install directories
-# - kernel_install_path=,	override install directory for kernel module
-# - dev_install_path=,		override install directory for development headers
-# - apps_install_path=,		override install directory for applications
-# - docs_install_path=,		override install directory for man pages
-#
-# - enable_cmpt_immediate_data=<0|1>	enable immediate data in writeback desc.
-# - disable_st_c2h_completion=<0|1>	disable completion
-# - CROSS_COMPILE=,  gcc compiler prefix for architecture eg. aarch64-linux-gnu-
-
-# Define grep error output to NULL, since -s is not portable.
-grep = grep 2>/dev/null
-
-# ALL subdirectories
-ALLSUBDIRS := src
-DRIVER_SRC_DIR := src
-
-# subdirectories to be build
-SUBDIRS := $(ALLSUBDIRS)
-
-# Honor the -s (silent) make option.
-verbose := $(if $(filter s,$(MAKEFLAGS)),,-v)
-
-# Define paths.
-srcdir := $(shell pwd)
-topdir := $(shell cd $(srcdir)/.. && pwd)
-bin_dir := $(topdir)/bin
-
-kernel_check = 1
-distro_check = 1
-
-ifeq ($(filter clean,$(MAKECMDGOALS)),clean)
-  kernel_check = 0
-  distro_check = 0
-endif
-
-ifeq ($(filter uninstall,$(MAKECMDGOALS)),uninstall)
-  distro_check = 0
-endif
-
-ifeq ($(kernel_check),1)
-  include make_rules/kernel_check.mk
-
-  ifeq ($(distro_check),1)
-    include make_rules/distro_check.mk
-  endif
-endif
-
-ifneq ($(wildcard $(KINC)/linux/kconfig.h),)
-  FLAGS += -DKERNEL_HAS_KCONFIG_H
-endif
-ifneq ($(wildcard $(KINC)/linux/export.h),)
-  FLAGS += -DKERNEL_HAS_EXPORT_H
-endif
-
-# Debug flags.
-ifeq ($(DEBUG),1)
-  FLAGS += -g -DDEBUG
-endif
-
-# Debugfs flags
-ifneq ($(DEBUGFS),0)
-  FLAGS += -DDEBUGFS
-endif
-
-# LOOPBACK flags.
-ifeq ($(LOOPBACK),1)
-  FLAGS += -DLOOPBACK_TEST
-endif
-
-ifeq ($(DEBUG_THREADS),1)
-  FLAGS += -DDEBUG -DDEBUG_THREADS
-endif
- 
-ifeq ($(enable_cmpt_immediate_data),1)
-	FLAGS += -DXNL_IMM_DATA_EN
-endif
-
-ifeq ($(disable_st_c2h_completion),1)
-	FLAGS += -DXMP_DISABLE_ST_C2H_CMPL
-endif
-
-# 64B Descriptor Bypass flags.
-ifeq ($(TEST_64B_DESC_BYPASS),1)
-  FLAGS += -DTEST_64B_DESC_BYPASS_FEATURE
-endif
-
-ifeq ($(ERR_DEBUG),1)
-  EXTRA_FLAGS += -DERR_DEBUG
-#  FLAGS += -DERR_DEBUG
-  export EXTRA_FLAGS
-endif
-
-ifeq ($(TANDEM_BOOT_SUPPORTED),1)
-  EXTRA_FLAGS += -DTANDEM_BOOT_SUPPORTED
-  export EXTRA_FLAGS
-endif
-
-ifeq ($(EQDMA_CPM5_VF_GT_256Q_SUPPORTED),1)
-  EXTRA_FLAGS += -DEQDMA_CPM5_VF_GT_256Q_SUPPORTED
-  export EXTRA_FLAGS
-endif
-
-ifeq ($(EQDMA_CPM5_10BIT_TAG_ENABLE),1)
-  EXTRA_FLAGS += -DEQDMA_CPM5_10BIT_TAG_ENABLE
-  export EXTRA_FLAGS
-endif
-
-# Don't allow ARCH to overwrite the modified variable when passed to
-# the sub-makes.
-MAKEOVERRIDES := $(filter-out ARCH=%,$(MAKEOVERRIDES))
-# Don't allow CFLAGS/EXTRA_CFLAGS to clobber definitions in sub-make.
-MAKEOVERRIDES := $(filter-out CFLAGS=%,$(MAKEOVERRIDES))
-MAKEOVERRIDES := $(filter-out EXTRA_CFLAGS=%,$(MAKEOVERRIDES))
-
-# Exports.
-export grep
-export srcdir
-export topdir
-export bin_dir
-export KERNELRELEASE
-export KSRC
-export KOBJ
-export KINC
-# arm64 specific fix to include <ksrc>/arch/<karch> folder properly.
-# This hack is motivated by the RHEL7.X/CentOS7.X release where the
-# uname Architecture is indicated as "aarch64" but the real Architecture
-# source directory is "arm64"
-ifeq ($(ARCH),aarch64)
-  ifeq ($(wildcard $(KOBJ)/arch/$(ARCH)/Makefile),)
-    override MAKECMDGOALS = $(MAKECMDGOALS) "ARCH=arm64"
-    export ARCH
-  else
-    export ARCH
-  endif
-else
-  export ARCH
-endif
-CFLAGS += -I$(srcdir)/src/libqdma/qdma_access
-CFLAGS += -I$(srcdir)/src/libqdma
-export FLAGS += $(CFLAGS)
-#export FLAGS += $(CFLAGS) $(EXTRA_CFLAGS) $(CPPFLAGS)
-export verbose
-export utsrelease
-export kversions
-export kseries
-export modulesymfile
-
-#export enable_xvc
-
-CROSS_COMPILE_FLAG = $(CROSS_COMPILE)
-export CROSS_COMPILE_FLAG
-$(info CROSS_COMPILE_FLAG = $(CROSS_COMPILE_FLAG).)
-$(info ARCH = $(ARCH).)
-
-# evaluate install paths
-ifeq ($(install_path),)
-	# defaults
-	kernel_install_path ?= $(PREFIX)/lib/modules/$(utsrelease)/updates/kernel/drivers/qdma
-	dev_install_path ?= /usr/local/include/qdma
-	docs_install_path ?= /usr/share/man/man8
-else # bundled install
-	kernel_install_path ?= $(install_path)/modules
-	dev_install_path ?= $(install_path)/include/qdma
-	docs_install_path ?= $(install_path)/doc
-endif
-
-$(shell rm -f $(srcdir)/src/libqdma; ln -fs $(srcdir)/libqdma $(srcdir)/src;)
-
-.PHONY: eval.mak
-
-.PHONY: default
-default: mod_pf mod_vf post
-
-.PHONY: pf
-pf: mod_pf
-
-.PHONY: vf
-vf: mod_vf
-
-.PHONY: mods
-mod: mod_pf mod_vf
-
-.PHONY: mod_pf
-mod_pf:
-	@if [ -n "$(verbose)" ]; then \
-	   echo "#######################";\
-	   printf "#### PF %-8s%5s####\n" $(DRIVER_SRC_DIR);\
-	   echo "#######################";\
-	 fi;
-	@srcdir=$(shell pwd)/$(DRIVER_SRC_DIR) $(MAKE) VF=0 -C $(DRIVER_SRC_DIR);
-
-.PHONY: mod_vf
-mod_vf:
-	@if [ -n "$(verbose)" ]; then \
-	   echo "#######################";\
-	   printf "#### VF %-8s%5s####\n" $(DRIVER_SRC_DIR);\
-	   echo "#######################";\
-	 fi;
-	@srcdir=$(shell pwd)/$(DRIVER_SRC_DIR) $(MAKE) VF=1 -C $(DRIVER_SRC_DIR);
-
-.PHONY: post
-post:
-	@if [ -n "$(post_msg)" ]; then \
-	   echo -e "\nWARNING:\n $(post_msg)";\
-	 fi;
-
-.PHONY: clean
-clean:
-	@for dir in $(ALLSUBDIRS); do \
-	   echo "#######################";\
-	   printf "####  %-8s%5s####\n" $$dir;\
-	   echo "#######################";\
-	  srcdir=$(shell pwd)/$$dir $(MAKE) -C $$dir clean;\
-	done;
-	@-/bin/rm -f *.symvers eval.mak 2>/dev/null;
-	@-/bin/rm -rf $(shell pwd)/libqdma/qdma_access/*.o $(shell pwd)/libqdma/qdma_access/.*.o.* $(shell pwd)/libqdma/qdma_access/.*.cmd $(shell pwd)/libqdma/qdma_access/.*.o.cmd
-	@-/bin/rm -rf $(shell pwd)/src/libqdma
-
-.PHONY: install-mods
-install-mods:
-	@echo "installing kernel modules to $(kernel_install_path) ..."
-	@mkdir -p -m 755 $(kernel_install_path)
-	@install -v -m 644 $(bin_dir)/*.ko $(kernel_install_path)
-	@depmod -a || true
-
-.PHONY: uninstall-mods
-uninstall-mods:
-	@echo "Un-installing $(kernel_install_path) ..."
-	@/bin/rm -rf $(kernel_install_path)/*
-	@depmod -a
-
-.PHONY: help
-help:
-	@echo "Build Targets:";\
-	 echo " install-mods        - Installs drivers.";\
-	 echo " uninstall-mods      - Uninstalls drivers.";\
-	 echo;\
-	 echo "Build Options:";\
-	 echo " KOBJ=<path>         - Kernel build (object) path.";\
-	 echo " KSRC=<path>         - Kernel source path.";\
-	 echo "                     - Note: When using KSRC or KOBJ, both";\
-	 echo "                             variables must be specified.";\
-	 echo " KDIR=<path>         - Kernel build and source path. Shortcut";\
-	 echo "                       for KOBJ=KSRC=<path>.";\
-	 echo " kernel_install_path=<path>";\
-	 echo "                     - kernel module install path.";\
-
diff --git a/QDMA/linux-kernel/driver/include/qdma_nl.h b/QDMA/linux-kernel/driver/include/qdma_nl.h
deleted file mode 100755
index e0801c9..0000000
--- a/QDMA/linux-kernel/driver/include/qdma_nl.h
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef QDMA_NL_H__
-#define QDMA_NL_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma netlink interfaces
- *
- */
-/** physical function name (no more than 15 characters) */
-#define XNL_NAME_PF		"xnl_pf"
-/** virtual function name */
-#define XNL_NAME_VF		"xnl_vf"
-/** qdma netlink interface version number */
-#define XNL_VERSION		0x1
-
-/** qdma nl interface minimum response buffer length*/
-#define XNL_RESP_BUFLEN_MIN	 256
-/** qdma nl interface maximum response buffer length*/
-#define XNL_RESP_BUFLEN_MAX	 (2048 * 10)
-/** qdma nl interface error buffer length*/
-#define XNL_ERR_BUFLEN		 64
-/** qdma nl command parameter length*/
-#define XNL_STR_LEN_MAX		 20
-
-/** Q parameter: value to indicate invalid qid*/
-#define XNL_QIDX_INVALID	0xFFFF
-/** Q parameter: streaming mode*/
-#define XNL_F_QMODE_ST	        0x00000001
-/** Q parameter: memory management mode*/
-#define XNL_F_QMODE_MM	        0x00000002
-/** Q parameter: queue in h2c direction*/
-#define XNL_F_QDIR_H2C	        0x00000004
-/** Q parameter: queue in c2h direction*/
-#define XNL_F_QDIR_C2H	        0x00000008
-/** Q parameter: queue in both directions*/
-#define XNL_F_QDIR_BOTH         (XNL_F_QDIR_H2C | XNL_F_QDIR_C2H)
-/** Q parameter: queue in prefetch mode*/
-#define XNL_F_PFETCH_EN         0x00000010
-/** Q parameter: enable the bypass for the queue*/
-#define XNL_F_DESC_BYPASS_EN	0x00000020
-/** Q parameter: fetch credits*/
-#define XNL_F_FETCH_CREDIT      0x00000040
-/** Q parameter: enable writeback accumulation*/
-#define XNL_F_CMPL_STATUS_ACC_EN        0x00000080
-/** Q parameter: enable writeback*/
-#define XNL_F_CMPL_STATUS_EN            0x00000100
-/** Q parameter: enable writeback pending check*/
-#define XNL_F_CMPL_STATUS_PEND_CHK      0x00000200
-/** Q parameter: enable writeback status descriptor*/
-#define XNL_F_CMPL_STATUS_DESC_EN  0x00000400
-/** Q parameter: enable queue completion interrupt*/
-#define XNL_F_C2H_CMPL_INTR_EN  0x00000800
-/** Q parameter: enable user defined data*/
-#define XNL_F_CMPL_UDD_EN       0x00001000
-/** Q parameter: enable the pfetch bypass for the queue */
-#define XNL_F_PFETCH_BYPASS_EN  0x00002000
-/** Q parameter: disable CMPT overflow check */
-#define XNL_F_CMPT_OVF_CHK_DIS	0x00004000
-/** Q parameter: Completion Queue? */
-#define XNL_F_Q_CMPL         0x00008000
-
-/** maximum number of queue flags to control queue configuration*/
-#define MAX_QFLAGS 17
-
-/** maximum number of interrupt ring entries*/
-#define QDMA_MAX_INT_RING_ENTRIES 512
-
-/**
- * xnl_attr_t netlink attributes for qdma(variables):
- * the index in this enum is used as a reference for the type,
- * userspace application has to indicate the corresponding type
- * the policy is used for security considerations
- */
-enum xnl_attr_t {
-	XNL_ATTR_GENMSG,		/**< generatl message */
-	XNL_ATTR_DRV_INFO,		/**< device info */
-
-	XNL_ATTR_DEV_IDX,		/**< device index */
-	XNL_ATTR_PCI_BUS,		/**< pci bus number */
-	XNL_ATTR_PCI_DEV,		/**< pci device number */
-	XNL_ATTR_PCI_FUNC,		/**< pci function id */
-
-	XNL_ATTR_DEV_STAT_MMH2C_PKTS1,	/**< number of MM H2C packets */
-	XNL_ATTR_DEV_STAT_MMH2C_PKTS2,	/**< number of MM H2C packets */
-	XNL_ATTR_DEV_STAT_MMC2H_PKTS1,	/**< number of MM C2H packets */
-	XNL_ATTR_DEV_STAT_MMC2H_PKTS2,	/**< number of MM C2H packets */
-	XNL_ATTR_DEV_STAT_STH2C_PKTS1,	/**< number of ST H2C packets */
-	XNL_ATTR_DEV_STAT_STH2C_PKTS2,	/**< number of ST H2C packets */
-	XNL_ATTR_DEV_STAT_STC2H_PKTS1,	/**< number of ST C2H packets */
-	XNL_ATTR_DEV_STAT_STC2H_PKTS2,	/**< number of ST C2H packets */
-
-	XNL_ATTR_DEV_CFG_BAR,		/**< device config bar number */
-	XNL_ATTR_DEV_USR_BAR,		/**< device AXI Master Lite(user bar) number */
-	XNL_ATTR_DEV_QSET_MAX,		/**< max queue sets */
-	XNL_ATTR_DEV_QSET_QBASE,	/**< queue base start */
-
-	XNL_ATTR_VERSION_INFO,		/**< version info */
-	XNL_ATTR_DEVICE_TYPE,		/**< device type */
-	XNL_ATTR_IP_TYPE,		/**< ip type */
-	XNL_ATTR_DEV_NUMQS,		/**< num of queues */
-	XNL_ATTR_DEV_NUM_PFS,		/**< num of PFs */
-	XNL_ATTR_DEV_MM_CHANNEL_MAX,	/**< mm channels */
-	XNL_ATTR_DEV_MAILBOX_ENABLE,	/**< mailbox enable */
-	XNL_ATTR_DEV_FLR_PRESENT,	/**< flr present */
-	XNL_ATTR_DEV_ST_ENABLE,		/**< device st capability */
-	XNL_ATTR_DEV_MM_ENABLE,		/**< device mm capability */
-	XNL_ATTR_DEV_MM_CMPT_ENABLE,	/**< device mm cmpt capability */
-
-	XNL_ATTR_REG_BAR_NUM,		/**< register bar number */
-	XNL_ATTR_REG_ADDR,		/**< register address */
-	XNL_ATTR_REG_VAL,		/**< register value */
-
-	XNL_ATTR_CSR_INDEX,		/**< csr index */
-	XNL_ATTR_CSR_COUNT,		/**< csr count */
-
-	XNL_ATTR_QIDX,			/**< queue index */
-	XNL_ATTR_NUM_Q,			/**< number of queues */
-	XNL_ATTR_QFLAG,			/**< queue config flags */
-
-	XNL_ATTR_CMPT_DESC_SIZE,	/**< completion descriptor size */
-	XNL_ATTR_SW_DESC_SIZE,		/**< software descriptor size */
-	XNL_ATTR_QRNGSZ_IDX,		/**< queue ring index */
-	XNL_ATTR_C2H_BUFSZ_IDX,		/**< c2h buffer idex */
-	XNL_ATTR_CMPT_TIMER_IDX,	/**< completion timer index */
-	XNL_ATTR_CMPT_CNTR_IDX,		/**< completion counter index */
-	XNL_ATTR_CMPT_TRIG_MODE,	/**< completion trigger mode */
-	XNL_ATTR_MM_CHANNEL,		/**< mm channel */
-	XNL_ATTR_CMPT_ENTRIES_CNT,      /**< completion entries count */
-
-	XNL_ATTR_RANGE_START,		/**< range start */
-	XNL_ATTR_RANGE_END,		/**< range end */
-
-	XNL_ATTR_INTR_VECTOR_IDX,	/**< interrupt vector index */
-	XNL_ATTR_INTR_VECTOR_START_IDX, /**< interrupt vector start index */
-	XNL_ATTR_INTR_VECTOR_END_IDX,	/**< interrupt vector end index */
-	XNL_ATTR_RSP_BUF_LEN,		/**< response buffer length */
-	XNL_ATTR_GLOBAL_CSR,		/**< global csr data */
-	XNL_ATTR_PIPE_GL_MAX,		/**< max no. of gl for pipe */
-	XNL_ATTR_PIPE_FLOW_ID,          /**< pipe flow id */
-	XNL_ATTR_PIPE_SLR_ID,           /**< pipe slr id */
-	XNL_ATTR_PIPE_TDEST,            /**< pipe tdest */
-	XNL_ATTR_DEV_STM_BAR,		/**< device STM bar number */
-	XNL_ATTR_Q_STATE,
-	XNL_ATTR_ERROR,
-	XNL_ATTR_PING_PONG_EN,
-	XNL_ATTR_APERTURE_SZ,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMAX1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATMAX2,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATAVG1,
-	XNL_ATTR_DEV_STAT_PING_PONG_LATAVG2,
-	XNL_ATTR_DEV,
-	XNL_ATTR_DEBUG_EN,	/** Debug Regs Capability*/
-	XNL_ATTR_DESC_ENGINE_MODE, /** Descriptor Engine Capability */
-#ifdef ERR_DEBUG
-	XNL_ATTR_QPARAM_ERR_INFO,	/**< queue param info */
-#endif
-	XNL_ATTR_NUM_REGS,			/**< number of regs */
-	XNL_ATTR_MAX,
-};
-
-/**
- * xnl_st_c2h_cmpt_desc_size
- * c2h writeback descriptor sizes
- */
-enum xnl_st_c2h_cmpt_desc_size {
-	XNL_ST_C2H_CMPT_DESC_SIZE_8B,	/**< 8B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_16B,	/**< 16B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_32B,	/**< 32B descriptor */
-	XNL_ST_C2H_CMPT_DESC_SIZE_64B,	/**< 64B descriptor */
-	XNL_ST_C2H_NUM_CMPT_DESC_SIZES	/**< Num of desc sizes */
-};
-
-enum xnl_qdma_rngsz_idx {
-	XNL_QDMA_RNGSZ_2048_IDX,
-	XNL_QDMA_RNGSZ_64_IDX,
-	XNL_QDMA_RNGSZ_128_IDX,
-	XNL_QDMA_RNGSZ_192_IDX,
-	XNL_QDMA_RNGSZ_256_IDX,
-	XNL_QDMA_RNGSZ_384_IDX,
-	XNL_QDMA_RNGSZ_512_IDX,
-	XNL_QDMA_RNGSZ_768_IDX,
-	XNL_QDMA_RNGSZ_1024_IDX,
-	XNL_QDMA_RNGSZ_1536_IDX,
-	XNL_QDMA_RNGSZ_3072_IDX,
-	XNL_QDMA_RNGSZ_4096_IDX,
-	XNL_QDMA_RNGSZ_6144_IDX,
-	XNL_QDMA_RNGSZ_8192_IDX,
-	XNL_QDMA_RNGSZ_12288_IDX,
-	XNL_QDMA_RNGSZ_16384_IDX,
-	XNL_QDMA_RNGSZ_IDXS
-};
-
-
-static const char *xnl_attr_str[XNL_ATTR_MAX + 1] = {
-	"GENMSG",		        /**< XNL_ATTR_GENMSG */
-	"DRV_INFO",		        /**< XNL_ATTR_DRV_INFO */
-	"DEV_IDX",		        /**< XNL_ATTR_DEV_IDX */
-	"DEV_PCIBUS",			/**< XNL_ATTR_PCI_BUS */
-	"DEV_PCIDEV",			/**< XNL_ATTR_PCI_DEV */
-	"DEV_PCIFUNC",			/**< XNL_ATTR_PCI_FUNC */
-	"DEV_STAT_MMH2C_PKTS1",		/**< number of MM H2C packkts */
-	"DEV_STAT_MMH2C_PKTS2",		/**< number of MM H2C packkts */
-	"DEV_STAT_MMC2H_PKTS1",		/**< number of MM C2H packkts */
-	"DEV_STAT_MMC2H_PKTS2",		/**< number of MM C2H packkts */
-	"DEV_STAT_STH2C_PKTS1",		/**< number of ST H2C packkts */
-	"DEV_STAT_STH2C_PKTS2",		/**< number of ST H2C packkts */
-	"DEV_STAT_STC2H_PKTS1",		/**< number of ST C2H packkts */
-	"DEV_STAT_STC2H_PKTS2",		/**< number of ST C2H packkts */
-	"DEV_CFG_BAR",			/**< XNL_ATTR_DEV_CFG_BAR */
-	"DEV_USR_BAR",			/**< XNL_ATTR_DEV_USER_BAR */
-	"DEV_QSETMAX",			/**< XNL_ATTR_DEV_QSET_MAX */
-	"DEV_QBASE",			/**< XNL_ATTR_DEV_QSET_QBASE */
-	"VERSION_INFO",			/**< XNL_ATTR_VERSION_INFO */
-	"DEVICE_TYPE",			/**< XNL_ATTR_DEVICE_TYPE */
-	"IP_TYPE",			/**< XNL_ATTR_IP_TYPE */
-	"DEV_NUMQS",			/**<XNL_ATTR_DEV_NUMQS */
-	"DEV_NUM_PFS",			/**<XNL_ATTR_DEV_NUM_PFS */
-	"DEV_MM_CHANNEL_MAX",		/**<XNL_ATTR_DEV_MM_CHANNEL_MAX */
-	"DEV_MAILBOX_ENABLE",		/**<XNL_ATTR_DEV_MAILBOX_ENABLE */
-	"DEV_FLR_PRESENT",		/**<XNL_ATTR_DEV_FLR_PRESENT */
-	"DEV_ST_ENABLE",		/**<XNL_ATTR_DEV_ST_ENABLE */
-	"DEV_MM_ENABLE",		/**<XNL_ATTR_DEV_MM_ENABLE */
-	"DEV_MM_CMPT_ENABLE",		/**<XNL_ATTR_DEV_MM_CMPT_ENABLE */
-	"REG_BAR",		        /**< XNL_ATTR_REG_BAR_NUM */
-	"REG_ADDR",		        /**< XNL_ATTR_REG_ADDR */
-	"REG_VAL",		        /**< XNL_ATTR_REG_VAL */
-	"CSR_INDEX",			/**< XNL_ATTR_CSR_INDEX*/
-	"CSR_COUNT",			/**< XNL_ATTR_CSR_COUNT*/
-	"QIDX",			        /**< XNL_ATTR_QIDX */
-	"NUM_Q",		        /**< XNL_ATTR_NUM_Q */
-	"QFLAG",		        /**< XNL_ATTR_QFLAG */
-	"CMPT_DESC_SZ",			/**< XNL_ATTR_CMPT_DESC_SIZE */
-	"SW_DESC_SIZE",			/**< XNL_ATTR_SW_DESC_SIZE */
-	"QRINGSZ_IDX",			/**< XNL_ATTR_QRNGSZ */
-	"C2H_BUFSZ_IDX",		/**< XNL_ATTR_QBUFSZ */
-	"CMPT_TIMER_IDX",		/**< XNL_ATTR_CMPT_TIMER_IDX */
-	"CMPT_CNTR_IDX",		/**< XNL_ATTR_CMPT_CNTR_IDX */
-	"CMPT_TRIG_MODE",		/**< XNL_ATTR_CMPT_TRIG_MODE */
-	"RANGE_START",			/**< XNL_ATTR_RANGE_START */
-	"RANGE_END",			/**< XNL_ATTR_RANGE_END */
-	"INTR_VECTOR_IDX",		/**< XNL_ATTR_INTR_VECTOR_IDX */
-	"INTR_VECTOR_START_IDX",	/**< XNL_ATTR_INTR_VECTOR_START_IDX */
-	"INTR_VECTOR_END_IDX",		/**< XNL_ATTR_INTR_VECTOR_END_IDX */
-	"RSP_BUF_LEN",			/**< XNL_ATTR_RSP_BUF_LEN */
-	"GLOBAL_CSR",			/**< global csr data */
-	"PIPE_GL_MAX",			/**< max no. of gl for pipe */
-	"PIPE_FLOW_ID",			/**< pipe flow id */
-	"PIPE_SLR_ID",			/**< pipe slr id */
-	"PIPE_TDEST",			/**< pipe tdest */
-	"DEV_STM_BAR",			/**< device STM bar number */
-	"Q_STATE",			/**< XNL_ATTR_Q_STATE*/
-	"ERROR",			/**< XNL_ATTR_ERROR */
-	"PING_PONG_EN",		/**< XNL_PING_PONG_EN */
-	"DEV_ATTR",			/**< XNL_ATTR_DEV */
-	"XNL_ATTR_DEBUG_EN",	/** XNL_ATTR_DEBUG_EN */
-	"XNL_ATTR_DESC_ENGINE_MODE",	/** XNL_ATTR_DESC_ENGINE_MODE */
-#ifdef ERR_DEBUG
-	"QPARAM_ERR_INFO",		/**< queue param info */
-#endif
-	"ATTR_MAX",
-
-};
-
-
-
-/* commands, 0 ~ 0x7F */
-/**
- * xnl_op_t - XNL command types
- */
-enum xnl_op_t {
-	XNL_CMD_DEV_LIST,	/**< list all the qdma devices */
-	XNL_CMD_DEV_INFO,	/**< dump the device information */
-	XNL_CMD_DEV_STAT,	/**< dump the device statistics */
-	XNL_CMD_DEV_STAT_CLEAR,	/**< reset the device statistics */
-
-	XNL_CMD_REG_DUMP,	/**< dump the register information */
-	XNL_CMD_REG_RD,		/**< read a register value */
-	XNL_CMD_REG_WRT,	/**< write value to a register */
-
-	XNL_CMD_Q_LIST,		/**< list all the queue present in the system */
-	XNL_CMD_Q_ADD,		/**< add a queue */
-	XNL_CMD_Q_START,	/**< start a queue */
-	XNL_CMD_Q_STOP,		/**< stop a queue */
-	XNL_CMD_Q_DEL,		/**< delete a queue */
-	XNL_CMD_Q_DUMP,		/**< dump queue information*/
-	XNL_CMD_Q_DESC,		/**< dump descriptor information*/
-	XNL_CMD_Q_CMPT,		/**< dump writeback descriptor information*/
-	XNL_CMD_Q_RX_PKT,	/**< dump packet information*/
-	XNL_CMD_Q_CMPT_READ,	/**< read the cmpt data */
-#ifdef ERR_DEBUG
-	XNL_CMD_Q_ERR_INDUCE,	/**< induce an error*/
-#endif
-
-	XNL_CMD_INTR_RING_DUMP,	/**< dump interrupt ring information*/
-	XNL_CMD_Q_UDD,		/**< dump the user defined data */
-	XNL_CMD_GLOBAL_CSR,	/**< get all global csr register values */
-	XNL_CMD_DEV_CAP,	/**< list h/w capabilities , hw and sw version */
-	XNL_CMD_GET_Q_STATE,	/**< get the queue state */
-	XNL_CMD_REG_INFO_READ,  /**< read register info */
-#ifdef TANDEM_BOOT_SUPPORTED
-	XNL_CMD_EN_ST,  	/**< Enable Streaming */
-#endif
-	XNL_CMD_MAX,		/**< max number of XNL commands*/
-};
-
-/**
- * XNL command operation type
- */
-static const char *xnl_op_str[XNL_CMD_MAX] = {
-	"DEV_LIST",		/** XNL_CMD_DEV_LIST */
-	"DEV_INFO",		/** XNL_CMD_DEV_INFO */
-	"DEV_STAT",		/** XNL_CMD_DEV_STAT */
-	"DEV_STAT_CLEAR",	/** XNL_CMD_DEV_STAT_CLEAR */
-
-	"REG_DUMP",		/** XNL_CMD_REG_DUMP */
-	"REG_READ",		/** XNL_CMD_REG_RD */
-	"REG_WRITE",		/** XNL_CMD_REG_WRT */
-
-	"Q_LIST",		/** XNL_CMD_Q_LIST */
-	"Q_ADD",		/** XNL_CMD_Q_ADD */
-	"Q_START",		/** XNL_CMD_Q_START */
-	"Q_STOP",		/** XNL_CMD_Q_STOP */
-	"Q_DEL",		/** XNL_CMD_Q_DEL */
-	"Q_DUMP",		/** XNL_CMD_Q_DUMP */
-	"Q_DESC",		/** XNL_CMD_Q_DESC */
-	"Q_CMPT",		/** XNL_CMD_Q_CMPT */
-	"Q_RX_PKT",		/** XNL_CMD_Q_RX_PKT */
-	"Q_CMPT_READ",		/** XNL_CMD_Q_CMPT_READ */
-#ifdef ERR_DEBUG
-	"Q_ERR_INDUCE",		/** XNL_CMD_Q_ERR_INDUCE */
-#endif
-	"INTR_RING_DUMP",	/** XNL_CMD_INTR_RING_DUMP */
-	"Q_UDD_DUMP",		/** XNL_CMD_Q_UDD */
-	"GLOBAL_CSR",		/** XNL_CMD_GLOBAL_CSR*/
-	"DEV_CAP",			/** XNL_CMD_DEV_CAP */
-	"GET_Q_STATE",		/** XNL_CMD_GET_Q_STATE */
-	"REG_INFO_READ",		/** XNL_CMD_REG_INFO_READ */
-#ifdef TANDEM_BOOT_SUPPORTED
-	"EN_ST"				/** XNL_CMD_EN_ST */
-#endif
-};
-
-enum qdma_queue_state {
-	QUEUE_DISABLED,
-	QUEUE_ENABLED,
-	QUEUE_ONLINE
-};
-
-
-/**
- * qdma_err_idx - Induce error
- */
-enum qdma_err_idx {
-	err_ram_sbe,
-	err_ram_dbe,
-	err_dsc,
-	err_trq,
-	err_h2c_mm_0,
-	err_h2c_mm_1,
-	err_c2h_mm_0,
-	err_c2h_mm_1,
-	err_c2h_st,
-	ind_ctxt_cmd_err,
-	err_bdg,
-	err_h2c_st,
-	poison,
-	ur_ca,
-	param,
-	addr,
-	tag,
-	flr,
-	timeout,
-	dat_poison,
-	flr_cancel,
-	dma,
-	dsc,
-	rq_cancel,
-	dbe,
-	sbe,
-	unmapped,
-	qid_range,
-	vf_access_err,
-	tcp_timeout,
-	mty_mismatch,
-	len_mismatch,
-	qid_mismatch,
-	desc_rsp_err,
-	eng_wpl_data_par_err,
-	msi_int_fail,
-	err_desc_cnt,
-	portid_ctxt_mismatch,
-	portid_byp_in_mismatch,
-	cmpt_inv_q_err,
-	cmpt_qfull_err,
-	cmpt_cidx_err,
-	cmpt_prty_err,
-	fatal_mty_mismatch,
-	fatal_len_mismatch,
-	fatal_qid_mismatch,
-	timer_fifo_ram_rdbe,
-	fatal_eng_wpl_data_par_err,
-	pfch_II_ram_rdbe,
-	cmpt_ctxt_ram_rdbe,
-	pfch_ctxt_ram_rdbe,
-	desc_req_fifo_ram_rdbe,
-	int_ctxt_ram_rdbe,
-	cmpt_coal_data_ram_rdbe,
-	tuser_fifo_ram_rdbe,
-	qid_fifo_ram_rdbe,
-	payload_fifo_ram_rdbe,
-	wpl_data_par_err,
-	zero_len_desc_err,
-	csi_mop_err,
-	no_dma_dsc_err,
-	sb_mi_h2c0_dat,
-	sb_mi_c2h0_dat,
-	sb_h2c_rd_brg_dat,
-	sb_h2c_wr_brg_dat,
-	sb_c2h_rd_brg_dat,
-	sb_c2h_wr_brg_dat,
-	sb_func_map,
-	sb_dsc_hw_ctxt,
-	sb_dsc_crd_rcv,
-	sb_dsc_sw_ctxt,
-	sb_dsc_cpli,
-	sb_dsc_cpld,
-	sb_pasid_ctxt_ram,
-	sb_timer_fifo_ram,
-	sb_payload_fifo_ram,
-	sb_qid_fifo_ram,
-	sb_tuser_fifo_ram,
-	sb_wrb_coal_data_ram,
-	sb_int_qid2vec_ram,
-	sb_int_ctxt_ram,
-	sb_desc_req_fifo_ram,
-	sb_pfch_ctxt_ram,
-	sb_wrb_ctxt_ram,
-	sb_pfch_ll_ram,
-	sb_h2c_pend_fifo,
-	db_mi_h2c0_dat,
-	db_mi_c2h0_dat,
-	db_h2c_rd_brg_dat,
-	db_h2c_wr_brg_dat,
-	db_c2h_rd_brg_dat,
-	db_c2h_wr_brg_dat,
-	db_func_map,
-	db_dsc_hw_ctxt,
-	db_dsc_crd_rcv,
-	db_dsc_sw_ctxt,
-	db_dsc_cpli,
-	db_dsc_cpld,
-	db_pasid_ctxt_ram,
-	db_timer_fifo_ram,
-	db_payload_fifo_ram,
-	db_qid_fifo_ram,
-	db_tuser_fifo_ram,
-	db_wrb_coal_data_ram,
-	db_int_qid2vec_ram,
-	db_int_ctxt_ram,
-	db_desc_req_fifo_ram,
-	db_pfch_ctxt_ram,
-	db_wrb_ctxt_ram,
-	db_pfch_ll_ram,
-	db_h2c_pend_fifo,
-	qdma_errs
-};
-
-#endif /* ifndef QDMA_NL_H__ */
diff --git a/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h b/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h
deleted file mode 100755
index 80906ce..0000000
--- a/QDMA/linux-kernel/driver/include/qdma_user_reg_dump.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_reg_dump.h"
-
-#ifndef __QDMA_USER_REG_DUMP_H__
-#define __QDMA_USER_REG_DUMP_H__
-
-
-
-static struct xreg_info qdma_user_regs[] = {
-	{"ST_C2H_QID", 0x0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKTLEN", 0x4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CONTROL", 0x8, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_C2H_CONTROL:
-	 *	[1] : start C2H
-	 *	[2] : immediate data
-	 *	[3] : every packet statrs with 00 instead of continuous data
-	 *	      stream until # of packets is complete
-	 *	[31]: gen_user_reset_n
-	 */
-	{"ST_H2C_CONTROL", 0xC, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	/*  ST_H2C_CONTROL:
-	 *	[0] : clear match for H2C transfer
-	 */
-	{"ST_H2C_STATUS", 0x10, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_H2C_XFER_CNT", 0x14, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_CNT", 0x20, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_DATA", 0x30, 8, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_CMPT_SIZE", 0x50, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_SCRATCH_REG", 0x60, 2, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_DROP", 0x88, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"ST_C2H_PKT_ACCEPT", 0x8C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DSC_BYPASS_LOOP", 0x90, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT", 0x94, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_MASK", 0x98, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"USER_INTERRUPT_VEC", 0x9C, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"DMA_CONTROL", 0xA0, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-	{"VDM_MSG_READ", 0xA4, 0, 0, 0, 0, QDMA_MM_ST_MODE},
-
-	{"", 0, 0, 0 }
-};
-
-
-#endif
diff --git a/QDMA/linux-kernel/driver/include/xdev_regs.h b/QDMA/linux-kernel/driver/include/xdev_regs.h
deleted file mode 100755
index c1c198d..0000000
--- a/QDMA/linux-kernel/driver/include/xdev_regs.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2018-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XDEV_REGS_H__
-#define __XDEV_REGS_H__
-
-struct xreg_info {
-	const char name[32];
-	uint32_t addr;
-	unsigned int repeat;
-	unsigned int step;
-	unsigned char shift;
-	unsigned char len;
-	unsigned char filler[2];
-};
-
-static struct xreg_info qdma_config_regs[] = {
-
-	/* QDMA_TRQ_SEL_GLBL1 (0x00000) */
-	{"CFG_BLOCK_ID",				0x00, 0, 0, 0, 0,},
-	{"CFG_BUSDEV",					0x04, 0, 0, 0, 0,},
-	{"CFG_PCIE_MAX_PL_SZ",				0x08, 0, 0, 0, 0,},
-	{"CFG_PCIE_MAX_RDRQ_SZ",			0x0C, 0, 0, 0, 0,},
-	{"CFG_SYS_ID",					0x10, 0, 0, 0, 0,},
-	{"CFG_MSI_EN",					0x14, 0, 0, 0, 0,},
-	{"CFG_PCIE_DATA_WIDTH",				0x18, 0, 0, 0, 0,},
-	{"CFG_PCIE_CTRL",				0x1C, 0, 0, 0, 0,},
-	{"CFG_AXI_USR_MAX_PL_SZ",			0x40, 0, 0, 0, 0,},
-	{"CFG_AXI_USR_MAX_RDRQ_SZ",			0x44, 0, 0, 0, 0,},
-	{"CFG_MISC_CTRL",				0x4C, 0, 0, 0, 0,},
-	{"CFG_SCRATCH_REG",				0x80, 8, 0, 0, 0,},
-	{"QDMA_RAM_SBE_MSK_A",				0xF0, 0, 0, 0, 0,},
-	{"QDMA_RAM_SBE_STS_A",				0xF4, 0, 0, 0, 0,},
-	{"QDMA_RAM_DBE_MSK_A",				0xF8, 0, 0, 0, 0,},
-	{"QDMA_RAM_DBE_STS_A",				0xFC, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_GLBL2 (0x00100) */
-	{"GLBL2_ID",					0x100, 0, 0, 0, 0,},
-	{"GLBL2_PF_BL_INT",				0x104, 0, 0, 0, 0,},
-	{"GLBL2_PF_VF_BL_INT",				0x108, 0, 0, 0, 0,},
-	{"GLBL2_PF_BL_EXT",				0x10C, 0, 0, 0, 0,},
-	{"GLBL2_PF_VF_BL_EXT",				0x110, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_INST",				0x114, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_QDMA",				0x118, 0, 0, 0, 0,},
-	{"GLBL2_CHNL_STRM",				0x11C, 0, 0, 0, 0,},
-	{"GLBL2_QDMA_CAP",				0x120, 0, 0, 0, 0,},
-	{"GLBL2_PASID_CAP",				0x128, 0, 0, 0, 0,},
-	{"GLBL2_FUNC_RET",				0x12C, 0, 0, 0, 0,},
-	{"GLBL2_SYS_ID",				0x130, 0, 0, 0, 0,},
-	{"GLBL2_MISC_CAP",				0x134, 0, 0, 0, 0,},
-	{"GLBL2_DBG_PCIE_RQ",				0x1B8, 2, 0, 0, 0,},
-	{"GLBL2_DBG_AXIMM_WR",				0x1C0, 2, 0, 0, 0,},
-	{"GLBL2_DBG_AXIMM_RD",				0x1C8, 2, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_GLBL (0x00200) */
-	{"GLBL_RNGSZ",					0x204, 16, 0, 0, 0,},
-	{"GLBL_ERR_STAT",				0x248, 0,  0, 0, 0,},
-	{"GLBL_ERR_MASK",				0x24C, 0,  0, 0, 0,},
-	{"GLBL_DSC_CFG",				0x250, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_STS",				0x254, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_MSK",				0x258, 0,  0, 0, 0,},
-	{"GLBL_DSC_ERR_LOG",				0x25C, 2,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_STS",				0x264, 0,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_MSK",				0x268, 0,  0, 0, 0,},
-	{"GLBL_TRQ_ERR_LOG",				0x26C, 0,  0, 0, 0,},
-	{"GLBL_DSC_DBG_DAT",				0x270, 2,  0, 0, 0,},
-	{"GLBL_DSC_ERR_LOG2",				0x27C, 0,  0, 0, 0,},
-	{"GLBL_INTERRUPT_CFG",				0x288, 0,  0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_FMAP (0x00400 - 0x7FC) */
-	/* TODO: max 256, display 4 for now */
-	{"TRQ_SEL_FMAP",				0x400, 4, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_IND (0x00800) */
-	{"IND_CTXT_DATA",				0x804, 8, 0, 0, 0,},
-	{"IND_CTXT_MASK",				0x824, 8, 0, 0, 0,},
-	{"IND_CTXT_CMD",				0x844, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_C2H (0x00A00) */
-	{"C2H_TIMER_CNT",				0xA00, 16, 0, 0, 0,},
-	{"C2H_CNT_THRESH",				0xA40, 16, 0, 0, 0,},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",		0xA88, 0, 0, 0, 0,},
-	{"C2H_STAT_S_AXIS_CMPT_ACCEPTED",		0xA8C, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED",		0xA90, 0, 0, 0, 0,},
-	{"C2H_STAT_AXIS_PKG_CMP",			0xA94, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_ACCEPTED",			0xA98, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_CMP",			0xA9C, 0, 0, 0, 0,},
-	{"C2H_STAT_WRQ_OUT",				0xAA0, 0, 0, 0, 0,},
-	{"C2H_STAT_WPL_REN_ACCEPTED",			0xAA4, 0, 0, 0, 0,},
-	{"C2H_STAT_TOTAL_WRQ_LEN",			0xAA8, 0, 0, 0, 0,},
-	{"C2H_STAT_TOTAL_WPL_LEN",			0xAAC, 0, 0, 0, 0,},
-	{"C2H_BUF_SZ",					0xAB0, 16, 0, 0, 0,},
-	{"C2H_ERR_STAT",				0xAF0, 0, 0, 0, 0,},
-	{"C2H_ERR_MASK",				0xAF4, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_STAT",				0xAF8, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_MASK",				0xAFC, 0, 0, 0, 0,},
-	{"C2H_FATAL_ERR_ENABLE",			0xB00, 0, 0, 0, 0,},
-	{"GLBL_ERR_INT",				0xB04, 0, 0, 0, 0,},
-	{"C2H_PFCH_CFG",				0xB08, 0, 0, 0, 0,},
-	{"C2H_INT_TIMER_TICK",				0xB0C, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED",		0xB10, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED",		0xB14, 0, 0, 0, 0,},
-	{"C2H_STAT_DESC_REQ",				0xB18, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG",			0xB1C, 4, 0, 0, 0,},
-	{"C2H_DBG_PFCH_ERR_CTXT",			0xB2C, 0, 0, 0, 0,},
-	{"C2H_FIRST_ERR_QID",				0xB30, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_IN",				0xB34, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_OUT",				0xB38, 0, 0, 0, 0,},
-	{"STAT_NUM_CMPT_DRP",				0xB3C, 0, 0, 0, 0,},
-	{"STAT_NUM_STAT_DESC_OUT",			0xB40, 0, 0, 0, 0,},
-	{"STAT_NUM_DSC_CRDT_SENT",			0xB44, 0, 0, 0, 0,},
-	{"STAT_NUM_FCH_DSC_RCVD",			0xB48, 0, 0, 0, 0,},
-	{"STAT_NUM_BYP_DSC_RCVD",			0xB4C, 0, 0, 0, 0,},
-	{"C2H_CMPT_COAL_CFG",				0xB50, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_REQ",				0xB54, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_MM_REQ",				0xB58, 0, 0, 0, 0,},
-	{"C2H_INTR_ERR_INT_REQ",			0xB5C, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_REQ",				0xB60, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_ACK",		0xB64, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_FAIL",		0xB68, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_NO_MSIX",			0xB6C, 0, 0, 0, 0,},
-	{"C2H_INTR_H2C_ERR_MM_CTXT_INVAL",		0xB70, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_MSIX_ACK",			0xB74, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL",			0xB78, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_NO_MSIX",			0xB7C, 0, 0, 0, 0,},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL",			0xB80, 0, 0, 0, 0,},
-	{"C2H_STAT_WR_CMP",				0xB84, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG_4",			0xB88, 0, 0, 0, 0,},
-	{"C2H_STAT_DEBUG_DMA_ENG_5",			0xB8C, 0, 0, 0, 0,},
-	{"C2H_DBG_PFCH_QID",				0xB90, 0, 0, 0, 0,},
-	{"C2H_DBG_PFCH",				0xB94, 0, 0, 0, 0,},
-	{"C2H_INT_DEBUG",				0xB98, 0, 0, 0, 0,},
-	{"C2H_STAT_IMM_ACCEPTED",			0xB9C, 0, 0, 0, 0,},
-	{"C2H_STAT_MARKER_ACCEPTED",			0xBA0, 0, 0, 0, 0,},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED",		0xBA4, 0, 0, 0, 0,},
-	{"C2H_C2H_PAYLOAD_FIFO_CRDT_CNT",		0xBA8, 0, 0, 0, 0,},
-
-	{"C2H_INTR_DYN_REQ",				0xBAC, 0, 0, 0, 0,},
-	{"C2H_INTR_DYN_MSIX",				0xBB0, 0, 0, 0, 0,},
-	{"C2H_DROP_LEN_MISMATCH",			0xBB4, 0, 0, 0, 0,},
-	{"C2H_DROP_DESC_RSP_LEN",			0xBB8, 0, 0, 0, 0,},
-	{"C2H_DROP_QID_FIFO_LEN",			0xBBC, 0, 0, 0, 0,},
-	{"C2H_DROP_PAYLOAD_CNT",			0xBC0, 0, 0, 0, 0,},
-	{"QDMA_C2H_CMPT_FORMAT",			0xBC4, 7, 0, 0, 0,},
-	{"C2H_PFCH_CACHE_DEPTH",			0xBE0, 0, 0, 0, 0,},
-	{"C2H_CMPT_COAL_BUF_DEPTH",			0xBE4, 0, 0, 0, 0,},
-	{"C2H_PFCH_CRDT",				0xBE8, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_H2C(0x00E00) Register Space*/
-	{"H2C_ERR_STAT",				0xE00, 0, 0, 0, 0,},
-	{"H2C_ERR_MASK",				0xE04, 0, 0, 0, 0,},
-	{"H2C_FIRST_ERR_QID",				0xE08, 0, 0, 0, 0,},
-	{"H2C_DBG_REG",					0xE0C, 5, 0, 0, 0,},
-	{"H2C_FATAL_ERR_EN",				0xE20, 0, 0, 0, 0,},
-	{"H2C_REQ_THROT",				0xE24, 0, 0, 0, 0,},
-	{"H2C_ALN_DBG_REG0",				0xE28, 0, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_C2H_MM (0x1000) */
-	{"C2H_MM_CONTROL",				0x1004, 3, 0, 0, 0,},
-	{"C2H_MM_STATUS",				0x1040, 2, 0, 0, 0,},
-	{"C2H_MM_CMPL_DSC_CNT",				0x1048, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_CODE_EN_MASK",			0x1054, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_CODE",				0x1058, 0, 0, 0, 0,},
-	{"C2H_MM_ERR_INFO",				0x105C, 0, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_CTRL",			0x10C0, 0, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_CY_CNT",			0x10C4, 2, 0, 0, 0,},
-	{"C2H_MM_PERF_MON_DATA_CNT",			0x10CC, 2, 0, 0, 0,},
-	{"C2H_MM_DBG_INFO",				0x10E8, 2, 0, 0, 0,},
-
-	/* QDMA_TRQ_SEL_H2C_MM (0x1200)*/
-	{"H2C_MM_CONTROL",				0x1204, 3, 0, 0, 0,},
-	{"H2C_MM_STATUS",				0x1240, 0, 0, 0, 0,},
-	{"H2C_MM_CMPL_DSC_CNT",				0x1248, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_CODE_EN_MASK",			0x1254, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_CODE",				0x1258, 0, 0, 0, 0,},
-	{"H2C_MM_ERR_INFO",				0x125C, 0, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_CTRL",			0x12C0, 0, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_CY_CNT",			0x12C4, 2, 0, 0, 0,},
-	{"H2C_MM_PERF_MON_DATA_CNT",			0x12CC, 2, 0, 0, 0,},
-	{"H2C_MM_DBG_INFO",				0x12E8, 0, 0, 0, 0,},
-	{"H2C_MM_REQ_THROT",				0x12EC, 0, 0, 0, 0,},
-
-	/* QDMA_PF_MAILBOX (0x2400) */
-	{"FUNC_STATUS",					0x2400, 0, 0, 0, 0,},
-	{"FUNC_CMD",					0x2404, 0, 0, 0, 0,},
-	{"FUNC_INTR_VEC",				0x2408, 0, 0, 0, 0,},
-	{"TARGET_FUNC",					0x240C, 0, 0, 0, 0,},
-	{"INTR_CTRL",					0x2410, 0, 0, 0, 0,},
-	{"PF_ACK",					0x2420, 8, 0, 0, 0,},
-	{"FLR_CTRL_STATUS",				0x2500, 0, 0, 0, 0,},
-	{"MSG_IN",					0x2800, 32, 0, 0, 0,},
-	{"MSG_OUT",					0x2C00, 32, 0, 0, 0,},
-
-	{"", 0, 0, 0 }
-};
-
-static struct xreg_info qdma_user_regs[] = {
-	{"ST_C2H_QID",					0x0, 0, 0, 0, 0,},
-	{"ST_C2H_PKTLEN",				0x4, 0, 0, 0, 0,},
-	{"ST_C2H_CONTROL",				0x8, 0, 0, 0, 0,},
-	/*  ST_C2H_CONTROL:
-	 *	[1] : start C2H
-	 *	[2] : immediate data
-	 *	[3] : every packet statrs with 00 instead of continuous data
-	 *	      stream until # of packets is complete
-	 *	[31]: gen_user_reset_n
-	 */
-	{"ST_H2C_CONTROL",				0xC, 0, 0, 0, 0,},
-	/*  ST_H2C_CONTROL:
-	 *	[0] : clear match for H2C transfer
-	 */
-	{"ST_H2C_STATUS",				0x10, 0, 0, 0, 0,},
-	{"ST_H2C_XFER_CNT",				0x14, 0, 0, 0, 0,},
-	{"ST_C2H_PKT_CNT",				0x20, 0, 0, 0, 0,},
-	{"ST_C2H_CMPT_DATA",				0x30, 8, 0, 0, 0,},
-	{"ST_C2H_CMPT_SIZE",				0x50, 0, 0, 0, 0,},
-	{"ST_SCRATCH_REG",				0x60, 2, 0, 0, 0,},
-	{"ST_C2H_PKT_DROP",				0x88, 0, 0, 0, 0,},
-	{"ST_C2H_PKT_ACCEPT",				0x8C, 0, 0, 0, 0,},
-	{"DSC_BYPASS_LOOP",				0x90, 0, 0, 0, 0,},
-	{"USER_INTERRUPT",				0x94, 0, 0, 0, 0,},
-	{"USER_INTERRUPT_MASK",				0x98, 0, 0, 0, 0,},
-	{"USER_INTERRUPT_VEC",				0x9C, 0, 0, 0, 0,},
-	{"DMA_CONTROL",					0xA0, 0, 0, 0, 0,},
-	{"VDM_MSG_READ",				0xA4, 0, 0, 0, 0,},
-
-	{"", 0, 0, 0 }
-};
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/Makefile b/QDMA/linux-kernel/driver/libqdma/Makefile
deleted file mode 100755
index 3184572..0000000
--- a/QDMA/linux-kernel/driver/libqdma/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-SHELL = /bin/bash
-
-# The top-level makefile defines required variables and flags.
-ifneq ($(shell [[ $(MAKELEVEL) -ge 1 ]] && echo 1),1)
-  $(error Please use the top-level Makefile to build this driver)
-endif
-
-ifneq ($(wildcard /etc/lsb-release),)
-  ifneq ($(shell $(grep) "Ubuntu" /etc/lsb-release),)
-    FLAGS += -DUBUNTU_VERSION_CODE
-  endif
-endif
-
-include $(srcdir)/../make_rules/common_flags.mk
-
-$(info srcdir = $(srcdir).)
-$(info KSRC = $(KSRC).)
-
-EXTRA_CFLAGS += -DLINUX -D__KERNEL__ -DMODULE -O2 -pipe -Wall -Werror
-EXTRA_CFLAGS += $(FLAGS) $(CPPFLAGS)
-EXTRA_CFLAGS += -I$(srcdir)/../include
-EXTRA_CFLAGS += -I$(KSRC)/../include
-EXTRA_CFLAGS += -I.
-
-#EXTRA_CFLAGS += -DDEBUG
-
-ifneq ($(modulesymfile),)
-  override symverfile = symverfile="$(topdir)/$(modulesymfile) \
-					-o $(drvdir)/$(modulesymfile)"
-else
-  override symverfile =
-endif
-
-MOD_NAME := libqdma
-ifneq ($(SUBDIRS),)
-  BASE_OBJS := $(patsubst $(SUBDIRS)/%.c,%.o,$(wildcard $(SUBDIRS)/*.c))
-endif
-obj-m := $(MOD_NAME).o
-$(MOD_NAME)-objs := $(BASE_OBJS)
-
-.PHONY: build
-build:
-	@$(MAKE) symverfile=$(symverfile) KBUILD_EXTRA_SYMBOLS=$(extra_symb) -C $(KOBJ) SUBDIRS=$(shell pwd) modules
-
-.PHONY: clean
-clean:
-	@-/bin/rm -rf *.ko* ?odule* .tmp_versions *.mod.* *.o .*.o.* .*.cmd
diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_config.c b/QDMA/linux-kernel/driver/libqdma/libqdma_config.c
deleted file mode 100755
index 69fbf63..0000000
--- a/QDMA/linux-kernel/driver/libqdma/libqdma_config.c
+++ /dev/null
@@ -1,639 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-/**
- * @file
- * @brief This file contains the definitions for qdma configuration apis
- *
- */
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "libqdma_export.h"
-
-#include "qdma_descq.h"
-#include "qdma_device.h"
-#include "qdma_thread.h"
-#include "qdma_regs.h"
-#include "qdma_context.h"
-#include "qdma_intr.h"
-#include "thread.h"
-#include "version.h"
-#include "qdma_resource_mgmt.h"
-
-/*****************************************************************************/
-/**
- * qdma_set_qmax() -  Handler function to set the qmax configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	qsets_max:	qmax configuration value
- * @param[in]	forced:	whether to force set the value
- *
- *
- * @return	0 on success
- * @return	< 0 on failure
- *****************************************************************************/
-int qdma_set_qmax(unsigned long dev_hndl, int qbase, u32 qsets_max)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = 0;
-
-	/**
-	 *  If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-
-	/* update the device with requested qmax and qbase */
-	rv = qdma_dev_update(xdev->dma_device_index, xdev->func_id,
-			qsets_max, &qbase);
-	if (rv < 0) {
-		pr_err("Failed to update dev entry, err = %d", rv);
-		return -EINVAL;
-	}
-	qdma_device_cleanup(xdev);
-
-	rv = qdma_dev_qinfo_get(xdev->dma_device_index, xdev->func_id,
-			&qbase, &qsets_max);
-	if (rv < 0) {
-		pr_err("Failed to get qinfo, err = %d", rv);
-		return -EINVAL;
-	}
-	xdev->conf.qsets_max = qsets_max;
-	xdev->conf.qsets_base = qbase;
-	rv = qdma_device_init(xdev);
-	if (rv < 0) {
-		pr_warn("qdma_init failed, err = %d", rv);
-		qdma_device_cleanup(xdev);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-/*****************************************************************************/
-/**
- * qdma_get_qmax() -  Handler function to get the qmax configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- * @return	qmax value on success
- * @return	< 0 on failure
- *****************************************************************************/
-unsigned int qdma_get_qmax(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/**
-	 * If xdev is NULL return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/**
-	 * Return the current qsets_max value of the device
-	 */
-	return xdev->conf.qsets_max;
-}
-
-/*****************************************************************************/
-/**
- * qdma_set_intr_rngsz() - Handler function to set the intr_ring_size value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	intr_rngsz:		interrupt aggregation ring size
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_intr_rngsz(unsigned long dev_hndl, u32 intr_rngsz)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	/**
-	 *  If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/** If the input intr_rngsz is same as the
-	 *  current xdev->conf.intr_rngsz,
-	 *	return, as there is nothing to be changed
-	 */
-	if (intr_rngsz == xdev->conf.intr_rngsz) {
-		pr_err("xdev 0x%p, Current intr_rngsz is same as [%d].Nothing to be done\n",
-					xdev, intr_rngsz);
-		return rv;
-	}
-
-	/** If interrupt aggregation is not enabled, then no need to change the
-	 *  interrupt ring size. Retrun error in this case.
-	 */
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE)) {
-		pr_err("xdev 0x%p, interrupt aggregation is disabled\n", xdev);
-		return rv;
-	}
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  intr_rngsz is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, cannot modify intr ring size [%d]\n",
-				xdev,
-				xdev->conf.intr_rngsz);
-		return rv;
-	}
-
-	/** intr_rngsz > QDMA_INDIRECT_INTR_RING_SIZE_32KB,
-	 *  is invalid.
-	 */
-	if (intr_rngsz > QDMA_INDIRECT_INTR_RING_SIZE_32KB) {
-		pr_err("Invalid intr ring size\n");
-		return rv;
-	}
-
-	/**
-	 *  FMAP programming is not done yet, update the intr_rngsz
-	 */
-	qdma_device_interrupt_cleanup(xdev);
-	xdev->conf.intr_rngsz = intr_rngsz;
-	qdma_device_interrupt_setup(xdev);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_intr_rngsz() - Handler function to get the intr_ring_size value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	interrupt ring size on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_intr_rngsz(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/**
-	 * If xdev is NULL return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/** If interrupt aggregation is not enabled, then return 0
-	 *  As the intr_rngsz value is irrelevant in this case
-	 */
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE)) {
-		pr_info("xdev 0x%p, interrupt aggregation is disabled\n", xdev);
-		return 0;
-	}
-
-	pr_info("xdev 0x%p, intr ring_size = %d\n",
-				xdev,
-				xdev->conf.intr_rngsz);
-	/**
-	 * Return the current intr_rngsz value of the device
-	 */
-	return xdev->conf.intr_rngsz;
-}
-#ifndef __QDMA_VF__
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_buf_sz() - Handler function to set the buf_sz value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	buf_sz:		interrupt aggregation ring size
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_buf_sz(unsigned long dev_hndl, u32 *buf_sz)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	/**
-	 *  If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  buf_sz is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, cannot modify buf size\n",
-				xdev);
-		return rv;
-	}
-
-	/**
-	 * Write the given buf sizes to the registers
-	 */
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			buf_sz, QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_WRITE);
-	if (rv < 0) {
-		pr_err("set global buffer size failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	qdma_csr_read(xdev, &xdev->csr_info);
-
-	return rv;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_buf_sz() - Handler function to get the buf_sz value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	buffer size on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_buf_sz(unsigned long dev_hndl, u32 *buf_sz)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	if (xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			buf_sz, QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ))
-		return -EINVAL;
-
-	return 0;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_glbl_rng_sz() - Handler function to set the buf_sz value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	buf_sz:		interrupt aggregation ring size
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_glbl_rng_sz(unsigned long dev_hndl, u32 *glbl_rng_sz)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	/**
-	 *  If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  glbl_rng_sz is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, cannot modify glbl_rng_sz\n",
-				xdev);
-		return rv;
-	}
-
-	/**
-	 * Write the given ring sizes to the registers
-	 */
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			glbl_rng_sz, QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_WRITE);
-	if (rv < 0) {
-		pr_err("Failed to write glbl rng size, err = %d", rv);
-		return -EINVAL;
-	}
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (unlikely(rv < 0)) {
-		pr_err("Failed to read glbl csr, err = %d", rv);
-		return rv;
-	}
-
-	return 0;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_glbl_rng_sz() - Handler function to get the glbl_rng_sz value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	glbl_rng_sz size on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_glbl_rng_sz(unsigned long dev_hndl, u32 *glbl_rng_sz)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	if (xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			glbl_rng_sz, QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ))
-		return -EINVAL;
-
-	return 0;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_timer_cnt() - Handler function to set the buf_sz value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	tmr_cnt:		Array of 16 timer count values
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_timer_cnt(unsigned long dev_hndl, u32 *tmr_cnt)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  tmr_cnt is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, can not modify timer count\n",
-						xdev);
-		return rv;
-	}
-
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			tmr_cnt, QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_WRITE);
-	if (unlikely(rv < 0)) {
-		pr_err("global timer set failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (unlikely(rv < 0))
-		return rv;
-
-	return 0;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_timer_cnt() - Handler function to get the timer_cnt value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	timer_cnt  on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_timer_cnt(unsigned long dev_hndl, u32 *tmr_cnt)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-			tmr_cnt, QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		pr_err("get global timer failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	return 0;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_cnt_thresh() - Handler function to set the counter threshold value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	cnt_th:		Array of 16 timer count values
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_cnt_thresh(unsigned long dev_hndl, unsigned int *cnt_th)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  cnt_th is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, can not modify threshold count\n",
-						xdev);
-		return rv;
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, cnt_th,
-			QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_WRITE);
-	if (unlikely(rv < 0)) {
-		pr_err("set global counter failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (unlikely(rv < 0))
-		return rv;
-
-	return 0;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_cnt_thresh() - Handler function to get the counter thresh value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	counter threshold values  on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_cnt_thresh(unsigned long dev_hndl, u32 *cnt_th)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = -1;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-					QDMA_GLOBAL_CSR_ARRAY_SZ, cnt_th,
-					QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		pr_err("get global counter failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	return 0;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_cmpl_status_acc() -  Handler function to set the cmpl_status_acc
- * configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	cmpl_status_acc:	Writeback Accumulation value
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_cmpl_status_acc(unsigned long dev_hndl, u32 cmpl_status_acc)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = 0;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  cmpl_status_acc is not allowed to change.
-	 */
-	if (qdma_get_active_queue_count(xdev->conf.pdev->bus->number)) {
-		pr_err("xdev 0x%p, FMAP prog done, cannot modify cmpt acc\n",
-				xdev);
-		return -EINVAL;
-	}
-	/**
-	 * Write the given cmpl_status_acc value to the register
-	 */
-	rv = xdev->hw.qdma_global_writeback_interval_conf(xdev, cmpl_status_acc,
-							QDMA_HW_ACCESS_WRITE);
-	if (unlikely(rv < 0)) {
-		pr_err("set global writeback intvl failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (unlikely(rv < 0))
-		return rv;
-
-	return 0;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_cmpl_status_acc() -  Handler function to get the cmpl_status_acc
- * configuration value
- *
- * @param[in] dev_hndl:		qdma device handle
- *
- * Handler function to get the writeback accumulation value
- *
- * @return	cmpl_status_acc on success
- * @return	<0 on failure
- *
- *****************************************************************************/
-unsigned int qdma_get_wb_intvl(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	unsigned int wb_intvl;
-	int rv = -1;
-
-	/**
-	 * If xdev is NULL, return error as Invalid parameter
-	 */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	/**
-	 * Read the current cmpl_status_acc value from the register and return
-	 */
-	rv = xdev->hw.qdma_global_writeback_interval_conf(xdev, &wb_intvl,
-							QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		pr_err("read global writeback intvl failed, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	return wb_intvl;
-}
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_config.h b/QDMA/linux-kernel/driver/libqdma/libqdma_config.h
deleted file mode 100755
index 99ae261..0000000
--- a/QDMA/linux-kernel/driver/libqdma/libqdma_config.h
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __LIBQDMA_CONFIG_H__
-#define __LIBQDMA_CONFIG_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma configuration apis
- *
- */
-/*****************************************************************************
- * GLOBAL CONSTANTS
- *****************************************************************************/
-#include <linux/types.h>
-
-/**
- * QDMA config bar number
- */
-#define QDMA_CONFIG_BAR			0
-
-/**
- * STM bar
- */
-#define STM_BAR		2
-
-/**
- * Maximum number of QDMA devices in the system
- */
-#define MAX_DMA_DEV 32
-
-/**
- * Shift for bus 'B' in B:D:F
- */
-#define PCI_SHIFT_BUS 12
-
-/**
- * Shift for device 'D' in B:D:F
- */
-#define PCI_SHIFT_DEV 4
-
-/**
- * To shift the Bus number for getting BDF
- */
-#define SHIFT_DEC_PCI_BUS	1000
-
-/**
- * To shift the device number for getting BDF
- */
-#define SHIFT_DEC_PCI_DEV	10
-
-/**
- * Maximum number of MSI-X vector per function
- */
-#define QDMA_DEV_MSIX_VEC_MAX	8
-
-/**
- * ring size is 4KB, i.e 512 entries
- */
-#define QDMA_INTR_COAL_RING_SIZE INTR_RING_SZ_4KB
-
-/*****************************************************************************
- * Function Declaration
- *****************************************************************************/
-
-/*****************************************************************************/
-/**
- * qdma_set_qmax() -  Handler function to set the qmax configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	qsets_max:	qmax configuration value
- * @param[in]	forced:		flag to force qmax change
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_qmax(unsigned long dev_hndl, int qbase, u32 qsets_max);
-
-/*****************************************************************************/
-/**
- * qdma_get_qmax() -  Handler function to get the qmax configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- * @return	qmax value on success
- * @return	< 0 on failure
- *****************************************************************************/
-unsigned int qdma_get_qmax(unsigned long dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_set_intr_rngsz() - Handler function to set the intr_ring_size value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	intr_rngsz:	interrupt aggregation ring size
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_intr_rngsz(unsigned long dev_hndl, u32 intr_rngsz);
-
-/*****************************************************************************/
-/**
- * qdma_get_intr_rngsz() - Handler function to get the intr_ring_size value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	interrupt ring size on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_intr_rngsz(unsigned long dev_hndl);
-
-#ifndef __QDMA_VF__
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_cmpl_status_acc() -  Handler function to set the cmpl_status_acc
- * configuration value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	cmpl_status_acc:	Writeback Accumulation value
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_cmpl_status_acc(unsigned long dev_hndl, u32 cmpl_status_acc);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_cmpl_status_acc() -  Handler function to get the cmpl_status_acc
- * configuration value
- *
- * @param[in] dev_hndl:		qdma device handle
- *
- * Handler function to get the writeback accumulation value
- *
- * @return	cmpl_status_acc on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_wb_intvl(unsigned long dev_hndl);
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_buf_sz() - Handler function to set the buf_sz value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	buf_sz:		buf sizes
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_buf_sz(unsigned long dev_hndl, u32 *buf_sz);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_buf_sz() - Handler function to get the buf_sz value
- *
- * @param[in]	dev_hndl:	qdma device handle
- * @param[in]	buf_sz:		buf sizes
- *
- * @return	buf sizes on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_buf_sz(unsigned long dev_hndl, u32 *buf_sz);
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_glbl_rng_sz() - Handler function to set the glbl_rng_sz value
- *
- * @param[in]	dev_hndl:			qdma device handle
- * @param[in]	glbl_rng_sz:		glbl_rng_sizes
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_glbl_rng_sz(unsigned long dev_hndl, u32 *glbl_rng_sz);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_glbl_rng_sz() - Handler function to get the glbl_rng_sz value
- *
- * @param[in]	dev_hndl:			qdma device handle
- * @param[in]	glbl_rng_sz:		glbl_rng sizes
- *
- * @return	glbl_rng_sz on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_glbl_rng_sz(unsigned long dev_hndl, u32 *glbl_rng_sz);
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_timer_cnt() - Handler function to set the buf_sz value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	tmr_cnt:		Array of 16 timer count values
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_timer_cnt(unsigned long dev_hndl, u32 *tmr_cnt);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_timer_cnt() - Handler function to get the timer_cnt value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	timer_cnt  on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_timer_cnt(unsigned long dev_hndl, u32 *tmr_cnt);
-
-#ifdef QDMA_CSR_REG_UPDATE
-/*****************************************************************************/
-/**
- * qdma_set_cnt_thresh() - Handler function to set the counter threshold value
- *
- * @param[in]	dev_hndl:		qdma device handle
- * @param[in]	cnt_th:		Array of 16 timer count values
- *
- * @return	QDMA_OPERATION_SUCCESSFUL on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_cnt_thresh(unsigned long dev_hndl, unsigned int *cnt_th);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_get_cnt_thresh() - Handler function to get the counter thresh value
- *
- * @param[in]	dev_hndl:	qdma device handle
- *
- *
- * @return	counter threshold values  on success
- * @return	<0 on failure
- *****************************************************************************/
-unsigned int qdma_get_cnt_thresh(unsigned long dev_hndl, u32 *cnt_th);
-#endif
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_export.c b/QDMA/linux-kernel/driver/libqdma/libqdma_export.c
deleted file mode 100755
index 30398b7..0000000
--- a/QDMA/linux-kernel/driver/libqdma/libqdma_export.c
+++ /dev/null
@@ -1,2818 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-/**
- * @file
- * @brief This file contains the definitions for libqdma interfaces
- *
- */
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "libqdma_export.h"
-
-#include "qdma_descq.h"
-#include "qdma_device.h"
-#include "qdma_thread.h"
-#include "qdma_regs.h"
-#include "qdma_context.h"
-#include "qdma_intr.h"
-#include "qdma_st_c2h.h"
-#include "thread.h"
-#include "version.h"
-#include "qdma_resource_mgmt.h"
-#include "qdma_mbox.h"
-#include "qdma_platform.h"
-
-#ifdef DEBUGFS
-#include "qdma_debugfs_queue.h"
-
-/** debugfs root */
-struct dentry *qdma_debugfs_root;
-static bool qdma_debufs_cleanup = true;
-#endif
-
-
-#define QDMA_Q_PEND_LIST_COMPLETION_TIMEOUT 1000 /* msec */
-
-struct drv_mode_name mode_name_list[] = {
-	{ AUTO_MODE,			"auto"},
-	{ POLL_MODE,			"poll"},
-	{ DIRECT_INTR_MODE,		"direct interrupt"},
-	{ INDIRECT_INTR_MODE,	"indirect interrupt"},
-	{ LEGACY_INTR_MODE,		"legacy interrupt"}
-};
-
-
-struct qdma_q_type q_type_list[] = {
-	{"H2C", Q_H2C},
-	{"C2H", Q_C2H},
-	{"CMPT", Q_CMPT},
-	{"BI", Q_H2C_C2H},
-};
-
-/* ********************* static function definitions ************************ */
-#ifdef __QDMA_VF__
-static int qdma_dev_notify_qadd(struct qdma_descq *descq,
-		enum queue_type_t q_type)
-{
-	struct mbox_msg *m;
-	int rv = 0;
-	struct xlnx_dma_dev *xdev = descq->xdev;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m) {
-		pr_err("Failed to allocate mbox msg");
-		return -ENOMEM;
-	}
-
-
-	qdma_mbox_compose_vf_notify_qadd(xdev->func_id,
-		descq->qidx_hw, (enum qdma_dev_q_type)q_type, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s, mbox failed for queue add %d.\n",
-				xdev->conf.name, rv);
-		goto free_msg;
-	}
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_dev_notify_qdel(struct qdma_descq *descq,
-		enum queue_type_t q_type)
-{
-	struct mbox_msg *m;
-	int rv = 0;
-	struct xlnx_dma_dev *xdev = descq->xdev;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m) {
-		pr_err("Failed to allocate mbox msg");
-		return -ENOMEM;
-	}
-
-	qdma_mbox_compose_vf_notify_qdel(xdev->func_id, descq->qidx_hw,
-			(enum qdma_dev_q_type)q_type, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s, mbox failed for queue add %d.\n",
-				xdev->conf.name, rv);
-		goto free_msg;
-	}
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-static int qdma_dev_get_active_qcnt(struct xlnx_dma_dev *xdev,
-		u32 *h2c_qs, u32 *c2h_qs, u32 *cmpt_qs)
-{
-	struct mbox_msg *m;
-	int rv = 0;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m) {
-		pr_err("Failed to allocate mbox msg");
-		return -ENOMEM;
-	}
-
-	qdma_mbox_compose_vf_get_device_active_qcnt(xdev->func_id, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s, mbox failed for queue add %d.\n",
-				xdev->conf.name, rv);
-		goto free_msg;
-	}
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-		goto free_msg;
-	}
-
-	*h2c_qs = (uint32_t)qdma_mbox_vf_active_queues_get(m->raw,
-			QDMA_DEV_Q_TYPE_H2C);
-	*c2h_qs = (uint32_t)qdma_mbox_vf_active_queues_get(m->raw,
-			QDMA_DEV_Q_TYPE_C2H);
-	*cmpt_qs = (uint32_t)qdma_mbox_vf_active_queues_get(m->raw,
-			QDMA_DEV_Q_TYPE_CMPT);
-
-	return rv;
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-#endif
-
-static int qdma_validate_qconfig(struct xlnx_dma_dev *xdev,
-				struct qdma_queue_conf *qconf,
-				char *buf, int buflen)
-{
-
-	/** If xdev is NULL return error as Invalid parameter */
-	if (!xdev  || !qconf) {
-		pr_err("Invalid input received, xdev=%p, qconf =%p",
-				xdev, qconf);
-		return -EINVAL;
-	}
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	if (qconf->cmpl_trig_mode > TRIG_MODE_COMBO) {
-		pr_err("Invalid trigger mode :%d",
-				qconf->cmpl_trig_mode);
-		snprintf(buf, buflen,
-			"qdma%05x : Invalid trigger mode %d passed\n",
-			xdev->conf.bdf, qconf->cmpl_trig_mode);
-		return -EINVAL;
-	}
-
-	if (xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP &&
-		xdev->version_info.device_type == QDMA_DEVICE_VERSAL_CPM4) {
-		/* 64B desc size is not supported in 2018.2 release */
-		if ((qconf->cmpl_desc_sz == CMPT_DESC_SZ_64B) ||
-				(qconf->sw_desc_sz == DESC_SZ_64B)) {
-			pr_err("Invalid descriptor sw desc :%d, cmpl desc :%d",
-					qconf->sw_desc_sz, qconf->sw_desc_sz);
-			snprintf(buf, buflen,
-				"qdma%05x : 64B desc size is not supported\n",
-				xdev->conf.bdf);
-			return -EINVAL;
-		}
-
-		if (qconf->cmpl_trig_mode == TRIG_MODE_COMBO) {
-			pr_err("Invalid trigger mode :%d",
-					qconf->cmpl_trig_mode);
-			snprintf(buf, buflen,
-				"qdma%05x : Trigger mode COMBO is not supported\n",
-				xdev->conf.bdf);
-			return -EINVAL;
-		}
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_request_wait_for_cmpl() - static function to monitor the
- *								wait completion
- *
- * @param[in]	xdev:	pointer to xlnx_dma_dev structure
- * @param[in]	descq:	pointer to qdma_descq structure
- * @param[in]	req:	qdma request
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int qdma_request_wait_for_cmpl(struct xlnx_dma_dev *xdev,
-			struct qdma_descq *descq, struct qdma_request *req)
-{
-	struct qdma_sgt_req_cb *cb = qdma_req_cb_get(req);
-
-	/** if timeout is mentioned in the request,
-	 *  wait until the timeout occurs or wait until the
-	 *  call back is completed
-	 */
-
-	if (req->timeout_ms) {
-#ifdef __XRT__
-		qdma_waitq_wait_event_timeout(cb->wq, cb->done &&
-				(descq->pidx == descq->cidx),
-				msecs_to_jiffies(req->timeout_ms));
-#else
-		qdma_waitq_wait_event_timeout(cb->wq, cb->done,
-				msecs_to_jiffies(req->timeout_ms));
-#endif
-	} else {
-		qdma_waitq_wait_event(cb->wq, cb->done);
-	}
-
-	lock_descq(descq);
-	/** if the call back is not done, request timed out
-	 *  delete the request list
-	 */
-	if (!cb->done)
-		list_del(&cb->list);
-
-	/** if the call back is not done but the status is updated
-	 *  return i/o error
-	 */
-	if (!cb->done || cb->status) {
-		pr_err("%s: req 0x%p, %c,%u,%u/%u,0x%llx, done %d, err %d, tm %u.\n",
-				descq->conf.name,
-				req, req->write ? 'W' : 'R',
-				cb->offset,
-				cb->left,
-				req->count,
-				req->ep_addr,
-				cb->done,
-				cb->status,
-			req->timeout_ms);
-		qdma_descq_dump(descq, NULL, 0, 1);
-		unlock_descq(descq);
-
-		return -EIO;
-	}
-
-	unlock_descq(descq);
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_request_submit_st_c2h() - static function to handle the
- *							st c2h request
- *
- * @param[in]	xdev:	pointer to xlnx_dma_dev structure
- * @param[in]	descq:	pointer to qdma_descq structure
- * @param[in]	req:	qdma request
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static ssize_t qdma_request_submit_st_c2h(struct xlnx_dma_dev *xdev,
-			struct qdma_descq *descq, struct qdma_request *req)
-{
-	struct qdma_dev *qdev;
-	struct qdma_sgt_req_cb *cb = qdma_req_cb_get(req);
-	int wait = req->fp_done ? 0 : 1;
-	int rv = 0;
-
-	/** If xdev is NULL return error as Invalid parameter */
-	if (!xdev) {
-		pr_err("xdev is invalid");
-		return -EINVAL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-	/** make sure that qdev is not NULL, else return error */
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return -EINVAL;
-	}
-
-	pr_debug("%s: data len %u, sgl 0x%p, sgl cnt %u, tm %u ms.\n",
-			descq->conf.name,
-			req->count, req->sgl, req->sgcnt, req->timeout_ms);
-
-	/** get the request count */
-	cb->left = req->count;
-
-	lock_descq(descq);
-	if (descq->q_stop_wait) {
-		unlock_descq(descq);
-		return 0;
-	}
-	if ((descq->q_state == Q_STATE_ONLINE) &&
-			!descq->q_stop_wait) {
-		/* add to pend list even before cidx/pidx update as it could
-		 *  cause an interrupt and may miss processing of writeback
-		 */
-		list_add_tail(&cb->list, &descq->pend_list);
-		/* any rcv'ed packet not yet read ? */
-		/** read the data from the device */
-		descq_st_c2h_read(descq, req, 1, 1);
-		if (!cb->left) {
-			list_del(&cb->list);
-			unlock_descq(descq);
-			return req->count;
-		}
-		descq->pend_list_empty = 0;
-		unlock_descq(descq);
-	} else {
-		unlock_descq(descq);
-		pr_err("%s descq %s NOT online.\n",
-			xdev->conf.name, descq->conf.name);
-		return -EINVAL;
-	}
-
-	/** if there is a completion thread associated,
-	 *  wake up the completion thread to process the
-	 *  completion status
-	 */
-	if (descq->cmplthp)
-		qdma_kthread_wakeup(descq->cmplthp);
-
-	if (!wait) {
-		pr_debug("%s: cb 0x%p, data len 0x%x NO wait.\n",
-			descq->conf.name, cb, req->count);
-		return 0;
-	}
-
-	/** wait for the request completion */
-	rv = qdma_request_wait_for_cmpl(xdev, descq, req);
-	if (rv < 0) {
-		if (!req->dma_mapped)
-			sgl_unmap(xdev->conf.pdev, req->sgl, req->sgcnt,
-				DMA_FROM_DEVICE);
-		return rv;
-	}
-
-	/** Once the request completion received,
-	 *  return with the number of processed requests
-	 */
-	return req->count - cb->left;
-}
-
-/* ********************* public function definitions ************************ */
-
-/*****************************************************************************/
-/**
- * qdma_queue_get_config() - retrieve the configuration of a queue
- *
- * @param[in]	dev_hndl:	dev_hndl retured from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- * @param[out]	qconf:		pointer to hold the qdma_queue_conf structure.
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_get_config(unsigned long dev_hndl, unsigned long id,
-		struct qdma_queue_conf *qconf,
-		char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 0);
-	/** make sure that descq is not NULL, else return error */
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	memcpy(qconf, &descq->conf, sizeof(struct qdma_queue_conf));
-
-	snprintf(buf, buflen,
-		"Queue configuration for %s id %u is stored in qconf param",
-		descq->conf.name,
-		descq->conf.qidx);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_capabilities_info() - retrieve the capabilities of a device.
- *
- * @dev_hndl:	handle returned from qdma_device_open()
- * @dev_attr: pointer to hold all the device attributes
- *
- * Return:	0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_capabilities_info(unsigned long dev_hndl,
-		struct qdma_dev_attributes *dev_attr)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!dev_attr) {
-		pr_err("dev_attr is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	memcpy(dev_attr, &(xdev->dev_cap), sizeof(struct qdma_dev_attributes));
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_config_reg_info_dump() - dump the detailed field information of register
- *
- * @param[in] dev_hndl:	handle returned from qdma_device_open()
- * @param[in] reg_addr: register address info tobe dumped
- * @param[in] num_regs: number of registers to be dumped
- * @param[in] buf:	    buffer containing the o/p
- * @param[in] buflen:   length of the buffer
- *
- * @return:		    length of o/p buffer
- *
- *****************************************************************************/
-int qdma_config_reg_info_dump(unsigned long dev_hndl, uint32_t reg_addr,
-				uint32_t num_regs, char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d\n", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed\n");
-		return -EINVAL;
-	}
-
-	if (xdev->hw.qdma_dump_reg_info == NULL) {
-		pr_err("Err: Feature not supported\n");
-		snprintf(buf, buflen, "Err: Feature not supported\n");
-		return -EPERM;
-	}
-
-	rv = xdev->hw.qdma_dump_reg_info((void *)dev_hndl, reg_addr,
-			num_regs, buf, buflen);
-	return rv;
-
-}
-
-#ifndef __QDMA_VF__
-/*****************************************************************************/
-/**
- * qdma_config_reg_dump() - display a config registers in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-
-int qdma_config_reg_dump(unsigned long dev_hndl, char *buf,
-		int buflen)
-{
-
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	rv = xdev->hw.qdma_dump_config_regs((void *)dev_hndl, 0,
-			buf, buflen);
-	return rv;
-
-}
-
-#else
-
-static int qdma_config_read_reg_list(struct xlnx_dma_dev *xdev,
-			uint16_t group_num,
-			uint16_t *num_regs, struct qdma_reg_data *reg_list)
-{
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv;
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_reg_read(xdev->func_id, group_num, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			pr_err("%s, reg read mbox failed %d.\n",
-				xdev->conf.name, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_reg_list_get(m->raw, num_regs, reg_list);
-	if (rv < 0) {
-		pr_err("qdma_mbox_vf_reg_list_get faled with error = %d", rv);
-		goto err_out;
-	}
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_config_reg_dump() - display a config registers in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-int qdma_config_reg_dump(unsigned long dev_hndl, char *buf, int buflen)
-{
-
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = 0;
-	struct qdma_reg_data *reg_list;
-	uint16_t num_regs = 0, group_num = 0;
-	int len = 0, rcv_len = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	reg_list = kzalloc((QDMA_MAX_REGISTER_DUMP *
-						sizeof(struct qdma_reg_data)),
-						GFP_KERNEL);
-
-	if (!reg_list) {
-		pr_err("%s: reg_list OOM", xdev->conf.name);
-		snprintf(buf, buflen, "reg_list OOM");
-		return -ENOMEM;
-	}
-
-	for (group_num = 0; group_num < QDMA_REG_READ_GROUP_3; group_num++) {
-		/** Reset the reg_list  with 0's */
-		memset(reg_list, 0, (QDMA_MAX_REGISTER_DUMP *
-				sizeof(struct qdma_reg_data)));
-		rv = qdma_config_read_reg_list(xdev,
-					group_num, &num_regs, reg_list);
-		if (rv < 0) {
-			pr_err("Failed to read config registers, rv = %d", rv);
-			snprintf(buf, buflen, "Failed to read config regs");
-			goto free_reg_list;
-		}
-
-		rcv_len = xdev->hw.qdma_dump_config_reg_list((void *)dev_hndl,
-				num_regs, reg_list, buf + len, buflen - len);
-		if (len < 0) {
-			pr_err("%s: failed with error = %d", __func__, rv);
-			snprintf(buf, buflen, "Failed to dump config regs");
-			goto free_reg_list;
-		}
-		len += rcv_len;
-	}
-
-free_reg_list:
-	kfree(reg_list);
-	return len;
-
-}
-#endif
-/*****************************************************************************/
-/**
- * qdma_queue_dump() - display a queue's state in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_dump(unsigned long dev_hndl, unsigned long id, char *buf,
-				int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	int rv = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 0);
-	/** make sure that descq is not NULL, else return error */
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	/** read the descq context for the given qid */
-	rv = qdma_descq_context_dump(descq, buf, buflen);
-	if (rv < 0) {
-		snprintf(buf, buflen,
-				"%s dump context failed %d.\n",
-				descq->conf.name, rv);
-		return rv;
-	}
-
-	return buflen;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_dump_desc() - display a queue's descriptor ring from index start
- *							~ end in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	start:		start index
- * @param[in]	end:		end index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_dump_desc(unsigned long dev_hndl, unsigned long id,
-			unsigned int start, unsigned int end, char *buf,
-			int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	int len = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	/** get the descq details based on the qid provided */
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	/** make sure that intr ring entry indexes
-	 *  given are with in the range
-	 */
-	if (start > end) {
-		pr_err("start/end param passed is invalid ,<start> shall be less than <end>");
-		snprintf(buf, buflen,
-			"start/end param passed is invalid, <start> shall be less than <end>");
-		return -EINVAL;
-	}
-
-	/** dump the queue state */
-	len = qdma_descq_dump_state(descq, buf, buflen);
-	if (descq->q_state != Q_STATE_ONLINE)
-		return len;
-
-	/** dump the queue descriptor state */
-	len += qdma_descq_dump_desc(descq, start, end, buf + len, buflen - len);
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_dump_cmpt() - display a queue's descriptor ring from index start
- *							~ end in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	start:		start index
- * @param[in]	end:		end index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_dump_cmpt(unsigned long dev_hndl, unsigned long id,
-			unsigned int start, unsigned int end, char *buf,
-			int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	int len = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	/** get the descq details based on the qid provided */
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	/** make sure that intr ring entry indexes
-	 *  given are with in the range
-	 */
-	if (start > end) {
-		pr_err("start/end param passed is invalid, <start> shall be less than <end>");
-		snprintf(buf, buflen,
-			"start/end param passed is invalid, <start> shall be less than <end>");
-		return -EINVAL;
-	}
-
-	/** dump the descriptor state */
-	len = qdma_descq_dump_state(descq, buf, buflen);
-	/** if the descriptor is in online state,
-	 *  then, dump the completion state
-	 */
-	if (descq->q_state == Q_STATE_ONLINE)
-		len += qdma_descq_dump_cmpt(descq, start, end, buf + len,
-				buflen - len);
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_remove() - remove a queue (i.e., offline, NOT ready for dma)
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_remove(unsigned long dev_hndl, unsigned long id, char *buf,
-			int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-#ifdef DEBUGFS
-	struct qdma_descq *pair_descq;
-#endif
-	struct qdma_dev *qdev;
-	int rv = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-#ifdef DEBUGFS
-	pair_descq = qdma_device_get_pair_descq_by_id(xdev, id, buf, buflen, 1);
-#endif
-
-	qdev = xdev_2_qdev(xdev);
-	/** make sure that qdev is not NULL, else return error */
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return -EINVAL;
-	}
-
-	/** make sure that descq is not NULL, else return error */
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	if (descq->q_state != Q_STATE_ENABLED) {
-		snprintf(buf, buflen,
-			"queue %s, id %u cannot be deleted. Invalid q state: %s\n",
-			descq->conf.name,
-			descq->conf.qidx,
-			q_state_list[descq->q_state].name);
-
-		pr_err("queue %s, id %u cannot be deleted. Invalid q state: %s",
-			descq->conf.name,
-			descq->conf.qidx,
-			q_state_list[descq->q_state].name);
-		return -EINVAL;
-	}
-
-#ifdef DEBUGFS
-	if (pair_descq)
-		/** if pair_descq is not NULL, it means the queue
-		 * is in ENABLED state
-		 */
-		dbgfs_queue_exit(&descq->conf, pair_descq);
-	else
-		dbgfs_queue_exit(&descq->conf, NULL);
-#endif
-#ifndef __QDMA_VF__
-	rv = qdma_dev_decrement_active_queue(xdev->dma_device_index,
-			xdev->func_id,
-			(enum qdma_dev_q_type)descq->conf.q_type);
-	if (rv < 0) {
-		pr_err("Failed to decrement the active %s queue",
-				q_type_list[descq->conf.q_type].name);
-		return rv;
-	}
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		rv = qdma_dev_decrement_active_queue(xdev->dma_device_index,
-				xdev->func_id, QDMA_DEV_Q_TYPE_CMPT);
-		if (rv < 0) {
-			pr_err("Failed to decrement the active CMPT queue");
-			qdma_dev_increment_active_queue(xdev->dma_device_index,
-				xdev->func_id,
-				(enum qdma_dev_q_type)descq->conf.q_type);
-			return rv;
-		}
-	}
-#else
-	rv = qdma_dev_notify_qdel(descq,
-			(enum queue_type_t)descq->conf.q_type);
-	if (rv < 0) {
-		pr_err("Failed to decrement active %s queue count",
-				q_type_list[descq->conf.q_type].name);
-		return rv;
-	}
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		rv = qdma_dev_notify_qdel(descq, Q_CMPT);
-		if (rv < 0) {
-			pr_err("Failed to decrement active CMPT queue count");
-			qdma_dev_notify_qadd(descq,
-					(enum queue_type_t)descq->conf.q_type);
-			return rv;
-		}
-	}
-#endif
-
-	lock_descq(descq);
-	descq->q_state = Q_STATE_DISABLED;
-	unlock_descq(descq);
-
-#ifndef __QDMA_VF__
-	if (xdev->conf.qdma_drv_mode == LEGACY_INTR_MODE)
-		intr_legacy_clear(descq);
-#endif
-	snprintf(buf, buflen, "queue %s, id %u deleted.\n",
-		descq->conf.name, descq->conf.qidx);
-
-	pr_debug("queue %s, id %u deleted.\n",
-				descq->conf.name, descq->conf.qidx);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_config() - configure the queue with qconf parameters
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	qid:		queue id
- * @param[in]	qconf:		queue configuration parameters
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_config(unsigned long dev_hndl, unsigned long qid,
-			struct qdma_queue_conf *qconf, char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_dev *qdev;
-	struct qdma_descq *descq = NULL;
-	int rv = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-	/** make sure that qdev is not NULL, else return error */
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		snprintf(buf, buflen, "Q not already added. Add Q first\n");
-		return -EINVAL;
-	}
-
-	/** get the descq for the given qid */
-	descq = qdma_device_get_descq_by_id(xdev, qid, NULL, 0, 0);
-	if (!descq) {
-		pr_err("Invalid queue ID! qid=%lu, max=%u\n", qid, qdev->qmax);
-		snprintf(buf, buflen,
-				 "Invalid queue ID qid=%lu, max=%u, base=%u\n",
-				 qid, qdev->qmax, qdev->qbase);
-		return -EINVAL;
-	}
-
-	lock_descq(descq);
-	/* if descq is not in enabled state, return error */
-	if (descq->q_state != Q_STATE_ENABLED) {
-		pr_err("queue_%lu Invalid state! Q not in enabled state\n",
-		       qid);
-		snprintf(buf, buflen,
-				"Error. Required Q state=%s, Current Q state=%s\n",
-				q_state_list[Q_STATE_ENABLED].name,
-				q_state_list[descq->q_state].name);
-		unlock_descq(descq);
-		return -EINVAL;
-	}
-	unlock_descq(descq);
-
-	rv = qdma_validate_qconfig(xdev, qconf, buf, buflen);
-	if (rv != 0)
-		return rv;
-
-	/** configure descriptor queue */
-	lock_descq(descq);
-	qdma_descq_config(descq, qconf, 1);
-	unlock_descq(descq);
-
-	snprintf(buf, buflen,
-		"Queue %s id %u is configured with the qconf passed ",
-		descq->conf.name,
-		descq->conf.qidx);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_list() - display all configured queues in a string buffer
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	qidx:		Queue index
- * @param[in]	num_q:		Number of Queues to list
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	success: if optional message buffer used then strlen of buf,
- *	otherwise 0
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_list(unsigned long dev_hndl, int qidx, int num_q, char *buf,
-			int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_dev *qdev;
-	struct qdma_descq *descq = NULL;
-	char *cur = buf;
-	char * const end = buf + buflen;
-	uint32_t h2c_qcnt = 0, c2h_qcnt = 0, cmpt_qcnt = 0;
-	int i;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-	/** make sure that qdev is not NULL, else return error */
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n", dev_name(&xdev->conf.pdev->dev));
-		snprintf(buf, buflen, "Q not already added. Add Q first\n");
-		return -EINVAL;
-	}
-#ifndef __QDMA_VF__
-	h2c_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_H2C);
-
-	c2h_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_C2H);
-
-	cmpt_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_CMPT);
-#else
-	qdma_dev_get_active_qcnt(xdev, &h2c_qcnt, &c2h_qcnt, &cmpt_qcnt);
-#endif
-	cur += snprintf(cur, end - cur, "H2C Q: %u, C2H Q: %u, CMPT Q %u.\n",
-				h2c_qcnt, c2h_qcnt, cmpt_qcnt);
-	if (cur >= end)
-		goto handle_truncation;
-
-	/** traverse through the h2c and c2h queue list
-	 *  and dump the descriptors
-	 */
-	if (h2c_qcnt) {
-		descq = qdev->h2c_descq;
-		descq =  descq + qidx;
-		for (i = qidx; i < (qidx + num_q); i++, descq++) {
-			lock_descq(descq);
-			if (descq->q_state != Q_STATE_DISABLED)
-				cur +=
-				qdma_descq_dump(descq, cur, end - cur, 0);
-			unlock_descq(descq);
-
-			if (cur >= end)
-				goto handle_truncation;
-		}
-	}
-
-	if (c2h_qcnt) {
-		descq = qdev->c2h_descq;
-		descq =  descq + qidx;
-		for (i = qidx; i < (qidx + num_q); i++, descq++) {
-			lock_descq(descq);
-			if (descq->q_state != Q_STATE_DISABLED)
-				cur +=
-				qdma_descq_dump(descq, cur, end - cur, 0);
-			unlock_descq(descq);
-
-			if (cur >= end)
-				goto handle_truncation;
-		}
-	}
-
-	if (cmpt_qcnt) {
-		descq = qdev->cmpt_descq;
-		descq =  descq + qidx;
-		for (i = qidx; i < (qidx + num_q); i++, descq++) {
-			lock_descq(descq);
-			if (descq->q_state != Q_STATE_DISABLED)
-				cur +=
-				qdma_descq_dump(descq, cur, end - cur, 0);
-			unlock_descq(descq);
-
-			if (cur >= end)
-				goto handle_truncation;
-		}
-	}
-
-	return cur - buf;
-
-handle_truncation:
-	*buf = '\0';
-	return buf - cur;
-}
-
-#define Q_PRESENT_H2C_MASK (1 << Q_H2C)
-#define Q_PRESENT_C2H_MASK (1 << Q_C2H)
-#define Q_PRESENT_CMPT_MASK (1 << Q_CMPT)
-#define Q_MODE_SHIFT 3
-#define Q_MODE_MASK  (1 << Q_MODE_SHIFT)
-
-static int is_usable_queue(struct xlnx_dma_dev *xdev, int qidx,
-		int q_type, int st)
-{
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-	int refmask = 0x0;
-	int cmptq_chkmask = 0x0;
-	int h2cq_chkmask = 0x0;
-	int c2hq_chkmask = 0x0;
-	int reqmask = 0;
-	struct qdma_descq *h2c_descq = qdev->h2c_descq + qidx;
-	struct qdma_descq *c2h_descq = qdev->c2h_descq + qidx;
-	struct qdma_descq *cmpt_descq = qdev->cmpt_descq + qidx;
-
-	lock_descq(h2c_descq);
-	if (h2c_descq->q_state != Q_STATE_DISABLED)  {
-		refmask |= (1 << Q_H2C);
-		if (h2c_descq->conf.st)
-			refmask |= (1 << Q_MODE_SHIFT);
-	}
-	unlock_descq(h2c_descq);
-
-	lock_descq(c2h_descq);
-	if (c2h_descq->q_state != Q_STATE_DISABLED)  {
-		refmask |= (1 << Q_C2H);
-		if (c2h_descq->conf.st)
-			refmask |= (1 << Q_MODE_SHIFT);
-	}
-	unlock_descq(c2h_descq);
-
-	lock_descq(cmpt_descq);
-	if (cmpt_descq->q_state != Q_STATE_DISABLED)
-		refmask |= (1 << Q_CMPT);
-	unlock_descq(cmpt_descq);
-
-	reqmask = (1 << q_type);
-	if (st)
-		reqmask |= Q_MODE_MASK;
-	if (q_type == Q_CMPT) {
-		cmptq_chkmask |= (Q_PRESENT_CMPT_MASK | Q_MODE_MASK);
-		if (refmask & cmptq_chkmask) {
-			pr_err("Q_CMPT: refmask not valid");
-			goto q_reject;
-		}
-	} else if (q_type == Q_H2C) {
-		c2hq_chkmask = (Q_PRESENT_C2H_MASK | Q_MODE_MASK);
-		if (st && (refmask & Q_PRESENT_CMPT_MASK)) {
-			pr_err("Q_H2C: CMPT q given to MM");
-			goto q_reject; /* CMPT q given to MM */
-		}
-		if (st && (refmask & Q_PRESENT_C2H_MASK)
-				&& (refmask & c2hq_chkmask)
-						== Q_PRESENT_C2H_MASK) {
-			pr_err("Q_H2C: MM mode c2h q present");
-			goto q_reject; /* MM mode c2h q present*/
-		}
-		if (!st && (refmask & Q_PRESENT_C2H_MASK)
-				&& (refmask & c2hq_chkmask) == c2hq_chkmask) {
-			pr_err("Q_H2C: ST mode c2h q present");
-			goto q_reject; /* ST mode c2h q present*/
-		}
-		if (refmask & Q_PRESENT_H2C_MASK) {
-			pr_err("Q_H2C: h2c q already present");
-			goto q_reject; /* h2c q already present */
-		}
-	} else {
-		h2cq_chkmask |= (Q_PRESENT_H2C_MASK | Q_MODE_MASK);
-		if (st && (refmask & Q_PRESENT_CMPT_MASK)) {
-			pr_err("!Q_H2C: CMPT q given to MM");
-			goto q_reject; /* CMPT q given to MM */
-		}
-		if (st && (refmask & Q_PRESENT_H2C_MASK)
-				&& (refmask & h2cq_chkmask)
-						== Q_PRESENT_H2C_MASK) {
-			pr_err("!Q_H2C: MM mode h2c q present");
-			goto q_reject; /* MM mode h2c q present*/
-		}
-		if (!st && (refmask & Q_PRESENT_H2C_MASK)
-				&& (refmask & h2cq_chkmask) == h2cq_chkmask) {
-			pr_err("!Q_H2C: ST mode h2c q present");
-			goto q_reject; /* ST mode h2c q present*/
-		}
-		if (refmask & Q_PRESENT_C2H_MASK) {
-			pr_err("!Q_H2C: c2h q already present");
-			goto q_reject; /* c2h q already present */
-		}
-	}
-	return 0;
-q_reject:
-	pr_err("Q addition feasibility check failed");
-	return -1;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_add() - add a queue
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	qconf:		queue configuration parameters
- * @param[in]	qhndl:	list of unsigned long values that are the opaque qhndl
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_add(unsigned long dev_hndl, struct qdma_queue_conf *qconf,
-			unsigned long *qhndl, char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	unsigned int qcnt;
-	struct qdma_descq *descq;
-	struct qdma_dev *qdev;
-#ifdef DEBUGFS
-	struct qdma_descq *pairq;
-#endif
-#ifdef __QDMA_VF__
-	uint32_t h2c_qcnt = 0, c2h_qcnt = 0, cmpt_qcnt = 0;
-#endif
-	int rv = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	/** If qconf is NULL, return error*/
-	if (!qconf) {
-		pr_err("Invalid qconf %p", qconf);
-		snprintf(buf, buflen,
-			"%s, add, qconf NULL.\n",
-			xdev->conf.name);
-		return -EINVAL;
-	}
-
-	/** If qhndl is NULL, return error*/
-	if (!qhndl) {
-		pr_warn("qhndl NULL.\n");
-		snprintf(buf, buflen,
-			"%s, add, qhndl NULL.\n",
-			xdev->conf.name);
-		return -EINVAL;
-	}
-
-	if (qconf->q_type > Q_CMPT) {
-		pr_err("Invalid queue type passed");
-		snprintf(buf, buflen, "Invalid queue type passed");
-		return -EINVAL;
-	}
-
-	if (qconf->st && (qconf->q_type == Q_CMPT)) {
-		pr_err("Can not create independent completion ring for ST mode. It is supported along with C2H direction");
-		snprintf(buf, buflen,
-				"Can not create independent completion ring for ST mode. It is supported along with C2H direction");
-		return -EINVAL;
-	}
-
-	if ((qconf->q_type == Q_CMPT) && !xdev->dev_cap.mm_cmpt_en) {
-		pr_err("MM Completions not enabled");
-		snprintf(buf, buflen, "MM Completions not enabled");
-		return -EINVAL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-
-	/** reset qhandle to an invalid value
-	 * can't use 0 or NULL here because queue idx 0 has same value
-	 */
-	*qhndl = QDMA_QUEUE_IDX_INVALID;
-
-	/** check if the requested mode is enabled?
-	 *  the request modes are read from the HW
-	 *  before serving any request, first check if the
-	 *  HW has the capability or not, else return error
-	 */
-	if ((qconf->st && !xdev->dev_cap.st_en) ||
-	    (!qconf->st && !xdev->dev_cap.mm_en)) {
-		pr_warn("%s, %s mode not enabled.\n",
-			xdev->conf.name, qconf->st ? "ST" : "MM");
-		snprintf(buf, buflen,
-				"qdma%05x %s mode not enabled.\n",
-				xdev->conf.bdf, qconf->st ? "ST" : "MM");
-		return -EINVAL;
-	}
-
-	rv = qdma_validate_qconfig(xdev, qconf, buf, buflen);
-	if (rv < 0)
-		return rv;
-
-	spin_lock(&qdev->lock);
-	/** if incase the qidx is not QDMA_QUEUE_IDX_INVALID
-	 *  then, make sure that the qidx range falls between
-	 *  0 - qdev->qmax, else return error
-	 */
-	if ((qconf->qidx != QDMA_QUEUE_IDX_INVALID) &&
-	    (qconf->qidx >= qdev->qmax)) {
-		spin_unlock(&qdev->lock);
-		snprintf(buf, buflen,
-			"qdma%05x invalid idx %u >= %u.\n",
-			xdev->conf.bdf, qconf->qidx, qdev->qmax);
-		pr_err("Invalid queue index, qid = %d, qmax = %d",
-					qconf->qidx, qdev->qmax);
-		return -EINVAL;
-	}
-
-	/** check if any free qidx available
-	 *  if qcnt is >= qdev->qmax, return error as
-	 *  no free queues found and descq is full
-	 */
-#ifndef __QDMA_VF__
-	qcnt = qdma_get_device_active_queue_count(xdev->dma_device_index,
-			xdev->func_id, qconf->q_type);
-#else
-	spin_unlock(&qdev->lock);
-	qdma_dev_get_active_qcnt(xdev, &h2c_qcnt, &c2h_qcnt, &cmpt_qcnt);
-	spin_lock(&qdev->lock);
-	if (qconf->q_type == Q_H2C)
-		qcnt = h2c_qcnt;
-	else if (qconf->q_type == Q_C2H)
-		qcnt = c2h_qcnt;
-	else
-		qcnt = cmpt_qcnt;
-#endif
-	if (qcnt >= qdev->qmax) {
-		spin_unlock(&qdev->lock);
-		pr_warn("No free queues %u/%u.\n", qcnt, qdev->qmax);
-		snprintf(buf, buflen,
-			"qdma%05x No free queues %u/%u.\n",
-			xdev->conf.bdf, qcnt, qdev->qmax);
-		return -EIO;
-	}
-
-
-	spin_unlock(&qdev->lock);
-
-	if (qconf->q_type == Q_C2H)
-		descq = qdev->c2h_descq;
-	else if (qconf->q_type == Q_H2C)
-		descq = qdev->h2c_descq;
-	else
-		descq = qdev->cmpt_descq;
-
-	/** need to allocate a free qidx if it has an invalid id
-	 *  ie. qidx is not specified in the add request
-	 */
-	if (qconf->qidx == QDMA_QUEUE_IDX_INVALID) {
-		int i;
-
-		/** loop through the qlist till qmax and find an empty descq*/
-		for (i = 0; i < qdev->qmax; i++, descq++) {
-			if (is_usable_queue(xdev, i, qconf->q_type,
-					qconf->st) < 0)
-				continue;
-
-			descq += i;
-			lock_descq(descq);
-
-			/** set the descq as enabled*/
-			descq->q_state = Q_STATE_ENABLED;
-			/** assign the qidx */
-			qconf->qidx = i;
-			unlock_descq(descq);
-
-			break;
-		}
-
-		/** we are reached here means no free descq found
-		 *  decrement the queue count and return error
-		 */
-		if (i == qdev->qmax) {
-			pr_warn("no free %s qp found, %u.\n",
-				qconf->st ? "ST" : "MM", qdev->qmax);
-			rv = -EPERM;
-			snprintf(buf, buflen,
-				"qdma%05x no %s QP, %u.\n",
-				xdev->conf.bdf,
-				qconf->st ? "ST" : "MM", qdev->qmax);
-			return rv;
-		}
-	} else {
-		if (is_usable_queue(xdev, qconf->qidx, qconf->q_type,
-				qconf->st) < 0) {
-			pr_err("Queue compatibility check failed against existing queues\n");
-			snprintf(buf, buflen,
-				 "Queue compatibility check failed against existing queues\n");
-			return -EPERM;
-		}
-
-		descq += qconf->qidx;
-
-		lock_descq(descq);
-
-		/** set the descq as enabled*/
-		descq->q_state = Q_STATE_ENABLED;
-
-		unlock_descq(descq);
-	}
-
-	/** prepare the queue resources*/
-	rv = qdma_device_prep_q_resource(xdev);
-	if (rv < 0) {
-#ifdef __QDMA_VF__
-		lock_descq(descq);
-		descq->q_state = Q_STATE_DISABLED;
-		unlock_descq(descq);
-#endif
-		return rv;
-	}
-#ifndef __QDMA_VF__
-	if (xdev->conf.qdma_drv_mode == LEGACY_INTR_MODE) {
-		rv = intr_legacy_setup(descq);
-		if (rv > 0) {
-			/** support only 1 queue in legacy interrupt mode */
-			intr_legacy_clear(descq);
-			lock_descq(descq);
-			descq->q_state = Q_STATE_DISABLED;
-			unlock_descq(descq);
-			pr_debug("qdma%05x - Q%u - No free queues %u/%u.\n",
-				xdev->conf.bdf, descq->conf.qidx,
-				rv, 1);
-			rv = -EINVAL;
-			snprintf(buf, buflen,
-				"qdma%05x No free queues %u/%d.\n",
-				xdev->conf.bdf, qcnt, 1);
-			return rv;
-		} else if (rv < 0) {
-			rv = -EINVAL;
-			lock_descq(descq);
-			descq->q_state = Q_STATE_DISABLED;
-			unlock_descq(descq);
-			pr_debug("qdma%05x Legacy interrupt setup failed.\n",
-					xdev->conf.bdf);
-			snprintf(buf, buflen,
-				"qdma%05x Legacy interrupt setup failed.\n",
-				xdev->conf.bdf);
-			return rv;
-		}
-	}
-#endif
-	/** fill in config. info */
-	qdma_descq_config(descq, qconf, 0);
-#ifndef __QDMA_VF__
-	rv = qdma_dev_increment_active_queue(xdev->dma_device_index,
-			xdev->func_id, (enum qdma_dev_q_type)qconf->q_type);
-	if (rv < 0) {
-		pr_err("Failed to increment active %s queue count",
-				q_type_list[qconf->q_type].name);
-		return rv;
-	}
-	if (qconf->st && (qconf->q_type == Q_C2H)) {
-		rv = qdma_dev_increment_active_queue(xdev->dma_device_index,
-				xdev->func_id, QDMA_DEV_Q_TYPE_CMPT);
-		if (rv < 0) {
-			pr_err("Failed to increment CMPT queue count");
-			qdma_dev_decrement_active_queue(xdev->dma_device_index,
-					xdev->func_id,
-					(enum qdma_dev_q_type)qconf->q_type);
-			return rv;
-		}
-	}
-#else
-	rv = qdma_dev_notify_qadd(descq,
-			(enum queue_type_t)qconf->q_type);
-	if (rv < 0) {
-		pr_err("Failed to increment active %s queue count",
-				q_type_list[qconf->q_type].name);
-		return rv;
-	}
-	if (qconf->st && (qconf->q_type == Q_C2H)) {
-		rv = qdma_dev_notify_qadd(descq, Q_CMPT);
-		if (rv < 0) {
-			pr_err("Failed to increment active CMPT queue count");
-			qdma_dev_notify_qdel(descq,
-					(enum queue_type_t)qconf->q_type);
-			return rv;
-		}
-	}
-#endif
-
-	/** copy back the name in config*/
-	memcpy(qconf->name, descq->conf.name, QDMA_QUEUE_NAME_MAXLEN);
-	*qhndl = (unsigned long)descq->conf.qidx;
-	if (qconf->q_type == Q_C2H)
-		*qhndl += qdev->qmax;
-	if (qconf->q_type == Q_CMPT)
-		*qhndl += (2 * qdev->qmax);
-	descq->q_hndl = *qhndl;
-
-
-#ifdef DEBUGFS
-	if (qconf->q_type != Q_CMPT) {
-		if (qconf->q_type == Q_H2C)
-			pairq = qdev->c2h_descq + qconf->qidx;
-		else
-			pairq = qdev->h2c_descq + qconf->qidx;
-
-		rv = dbgfs_queue_init(&descq->conf, pairq,
-				xdev->dbgfs_queues_root);
-		if (rv < 0) {
-			pr_err("failed to create queue debug files for the queueu %d\n",
-					descq->conf.qidx);
-		}
-	}
-#endif
-
-	pr_debug("added %s, %s, qidx %u.\n",
-			descq->conf.name,
-			q_type_list[qconf->q_type].name,
-			qconf->qidx);
-
-	snprintf(buf, buflen, "%s %s added.\n",
-		descq->conf.name,
-		q_type_list[qconf->q_type].name);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_start() - start a queue (i.e, online, ready for dma)
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_start(unsigned long dev_hndl, unsigned long id,
-		     char *buf, int buflen)
-{
-	struct qdma_descq *descq;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-	/** make sure that descq is not NULL, else return error*/
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	lock_descq(descq);
-	/** if the descq is not enabled,
-	 *  it is in invalid state, return error
-	 */
-	if (descq->q_state != Q_STATE_ENABLED) {
-		pr_err("%s invalid state, q_status%d.\n",
-			descq->conf.name, descq->q_state);
-		snprintf(buf, buflen,
-			"%s invalid state, q_state %d.\n",
-			descq->conf.name, descq->q_state);
-		unlock_descq(descq);
-		return -EINVAL;
-	}
-
-	if ((xdev->version_info.ip_type == EQDMA_SOFT_IP) &&
-		(xdev->version_info.vivado_release >= QDMA_VIVADO_2020_2)) {
-
-		if (xdev->dev_cap.desc_eng_mode
-			== QDMA_DESC_ENG_BYPASS_ONLY) {
-			pr_err("Err: Bypass Only Design is not supported\n");
-			snprintf(buf, buflen,
-				"%s Bypass Only Design is not supported\n",
-				descq->conf.name);
-			unlock_descq(descq);
-			return -EINVAL;
-		}
-
-		if (descq->conf.desc_bypass) {
-			if (xdev->dev_cap.desc_eng_mode
-				== QDMA_DESC_ENG_INTERNAL_ONLY) {
-				pr_err("Err: Bypass mode not supported in Internal Mode only design\n");
-				snprintf(buf, buflen,
-					"%s  Bypass mode not supported in Internal Mode only design\n",
-					descq->conf.name);
-				unlock_descq(descq);
-				return -EINVAL;
-			}
-		}
-	}
-
-
-	if ((descq->conf.aperture_size != 0) &&
-			((descq->conf.aperture_size &
-			  (descq->conf.aperture_size - 1)))) {
-		pr_err("Err: %s Power of 2 aperture size supported\n",
-			descq->conf.name);
-		snprintf(buf, buflen,
-			"Err:%s Power of 2 aperture size supported\n",
-			descq->conf.name);
-		unlock_descq(descq);
-		return -ERANGE;
-	}
-	/** complete the queue configuration*/
-	rv = qdma_descq_config_complete(descq);
-	if (rv < 0) {
-		pr_err("%s 0x%x setup failed.\n",
-			descq->conf.name, descq->qidx_hw);
-		snprintf(buf, buflen,
-			"%s config failed.\n", descq->conf.name);
-		unlock_descq(descq);
-		return -EIO;
-	}
-	unlock_descq(descq);
-
-	/** allocate the queue resources*/
-	rv = qdma_descq_alloc_resource(descq);
-	if (rv < 0) {
-		pr_err("%s alloc resource failed.\n", descq->conf.name);
-		snprintf(buf, buflen,
-			"%s alloc resource failed.\n",
-			descq->conf.name);
-		return rv;
-	}
-
-	/** program the hw contexts*/
-	rv = qdma_descq_prog_hw(descq);
-	if (rv < 0) {
-		pr_err("%s 0x%x setup failed.\n",
-			descq->conf.name, descq->qidx_hw);
-		snprintf(buf, buflen,
-			"%s prog. context failed.\n",
-			descq->conf.name);
-		goto clear_context;
-	}
-
-	/** Interrupt mode */
-	if (descq->xdev->num_vecs) {
-		unsigned long flags;
-		struct intr_info_t *dev_intr_info_list =
-			&descq->xdev->dev_intr_info_list[descq->intr_id];
-
-		spin_lock_irqsave(&dev_intr_info_list->vec_q_list, flags);
-		list_add_tail(&descq->intr_list,
-				&dev_intr_info_list->intr_list);
-		dev_intr_info_list->intr_list_cnt++;
-		spin_unlock_irqrestore(&dev_intr_info_list->vec_q_list, flags);
-	}
-
-	qdma_thread_add_work(descq);
-
-	snprintf(buf, buflen, "queue %s, idx %u started\n",
-			descq->conf.name, descq->conf.qidx);
-
-	/** set the descq to online state*/
-	lock_descq(descq);
-	descq->q_state = Q_STATE_ONLINE;
-	unlock_descq(descq);
-
-	return 0;
-
-clear_context:
-	qdma_descq_context_clear(descq->xdev, descq->qidx_hw,
-					descq->conf.st, descq->conf.q_type, 1);
-	qdma_descq_free_resource(descq);
-
-	return rv;
-}
-
-int qdma_get_queue_state(unsigned long dev_hndl, unsigned long id,
-		struct qdma_q_state *q_state, char *buf, int buflen)
-{
-	struct qdma_descq *descq;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-	/** make sure that descq is not NULL, else return error */
-	if (!descq) {
-		pr_err("Invalid qid(%lu)", id);
-		snprintf(buf, buflen,
-			"Invalid qid(%lu)\n", id);
-		return -EINVAL;
-	}
-
-	if (!q_state) {
-		pr_err("Invalid q_state:%p", q_state);
-		return -EINVAL;
-	}
-
-	lock_descq(descq);
-	/** mode */
-	q_state->st = descq->conf.st;
-	/** type */
-	q_state->q_type = (enum queue_type_t)descq->conf.q_type;
-	/** qidx */
-	q_state->qidx = descq->conf.qidx;
-	/** q state */
-	q_state->qstate = descq->q_state;
-
-	snprintf(buf, buflen,
-		"queue state for %s id %u : %s\n",
-		descq->conf.name,
-		descq->conf.qidx,
-		q_state_list[descq->q_state].name);
-
-	unlock_descq(descq);
-
-	return 0;
-}
-
-
-
-/*****************************************************************************/
-/**
- * qdma_queue_stop() - stop a queue (i.e., offline, NOT ready for dma)
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	id:		queue index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_queue_stop(unsigned long dev_hndl, unsigned long id, char *buf,
-			int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_sgt_req_cb *cb, *tmp;
-	struct qdma_request *req;
-	unsigned int pend_list_empty = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-	/** make sure that descq is not NULL, else return error */
-	if (!descq) {
-		pr_err("Invalid qid(%ld)", id);
-		return -EINVAL;
-	}
-
-	lock_descq(descq);
-		/** if the descq not online donot proceed */
-	if (descq->q_state != Q_STATE_ONLINE) {
-		unlock_descq(descq);
-		pr_err("%s invalid state, q_state %d.\n",
-		descq->conf.name, descq->q_state);
-		snprintf(buf, buflen,
-			"queue %s, idx %u stop failed.\n",
-			 descq->conf.name, descq->conf.qidx);
-		return -EINVAL;
-	}
-	pend_list_empty = descq->pend_list_empty;
-
-	descq->q_stop_wait = 1;
-	unlock_descq(descq);
-	if (!pend_list_empty) {
-		qdma_waitq_wait_event_timeout(descq->pend_list_wq,
-			descq->pend_list_empty,
-			msecs_to_jiffies(QDMA_Q_PEND_LIST_COMPLETION_TIMEOUT));
-	}
-	lock_descq(descq);
-	/** free the descq by updating the state */
-	descq->q_state = Q_STATE_ENABLED;
-	descq->q_stop_wait = 0;
-	list_for_each_entry_safe(cb, tmp, &descq->pend_list, list) {
-		req = (struct qdma_request *)cb;
-		cb->done = 1;
-		cb->status = -ENXIO;
-		if (req->fp_done) {
-			list_del(&cb->list);
-			req->fp_done(req, 0, -ENXIO);
-		} else
-			qdma_waitq_wakeup(&cb->wq);
-	}
-	list_for_each_entry_safe(cb, tmp, &descq->work_list, list) {
-		req = (struct qdma_request *)cb;
-		cb->done = 1;
-		cb->status = -ENXIO;
-		if (req->fp_done) {
-			qdma_work_queue_del(descq, cb);
-			req->fp_done(req, 0, -ENXIO);
-		} else
-			qdma_waitq_wakeup(&cb->wq);
-	}
-	unlock_descq(descq);
-
-	/** remove the work thread associated with the current queue */
-	qdma_thread_remove_work(descq);
-
-	/** clear the queue context */
-	qdma_descq_context_clear(descq->xdev, descq->qidx_hw,
-					descq->conf.st, descq->conf.q_type, 0);
-
-	/** if the device is in direct/indirect interrupt mode,
-	 *  delete the interrupt list for the queue
-	 */
-	if ((descq->xdev->conf.qdma_drv_mode != POLL_MODE) &&
-		(descq->xdev->conf.qdma_drv_mode != LEGACY_INTR_MODE)) {
-		unsigned long flags;
-		struct intr_info_t *dev_intr_info_list =
-			&descq->xdev->dev_intr_info_list[descq->intr_id];
-
-		spin_lock_irqsave(&dev_intr_info_list->vec_q_list, flags);
-		list_del(&descq->intr_list);
-		dev_intr_info_list->intr_list_cnt--;
-		spin_unlock_irqrestore(&dev_intr_info_list->vec_q_list, flags);
-	}
-
-	/** free the queue resources */
-	qdma_descq_free_resource(descq);
-	/** free the descq by updating the state */
-	descq->total_cmpl_descs = 0;
-
-	/** fill the return buffer indicating that queue is stopped */
-	snprintf(buf, buflen, "queue %s, idx %u stopped.\n",
-			descq->conf.name, descq->conf.qidx);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_queue_count() - Function to fetch the total number of queues
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[out]	q_count:	total q count
- * @param[out]	buf:		message buffer
- * @param[in]	buflen:	length of the input buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_get_queue_count(unsigned long dev_hndl,
-					struct qdma_queue_count *q_count,
-					char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen || !q_count) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-#ifndef __QDMA_VF__
-	q_count->h2c_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_H2C);
-
-	q_count->c2h_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_C2H);
-
-	q_count->cmpt_qcnt = qdma_get_device_active_queue_count(
-			xdev->dma_device_index,
-			xdev->func_id,
-			QDMA_DEV_Q_TYPE_CMPT);
-#else
-	qdma_dev_get_active_qcnt(xdev, &(q_count->h2c_qcnt),
-							 &(q_count->c2h_qcnt),
-							 &(q_count->cmpt_qcnt));
-#endif
-
-	pr_debug("h2c_qcnt = %d, c2h_qcnt = %d, cmpt_qcnt = %d",
-			q_count->h2c_qcnt,
-			q_count->c2h_qcnt,
-			q_count->cmpt_qcnt);
-	return 0;
-}
-/*****************************************************************************/
-/**
- * qdma_intr_ring_dump() - display the interrupt ring info of a vector
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	vector_idx:	vector number
- * @param[in]	start_idx:	interrupt ring start idx
- * @param[in]	end_idx:	interrupt ring end idx
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_intr_ring_dump(unsigned long dev_hndl, unsigned int vector_idx,
-	int start_idx, int end_idx, char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	union qdma_intr_ring *ring_entry;
-	struct intr_coal_conf *coal_entry;
-	char *cur = buf;
-	char * const end = buf + buflen;
-	int counter = 0;
-	u32 data[2];
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	/** if, interrupt aggregation is not enabled,
-	 *  interrupt ring is not created, return error
-	 */
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE)) {
-		pr_err("Interrupt aggregation not enabled in %s mode",
-				mode_name_list[xdev->conf.qdma_drv_mode].name);
-		snprintf(buf, buflen,
-				"Interrupt aggregation not enabled in %s mode",
-				mode_name_list[xdev->conf.qdma_drv_mode].name);
-		return -EINVAL;
-	}
-
-	/** make sure that vector index is with in the
-	 *  start and end vector limit, else return error
-	 */
-	if ((vector_idx < xdev->dvec_start_idx) ||
-		(vector_idx >=
-		(xdev->dvec_start_idx + QDMA_NUM_DATA_VEC_FOR_INTR_CXT))) {
-		pr_err("Vector idx %u is invalid. Shall be in range: %d -  %d.\n",
-			vector_idx,
-			xdev->dvec_start_idx,
-			(xdev->dvec_start_idx +
-			QDMA_NUM_DATA_VEC_FOR_INTR_CXT - 1));
-		snprintf(buf, buflen,
-			"Vector idx %u is invalid. Shall be in range: %d -  %d.\n",
-			vector_idx,
-			xdev->dvec_start_idx,
-			(xdev->dvec_start_idx +
-			QDMA_NUM_DATA_VEC_FOR_INTR_CXT - 1));
-		return -EINVAL;
-	}
-
-	/** get the intr entry based on vector index */
-	coal_entry = xdev->intr_coal_list + (vector_idx - xdev->dvec_start_idx);
-
-	/** make sure that intr ring entry indexes
-	 *  given are with in the range
-	 */
-	if (start_idx > coal_entry->intr_rng_num_entries) {
-		pr_err("start_idx %d is invalid. Shall be less than: %d\n",
-					start_idx,
-					coal_entry->intr_rng_num_entries);
-		snprintf(buf, buflen,
-			"start_idx %d is invalid. Shall be less than: %d\n",
-			start_idx,
-			coal_entry->intr_rng_num_entries);
-		return -EINVAL;
-	}
-
-	if (end_idx == -1 || end_idx >= coal_entry->intr_rng_num_entries)
-		end_idx = coal_entry->intr_rng_num_entries - 1;
-
-	if (start_idx == -1)
-		start_idx = 0;
-
-	if (start_idx > end_idx) {
-		pr_err("start_idx can't be greater than end_idx\n");
-		snprintf(buf, buflen,
-			"start_idx can't be greater than end_idx\n");
-		return -EINVAL;
-	}
-
-	/** read the ring entries based on the range given and
-	 * update the input buffer with details
-	 */
-	for (counter = start_idx; counter <= end_idx; counter++) {
-		ring_entry = coal_entry->intr_ring_base + counter;
-		memcpy(data, ring_entry, sizeof(u32) * 2);
-		cur += snprintf(cur, end - cur,
-				"intr_ring_entry = %d: 0x%08x 0x%08x\n",
-				counter, data[1], data[0]);
-		if (cur >= end)
-			goto handle_truncation;
-	}
-
-	return 0;
-handle_truncation:
-	*buf = '\0';
-	return 0;
-}
-
- /*****************************************************************************/
- /**
-  * qdma_software_version_info  Provides the qdma software version
-  *
-  * @param[out]   software_version:   libqdma software version
-  *
-  * @return  0: success
-  * @return  <0: error
-  *****************************************************************************/
-int qdma_software_version_info(char *software_version, int length)
-{
-	if (!software_version) {
-		pr_err("Invalid input software_version:%p", software_version);
-		return -EINVAL;
-	}
-
-	snprintf(software_version, length, "%s", LIBQDMA_VERSION_STR);
-
-	return 0;
-}
-
-
-#ifdef __QDMA_VF__
- /*****************************************************************************/
- /**
-  * qdma_vf_qconf    call for VF to request qmax number of Qs
-  *
-  * @param[in]   dev_hndl:   dev_hndl returned from qdma_device_open()
-  * @param[in]   qmax:   number of qs requested by vf
-  *
-  * @return  0: success
-  * @return  <0: error
-  *****************************************************************************/
-int qdma_vf_qconf(unsigned long dev_hndl, int qmax)
-{
-	int err = 0;
-	int qbase = -1;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("Invalid dev handle\n");
-		return -EINVAL;
-	}
-
-	err = device_set_qconf(xdev, &qmax, &qbase);
-	if (err < 0) {
-		pr_err("Setting qconf failed\n");
-		return err;
-	}
-	qdma_device_cleanup(xdev);
-	xdev->conf.qsets_base = qbase;
-	xdev->conf.qsets_max = qmax;
-	err  = qdma_device_init(xdev);
-	if (err < 0) {
-		pr_warn("qdma_init failed %d.\n", err);
-		qdma_device_cleanup(xdev);
-	}
-
-	return err;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * sgl_unmap() - unmap the sg list from host pages
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	sg:		qdma sg request list
- * @param[in]	sgcnt:	number of sg lists
- * @param[in]	dir:	direction of the dma transfer
- *			DMA_BIDIRECTIONAL = 0,	DMA_TO_DEVICE = 1,
- *			DMA_FROM_DEVICE = 2, DMA_NONE = 3,
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-void sgl_unmap(struct pci_dev *pdev, struct qdma_sw_sg *sg, unsigned int sgcnt,
-		 enum dma_data_direction dir)
-{
-	int i;
-
-	/** unmap the sg list and set the dma_addr to 0 all sg entries */
-	for (i = 0; i < sgcnt; i++, sg++) {
-		if (!sg->pg)
-			break;
-		if (sg->dma_addr) {
-			dma_unmap_page(&pdev->dev, sg->dma_addr - sg->offset,
-							PAGE_SIZE, dir);
-			sg->dma_addr = 0UL;
-		}
-	}
-}
-
-/*****************************************************************************/
-/**
- * sgl_map() - map sg list to host pages
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	sg:		qdma sg request list
- * @param[in]	sgcnt:	number of sg lists
- * @param[in]	dir:	direction of the dma transfer
- *			DMA_BIDIRECTIONAL = 0,	DMA_TO_DEVICE = 1,
- *			DMA_FROM_DEVICE = 2, DMA_NONE = 3,
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int sgl_map(struct pci_dev *pdev, struct qdma_sw_sg *sgl, unsigned int sgcnt,
-		enum dma_data_direction dir)
-{
-	int i;
-	struct qdma_sw_sg *sg = sgl;
-
-	/** Map the sg list onto a dma pages where
-	 *  each page has max of PAGE_SIZE i.e 4K
-	 */
-	for (i = 0; i < sgcnt; i++, sg++) {
-		/* !! TODO  page size !! */
-		sg->dma_addr = dma_map_page(&pdev->dev, sg->pg, 0, PAGE_SIZE,
-				dir);
-		if (unlikely(dma_mapping_error(&pdev->dev, sg->dma_addr))) {
-			pr_err("map sgl failed, sg %d, %u.\n", i, sg->len);
-			if (i)
-				sgl_unmap(pdev, sgl, i, dir);
-			return -EIO;
-		}
-		sg->dma_addr += sg->offset;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_request_submit() - submit a scatter-gather list of data for dma
- * operation (for both read and write)
- * This is a callback function called from upper layer(character device)
- * to handle the read/write request on the queues
- *
- * @param[in]	dev_hndl:	hndl retured from qdma_device_open()
- * @param[in]	id:			queue index
- * @param[in]	req:		qdma request
- *
- * @return	# of bytes transferred
- * @return	<0: error
- *****************************************************************************/
-ssize_t qdma_request_submit(unsigned long dev_hndl, unsigned long id,
-			struct qdma_request *req)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_sgt_req_cb *cb;
-	enum dma_data_direction dir;
-	int wait = 0;
-	int rv = 0;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (!req) {
-		pr_err("req is NULL");
-		return -EINVAL;
-	}
-
-	wait = req->fp_done ? 0 : 1;
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 1);
-	if (!descq) {
-		pr_err("Invalid qid(%ld)", id);
-		return -EINVAL;
-	}
-
-	if (descq->conf.q_type == Q_CMPT) {
-		pr_err("Error : Transfer initiated on completion queue\n");
-		return -EINVAL;
-	}
-
-	cb = qdma_req_cb_get(req);
-
-	pr_debug("%s %s-%s, data len %u, sg cnt %u. ping_pong_en=%d\n",
-		descq->conf.name, descq->conf.st ? "ST" : "MM",
-		(descq->conf.q_type == Q_C2H) ? "C2H" : "H2C",
-		req->count, req->sgcnt, descq->conf.ping_pong_en);
-
-	/** Identify the direction of the transfer */
-	dir = (descq->conf.q_type == Q_C2H) ?  DMA_FROM_DEVICE : DMA_TO_DEVICE;
-
-	/** If write request is given on the C2H direction
-	 *  OR, a read request given on non C2H direction
-	 *  then, its an invalid request, return error in this case
-	 */
-	if ((req->write && (descq->conf.q_type != Q_H2C)) ||
-	    (!req->write && (descq->conf.q_type != Q_C2H))) {
-		pr_err("%s: bad direction, %c.\n",
-			descq->conf.name, req->write ? 'W' : 'R');
-		return -EINVAL;
-	}
-
-	/** Reset the local cb request with 0's */
-	memset(cb, 0, QDMA_REQ_OPAQUE_SIZE);
-	/** Initialize the wait queue */
-	qdma_waitq_init(&cb->wq);
-
-	pr_debug("%s: data len %u, ep 0x%llx, sgl 0x%p, sgl cnt %u, tm %u ms.\n",
-		descq->conf.name, req->count, req->ep_addr, req->sgl,
-		req->sgcnt, req->timeout_ms);
-
-	/** If the request is streaming mode C2H, invoke the
-	 *  handler to perform the read operation
-	 */
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H))
-		return qdma_request_submit_st_c2h(xdev, descq, req);
-
-	if (!req->dma_mapped) {
-		rv = sgl_map(xdev->conf.pdev,  req->sgl, req->sgcnt, dir);
-		if (rv < 0) {
-			pr_err("%s map sgl %u failed, %u.\n",
-				descq->conf.name, req->sgcnt, req->count);
-			goto unmap_sgl;
-		}
-		cb->unmap_needed = 1;
-	}
-
-	lock_descq(descq);
-	/**  if the descq is already in online state*/
-	if (descq->q_state != Q_STATE_ONLINE) {
-		unlock_descq(descq);
-		pr_err("%s descq %s NOT online.\n",
-			xdev->conf.name, descq->conf.name);
-		rv = -EINVAL;
-		goto unmap_sgl;
-	}
-	qdma_work_queue_add(descq, cb);
-	unlock_descq(descq);
-
-	pr_debug("%s: cb 0x%p submitted.\n", descq->conf.name, cb);
-
-	qdma_descq_proc_sgt_request(descq);
-
-	if (!wait)
-		return 0;
-
-	rv = qdma_request_wait_for_cmpl(xdev, descq, req);
-	if (rv < 0)
-		goto unmap_sgl;
-
-	return cb->offset;
-
-unmap_sgl:
-	if (!req->dma_mapped)
-		sgl_unmap(xdev->conf.pdev,  req->sgl, req->sgcnt, dir);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_batch_request_submit() - submit a batch of scatter-gather list of data
- *  for dma operation (for both read and write)
- * This is a callback function called from upper layer(character device)
- * to handle the read/write request on the queues
- *
- * @param[in]	dev_hndl:	hndl retured from qdma_device_open()
- * @param[in]	id:			queue index
- * @param[in]	count:		Number of qdma requests
- * @param[in]	reqv:		qdma request vector
- *
- * @return	# of bytes transferred
- * @return	<0: error
- *****************************************************************************/
-ssize_t qdma_batch_request_submit(unsigned long dev_hndl, unsigned long id,
-			  unsigned long count, struct qdma_request **reqv)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_sgt_req_cb *cb;
-	enum dma_data_direction dir;
-	int rv = 0;
-	unsigned long i;
-	struct qdma_request *req;
-	int st_c2h = 0;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (!reqv) {
-		pr_err("reqv is NULL");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 0);
-	if (!descq) {
-		pr_err("Invalid qid(%ld)", id);
-		return -EINVAL;
-	}
-
-	if (descq->conf.q_type == Q_CMPT) {
-		pr_err("Error : Transfer initiated on completion queue\n");
-		return -EINVAL;
-	}
-
-	st_c2h = (descq->conf.st && (descq->conf.q_type == Q_C2H)) ? 1 : 0;
-
-	/** Identify the direction of the transfer */
-	dir = (descq->conf.q_type == Q_C2H) ?  DMA_FROM_DEVICE : DMA_TO_DEVICE;
-
-	req = reqv[0];
-	/** If write request is given on the C2H direction
-	 *  OR, a read request given on non C2H direction
-	 *  then, its an invalid request, return error in this case
-	 */
-	if ((req->write && (descq->conf.q_type != Q_H2C))
-			|| (!req->write && (descq->conf.q_type != Q_C2H))) {
-		pr_err("%s: bad direction, %c.\n", descq->conf.name,
-				req->write ? 'W' : 'R');
-		return -EINVAL;
-	}
-	if (!req->fp_done) {
-		pr_err("%s: missing fp_done.\n", descq->conf.name);
-		return -EINVAL;
-	}
-
-	if (st_c2h) {
-		for (i = 0; i < count; i++) {
-			req = reqv[i];
-			cb = qdma_req_cb_get(req);
-			/** Reset the local cb request with 0's */
-			memset(cb, 0, QDMA_REQ_OPAQUE_SIZE);
-
-			rv = qdma_request_submit_st_c2h(xdev, descq, req);
-			if ((rv < 0) || (rv == req->count))
-				req->fp_done(req, rv, rv);
-		}
-
-		return 0;
-
-	} else {
-		struct pci_dev *pdev = xdev->conf.pdev;
-
-		for (i = 0; i < count; i++) {
-			req = reqv[i];
-			cb = qdma_req_cb_get(req);
-			/** Reset the local cb request with 0's */
-			memset(cb, 0, QDMA_REQ_OPAQUE_SIZE);
-
-			if (!req->dma_mapped) {
-				rv = sgl_map(pdev, req->sgl, req->sgcnt, dir);
-				if (unlikely(rv < 0)) {
-					pr_err("%s map sgl %u failed, %u.\n",
-						descq->conf.name,
-						req->sgcnt,
-						req->count);
-					req->fp_done(req, 0, rv);
-				}
-				cb->unmap_needed = 1;
-			}
-		}
-	}
-
-	lock_descq(descq);
-	/**  if the descq is already in online state*/
-	if (unlikely(descq->q_state != Q_STATE_ONLINE)) {
-		unlock_descq(descq);
-		pr_err("%s descq %s NOT online.\n", xdev->conf.name,
-				descq->conf.name);
-		return -EINVAL;
-	}
-
-	for (i = 0; i < count; i++) {
-		req = reqv[i];
-		cb = qdma_req_cb_get(req);
-
-		list_add_tail(&cb->list, &descq->work_list);
-	}
-	unlock_descq(descq);
-
-	qdma_descq_proc_sgt_request(descq);
-
-	return 0;
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * qdma_init_st_ctxt()       initialize the QDMA ST context
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param buflen	input buffer length
- * @param buf		error message buffer, can be NULL/0 (i.e., optional
- *
- * @return	0:	success
- * @return	<0:	error
- *****************************************************************************/
-int qdma_init_st_ctxt(unsigned long dev_hndl, char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv = 0;
-
-	/** make sure that input buffer is not empty, else return error */
-	if (!buf || !buflen) {
-		pr_err("invalid argument: buf=%p, buflen=%d\n", buf, buflen);
-		return -EINVAL;
-	}
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		snprintf(buf, buflen, "Invalid dev_hndl passed\n");
-		return -EINVAL;
-	}
-
-	if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-		((xdev->version_info.device_type == QDMA_DEVICE_VERSAL_CPM4) ||
-		(xdev->version_info.device_type == QDMA_DEVICE_VERSAL_CPM5))) {
-		if (xdev->hw.qdma_init_st_ctxt == NULL) {
-			pr_err("Err: Feature not supported\n");
-			snprintf(buf, buflen, "Err: Feature not supported\n");
-			return -EPERM;
-		}
-
-		rv = xdev->hw.qdma_init_st_ctxt((void *)dev_hndl);
-
-		if (rv == QDMA_SUCCESS) {
-			snprintf(buf, buflen,
-			"qdma%05x : Steaming Enabled successfully\n",
-			xdev->conf.bdf);
-			pr_info("Steaming Enabled successfully\n");
-		} else {
-			snprintf(buf, buflen,
-			"qdma%05x : Failed to Enable Steaming\n",
-			xdev->conf.bdf);
-			pr_info("Failed to Enable Steaming\n");
-			return -EINVAL;
-		}
-	} else {
-		snprintf(buf, buflen,
-			"qdma%05x : Steaming Enabled during Initialization\n",
-			xdev->conf.bdf);
-		pr_info("Steaming Enabled during Initialization\n");
-	}
-
-	return rv;
-}
-#endif
-
-/*****************************************************************************/
-/**
- * libqdma_init()       initialize the QDMA core library
- *
- * @param[in] num_threads - number of threads to be created each for request
- *  processing and writeback processing
- *
- * @return	0:	success
- * @return	<0:	error
- *****************************************************************************/
-int libqdma_init(unsigned int num_threads, void *debugfs_root)
-{
-
-	int ret;
-	/** Make sure that the size of qdma scatter gather request size
-	 *  is less than the QDMA_REQ_OPAQUE_SIZE
-	 *  If not, return error
-	 */
-	if (sizeof(struct qdma_sgt_req_cb) > QDMA_REQ_OPAQUE_SIZE) {
-		pr_err("dma req. opaque data size too big %lu > %lu.\n",
-			sizeof(struct qdma_sgt_req_cb), QDMA_REQ_OPAQUE_SIZE);
-		return -1;
-	}
-	if (sizeof(struct qdma_flq) > QDMA_FLQ_SIZE) {
-		pr_err("qdma flq data size too big %lu > %d",
-		       sizeof(struct qdma_flq), QDMA_FLQ_SIZE);
-		return -1;
-	}
-
-	/** Create the qdma threads */
-	ret = qdma_threads_create(num_threads);
-	if (ret < 0) {
-		pr_err("qdma_threads_create failed for num_thread=%d",
-			       num_threads);
-		return ret;
-	}
-#ifdef DEBUGFS
-
-	if (debugfs_root) {
-		qdma_debugfs_root = debugfs_root;
-		qdma_debufs_cleanup = false;
-		return 0;
-	}
-
-	ret =  qdma_debugfs_init(&qdma_debugfs_root);
-	if (ret < 0) {
-		pr_err("qdma_debugfs_init failed for num_thread=%d",
-				num_threads);
-		return ret;
-	}
-#endif
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * libqdma_exit()	cleanup the QDMA core library before exiting
- *
- * @return	none
- *****************************************************************************/
-void libqdma_exit(void)
-{
-#ifdef DEBUGFS
-	if (qdma_debufs_cleanup)
-		qdma_debugfs_exit(qdma_debugfs_root);
-#endif
-	/** Destroy the qdma threads */
-	qdma_threads_destroy();
-}
-
-#ifdef __LIBQDMA_MOD__
-/** for module support only */
-#include "version.h"
-
-static char version[] =
-	DRV_MODULE_DESC " " DRV_MODULE_NAME " v" DRV_MODULE_VERSION "\n";
-
-MODULE_AUTHOR("Xilinx, Inc.");
-MODULE_DESCRIPTION(DRV_MODULE_DESC);
-MODULE_VERSION(DRV_MODULE_VERSION);
-MODULE_LICENSE("Dual BSD/GPL");
-
-/*****************************************************************************/
-/**
- * libqdma_mod_init()	libqdma module initialization routine
- *
- * Returns: none
- *****************************************************************************/
-static int __init libqdma_mod_init(void)
-{
-	pr_info("%s", version);
-
-	/** invoke libqdma_init to initialize the libqdma library */
-	return libqdma_init();
-}
-
-/*****************************************************************************/
-/**
- * libqdma_mod_exit()       cleanup the QDMA core library before exiting
- *
- * Returns: none
- *****************************************************************************/
-static void __exit libqdma_mod_exit(void)
-{
-	/** invoke libqdma_exit to cleanup the libqdma library resources */
-	libqdma_exit();
-}
-
-module_init(libqdma_mod_init);
-module_exit(libqdma_mod_exit);
-#endif /* ifdef __LIBQDMA_MOD__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h b/QDMA/linux-kernel/driver/libqdma/libqdma_export.h
deleted file mode 100755
index fd60446..0000000
--- a/QDMA/linux-kernel/driver/libqdma/libqdma_export.h
+++ /dev/null
@@ -1,1698 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __LIBQDMA_EXPORT_API_H__
-#define __LIBQDMA_EXPORT_API_H__
-
-
-/**
- * @file libqdma_export.h
- *
- * Xilinx QDMA Library Interface Definitions
- *
- * Header file *libqdma_export.h* defines data structures and function
- * signatures exported by Xilinx QDMA (libqdma) Library.
- * libqdma is part of Xilinx QDMA Linux Driver.
- *
- * libqdma exports the configuration and control APIs for device and
- * queue management and data processing APIs. Configuration APIs
- * shall not be invoked in interrupt context by upper layers.
- */
-
-#include <linux/types.h>
-#include <linux/interrupt.h>
-#include "libqdma_config.h"
-#include "qdma_access_export.h"
-#include "qdma_compat.h"
-
-
-/** @defgroup libqdma_enums Enumerations
- */
-/** @defgroup libqdma_struct Data Structures
- */
-/**
- * @defgroup libqdma_defines Definitions
- * @{
- */
-
-/**
- * Invalid QDMA function number
- */
-#define QDMA_FUNC_ID_INVALID	0xFFFF
-
-/**
- * QDMA_DEV_NAME_MAXLEN - Maxinum length of the QDMA device name
- */
-#define QDMA_DEV_NAME_MAXLEN	32
-
-/**
- * DEVICE_VERSION_INFO_STR_LENGTH - QDMA HW version string array length,
- * change this if QDMA_HW_VERSION_STRING_LEN is changed in access code
- */
-#define DEVICE_VERSION_INFO_STR_LENGTH         (34)
-
-/**
- * QDMA_QUEUE_NAME_MAXLEN - Maximum queue name length
- */
-#define QDMA_QUEUE_NAME_MAXLEN	32
-
-/**
- * QDMA_QUEUE_IDX_INVALID - Invalid queue index
- */
-#define QDMA_QUEUE_IDX_INVALID	0xFFFF
-
-/**
- * QDMA_QUEUE_VEC_INVALID - Invalid MSIx vector index
- */
-#define QDMA_QUEUE_VEC_INVALID	0xFF
-
-/**
- * QDMA_REQ_OPAQUE_SIZE - Maximum request length.
- * QDMA_REQ_OPAQUE_SIZE varies according to kernel params.
- * Size of spinlock_t varies when spinlock debug params are enabled.
- */
-#define QDMA_REQ_OPAQUE_SIZE    (56 + sizeof(qdma_wait_queue))
-
-/**
- * QDMA_UDD_MAXLEN - Maximum length of the user defined data
- */
-#define QDMA_UDD_MAXLEN		32
-
-/** @} */
-
-
-/**
- * Per queue DMA AXI Interface option
- * @ingroup libqdma_enums
- */
-enum qdma_q_mode {
-	/** AXI Memory Mapped Mode */
-	QDMA_Q_MODE_MM,
-	/** AXI Stream Mode */
-	QDMA_Q_MODE_ST
-};
-
-/**
- * Direction of the queue
- * @ingroup libqdma_enums
- */
-enum qdma_q_dir {
-	/** host to card */
-	QDMA_Q_DIR_H2C,
-	/** card to host */
-	QDMA_Q_DIR_C2H
-};
-
-
-/**
- * PF/VF qdma driver modes
- *
- * QDMA PF/VF drivers can be loaded in one of these modes.
- * Mode options is exposed as a user configurable module parameter
- * @ingroup libqdma_enums
- *
- */
-enum qdma_drv_mode {
-	/**
-	 *  @param AUTO_MODE Auto mode is mix of Poll and Interrupt Aggregation
-	 *  mode. Driver polls for the write back status updates. Interrupt
-	 *  aggregation is used for processing the completion ring
-	 */
-	AUTO_MODE,
-	/**
-	 *  @param POLL_MODE In Poll Mode, Software polls for the write back
-	 *  completions (Status Descriptor Write Back)
-	 */
-	POLL_MODE,
-	/**
-	 *  @param DIRECT_INTR_MODE Direct Interrupt mode, each queue is
-	 *  assigned to one of the available interrupt vectors in a round robin
-	 *  fashion to service the requests. Interrupt is raised by the HW upon
-	 *  receiving the completions and software reads the completion status.
-	 */
-	DIRECT_INTR_MODE,
-	/**
-	 *  @param INDIRECT_INTR_MODE In Indirect Interrupt mode or Interrupt
-	 *  Aggregation mode, each vector has an associated Interrupt
-	 *  Aggregation Ring. The QID and status of queues requiring service
-	 *  are written into the Interrupt Aggregation Ring. When a PCIe MSI-X
-	 *  interrupt is received by the Host, the software reads the Interrupt
-	 *  Aggregation Ring to determine which queue needs service. Mapping of
-	 *  queues to vectors is programmable
-	 */
-	INDIRECT_INTR_MODE,
-	/**
-	 *  @param LEGACY_INTR_MODE Driver is inserted in legacy interrupt mode
-	 *  Software serves status updates upon receiving the legacy interrupt
-	 */
-	LEGACY_INTR_MODE
-};
-
-/**
- * Queue direction types
- * @ingroup libqdma_enums
- *
- */
-enum queue_type_t {
-	/** host to card */
-	Q_H2C,
-	/** card to host */
-	Q_C2H,
-	/** cmpt queue*/
-	Q_CMPT,
-	/** Both H2C and C2H directions*/
-	Q_H2C_C2H,
-};
-
-
-/**
- * Qdma interrupt ring size selection
- *
- * Each interrupt vector can be associated with 1 or more interrupt rings.
- * The software can choose 8 different interrupt ring sizes. The ring size
- * for each vector is programmed during interrupt context programming
- * @ingroup libqdma_enums
- *
- */
-enum intr_ring_size_sel {
-	/**  accommodates 512 entries */
-	INTR_RING_SZ_4KB = 0,
-	/**  accommodates 1024 entries */
-	INTR_RING_SZ_8KB,
-	/**  accommodates 1536 entries */
-	INTR_RING_SZ_12KB,
-	/**  accommodates 2048 entries */
-	INTR_RING_SZ_16KB,
-	/**  accommodates 2560 entries */
-	INTR_RING_SZ_20KB,
-	/**  accommodates 3072 entries */
-	INTR_RING_SZ_24KB,
-	/**  accommodates 3584 entries */
-	INTR_RING_SZ_28KB,
-	/**  accommodates 4096 entries */
-	INTR_RING_SZ_32KB,
-};
-
-/**
- * Qdma function states
- *
- * Each PF/VF device can be configured with 0 or more number of queues.
- * When the queue is not assigned to any function, function is in unfonfigured
- * state. Sysfs interface enables the users to configure the number of
- * queues to different functions. Upon adding the queues, function moves to
- * user configured state.
- * @ingroup libqdma_enums
- *
- */
-enum qdma_dev_qmax_state {
-	/** @param QMAX_CFG_UNCONFIGURED queue max not configured */
-	QMAX_CFG_UNCONFIGURED,
-	/**
-	 *  @param QMAX_CFG_INITIAL queue max configured with
-	 *  initial default values
-	 */
-	QMAX_CFG_INITIAL,
-	/**
-	 *  @param QMAX_CFG_USER queue max configured from
-	 *  sysfs as per user choice
-	 */
-	QMAX_CFG_USER,
-};
-
-/**
- * Descriptor sizes
- * @ingroup libqdma_enums
- *
- */
-enum cmpt_desc_sz_t {
-	/** completion size 8B */
-	CMPT_DESC_SZ_8B = 0,
-	/** completion size 16B */
-	CMPT_DESC_SZ_16B,
-	/** completion size 32B */
-	CMPT_DESC_SZ_32B,
-	/** completion size 64B */
-	CMPT_DESC_SZ_64B
-};
-
-/**
- * Descriptor sizes
- * @ingroup libqdma_enums
- *
- */
-enum desc_sz_t {
-	/**  descriptor size 8B */
-	DESC_SZ_8B = 0,
-	/**  descriptor size 16B */
-	DESC_SZ_16B,
-	/**  descriptor size 32B */
-	DESC_SZ_32B,
-	/**  descriptor size 64B */
-	DESC_SZ_64B
-};
-
-/**
- * Trigger modes
- * @ingroup libqdma_enums
- *
- */
-enum tigger_mode_t {
-	/**  disable trigger mode */
-	TRIG_MODE_DISABLE,
-	/**  any trigger mode */
-	TRIG_MODE_ANY,
-	/**  counter trigger mode */
-	TRIG_MODE_COUNTER,
-	/**  trigger mode of user choice */
-	TRIG_MODE_USER,
-	/**  timer trigger mode */
-	TRIG_MODE_TIMER,
-	/**  timer and counter combo trigger mode */
-	TRIG_MODE_COMBO,
-};
-
-/**
- * Queue can be in one of the following states
- * @ingroup libqdma_enums
- *
- */
-enum q_state_t {
-	/** @param Q_STATE_DISABLED Queue is not taken */
-	Q_STATE_DISABLED = 0,
-	/** @param Q_STATE_ENABLED Assigned/taken. Partial config is done */
-	Q_STATE_ENABLED,
-	/**
-	 *  @param Q_STATE_ONLINE Resource/context is initialized for the queue
-	 *  and is available for data consumption
-	 */
-	Q_STATE_ONLINE,
-};
-
-/**
- * Structure to hold the driver name and mode
- *
- * Mode can be set for each PF or VF group using module parameters
- * Refer enum qdma_drv_mode for different mode options
- * @ingroup libqdma_struct
- *
- */
-struct drv_mode_name {
-	/**  Mode of the function */
-	enum qdma_drv_mode drv_mode;
-	/**  Driver Name */
-	char name[20];
-};
-
-
-/**
- * Queue type
- *
- * Look up table for name of the queue type and enum
- * @ingroup libqdma_struct
- *
- */
-struct qdma_q_type {
-	/** Queue type name */
-	const char *name;
-	/** Queue type */
-	enum queue_type_t q_type;
-};
-
-
-/**
- * Completion entry format
- *
- * Completion Entry is user logic dependent
- * Current SW supported the following completion entry format
- * @ingroup libqdma_struct
- *
- */
-struct qdma_ul_cmpt_info {
-	union {
-		/**  Flag bits */
-		u8 fbits;
-		struct cmpl_flag {
-			/**  Format of the entry */
-			u8 format:1;
-			/**  Indicates the validity of the entry */
-			u8 color:1;
-			/**  Indicates the error status */
-			u8 err:1;
-			/**  Indicates the descriptor used status */
-			u8 desc_used:1;
-			/**  Indicates the end of transfer */
-			u8 eot:1;
-			/**  Filler bits */
-			u8 filler:3;
-		} f;
-	};
-	/**  Reserved filed added for structure alignment */
-	u8 rsvd;
-	/**  Length of the completion entry */
-	u16 len;
-	/**  Producer Index */
-	unsigned int pidx;
-	/**  Completion entry */
-	__be64 *entry;
-};
-
-/**
- * Externel structure definition mode_name_list
- *
- * @ingroup libqdma_struct
- */
-extern struct drv_mode_name mode_name_list[];
-
-/**
- * Externel structure definition q_type_list
- *
- * @ingroup libqdma_struct
- */
-extern struct qdma_q_type q_type_list[];
-
-/**
- * Forward declaration for struct pci_dev
- *
- * @ingroup libqdma_struct
- */
-struct pci_dev;
-
-/**
- * Defines the per-device qdma property.
- *
- * @note if any of the max requested is less than supported, the value will
- *       be updated
- * @ingroup libqdma_struct
- */
-struct qdma_dev_conf {
-	/** pointer to pci_dev */
-	struct pci_dev *pdev;
-	/** Maximum number of queue pairs per device */
-	u32 qsets_max;
-	/** Reserved */
-	unsigned short rsvd2;
-	/**
-	 * Indicates whether zero length DMA is allowed or not
-	 */
-	u8 zerolen_dma:1;
-	/**
-	 * Indicates whether the current pf
-	 *  is master_pf or not
-	 */
-	u8 master_pf:1;
-	/**
-	 * moderate interrupt generation
-	 */
-	u8 intr_moderation:1;
-	/** Reserved1 */
-	u8 rsvd1:5;
-	/**
-	 * Maximum number of virtual functions for
-	 * current physical function
-	 */
-	u8 vf_max;
-	/** Interrupt ring size */
-	u8 intr_rngsz;
-	/**
-	 * interrupt:
-	 * - MSI-X only
-	 * max of QDMA_DEV_MSIX_VEC_MAX per function, 32 in Versal
-	 * - 1 vector is reserved for user interrupt
-	 * - 1 vector is reserved mailbox
-	 * - 1 vector on pf0 is reserved for error interrupt
-	 * - the remaining vectors will be used for queues
-	 */
-
-	/**
-	 *  max. of vectors used for queues.
-	 *  libqdma update w/ actual #
-	 */
-	u16 msix_qvec_max;
-	/** Max user msix vectors */
-	u16 user_msix_qvec_max;
-	/** Max data msix vectors */
-	u16 data_msix_qvec_max;
-	/** upper layer data, i.e. callback data */
-	unsigned long uld;
-	/** qdma driver mode */
-	enum qdma_drv_mode qdma_drv_mode;
-	/**
-	 * an unique string to identify the dev.
-	 * current format: qdma[pf|vf][idx] filled in by libqdma
-	 */
-	char name[QDMA_DEV_NAME_MAXLEN];
-
-	/** dma config bar #, < 0 not present */
-	char bar_num_config;
-	/** AXI Master Lite(user bar) */
-	char bar_num_user;
-	/** AXI Bridge Master(bypass bar) */
-	char bar_num_bypass;
-	/** queue base for this function */
-	int qsets_base;
-	/** device index */
-	u32 bdf;
-	/** index of device in device list */
-	u32 idx;
-#ifndef __XRT__
-	/**
-	 *  @brief  user interrupt, if null, default libqdma handler is used
-	 *
-	 *  @param dev_hndl	Device Handler
-	 *  @param uld		upper layer data, i.e. callback data
-	 */
-	void (*fp_user_isr_handler)(unsigned long dev_hndl, unsigned long uld);
-#else
-	/**
-	 *  @brief  user interrupt, if null, default libqdma handler is used
-	 *
-	 *  @param dev_hndl	Device Handler
-	 *  @param irq_index    Interrupt index
-	 *  @param uld		upper layer data, i.e. callback data
-	 */
-	void (*fp_user_isr_handler)(unsigned long dev_hndl, int irq_index,
-			unsigned long uld);
-#endif
-	/**
-	 *  @brief  Q interrupt top,
-	 *  per-device addtional handling code
-	 *
-	 *  @param dev_hndl	Device Handler
-	 *  @param uld		upper layer data, i.e. callback data
-	 */
-	void (*fp_q_isr_top_dev)(unsigned long dev_hndl, unsigned long uld);
-
-	/**
-	 *  @brief  for freeing any resources in FLR process
-	 *
-	 *  @param dev_hndl	Device Handler
-	 */
-	void (*fp_flr_free_resource)(unsigned long dev_hndl);
-
-	/**
-	 *  root path for debugfs
-	 */
-	void *debugfs_dev_root;
-};
-
-/**
- * defines the per-device version information
- * @ingroup libqdma_struct
- *
- */
-struct qdma_version_info {
-	/** Version string */
-	char rtl_version_str[DEVICE_VERSION_INFO_STR_LENGTH];
-	/** Release string */
-	char vivado_release_str[DEVICE_VERSION_INFO_STR_LENGTH];
-	/** IP version string */
-	char ip_str[DEVICE_VERSION_INFO_STR_LENGTH];
-	/** Qdma device type string */
-	char device_type_str[DEVICE_VERSION_INFO_STR_LENGTH];
-};
-
-/**
- * global CSR configuration
- * @ingroup libqdma_struct
- *
- */
-struct global_csr_conf {
-	/** Descriptor ring size ie. queue depth */
-	unsigned int ring_sz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** C2H timer count  list */
-	unsigned int c2h_timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** C2H counter threshold list*/
-	unsigned int c2h_cnt_th[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** C2H buffer size list */
-	unsigned int c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** Writeback interval */
-	unsigned int wb_intvl;
-};
-
-
-/**
- * qdma scatter gather request
- * @ingroup libqdma_struct
- *
- */
-struct qdma_sw_sg {
-	/** pointer to next page */
-	struct qdma_sw_sg *next;
-	/** pointer to current page */
-	struct page *pg;
-	/** offset in current page */
-	unsigned int offset;
-	/** length of the page */
-	unsigned int len;
-	/** dma address of the allocated page */
-	dma_addr_t dma_addr;
-};
-
-/** struct qdma_request forward declaration
- * @ingroup libqdma_struct
- */
-struct qdma_request;
-
-/**
- * qdma configuration parameters
- *
- * qdma_queue_conf defines the per-dma Q property.
- * if any of the max requested is less than supported, the value will
- * be updated
- * @ingroup libqdma_struct
- *
- */
-struct qdma_queue_conf {
-	/**
-	 *  @param qidx 0xFFFF: libqdma choose the queue idx 0 ~
-	 *  (qdma_dev_conf.qsets_max - 1) the calling function choose the
-	 *   queue idx
-	 */
-	u32 qidx:24;
-	/** @note config flags: byte #1 */
-	/** Indicates the streaming mode */
-	u32 st:1;
-	/** queue_type_t */
-	u32 q_type:2;
-	/** SDx only: inter-kernel communication pipe */
-	u32 pipe:1;
-	/** poll or interrupt */
-	u32 irq_en:1;
-
-	/** descriptor ring	 */
-	/** global_csr_conf.ringsz[N] */
-	u32 desc_rng_sz_idx:4;
-
-	/** @note config flags: byte #2 */
-	/** writeback enable, disabled for ST C2H */
-	u8 wb_status_en:1;
-	/**  sw context.cmpl_status_acc_en */
-	u8 cmpl_status_acc_en:1;
-	/**  sw context.cmpl_stauts_pend_chk */
-	u8 cmpl_status_pend_chk:1;
-	/**  send descriptor to bypass out */
-	u8 desc_bypass:1;
-	/**  descriptor prefetch enable control */
-	u8 pfetch_en:1;
-	/**  sw context.frcd_en[32] */
-	u8 fetch_credit:1;
-	/**
-	 *  @param st_pkt_mode SDx only: ST packet mode
-	 *  (i.e., with TLAST to identify the packet boundary)
-	 */
-	u8 st_pkt_mode:1;
-
-	/** @note config flags: byte #3 */
-	/**  global_csr_conf.c2h_buf_sz[N] */
-	u8 c2h_buf_sz_idx:4;
-
-	/**  ST C2H Completion/Writeback ring */
-	/**  global_csr_conf.ringsz[N] */
-	u8 cmpl_rng_sz_idx:4;
-
-	/** @note config flags: byte #4 */
-	/**  C2H ST cmpt + immediate data, desc_sz_t */
-	u8 cmpl_desc_sz:2;
-	/**  enable status desc. for CMPT */
-	u8 cmpl_stat_en:1;
-	/**  C2H Completion entry user-defined data */
-	u8 cmpl_udd_en:1;
-	/**  global_csr_conf.c2h_timer_cnt[N] */
-	u8 cmpl_timer_idx:4;
-
-	/** @note config flags byte #5 */
-	/**  global_csr_conf.c2h_cnt_th[N] */
-	u8 cmpl_cnt_th_idx:4;
-	/**  tigger_mode_t */
-	u8 cmpl_trig_mode:3;
-	/**  enable interrupt for CMPT */
-	u8 cmpl_en_intr:1;
-
-	/** @note config flags byte #6 */
-	/**  SW Context desc size, desc_sz_t */
-	u8 sw_desc_sz:2;
-	/**  prefetch bypass en */
-	u8 pfetch_bypass:1;
-	/**  OVF_DIS C2H ST over flow disable */
-	u8 cmpl_ovf_chk_dis:1;
-	/**  Port ID */
-	u8 port_id:3;
-	/**  Address Translation */
-	u8 at:1;
-	/**  Adaptive rx counter threshold */
-	u8 adaptive_rx:1;
-	/**  optimize for latency */
-	u8 latency_optimize:1;
-	/**  Disable pidx initialiaztion for ST C2H */
-	u8 init_pidx_dis:1;
-
-	/**  MM Channel */
-	u8 mm_channel:1;
-
-	/**  user provided per-Q irq handler */
-	unsigned long quld;		/* set by user for per Q data */
-	/**  acummulate PIDX to batch packets */
-	u32 pidx_acc:8;
-	/**
-	 *  @brief  Q interrupt top, per-queue additional handling
-	 *  code for example, network rx napi_schedule(&Q->napi)
-	 *
-	 * @param  qhndl	Queue handle
-	 * @param  quld		Queue ID
-	 *
-	 */
-	void (*fp_descq_isr_top)(unsigned long qhndl, unsigned long quld);
-
-	/**
-	 * @brief optional rx packet handler:
-	 * called from irq BH (i.e.qdma_queue_service_bh())
-	 *
-	 * @param  qhndl	Queue handle
-	 * @param  quld		Queue ID
-	 * @param  len		Packet Length
-	 * @param  sgcnt	scatter gathher list count
-	 * @param  sgl		packet data in scatter-gather list
-	 * @param  udd		user defined data in the completion entry
-	 *
-	 * @note
-	 *		a. do NOT modify any field of sgl
-	 *		b. if zero copy, do a get_page() to prevent page freeing
-	 *		c. do loop through the sgl with sg->next and stop
-	 *		at sgcnt. the last sg may not have sg->next = NULL
-	 *
-	 * @returns
-	 *	0 to allow libqdma free/re-task the sgl
-	 *	< 0, libqdma will keep the packet for processing again
-	 *
-	 * @details
-	 * A single packet could contain:
-	 * in the case of c2h_udd_en = 1:
-	 *
-	 * udd only (udd valid, sgcnt = 0, sgl = NULL), or
-	 * udd + packet data in the case of c2h_udd_en = 0:
-	 * packet data (udd = NULL, sgcnt > 0 and sgl valid)
-	 *
-	 */
-	int (*fp_descq_c2h_packet)(unsigned long qhndl, unsigned long quld,
-				unsigned int len, unsigned int sgcnt,
-				struct qdma_sw_sg *sgl, void *udd);
-	/**
-	 * @brief fill the all the descriptors required for
-	 *                        transfer
-	 * @param q_hndl handle with which bypass module can request back
-	 *         info from libqdma
-	 *
-	 * @param q_mode mode in which q is initialized
-	 * @param q_dir direction in which q is initialized
-	 * @param sgcnt number of scatter gather entries for this request
-	 * @param sgl list of scatter gather entries
-	 *
-	 * @returns On calling this API, bypass module can request for
-	 * descriptor using qdma_q_desc_get and set up as many descriptors
-	 * as required for each scatter gather entry. If descriptors required
-	 * are not available, it can return the number of sgcnt addressed
-	 * till now and return <0 in case of any failure
-	 */
-	int (*fp_bypass_desc_fill)(void *q_hndl, enum qdma_q_mode q_mode,
-			enum qdma_q_dir, struct qdma_request *req);
-	/**
-	 * @brief parse cmpt entry in bypass mode
-	 *
-	 * @param cmpt_entry cmpt entry descriptor
-	 * @param cmpt_info parsed bypass related info from cmpt_entry
-	 *
-	 * @returns 0 for success
-	 */
-	int (*fp_proc_ul_cmpt_entry)(void *cmpt_entry,
-			struct qdma_ul_cmpt_info *cmpt_info);
-
-	/** @note Following fileds are filled by libqdma */
-	/**  name of the qdma device */
-	char name[QDMA_QUEUE_NAME_MAXLEN];
-	/**  ring size of the queue */
-	unsigned int rngsz;
-	/**  completion ring size of the queue */
-	unsigned int rngsz_cmpt;
-	/** C2H buffer size */
-	unsigned int c2h_bufsz;
-	/**  Ping Pong measurement */
-	u8 ping_pong_en:1;
-	/**  Keyhole Aperture Size */
-	u32 aperture_size;
-};
-
-/**
- * display queue state in a string buffer
- * @ingroup libqdma_struct
- *
- */
-struct qdma_q_state {
-	/**  current q state */
-	enum q_state_t qstate;
-	/**
-	 *   0xFFFF: libqdma choose the queue idx 0 ~
-	 *  (qdma_dev_conf.qsets_max - 1) the calling function choose the
-	 *   queue idx
-	 */
-	u32 qidx:24;
-	/**  Indicates the streaming mode */
-	u32 st:1;
-	/**  queue type */
-	enum queue_type_t q_type;
-};
-
-
-/**
- * qdma request for read or write
- * @ingroup libqdma_struct
- *
- */
-struct qdma_request {
-	/**  private to the dma driver, do NOT touch */
-	unsigned char opaque[QDMA_REQ_OPAQUE_SIZE];
-	/**
-	 *   filled in by the calling function
-	 *  for the calling function
-	 */
-	unsigned long uld_data;
-	/**  set fp_done for non-blocking mode */
-	int (*fp_done)(struct qdma_request *req, unsigned int bytes_done,
-			int err);
-	/**  timeout in mili-seconds, 0 - no timeout */
-	unsigned int timeout_ms;
-	/**  total data size */
-	unsigned int count;
-	/**  MM only, DDR/BRAM memory addr */
-	u64 ep_addr;
-	/**  flag to indicate if memcpy is required */
-	u8 no_memcpy:1;
-	/**  if write to the device */
-	u8 write:1;
-	/**  if sgt is already dma mapped */
-	u8 dma_mapped:1;
-	/** indicates end of transfer towards user kernel */
-	u8 h2c_eot:1;
-	/** state check disbaled in queue pkt API */
-	u8 check_qstate_disabled:1;
-	u8 _pad:3;
-	/** user defined data present */
-	u8 udd_len;
-	/**  number of scatter-gather entries < 64K */
-	unsigned int sgcnt;
-	/**  scatter-gather list of data bufs */
-	struct qdma_sw_sg *sgl;
-	/**  udd data */
-	u8 udd[QDMA_UDD_MAXLEN];
-};
-
-/**
- * Completion control
- * @ingroup libqdma_struct
- */
-struct qdma_cmpl_ctrl {
-	/** global_csr_conf.c2h_cnt_th[N] */
-	u8 cnt_th_idx:4;
-	/** global_csr_conf.c2h_timer_cnt[N] */
-	u8 timer_idx:4;
-	/** tigger_mode */
-	u8 trigger_mode:3;
-	/** enable status desc. for CMPT */
-	u8 en_stat_desc:1;
-	/** enable interrupt for CMPT */
-	u8 cmpl_en_intr:1;
-};
-
-
-/**
- * QDMA queue count
- * @ingroup libqdma_struct
- */
-struct qdma_queue_count {
-	/** H2C queue count */
-	u32 h2c_qcnt;
-	/** C2H queue count */
-	u32 c2h_qcnt;
-	/** CMPT queue count */
-	u32 cmpt_qcnt;
-};
-
-
-/**
- * Initializes the QDMA core library
- *
- * @param num_threads number of threads to be created each for request
- *  processing and writeback processing
- *
- * @param debugfs_root		root path for debugfs
- *
- * @returns			0:	success <0:	error
- *
- */
-int libqdma_init(unsigned int num_threads, void *debugfs_root);
-
-/*****************************************************************************/
-/**
- * cleanup the QDMA core library before exiting
- *
- *
- *****************************************************************************/
-void libqdma_exit(void);
-
-
-/*****************************************************************************/
-/**
- * legacy interrupt init
- *
- *****************************************************************************/
-void intr_legacy_init(void);
-
-/*****************************************************************************/
-/**
- * Read the pci bars and configure the fpga
- * This API should be called from probe()
- *
- * User interrupt will not be enabled until qdma_user_isr_enable() is called
- *
- * @param mod_name	the module name, used for request_irq
- * @param conf		device configuration
- * @param dev_hndl	an opaque handle for libqdma to identify the device
- *
- * @returns		0 in case of success and <0 in case of error
- *
- *****************************************************************************/
-int qdma_device_open(const char *mod_name, struct qdma_dev_conf *conf,
-				unsigned long *dev_hndl);
-
-/*****************************************************************************/
-/**
- * Prepare fpga for removal: disable all interrupts (users
- * and qdma) and release all resources.This API should be called from remove()
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl retured from qdma_device_open()
- *
- * @returns		0 in case of success and <0 in case of error
- *
- *****************************************************************************/
-int qdma_device_close(struct pci_dev *pdev, unsigned long dev_hndl);
-
-/*****************************************************************************/
-/**
- * Set the device in offline mode
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl retured from qdma_device_open()
- * @param reset		0/1 function level reset active or not
- *
- * @returns	0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_offline(struct pci_dev *pdev, unsigned long dev_hndl,
-						 int reset);
-
-/*****************************************************************************/
-/**
- * Set the device in online mode and re-initialze it
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl retured from qdma_device_open()
- * @param reset		0/1 function level reset active or not
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_online(struct pci_dev *pdev, unsigned long dev_hndl,
-					   int reset);
-
-/*****************************************************************************/
-/**
- * Start pre-flr processing
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_flr_quirk_set(struct pci_dev *pdev, unsigned long dev_hndl);
-
-/*****************************************************************************/
-/**
- * Check if pre-flr processing completed
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- *
- * @returns		0 for success <0 for error
- *
- *****************************************************************************/
-int qdma_device_flr_quirk_check(struct pci_dev *pdev, unsigned long dev_hndl);
-
-/*****************************************************************************/
-/**
- * Retrieve the current device configuration
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param conf		device configuration
- * @param buflen	input buffer length
- * @param buf		error message buffer, can be NULL/0 (i.e., optional)
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_config(unsigned long dev_hndl, struct qdma_dev_conf *conf,
-				char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Clear device statistics
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_clear_stats(unsigned long dev_hndl);
-
-/*****************************************************************************/
-/**
- * Get mm h2c packets processed
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param mmh2c_pkts	number of mm h2c packets processed
- *
- *@returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_mmh2c_pkts(unsigned long dev_hndl,
-			       unsigned long long *mmh2c_pkts);
-
-/*****************************************************************************/
-/**
- * Get mm c2h packets processed
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param mmc2h_pkts	number of mm c2h packets processed
- *
- *@returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_mmc2h_pkts(unsigned long dev_hndl,
-				unsigned long long *mmc2h_pkts);
-
-/*****************************************************************************/
-/**
- * Get st h2c packets processed
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param sth2c_pkts	number of st h2c packets processed
- *
- *@returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_sth2c_pkts(unsigned long dev_hndl,
-				unsigned long long *sth2c_pkts);
-
-/*****************************************************************************/
-/**
- * Get st c2h packets processed
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param stc2h_pkts	number of st c2h packets processed
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_stc2h_pkts(unsigned long dev_hndl,
-				unsigned long long *stc2h_pkts);
-
-/*****************************************************************************/
-/**
- *
- * Min latency (in CPU ticks) observed for
- * all packets to do H2C-C2H loopback.
- * Packet is transmitted in ST H2C direction, the
- * user-logic ST Traffic generator is configured to
- * loop back the packet in C2H direction. Timestamp
- * (in CPU ticks) of the H2C transmission
- * is embedded in H2C packet at time of PIDX
- * update, then timestamp of the loopback packet
- * is taken at time when data interrupt is hit,
- * diff is used to	measure	roundtrip latency.
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param min_lat	Minimum ping pong latency in CPU ticks. Divide with
- *			the nominal CPU freqeuncy to get latency in  NS.
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_ping_pong_min_lat(unsigned long dev_hndl,
-				unsigned long long *min_lat);
-
-/*****************************************************************************/
-/**
- * Max latency (in CPU ticks) observed for
- * all packets to do H2C-C2H loopback.
- * Packet is transmitted in ST H2C direction, the
- * user-logic ST Traffic generator is configured to
- * loop back the packet in C2H direction. Timestamp
- * (in CPU ticks) of the H2C transmission
- * is embedded in H2C packet at time of PIDX
- * update, then timestamp of the loopback packet
- * is taken at time when data interrupt is hit,
- * diff is used to	measure	roundtrip latency.
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param max_lat	Max ping pong latency in CPU ticks. Divide with the
- *			nominal CPU freqeuncy to get latency in  NS.
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_ping_pong_max_lat(unsigned long dev_hndl,
-				unsigned long long *max_lat);
-
-/*****************************************************************************/
-/**
- * Total latency (in CPU ticks) observed for
- * all packets to do H2C-C2H loopback.
- * Packet is transmitted in ST H2C direction, the
- * user-logic ST Traffic generator is configured to
- * loop back the packet in C2H direction. Timestamp
- * (in CPU ticks) of the H2C transmission
- * is embedded in H2C packet at time of PIDX
- * update, then timestamp of the loopback packet
- * is taken at time when data interrupt is hit,
- * diff is used to	measure	roundtrip latency.
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param lat_total	Total Ping Pong latency. Divide with total loopback
- *	C2H packets to get average ping pong latency. Divide further
- *	with the nominal CPU frequency to get the avg latency in NS.
- *
- * @returns	0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_get_ping_pong_tot_lat(unsigned long dev_hndl,
-				unsigned long long *lat_total);
-
-/*****************************************************************************/
-/**
- * Set the current device configuration
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param conf		device configuration to set
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_set_config(unsigned long dev_hndl, struct qdma_dev_conf *conf);
-
-/*****************************************************************************/
-/**
- * Configure sriov
- *
- * @param pdev		ptr to struct pci_dev
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param num_vfs	# of VFs to be instantiated
- *
- * @returns		0 for success and <0 for error
- *
- * configures sriov
- *****************************************************************************/
-int qdma_device_sriov_config(struct pci_dev *pdev, unsigned long dev_hndl,
-				int num_vfs);
-
-/*****************************************************************************/
-/**
- * Read dma config register
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param reg_addr	register address
- * @param value		pointer to hold the read value
- *
- * @returns		0 for success and <0 for error
- *
- * reads dma config register
- *
- *****************************************************************************/
-int qdma_device_read_config_register(unsigned long dev_hndl,
-					unsigned int reg_addr,
-					unsigned int *value);
-
-/*****************************************************************************/
-/**
- * Write dma config register
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param reg_addr	register address
- * @param val		register value to be writen
- *
- * @returns		0 for success and <0 for error
- * writes dma config register
- *
- *****************************************************************************/
-int qdma_device_write_config_register(unsigned long dev_hndl,
-					unsigned int reg_addr,
-					unsigned int val);
-
-/*****************************************************************************/
-/**
- * retrieve the capabilities of a device.
- *
- * @param dev_hndl:	handle returned from qdma_device_open()
- * @param dev_attr:	pointer to hold all the device attributes
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_device_capabilities_info(unsigned long dev_hndl,
-		struct qdma_dev_attributes *dev_attr);
-
-/*****************************************************************************/
-/**
- * Retrieve the RTL version , Vivado Release ID and Versal IP info
- *
- * @param dev_hndl		handle returned from qdma_device_open()
- * @param version_info		pointer to hold all the version details
- *
- * @returns			0 for success and <0 for error
- *
- * retrieves the RTL version , Vivado Release ID and Versal IP info
- *
- *****************************************************************************/
-int qdma_device_version_info(unsigned long dev_hndl,
-			     struct qdma_version_info *version_info);
-
-/*****************************************************************************/
-/**
- * Retrieve the software version
- *
- * @param software_version	A pointer to a null-terminated string
- * @param length			Length of the version name string
- *
- * @returns			0 for success and <0 for error
- *
- * retrieves the software version
- *
- *****************************************************************************/
-int qdma_software_version_info(char *software_version, int length);
-
-/*****************************************************************************/
-/**
- * Retrieve the global csr settings
- *
- * @param dev_hndl	handle returned from qdma_device_open()
- * @param index		Index from where the values needs to read
- * @param count		number of entries to be read
- * @param csr		data structures to hold the csr values
- *
- * @returns		0 for success and <0 for error
- *
- * retrieves the global csr settings
- *
- *****************************************************************************/
-int qdma_global_csr_get(unsigned long dev_hndl, u8 index, u8 count,
-		struct global_csr_conf *csr);
-
-/*****************************************************************************/
-/**
- * Add a queue
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param qconf		queue configuration parameters
- * @param qhndl		list of unsigned long values that are the opaque qhndl
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_add(unsigned long dev_hndl, struct qdma_queue_conf *qconf,
-			unsigned long *qhndl, char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Configure the queue with qcong parameters
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param qid		queue id
- * @param qconf		queue configuration parameters
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0: success <0: error
- *****************************************************************************/
-int qdma_queue_config(unsigned long dev_hndl, unsigned long qid,
-			struct qdma_queue_conf *qconf, char *buf, int buflen);
-/*****************************************************************************/
-/**
- * start a queue (i.e, online, ready for dma)
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		the opaque qhndl
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_start(unsigned long dev_hndl, unsigned long id,
-						char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Stop a queue (i.e., offline, NOT ready for dma)
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		the opaque qhndl
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_stop(unsigned long dev_hndl, unsigned long id, char *buf,
-				int buflen);
-
-/*****************************************************************************/
-/**
- * Get the state of the queue
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		the opaque qhndl
- * @param q_state	state of the queue
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_get_queue_state(unsigned long dev_hndl, unsigned long id,
-		struct qdma_q_state *q_state, char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * remove a queue
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		the opaque qhndl
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0 for success and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_remove(unsigned long dev_hndl, unsigned long id, char *buf,
-				int buflen);
-
-/*****************************************************************************/
-/**
- * retrieve the configuration of a queue
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id:		an opaque queue handle of type unsigned long
- * @param qconf		pointer to hold the qdma_queue_conf structure.
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		0: success <0: error
- *
- *****************************************************************************/
-int qdma_queue_get_config(unsigned long dev_hndl, unsigned long id,
-		struct qdma_queue_conf *qconf,
-		char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Display all configured queues in a string buffer
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param qidx		Queue index
- * @param num_q		Number of Queues to list
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		if optional message buffer used then strlen of buf,
- *	 otherwise QDMA_OPERATION_SUCCESSFUL and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_list(unsigned long dev_hndl, int qidx, int num_q, char *buf,
-		int buflen);
-
-/*****************************************************************************/
-/**
- * Display a config registers in a string buffer
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		success: if optional message buffer used
- *	then strlen of buf, otherwise 0 and <0: error
- *
- *****************************************************************************/
-int qdma_config_reg_dump(unsigned long dev_hndl, char *buf,
-		int buflen);
-
-/*****************************************************************************/
-/**
- * display a queue's state in a string buffer
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		an opaque queue handle of type unsigned long
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		if optional message buffer used then strlen of buf,
- *	 otherwise QDMA_OPERATION_SUCCESSFUL and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_dump(unsigned long dev_hndl, unsigned long id, char *buf,
-				int buflen);
-
-/*****************************************************************************/
-/**
- * Display a queue's descriptor ring from index start
- *					~ end in a string buffer
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		an opaque queue handle of type unsigned long
- * @param start		start index
- * @param end		end index
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		if optional message buffer used then strlen of buf,
- *	 otherwise QDMA_OPERATION_SUCCESSFUL and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_dump_desc(unsigned long dev_hndl, unsigned long id,
-				unsigned int start, unsigned int end, char *buf,
-				int buflen);
-
-/*****************************************************************************/
-/**
- * display a queue's descriptor ring from index start
- *					~ end in a string buffer
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		an opaque queue handle of type unsigned long
- * @param start		start index
- * @param end		end index
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		if optional message buffer used then strlen of buf,
- *	 otherwise QDMA_OPERATION_SUCCESSFUL and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_dump_cmpt(unsigned long dev_hndl, unsigned long id,
-				unsigned int start, unsigned int end, char *buf,
-				int buflen);
-
-#ifdef ERR_DEBUG
-/*****************************************************************************/
-/**
- * Induce the error
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		error id
- * @param err		error info
- * @param buflen	length of the input buffer
- * @param buf		message buffer
- *
- * @returns		if optional message buffer used then strlen of buf,
- *	 otherwise QDMA_OPERATION_SUCCESSFUL and <0 for error
- *
- *****************************************************************************/
-int qdma_queue_set_err_induction(unsigned long dev_hndl, unsigned long id,
-				 u32 err, char *buf, int buflen);
-#endif
-
-/*****************************************************************************/
-/**
- * Submit a scatter-gather list of data for dma
- * operation (for both read and write)
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue index
- * @param req		qdma request
- *
- * @returns		# of bytes transferred for success and  <0 for error
- *
- *****************************************************************************/
-ssize_t qdma_request_submit(unsigned long dev_hndl, unsigned long id,
-			struct qdma_request *req);
-
-/*****************************************************************************/
-/**
- * Submit a scatter-gather list of data for dma
- * operation (for both read and write)
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue index
- * @param count		number of requests
- * @param reqv		qdma request
- *
- * @returns		# of bytes transferred for success and  <0 for error
- *
- *****************************************************************************/
-ssize_t qdma_batch_request_submit(unsigned long dev_hndl, unsigned long id,
-			  unsigned long count, struct qdma_request **reqv);
-
-/*****************************************************************************/
-/**
- * Peek a receive (c2h) queue
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue hndl returned from qdma_queue_add()
- *
- * filled in by libqdma:
- * @param udd_cnt	# of udd received
- * @param pkt_cnt	# of packets received
- * @param data_len	# of bytes of packet data received
- *
- * @returns		# of packets received in the Q or <0 for error
- *****************************************************************************/
-int qdma_queue_c2h_peek(unsigned long dev_hndl, unsigned long id,
-			unsigned int *udd_cnt, unsigned int *pkt_cnt,
-			unsigned int *data_len);
-
-
-/*****************************************************************************/
-/**
- * Query of # of free descriptor
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue hndl returned from qdma_queue_add()
- *
- * @returns		# of available desc in the queue or <0 for error
- *****************************************************************************/
-int qdma_queue_avail_desc(unsigned long dev_hndl, unsigned long id);
-
-/** packet/streaming interfaces  */
-
-/*****************************************************************************/
-/**
- * Read/set the c2h Q's completion control
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		hndl returned from qdma_queue_add()
- * @param cctrl		completion control
- * @param set		read or set
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_queue_cmpl_ctrl(unsigned long dev_hndl, unsigned long id,
-				struct qdma_cmpl_ctrl *cctrl, bool set);
-
-/*****************************************************************************/
-/**
- * Read rcv'ed data (ST C2H dma operation)
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue hndl returned from qdma_queue_add()
- * @param req		pointer to the request data
- * @param cctrl		completion control, if no change is desired,
- *                      set it to NULL
- *
- * @returns		# of bytes transferred for success and  <0 for error
- *
- *****************************************************************************/
-int qdma_queue_packet_read(unsigned long dev_hndl, unsigned long id,
-		struct qdma_request *req, struct qdma_cmpl_ctrl *cctrl);
-
-/*****************************************************************************/
-/**
- * Submit data for ST H2C dma operation
- *
- * @param dev_hndl	hndl returned from qdma_device_open()
- * @param id		queue hndl returned from qdma_queue_add()
- * @param req		pointer to the list of packet data
- *
- * @returns		# of bytes transferred for success and  <0 for error
- *
- *****************************************************************************/
-int qdma_queue_packet_write(unsigned long dev_hndl, unsigned long id,
-			struct qdma_request *req);
-
-/*****************************************************************************/
-/**
- * Service the queue in the case of irq handler is registered by the user,
- * the user should call qdma_queue_service() in its interrupt handler to
- * service the queue
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		queue hndl returned from qdma_queue_add()
- * @param budget	ST C2H only, max number of completions to be processed.
- * @param c2h_upd_cmpl	flag to update the completion
- *
- * Return:	0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_queue_service(unsigned long dev_hndl, unsigned long id,
-			int budget, bool c2h_upd_cmpl);
-
-/*****************************************************************************/
-/**
- * Update queue pointers
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param qhndl		hndl returned from qdma_queue_add()
- *
- * Return:	0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_queue_update_pointers(unsigned long dev_hndl, unsigned long qhndl);
-
-/*****************************************************************************/
-/**
- * Display the interrupt ring info of a vector
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param vector_idx	vector number
- * @param start_idx	interrupt ring start idx
- * @param end_idx	interrupt ring end idx
- * @param buflen	length of the input buffer
- * @param buf		message bufferuffer
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_intr_ring_dump(unsigned long dev_hndl, unsigned int vector_idx,
-			int start_idx, int end_idx, char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Function to receive the user defined data
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		queue handle
- * @param buflen	length of the input buffer
- * @param buf		message bufferuffer
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_descq_get_cmpt_udd(unsigned long dev_hndl, unsigned long id,
-		char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Function to receive the completion data
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param id		queue handle
- * @param num_entries	I/O number of entries
- * @param cmpt_entries	List of completion entries
- * @param buflen	length of the input buffer
- * @param buf		message bufferuffer
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_descq_read_cmpt_data(unsigned long dev_hndl, unsigned long id,
-				u32 *num_entries,  u8 **cmpt_entries,
-				char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Function to receive the queue count
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param q_count	queue count
- * @param buflen	length of the input buffer
- * @param buf		message bufferuffer
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_get_queue_count(unsigned long dev_hndl,
-		struct qdma_queue_count *q_count,
-		char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * Function to print out detailed information for register value
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param reg_addr	register address
- * @param num_regs  num of registerse to be dumped
- * @param buf		message bufferuffer
- * @param buflen	length of the input buffer
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_config_reg_info_dump(unsigned long dev_hndl, uint32_t reg_addr,
-				uint32_t num_regs, char *buf, int buflen);
-
-#ifdef __QDMA_VF__
-/*****************************************************************************/
-/**
- * Call for VF to request qmax number of Qs
- *
- * @param dev_hndl	dev_hndl returned from qdma_device_open()
- * @param qmax		number of qs requested by vf
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_vf_qconf(unsigned long dev_hndl, int qmax);
-#endif
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * Clear ST context for tandem boot designs
- *
- * @param dev_hndl	dev_hndl retunred from qdma_device_open()
- * @param buflen	input buffer length
- * @param buf		error message buffer, can be NULL/0 (i.e., optional
- *
- * @returns		0 for success or <0 for error
- *
- *****************************************************************************/
-int qdma_init_st_ctxt(unsigned long dev_hndl, char *buf, int buflen);
-#endif
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
deleted file mode 100755
index 9bb152f..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.c
+++ /dev/null
@@ -1,6863 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "eqdma_cpm5_access.h"
-#include "eqdma_cpm5_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_cpm5_access.tmh"
-#endif
-
-#define UNUSED(x) (void)(x)
-
-/** EQDMA Context array size */
-#define EQDMA_CPM5_FMAP_NUM_WORDS                 2
-#define EQDMA_CPM5_SW_CONTEXT_NUM_WORDS           8
-#define EQDMA_CPM5_HW_CONTEXT_NUM_WORDS           2
-#define EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS       2
-#define EQDMA_CPM5_CR_CONTEXT_NUM_WORDS           1
-#define EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS         6
-#define EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS     4
-
-#define EQDMA_CPM5_VF_USER_BAR_ID                 2
-
-#define EQDMA_CPM5_REG_GROUP_1_START_ADDR	0x000
-#define EQDMA_CPM5_REG_GROUP_2_START_ADDR	0x804
-#define EQDMA_CPM5_REG_GROUP_3_START_ADDR	0xB00
-#define EQDMA_CPM5_REG_GROUP_4_START_ADDR	0x5014
-
-#define EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS 11
-#define EQDMA_CPM5_GLBL_TRQ_ERR_ALL_MASK		0XB3
-#define EQDMA_CPM5_GLBL_DSC_ERR_ALL_MASK		0X1F9037E
-#define EQDMA_CPM5_C2H_ERR_ALL_MASK				0X3F6DF
-#define EQDMA_CPM5_C2H_FATAL_ERR_ALL_MASK		0X1FDF1B
-#define EQDMA_CPM5_H2C_ERR_ALL_MASK				0X3F
-#define EQDMA_CPM5_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_CPM5_DBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_CPM5_MM_C2H_ERR_ALL_MASK			0X70000003
-#define EQDMA_CPM5_MM_H2C0_ERR_ALL_MASK		    0X3041013E
-
-/* H2C Throttle settings */
-#define EQDMA_CPM5_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA_CPM5_THROT_EN_DATA               1
-#define EQDMA_CPM5_THROT_EN_REQ                0
-#define EQDMA_CPM5_H2C_THROT_REQ_THRESH        0xC0
-
-
-/** Auxillary Bitmasks for fields spanning multiple words */
-#define EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK              GENMASK(21, 12)
-#define EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK              GENMASK(11, 0)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK    GENMASK_ULL(63, 53)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK    GENMASK_ULL(52, 21)
-#define EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK    GENMASK_ULL(20, 0)
-#define EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-#define EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-
-#define EQDMA_CPM5_OFFSET_GLBL2_PF_BARLITE_EXT		0x10C
-
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT		0x104
-#define QDMA_GLBL2_PF3_BAR_MAP_MASK				GENMASK(23, 18)
-#define QDMA_GLBL2_PF2_BAR_MAP_MASK				GENMASK(17, 12)
-#define QDMA_GLBL2_PF1_BAR_MAP_MASK				GENMASK(11, 6)
-#define QDMA_GLBL2_PF0_BAR_MAP_MASK				GENMASK(5, 0)
-
-#define EQDMA_CPM5_GLBL2_DBG_MODE_EN_MASK			BIT(4)
-#define EQDMA_CPM5_GLBL2_DESC_ENG_MODE_MASK			GENMASK(3, 2)
-#define EQDMA_CPM5_GLBL2_FLR_PRESENT_MASK			BIT(1)
-#define EQDMA_CPM5_GLBL2_MAILBOX_EN_MASK			BIT(0)
-
-#define EQDMA_CPM5_DEFAULT_C2H_INTR_TIMER_TICK     50
-#define PREFETCH_QUEUE_COUNT_STEP                   4
-#define EQDMA_CPM5_DEFAULT_CMPT_COAL_MAX_BUF_SZ    0x3F
-
-/* TODO: This is work around and this needs to be auto generated from ODS */
-/** EQDMA_CPM5_IND_REG_SEL_FMAP */
-#define EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK         GENMASK(12, 0)
-#define EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK             GENMASK(11, 0)
-
-static void eqdma_cpm5_hw_st_h2c_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_st_c2h_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_desc_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_trq_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_ram_sbe_err_process(void *dev_hndl);
-static void eqdma_cpm5_hw_ram_dbe_err_process(void *dev_hndl);
-static void eqdma_cpm5_mm_h2c0_err_process(void *dev_hndl);
-static void eqdma_cpm5_mm_c2h0_err_process(void *dev_hndl);
-
-static struct eqdma_cpm5_hw_err_info
-	eqdma_cpm5_err_info[EQDMA_CPM5_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		EQDMA_CPM5_DSC_ERR_POISON,
-		"Poison error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_BCNT,
-		"Unexpected Byte count in completion error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_BCNT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_ADDR,
-		"Address mismatch error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_TAG,
-		"Unexpected tag error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_FLR,
-		"FLR error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DMA,
-		"DMA engine error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_PORT_ID,
-		"Port ID Error",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PORT_ID_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	{
-		EQDMA_CPM5_DSC_ERR_ALL,
-		"All Descriptor errors",
-		EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_VF_ACCESS,
-		"VF attempted to access Global register space or Function map",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_TCP_CSR_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_QSPC_UNMAPPED,
-		"Access targeted unmapped register via queue space pathway",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_TCP_QSPC_TIMEOUT,
-		"Timeout on request to dma internal queue space register",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-	{
-		EQDMA_CPM5_TRQ_ERR_ALL,
-		"All TRQ errors",
-		EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_cpm5_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_SH_CMPT_DSC,
-		"A Shared CMPT queue has encountered a descriptor error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_AVL_RING_DSC,
-		"Available ring fetch returns descriptor with error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_UNC,
-		"multi-bit ecc error on c2h packet header",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_COR,
-		"single-bit ecc error on c2h packet header",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_WRB_PORT_ID_ERR,
-		"Port ID error",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		EQDMA_CPM5_C2H_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_HDR_ECC_UNC,
-		"RAM double bit fatal error",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_CPM5_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_cpm5_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-		"A non-EOP descriptor received",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_PAR,
-		"Internal data parity error",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_CPM5_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		EQDMA_CPM5_H2C_ERR_MASK_ADDR,
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		EQDMA_CPM5_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_cpm5_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Even RAM single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM 1 single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_1_ERR_ALL,
-		"All SBE Errors.",
-		EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR,
-		EQDMA_CPM5_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-{
-		EQDMA_CPM5_SBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slavle FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM single bit ECC error",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM single bit ECC error.",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_CPM5_SBE_ERR_ALL,
-		"All SBE errors",
-		EQDMA_CPM5_RAM_SBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_SBE_STS_A_ADDR,
-		EQDMA_CPM5_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_cpm5_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_1_ERR_ALL,
-		"All DBE errors",
-		EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR,
-		EQDMA_CPM5_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slave FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM double bit ECC error",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_CPM5_DBE_ERR_ALL,
-		"All DBE errors",
-		EQDMA_CPM5_RAM_DBE_MSK_A_ADDR,
-		EQDMA_CPM5_RAM_DBE_STS_A_ADDR,
-		EQDMA_CPM5_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_cpm5_hw_ram_dbe_err_process
-	},
-
-	/* MM C2H Engine 0 errors */
-	{
-		EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-		"MM C2H0 WR SLV Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_RD_SLR_ERR,
-		"MM C2H0 RD SLV Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_WR_FLR_ERR,
-		"MM C2H0 WR FLR Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_UR_ERR,
-		"MM C2H0 Unsupported Request Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_WR_UC_RAM_ERR,
-		"MM C2H0 Write Uncorrectable RAM Error",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_mm_c2h0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_C2H_ERR_ALL,
-		"All MM C2H Errors",
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		EQDMA_CPM5_MM_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-	/* MM H2C Engine 0 Errors */
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR,
-		"MM H2C0 Read cmpt header pison Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_UR_CA_ERR,
-		"MM H2C0 Read cmpt unsupported request Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_BYTE_ERR,
-		"MM H2C0 Read cmpt hdr byte cnt Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_PARAM_ERR,
-		"MM H2C0 Read cmpt hdr param mismatch Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_HDR_ADR_ERR,
-		"MM H2C0 Read cmpt hdr address mismatch Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_FLR_ERR,
-		"MM H2C0 Read flr Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_DAT_POISON_ERR,
-		"MM H2C0 Read data poison Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_RD_RQ_DIS_ERR,
-		"MM H2C0 Read request disable Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_WR_DEC_ERR,
-		"MM H2C0 Write desc Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_WR_SLV_ERR,
-		"MM H2C0 Write slv Error",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_mm_h2c0_err_process
-	},
-	{
-		EQDMA_CPM5_MM_H2C0_ERR_ALL,
-		"All MM H2C Errors",
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		EQDMA_CPM5_MM_H2C0_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_cpm5_hw_desc_err_process
-	},
-};
-
-
-static int32_t
-all_eqdma_cpm5_hw_errs[EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	EQDMA_CPM5_DSC_ERR_ALL,
-	EQDMA_CPM5_TRQ_ERR_ALL,
-	EQDMA_CPM5_ST_C2H_ERR_ALL,
-	EQDMA_CPM5_ST_FATAL_ERR_ALL,
-	EQDMA_CPM5_ST_H2C_ERR_ALL,
-	EQDMA_CPM5_SBE_1_ERR_ALL,
-	EQDMA_CPM5_SBE_ERR_ALL,
-	EQDMA_CPM5_DBE_1_ERR_ALL,
-	EQDMA_CPM5_DBE_ERR_ALL,
-	EQDMA_CPM5_MM_C2H_ERR_ALL,
-	EQDMA_CPM5_MM_H2C0_ERR_ALL
-};
-
-static struct qctx_entry eqdma_cpm5_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Interrupt with VF", 0},
-	{"Pack descriptor output interface", 0},
-	{"Irq Bypass", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Addr High (L)[37:6]", 0},
-	{"Base Addr High(H)[63:38]", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Insterrupt with VF", 0},
-	{"c2h Direction", 0},
-	{"Base Addr Low[5:2]", 0},
-	{"Shared Completion Queue", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Variable Descriptor", 0},
-	{"Number of descriptors prefetched", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-	{"Function Id", 0},
-};
-
-static struct qctx_entry eqdma_cpm5_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static int eqdma_cpm5_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_cpm5_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_cpm5_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int eqdma_cpm5_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t eqdma_cpm5_get_config_num_regs(void)
-{
-	return eqdma_cpm5_config_num_regs_get();
-}
-
-struct xreg_info *eqdma_cpm5_get_config_regs(void)
-{
-	return eqdma_cpm5_config_regs_get();
-}
-
-uint32_t eqdma_cpm5_reg_dump_buf_len(void)
-{
-	uint32_t length = (eqdma_cpm5_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int eqdma_cpm5_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int len = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-			sizeof(eqdma_cpm5_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(eqdma_cpm5_sw_ctxt_entries) /
-				sizeof(eqdma_cpm5_sw_ctxt_entries[0])) + 1)
-				* REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_hw_ctxt_entries) /
-			sizeof(eqdma_cpm5_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_credit_ctxt_entries) /
-			sizeof(eqdma_cpm5_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_cpm5_fmap_ctxt_entries) /
-			sizeof(eqdma_cpm5_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-				sizeof(eqdma_cpm5_cmpt_ctxt_entries[0])) +
-						1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries)
-				/
-				sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries[0]
-					)) + 1) * REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return 0;
-}
-
-static uint32_t eqdma_cpm5_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(eqdma_cpm5_ind_intr_ctxt_entries) /
-			sizeof(eqdma_cpm5_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * eqdma_cpm5_set_perf_opt() - Helper function to set the
- *				cpm5 perf optimizations.
- *
- */
-static void eqdma_cpm5_set_perf_opt(void *dev_hndl)
-{
-	uint32_t reg_val = 0;
-	uint32_t pftch_cache_depth = 0;
-	uint32_t pftch_qcnt = 0;
-	uint32_t pftch_evnt_qcnt_th = 0;
-	uint32_t crdt_coal_fifo_th = 0;
-	uint32_t crdt_coal_crdt_th = 0;
-
-	/* C2H interrupt timer tick */
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_INT_TIMER_TICK_ADDR,
-		EQDMA_CPM5_DEFAULT_C2H_INTR_TIMER_TICK);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR    0xBE0
- * #define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK     GENMASK(23, 16)
- * #define C2H_PFCH_CACHE_DEPTH_MASK               GENMASK(7, 0)
- */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR);
-	pftch_cache_depth = FIELD_GET(C2H_PFCH_CACHE_DEPTH_MASK, reg_val);
-
-/*
- * #define EQDMA_CPM5_GLBL_DSC_CFG_ADDR      0x250
- * #define GLBL_DSC_CFG_RSVD_1_MASK          GENMASK(31, 10)
- * #define GLBL_DSC_CFG_UNC_OVR_COR_MASK     BIT(9)
- * #define GLBL_DSC_CFG_CTXT_FER_DIS_MASK    BIT(8)
- * #define GLBL_DSC_CFG_RSVD_2_MASK          GENMASK(7, 6)
- * #define GLBL_DSC_CFG_MAXFETCH_MASK        GENMASK(5, 3)
- * #define GLBL_DSC_CFG_WB_ACC_INT_MASK      GENMASK(2, 0)
- */
-#define GLBL_DSC_CFG_RSVD_1_DFLT        0
-#define GLBL_DSC_CFG_UNC_OVR_COR_DFLT   0
-#define GLBL_DSC_CFG_CTXT_FER_DIS_DFLT  0
-#define GLBL_DSC_CFG_RSVD_2_DFLT        0
-/* =IF(Internal mode, 2,5) */
-#define GLBL_DSC_CFG_MAXFETCH           2
-#define GLBL_DSC_CFG_WB_ACC_INT         5
-	reg_val =
-		FIELD_SET(GLBL_DSC_CFG_RSVD_1_MASK, GLBL_DSC_CFG_RSVD_1_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_UNC_OVR_COR_MASK,
-					GLBL_DSC_CFG_UNC_OVR_COR_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_CTXT_FER_DIS_MASK,
-					GLBL_DSC_CFG_CTXT_FER_DIS_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_RSVD_2_MASK, GLBL_DSC_CFG_RSVD_2_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-					GLBL_DSC_CFG_MAXFETCH) |
-		FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					GLBL_DSC_CFG_WB_ACC_INT);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-		__func__, EQDMA_CPM5_GLBL_DSC_CFG_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR               0x4C
- * #define CFG_BLK_MISC_CTL_RSVD_1_MASK                   GENMASK(31, 24)
- * #define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK               BIT(23)
- * #define CFG_BLK_MISC_CTL_RSVD_2_MASK                   BIT(22)
- * #define CFG_BLK_MISC_CTL_AXI_WBK_MASK                  BIT(21)
- * #define CFG_BLK_MISC_CTL_AXI_DSC_MASK                  BIT(20)
- * #define CFG_BLK_MISC_CTL_NUM_TAG_MASK                  GENMASK(19, 8)
- * #define CFG_BLK_MISC_CTL_RSVD_3_MASK                   GENMASK(7, 5)
- * #define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK   GENMASK(4, 0)
- */
-#define CFG_BLK_MISC_CTL_RSVD_1_DFLT             0
-#define CFG_BLK_MISC_CTL_RSVD_2_DFLT             0
-#define CFG_BLK_MISC_CTL_AXI_WBK_DFLT            0
-#define CFG_BLK_MISC_CTL_AXI_DSC_DFLT            0
-/* IF(10bit tag enabled, 512,256) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT            1
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT            512
-#else
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT            0
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT            256
-#endif
-#define CFG_BLK_MISC_CTL_RSVD_3_DFLT             0
-#define EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL   31
-	reg_val =
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_1_MASK,
-					CFG_BLK_MISC_CTL_RSVD_1_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_10B_TAG_EN_MASK,
-					CFG_BLK_MISC_CTL_10B_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_2_MASK,
-					CFG_BLK_MISC_CTL_RSVD_2_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_WBK_MASK,
-					CFG_BLK_MISC_CTL_AXI_WBK_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_DSC_MASK,
-					CFG_BLK_MISC_CTL_AXI_DSC_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_NUM_TAG_MASK,
-					CFG_BLK_MISC_CTL_NUM_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_3_MASK,
-					CFG_BLK_MISC_CTL_RSVD_3_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK,
-					EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_ADDR        0xB08
- * #define C2H_PFCH_CFG_EVTFL_TH_MASK          GENMASK(31, 16)
- * #define C2H_PFCH_CFG_FL_TH_MASK             GENMASK(15, 0)
- */
-#define EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH         256
-#define C2H_PFCH_CFG_FL_TH_DFLT                256
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_EVTFL_TH_MASK,
-					EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH) |
-		FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-					C2H_PFCH_CFG_FL_TH_DFLT);
-
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR       0xA80
- * #define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK      GENMASK(31, 16)
- * #define C2H_PFCH_CFG_1_QCNT_MASK             GENMASK(15, 0)
- */
-	pftch_qcnt = pftch_cache_depth - PREFETCH_QUEUE_COUNT_STEP;
-	pftch_evnt_qcnt_th = pftch_qcnt - PREFETCH_QUEUE_COUNT_STEP;
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK, pftch_evnt_qcnt_th) |
-		FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK, pftch_qcnt);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR          0xA84
- * #define C2H_PFCH_CFG_2_FENCE_MASK               BIT(31)
- * #define C2H_PFCH_CFG_2_RSVD_MASK                GENMASK(30, 29)
- * #define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK    BIT(28)
- * #define C2H_PFCH_CFG_2_LL_SZ_TH_MASK            GENMASK(27, 12)
- * #define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK        GENMASK(11, 6)
- * #define C2H_PFCH_CFG_2_NUM_MASK                 GENMASK(5, 0)
- */
-#define C2H_PFCH_CFG_2_FENCE_EN                1
-#define C2H_PFCH_CFG_2_RSVD_DFLT               0
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT   0
-#define C2H_PFCH_CFG_2_LL_SZ_TH_DFLT           1024
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM            15
-#define C2H_PFCH_CFG_2_NUM_PFCH_DFLT           16
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK,
-				C2H_PFCH_CFG_2_FENCE_EN) |
-		FIELD_SET(C2H_PFCH_CFG_2_RSVD_MASK,
-				C2H_PFCH_CFG_2_RSVD_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK,
-				C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_LL_SZ_TH_MASK,
-				C2H_PFCH_CFG_2_LL_SZ_TH_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK,
-				C2H_PFCH_CFG_2_VAR_DESC_NUM) |
-		FIELD_SET(C2H_PFCH_CFG_2_NUM_MASK,
-				C2H_PFCH_CFG_2_NUM_PFCH_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR, reg_val);
-
-/* Registers Not Applicable for CPM5
- * #define EQDMA_PFCH_CFG_3_ADDR           0x147C
- * #define EQDMA_PFCH_CFG_4_ADDR           0x1484
- */
-
-/*
- * #define EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR     0x1400
- * #define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK         GENMASK(31, 18)
- * #define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK    GENMASK(17, 10)
- * #define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK       GENMASK(9, 0)4
- */
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT            0
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT       16
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH               16
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_TIMER_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR     0x1404
- * #define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK         GENMASK(31, 24)
- * #define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK        GENMASK(23, 16)
- * #define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK      GENMASK(15, 11)
- * #define C2H_CRDT_COAL_CFG_2_NT_TH_MASK          GENMASK(10, 0)
- */
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT            0
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT         0
-#define C2H_CRDT_COAL_CFG_2_CRDT_CNT_TH_DFLT       156
-	crdt_coal_fifo_th = pftch_cache_depth - 8;
-	crdt_coal_crdt_th = C2H_CRDT_COAL_CFG_2_CRDT_CNT_TH_DFLT;
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK,
-				crdt_coal_fifo_th) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RESERVED1_MASK,
-				C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_NT_TH_MASK,
-				crdt_coal_crdt_th);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR      0xE24
- * #define H2C_REQ_THROT_PCIE_EN_REQ_MASK          BIT(31)
- * #define H2C_REQ_THROT_PCIE_MASK                 GENMASK(30, 19)
- * #define H2C_REQ_THROT_PCIE_EN_DATA_MASK         BIT(18)
- * #define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK     GENMASK(17, 0)
- */
-#define H2C_REQ_THROT_PCIE_EN_REQ    1
-/* IF(10bit tag enabled, 512-64, 192) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define H2C_REQ_THROT_PCIE_REQ_TH    448
-#else
-#define H2C_REQ_THROT_PCIE_REQ_TH    192
-#endif
-#define H2C_REQ_THROT_PCIE_EN_DATA   1
-#define H2C_REQ_THROT_PCIE_DATA_TH   57344
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-					H2C_REQ_THROT_PCIE_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-					H2C_REQ_THROT_PCIE_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-					H2C_REQ_THROT_PCIE_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-					H2C_REQ_THROT_PCIE_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-
-/*
- * #define EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR    0xE2C
- * #define H2C_REQ_THROT_AXIMM_EN_REQ_MASK        BIT(31)
- * #define H2C_REQ_THROT_AXIMM_MASK               GENMASK(30, 19)
- * #define H2C_REQ_THROT_AXIMM_EN_DATA_MASK       BIT(18)
- * #define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK   GENMASK(17, 0)
- */
-#define H2C_REQ_THROT_AXIMM_EN_REQ      0
-/* IF(10bit tag en=1, 512-64, 192) */
-#ifdef EQDMA_CPM5_10BIT_TAG_ENABLE
-#define H2C_REQ_THROT_AXIMM_REQ_TH      448
-#else
-#define H2C_REQ_THROT_AXIMM_REQ_TH      192
-#endif
-#define H2C_REQ_THROT_AXIMM_EN_DATA     0
-#define H2C_REQ_THROT_AXIMM_DATA_TH     65536
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_REQ_MASK,
-				H2C_REQ_THROT_AXIMM_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_MASK,
-				H2C_REQ_THROT_AXIMM_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_DATA_MASK,
-				H2C_REQ_THROT_AXIMM_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK,
-				H2C_REQ_THROT_AXIMM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-
-#define EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR    0x12EC
-#define H2C_MM_DATA_THROTTLE_RSVD_1_MASK        GENMASK(31, 17)
-#define H2C_MM_DATA_THROTTLE_DAT_EN_MASK        BIT(16)
-#define H2C_MM_DATA_THROTTLE_DAT_MASK           GENMASK(15, 0)
-#define H2C_MM_DATA_THROTTLE_RSVD_1_DFLT        0
-#define H2C_MM_DATA_TH_EN                       1
-#define H2C_MM_DATA_TH                          57344
-	reg_val =
-		FIELD_SET(H2C_MM_DATA_THROTTLE_RSVD_1_MASK,
-					H2C_MM_DATA_THROTTLE_RSVD_1_DFLT) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_EN_MASK, H2C_MM_DATA_TH_EN) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_MASK, H2C_MM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-		__func__, EQDMA_CPM5_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-}
-
-/*
- * eqdma_cpm5_indirect_reg_invalidate() - helper function to invalidate
- * indirect context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = EQDMA_CPM5_IND_CTXT_DATA_ADDR;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_cpm5_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = EQDMA_CPM5_IND_CTXT_DATA_ADDR;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-		 index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_CPM5_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_cpm5_fill_sw_ctxt() - Helper function to fill sw context into
- * structure
- *
- */
-static void eqdma_cpm5_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->pidx;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_arm;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->fnc_id;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->qen;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->frcd_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbi_chk;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbi_intvl_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->at;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->fetch_max;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->rngsz_idx;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->desc_sz;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->bypass;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->mm_chn;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->wbk_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_en;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->port_id;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_no_last;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->err;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->err_wb_sent;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_req;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->mrkr_dis;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->is_mm;
-	eqdma_cpm5_sw_ctxt_entries[i++].value =
-		sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	eqdma_cpm5_sw_ctxt_entries[i++].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->vec;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->intr_aggr;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->dis_intr_on_vf;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->pack_byp_out;
-	eqdma_cpm5_sw_ctxt_entries[i++].value = sw_ctxt->irq_byp;
-
-}
-
-/*
- * eqdma_cpm5_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void eqdma_cpm5_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt
-		*cmpt_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_stat_desc;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_int;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->trig_mode;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->fnc_id;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->counter_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->in_st;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->color;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ringsz_idx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->desc_sz;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->pidx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->cidx;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->valid;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->err;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->user_trig_pend;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_running;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->full_upd;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ovf_chk_dis;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->at;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->vec;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->int_aggr;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dis_intr_on_vf;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dir_c2h;
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cpm5_cmpt_ctxt_entries[i++].value = cmpt_ctxt->sh_cmpt;
-}
-
-/*
- * eqdma_cpm5_fill_hw_ctxt() - Helper function to fill HW context into
- * structure
- *
- */
-static void eqdma_cpm5_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->cidx;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->crd_use;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->dsc_pend;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->idl_stp_b;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->evt_pnd;
-	eqdma_cpm5_hw_ctxt_entries[i++].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * eqdma_cpm5_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_credit_ctxt(struct qdma_descq_credit_ctxt
-		*cr_ctxt)
-{
-	eqdma_cpm5_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * eqdma_cpm5_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt
-		*pfetch_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bypass;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->bufsz_idx;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->port_id;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->var_desc;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value =
-		pfetch_ctxt->num_pftch;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->err;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch_en;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->sw_crdt;
-	eqdma_cpm5_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->valid;
-}
-
-/*
- * eqdma_cpm5_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	eqdma_cpm5_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	eqdma_cpm5_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * eqdma_cpm5_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void eqdma_cpm5_fill_intr_ctxt(struct qdma_indirect_intr_ctxt
-		*intr_ctxt)
-{
-	int i = 0;
-
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->valid;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->vec;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->int_st;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->color;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->page_size;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->pidx;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->at;
-	eqdma_cpm5_ind_intr_ctxt_entries[i++].value = intr_ctxt->func_id;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_set_default_global_csr() - function to set the global CSR
- * register to default values. The value can be modified later by using the
- *  set/get csr functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				0, QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR,
-				reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				0, QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* C2h Completion Coalesce Configuration */
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-				DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-				DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK,
-				EQDMA_CPM5_DEFAULT_CMPT_COAL_MAX_BUF_SZ);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_C2H_WRB_COAL_CFG_ADDR,
-				reg_val);
-	}
-
-	eqdma_cpm5_set_perf_opt(dev_hndl);
-	return QDMA_SUCCESS;
-}
-
-/*
- * dump_eqdma_cpm5_context() - Helper function to dump queue context into
- * string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_cpm5_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		eqdma_cpm5_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		eqdma_cpm5_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_cpm5_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_cpm5_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		eqdma_cpm5_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_cpm5_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_cpm5_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			eqdma_cpm5_fill_pfetch_ctxt(
-					&queue_context->pfetch_ctxt);
-			eqdma_cpm5_fill_cmpt_ctxt(
-					&queue_context->cmpt_ctxt);
-		}
-	}
-
-	eqdma_cpm5_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__, rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(eqdma_cpm5_sw_ctxt_entries) /
-				sizeof((eqdma_cpm5_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[i].name,
-				eqdma_cpm5_sw_ctxt_entries[i].value,
-				eqdma_cpm5_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(eqdma_cpm5_hw_ctxt_entries) /
-				sizeof((eqdma_cpm5_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_hw_ctxt_entries[i].name,
-				eqdma_cpm5_hw_ctxt_entries[i].value,
-				eqdma_cpm5_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(eqdma_cpm5_credit_ctxt_entries) /
-			sizeof((eqdma_cpm5_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_credit_ctxt_entries[i].name,
-				eqdma_cpm5_credit_ctxt_entries[i].value,
-				eqdma_cpm5_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(eqdma_cpm5_cmpt_ctxt_entries) /
-				sizeof((eqdma_cpm5_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[i].name,
-				eqdma_cpm5_cmpt_ctxt_entries[i].value,
-				eqdma_cpm5_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries) /
-			sizeof(eqdma_cpm5_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].name,
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].value,
-				eqdma_cpm5_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(eqdma_cpm5_fmap_ctxt_entries) /
-		sizeof(eqdma_cpm5_fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_cpm5_fmap_ctxt_entries[i].name,
-			eqdma_cpm5_fmap_ctxt_entries[i].value,
-			eqdma_cpm5_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * dump_eqdma_cpm5_intr_context() - Helper function to dump interrupt
- * context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_cpm5_intr_context(struct qdma_indirect_intr_ctxt
-		*intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	eqdma_cpm5_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(eqdma_cpm5_ind_intr_ctxt_entries) /
-			sizeof((eqdma_cpm5_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_cpm5_ind_intr_ctxt_entries[i].name,
-			eqdma_cpm5_ind_intr_ctxt_entries[i].value,
-			eqdma_cpm5_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_version() - Function to get the eqdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_CPM5_OFFSET_VF_VERSION :
-			EQDMA_CPM5_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[EQDMA_CPM5_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	virtio_desc_base_l = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_m = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_h = (uint32_t)FIELD_GET(
-		EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-		ctxt->virtio_dsc_base);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_FNC_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-				  ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->intr_aggr) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				ctxt->virtio_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				ctxt->pack_byp_out) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK, ctxt->irq_byp) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				virtio_desc_base_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				virtio_desc_base_m);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				virtio_desc_base_h);
-
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[EQDMA_CPM5_SW_CONTEXT_NUM_WORDS] = {0};
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-				sw_ctxt[0]));
-	ctxt->fnc_id = FIELD_GET(SW_IND_CTXT_DATA_W0_FNC_MASK, sw_ctxt[0]);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(SW_IND_CTXT_DATA_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		(uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK,
-				sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-				sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-				sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-				sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-				sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-				sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(SW_IND_CTXT_DATA_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr = (uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK,
-			sw_ctxt[4]));
-	ctxt->dis_intr_on_vf =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				sw_ctxt[4]));
-	ctxt->virtio_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				sw_ctxt[4]));
-	ctxt->pack_byp_out =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				sw_ctxt[4]));
-	ctxt->irq_byp =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK,
-				sw_ctxt[4]));
-	ctxt->host_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK,
-				sw_ctxt[4]));
-	pasid_l = FIELD_GET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, sw_ctxt[4]);
-
-	pasid_h = FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, sw_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK,
-			sw_ctxt[5]);
-	virtio_desc_base_l =
-		FIELD_GET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				sw_ctxt[5]);
-	virtio_desc_base_m =
-		FIELD_GET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				sw_ctxt[6]);
-
-	virtio_desc_base_h =
-		FIELD_GET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				sw_ctxt[6]);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	ctxt->virtio_dsc_base =
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-					(uint64_t)virtio_desc_base_l) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-					(uint64_t)virtio_desc_base_m) |
-		FIELD_SET(EQDMA_CPM5_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-					(uint64_t)virtio_desc_base_h);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_sw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_sw_context_write(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_sw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_write() - create prefetch context and program
- * it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK,
-				ctxt->num_pftch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				ctxt->var_desc) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-			pfetch_ctxt[0]);
-	ctxt->num_pftch = (uint16_t) FIELD_GET(
-			PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->var_desc = (uint8_t)
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_pfetch_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_pfetch_context_read(dev_hndl, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_pfetch_context_write(dev_hndl, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_pfetch_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_write() - create completion context and program
- * it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr4_high_l, baddr4_high_h,
-			baddr4_low, pidx_l, pidx_h, pasid_l, pasid_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr4_high_l =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-			ctxt->bs_addr);
-	baddr4_high_h =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-			ctxt->bs_addr);
-	baddr4_low =
-		(uint32_t)FIELD_GET(EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK,
-				ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK,
-				ctxt->pasid);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK, ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK, baddr4_high_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK, baddr4_high_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, ctxt->full_upd) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->int_aggr) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VIO_MASK, ctxt->vio) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK, ctxt->dir_c2h) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-				ctxt->pasid_en) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK,
-				baddr4_low) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK, ctxt->vio_eop) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK, ctxt->sh_cmpt);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr4_high_l, baddr4_high_h, baddr4_low,
-			pidx_l, pidx_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id = FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, cmpt_ctxt[0]);
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr4_high_l = FIELD_GET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK,
-			cmpt_ctxt[1]);
-
-	baddr4_high_h = FIELD_GET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK,
-			cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(CMPL_CTXT_DATA_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(CMPL_CTXT_DATA_W4_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, cmpt_ctxt[4]));
-	ctxt->dis_intr_on_vf = (uint8_t)
-		FIELD_GET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				cmpt_ctxt[4]);
-	ctxt->vio = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_VIO_MASK,
-			cmpt_ctxt[4]);
-	ctxt->dir_c2h = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK,
-			cmpt_ctxt[4]);
-	ctxt->host_id = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_HOST_ID_MASK,
-			cmpt_ctxt[4]);
-	pasid_l = FIELD_GET(CMPL_CTXT_DATA_W4_PASID_L_MASK, cmpt_ctxt[4]);
-
-	pasid_h = (uint32_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_H_MASK,
-			cmpt_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-			cmpt_ctxt[5]);
-	baddr4_low = (uint8_t)FIELD_GET(
-			CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK, cmpt_ctxt[5]);
-	ctxt->vio_eop = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK,
-			cmpt_ctxt[5]);
-	ctxt->sh_cmpt = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK,
-			cmpt_ctxt[5]);
-
-	ctxt->bs_addr =
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				(uint64_t)baddr4_high_l) |
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				(uint64_t)baddr4_high_h) |
-		FIELD_SET(EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK,
-				(uint64_t)baddr4_low);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_CMPL_CTXT_PASID_GET_H_MASK,
-				(uint64_t)pasid_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_cmpt_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[EQDMA_CPM5_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-					hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-					hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_EVT_PND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_hw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_hw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[EQDMA_CPM5_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CPM5_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_credit_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_credit_context_clear(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_credit_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[EQDMA_CPM5_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK,
-		config->qmax);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[EQDMA_CPM5_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, func_id,
-			EQDMA_CPM5_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(EQDMA_CPM5_FMAP_CTXT_W0_QID_MASK,
-					fmap[0]);
-	config->qmax = FIELD_GET(EQDMA_CPM5_FMAP_CTXT_W1_QID_MAX_MASK,
-					fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_context_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_fmap_context_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_fmap_context_read(dev_hndl,
-			func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_fmap_context_write(dev_hndl,
-			func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_fmap_context_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_write() - create indirect interrupt
- * context and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt
-		*ctxt)
-{
-	uint32_t intr_ctxt[EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK,
-				ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK,
-				ctxt->pasid);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(INTR_CTXT_DATA_W2_AT_MASK, ctxt->at) |
-		FIELD_SET(INTR_CTXT_DATA_W2_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PASID_L_MASK, pasid_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_H_MASK, pasid_h) |
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(INTR_CTXT_DATA_W3_FUNC_MASK, ctxt->func_id);
-
-	return eqdma_cpm5_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_read() - read indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_indirect_reg_read(dev_hndl, sel, ring_index,
-			EQDMA_CPM5_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_AT_MASK, intr_ctxt[2]));
-	ctxt->host_id = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_HOST_ID_MASK,
-			intr_ctxt[2]));
-	pasid_l = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_PASID_L_MASK,
-			intr_ctxt[2]));
-
-	pasid_h = FIELD_GET(INTR_CTXT_DATA_W3_PASID_H_MASK, intr_ctxt[3]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(INTR_CTXT_DATA_W3_PASID_EN_MASK,
-			intr_ctxt[3]);
-
-	ctxt->func_id = (uint16_t)FIELD_GET(INTR_CTXT_DATA_W3_FUNC_MASK,
-			intr_ctxt[3]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CPM5_INTR_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CPM5_INTR_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_clear() - clear indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_context_invalidate() - invalidate indirect
- * interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_cpm5_indirect_reg_invalidate(dev_hndl, sel,
-			ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_indirect_intr_ctx_conf() - configure indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_indirect_intr_context_read(dev_hndl,
-				ring_index, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_indirect_intr_context_write(dev_hndl,
-				ring_index, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cpm5_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cpm5_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_config_regs() - Function to get qdma config register
- * dump in a buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < eqdma_cpm5_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = eqdma_cpm5_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s", reg_info[i].name);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @context:	Queue Context
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_cpm5_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_intr_context() - Function to get qdma interrupt context
- * dump in a buffer
- *
- * @dev_hndl:   device handle
- * @intr_ctx:	Interrupt Context
- * @ring_index: Ring index
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = eqdma_cpm5_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_cpm5_intr_context(intr_ctx, ring_index, buf,
-			buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_dump_queue_context() - Function to read and dump the
- *  queue context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_cpm5_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = eqdma_cpm5_sw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_cpm5_hw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_cpm5_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = eqdma_cpm5_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = eqdma_cpm5_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = eqdma_cpm5_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_eqdma_cpm5_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_user_bar() - Function to get the AXI Master
- * Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite bar number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	/* TODO: In future, user bar is identified using RR */
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	UNUSED(func_id);
-	UNUSED(is_vf);
-
-	*user_bar = 2;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ram_sbe_err_process() - Function to dump SBE error
- * debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_SBE_STS_A_ADDR, 1, NULL, 0);
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR, 1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_ram_dbe_err_process() - Function to dump DBE error
- * debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_DBE_STS_A_ADDR, 1, NULL, 0);
-	eqdma_cpm5_dump_reg_info(dev_hndl,
-			EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR, 1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_desc_err_process() - Function to dump Descriptor
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG0_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG1_ADDR,
-		EQDMA_CPM5_GLBL_DSC_DBG_DAT0_ADDR,
-		EQDMA_CPM5_GLBL_DSC_DBG_DAT1_ADDR,
-		EQDMA_CPM5_GLBL_DSC_ERR_LOG2_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_trq_err_process() - Function to dump Target Access
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_CPM5_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_err_dump_ctxt_info() - Dump the imp ctxt fields on HW error
- *
- * @dev_hndl: device handle
- * @first_err_qid: First Error QID
- * @en_st: ST Mode or MM Mode enabled
- * @c2h: C2H or H2C Mode
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_err_dump_ctxt_info(void *dev_hndl,
-		uint32_t first_err_qid_reg,
-		uint8_t en_st, uint8_t c2h)
-{
-	uint16_t first_err_qid	= 0;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-
-	first_err_qid = qdma_reg_read(dev_hndl, first_err_qid_reg);
-
-	eqdma_cpm5_sw_context_read(dev_hndl, c2h, first_err_qid, &sw_ctxt);
-	eqdma_cpm5_hw_context_read(dev_hndl, c2h, first_err_qid, &hw_ctxt);
-	eqdma_cpm5_fill_sw_ctxt(&sw_ctxt);
-	eqdma_cpm5_fill_hw_ctxt(&hw_ctxt);
-
-	if (sw_ctxt.pidx != hw_ctxt.cidx) {
-		qdma_log_info("\n%40s\n", "SW Context:");
-		/** SW Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[0].name,
-				eqdma_cpm5_sw_ctxt_entries[0].value,
-				eqdma_cpm5_sw_ctxt_entries[0].value);
-		qdma_log_info("\n%40s\n", "HW Context:");
-		/*** HW Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_hw_ctxt_entries[0].name,
-				eqdma_cpm5_hw_ctxt_entries[0].value,
-				eqdma_cpm5_hw_ctxt_entries[0].value);
-	}
-
-	if (sw_ctxt.err != 0) {
-		/*** SW Context: ERR ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[17].name,
-				eqdma_cpm5_sw_ctxt_entries[17].value,
-				eqdma_cpm5_sw_ctxt_entries[17].value);
-	}
-
-	/*** SW Context: ERR WB SENT***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[18].name,
-				eqdma_cpm5_sw_ctxt_entries[18].value,
-				eqdma_cpm5_sw_ctxt_entries[18].value);
-
-	/*** SW Context: IRQ REQ***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_sw_ctxt_entries[19].name,
-				eqdma_cpm5_sw_ctxt_entries[19].value,
-				eqdma_cpm5_sw_ctxt_entries[19].value);
-
-	if (en_st && c2h) {
-		eqdma_cpm5_cmpt_context_read(dev_hndl,
-				first_err_qid, &cmpt_ctxt);
-		eqdma_cpm5_fill_cmpt_ctxt(&cmpt_ctxt);
-
-		qdma_log_info("\n%40s\n", "CMPT Context:");
-
-		/*** CMPT Context: int_st ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[6].name,
-				eqdma_cpm5_cmpt_ctxt_entries[6].value,
-				eqdma_cpm5_cmpt_ctxt_entries[6].value);
-
-		/** CMPT Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[12].name,
-				eqdma_cpm5_cmpt_ctxt_entries[12].value,
-				eqdma_cpm5_cmpt_ctxt_entries[12].value);
-		/*** CMPT Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[13].name,
-				eqdma_cpm5_cmpt_ctxt_entries[13].value,
-				eqdma_cpm5_cmpt_ctxt_entries[13].value);
-
-		if (cmpt_ctxt.err != 0) {
-			/*** CMPT Context: ERR ***/
-			qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_cpm5_cmpt_ctxt_entries[15].name,
-				eqdma_cpm5_cmpt_ctxt_entries[15].value,
-				eqdma_cpm5_cmpt_ctxt_entries[15].value);
-		}
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_st_h2c_err_process() - Function to dump MM H2C Error
- * information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		EQDMA_CPM5_H2C_ERR_STAT_ADDR,
-		EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG0_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG1_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG2_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG3_ADDR,
-		EQDMA_CPM5_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR, 1, 1);
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_st_c2h_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		EQDMA_CPM5_C2H_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR,
-		EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		EQDMA_CPM5_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR, 1, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_c2h0_err_process() - Function to dump MM C2H
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_mm_c2h0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_c2h_err_reg_list[] = {
-		EQDMA_CPM5_C2H_MM_STATUS_ADDR,
-		EQDMA_CPM5_C2H_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_CPM5_C2H_MM_ERR_CODE_ADDR,
-		EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR,
-		EQDMA_CPM5_C2H_MM_DBG_ADDR
-	};
-	int mm_c2h_err_num_regs = sizeof(mm_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_c2h_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, mm_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_h2c0_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_cpm5_mm_h2c0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_h2c_err_reg_list[] = {
-		EQDMA_CPM5_H2C_MM_STATUS_ADDR,
-		EQDMA_CPM5_H2C_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_CPM5_H2C_MM_ERR_CODE_ADDR,
-		EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR,
-		EQDMA_CPM5_H2C_MM_DBG_ADDR
-	};
-	int mm_h2c_err_num_regs = sizeof(mm_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_h2c_err_num_regs; i++) {
-		eqdma_cpm5_dump_reg_info(dev_hndl, mm_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_cpm5_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_get_error_name() - Function to get the error in string
- * format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *eqdma_cpm5_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= EQDMA_CPM5_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__,
-				(enum eqdma_cpm5_error_idx)err_idx);
-		return NULL;
-	}
-
-	return eqdma_cpm5_err_info[(enum
-			eqdma_cpm5_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[
-		EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		EQDMA_CPM5_DSC_ERR_POISON,
-		EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-		EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-		EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-		EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-		EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-		EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-		EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-		EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL_ERR_STAT_ADDR);
-
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, EQDMA_CPM5_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) &&
-			(bit == EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH ||
-			bit == EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH ||
-			bit == EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				eqdma_cpm5_err_info[bit].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-				eqdma_cpm5_err_info[bit].stat_reg_addr,
-				err_stat);
-
-			eqdma_cpm5_err_info[
-				bit].eqdma_cpm5_hw_err_process(dev_hndl);
-			for (idx = bit; idx < all_eqdma_cpm5_hw_errs[i];
-					idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				eqdma_cpm5_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-					__func__,
-					eqdma_cpm5_hw_get_error_name(idx));
-			}
-			qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[bit].stat_reg_addr,
-				err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_ERR_STAT_ADDR,
-			glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > EQDMA_CPM5_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__,
-				(enum eqdma_cpm5_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == EQDMA_CPM5_ERRS_ALL) {
-		for (i = 0; i < EQDMA_CPM5_TOTAL_LEAF_ERROR_AGGREGATORS;
-				i++) {
-
-			idx = all_eqdma_cpm5_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == EQDMA_CPM5_ST_C2H_ERR_ALL ||
-					idx == EQDMA_CPM5_ST_FATAL_ERR_ALL
-					|| idx == EQDMA_CPM5_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = eqdma_cpm5_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[idx].mask_reg_addr,
-				reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_CPM5_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				eqdma_cpm5_err_info[idx].global_err_mask,
-				1);
-			qdma_reg_write(dev_hndl,
-					EQDMA_CPM5_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH
-					&& err_idx <=
-					EQDMA_CPM5_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				eqdma_cpm5_err_info[err_idx].mask_reg_addr);
-		reg_val |=
-			FIELD_SET(
-				eqdma_cpm5_err_info[err_idx].leaf_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-				eqdma_cpm5_err_info[err_idx].mask_reg_addr,
-				reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET
-			(eqdma_cpm5_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_ERR_MASK_ADDR,
-				reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_get_device_attributes() - Function to get the qdma device
- * attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	dev_info->num_pfs = FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val);
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs =
-			FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK, reg_val);
-
-	/* There are 12 bits assigned in EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR
-	 * to represent the num_qs. For CPM5, max queues can be 4096 which needs
-	 * 13 bits(0x1000). Adding a hack in driver to represent 4096 queues
-	 * when HW sets the num_qs to 0xFFF
-	 */
-	if (dev_info->num_qs == 0xFFF)
-		dev_info->num_qs++;
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CPM5_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en = FIELD_GET(EQDMA_CPM5_GLBL2_MAILBOX_EN_MASK,
-		reg_val);
-	dev_info->flr_present = FIELD_GET(EQDMA_CPM5_GLBL2_FLR_PRESENT_MASK,
-		reg_val);
-	dev_info->mm_cmpt_en  = 0;
-	dev_info->debug_mode = FIELD_GET(EQDMA_CPM5_GLBL2_DBG_MODE_EN_MASK,
-		reg_val);
-	dev_info->desc_eng_mode =
-		FIELD_GET(EQDMA_CPM5_GLBL2_DESC_ENG_MODE_MASK,
-		reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl,
-			EQDMA_CPM5_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK, reg_val)) ? 1 : 0;
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this.
-	 * Hard coding it to 2 for CPM5
-	 */
-	dev_info->mm_channel_max = 2;
-
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_init_ctxt_memory() - function to initialize the context
- * memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-#ifdef TANDEM_BOOT_SUPPORTED
-		for (; sel <=  QDMA_CTXT_SEL_CR_H2C; sel++) {
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#else
-		for (; sel <=  QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** TODO: Check for Tandem boot **/
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#endif
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		eqdma_cpm5_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * eqdma_cpm5_init_st_ctxt() - Initialize the ST context
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_init_st_ctxt(void *dev_hndl)
-{
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_CMPT;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_cpm5_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-
-}
-#endif
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-
-	reg_info = eqdma_cpm5_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[reg_count].is_debug_reg == 1)
-			continue;
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_cpm5_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_cpm5_config_num_regs_get();
-	struct xreg_info *eqdma_cpm5_config_regs =
-		eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = EQDMA_CPM5_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &eqdma_cpm5_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_ring_sizes() - function to set the global ring
- * size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR,
-			index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_ring_sizes() - function to get the global rng_sz
- * array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR,
-			index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_timer_count(void *dev_hndl, uint8_t
-		index, uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_timer_count(void *dev_hndl,
-		uint8_t index, uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				EQDMA_CPM5_C2H_TIMER_CNT_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_counter_threshold() - function to set the
- * counter threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_counter_threshold(void *dev_hndl,
-		uint8_t index, uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_counter_threshold() - function to get the counter
- * threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_counter_threshold(void *dev_hndl, uint8_t
-		index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_CPM5_C2H_CNT_TH_ADDR,
-				index, count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_write_global_buffer_sizes() - function to set the buffer
- * sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_write_global_buffer_sizes(void *dev_hndl, uint8_t
-		index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_read_global_buffer_sizes(void *dev_hndl, uint8_t
-		index, uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_CPM5_C2H_BUF_SZ_ADDR,
-				index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_global_csr_conf(void *dev_hndl, uint8_t index,
-				uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_cpm5_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_cpm5_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_cpm5_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_cpm5_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_cpm5_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_cpm5_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_cpm5_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_cpm5_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_write() -  function to set
- * the writeback interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-		qdma_reg_write(dev_hndl, EQDMA_CPM5_GLBL_DSC_CFG_ADDR,
-				reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_read() -  function to get the
- * writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cpm5_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				EQDMA_CPM5_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cpm5_global_writeback_interval_read(dev_hndl,
-				wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cpm5_global_writeback_interval_write(dev_hndl,
-				*wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_cpm5_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cpm5_mm_channel_conf(void *dev_hndl, uint8_t channel,
-		uint8_t is_c2h, uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  EQDMA_CPM5_C2H_MM_CTL_ADDR :
-			EQDMA_CPM5_H2C_MM_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en)
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_cpm5_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = eqdma_cpm5_config_num_regs_get();
-	struct xreg_info *config_regs  = eqdma_cpm5_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_cpm5_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-			/* If Debug Mode not enabled and the current register
-			 * is debug register, skip reading it.
-			 */
-			if (dev_cap.debug_mode == 0 &&
-					config_regs[j].is_debug_reg == 1)
-				continue;
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
deleted file mode 100755
index 93662d2..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __EQDMA_CPM5_SOFT_ACCESS_H_
-#define __EQDMA_CPM5_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum eqdma_cpm5_error_idx - qdma errors
- */
-enum eqdma_cpm5_error_idx {
-	/* Descriptor errors */
-	EQDMA_CPM5_DSC_ERR_POISON,
-	EQDMA_CPM5_DSC_ERR_UR_CA,
-	EQDMA_CPM5_DSC_ERR_BCNT,
-	EQDMA_CPM5_DSC_ERR_PARAM,
-	EQDMA_CPM5_DSC_ERR_ADDR,
-	EQDMA_CPM5_DSC_ERR_TAG,
-	EQDMA_CPM5_DSC_ERR_FLR,
-	EQDMA_CPM5_DSC_ERR_TIMEOUT,
-	EQDMA_CPM5_DSC_ERR_DAT_POISON,
-	EQDMA_CPM5_DSC_ERR_FLR_CANCEL,
-	EQDMA_CPM5_DSC_ERR_DMA,
-	EQDMA_CPM5_DSC_ERR_DSC,
-	EQDMA_CPM5_DSC_ERR_RQ_CANCEL,
-	EQDMA_CPM5_DSC_ERR_DBE,
-	EQDMA_CPM5_DSC_ERR_SBE,
-	EQDMA_CPM5_DSC_ERR_PORT_ID,
-	EQDMA_CPM5_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	EQDMA_CPM5_TRQ_ERR_CSR_UNMAPPED,
-	EQDMA_CPM5_TRQ_ERR_VF_ACCESS,
-	EQDMA_CPM5_TRQ_ERR_TCP_CSR_TIMEOUT,
-	EQDMA_CPM5_TRQ_ERR_QSPC_UNMAPPED,
-	EQDMA_CPM5_TRQ_ERR_QID_RANGE,
-	EQDMA_CPM5_TRQ_ERR_TCP_QSPC_TIMEOUT,
-	EQDMA_CPM5_TRQ_ERR_ALL,
-
-	/* ST C2H Errors */
-	EQDMA_CPM5_ST_C2H_ERR_MTY_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_LEN_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_SH_CMPT_DSC,
-	EQDMA_CPM5_ST_C2H_ERR_QID_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_DESC_RSP_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_MSI_INT_FAIL,
-	EQDMA_CPM5_ST_C2H_ERR_ERR_DESC_CNT,
-	EQDMA_CPM5_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_QFULL_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_CIDX_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_CMPT_PRTY_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_AVL_RING_DSC,
-	EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_UNC,
-	EQDMA_CPM5_ST_C2H_ERR_HDR_ECC_COR,
-	EQDMA_CPM5_ST_C2H_ERR_WRB_PORT_ID_ERR,
-	EQDMA_CPM5_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	EQDMA_CPM5_ST_FATAL_ERR_MTY_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_LEN_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_QID_MISMATCH,
-	EQDMA_CPM5_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_WPL_DATA_PAR,
-	EQDMA_CPM5_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-	EQDMA_CPM5_ST_FATAL_ERR_HDR_ECC_UNC,
-	EQDMA_CPM5_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	EQDMA_CPM5_ST_H2C_ERR_ZERO_LEN_DESC,
-	EQDMA_CPM5_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-	EQDMA_CPM5_ST_H2C_ERR_NO_DMA_DSC,
-	EQDMA_CPM5_ST_H2C_ERR_SBE,
-	EQDMA_CPM5_ST_H2C_ERR_DBE,
-	EQDMA_CPM5_ST_H2C_ERR_PAR,
-	EQDMA_CPM5_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_CPM5_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_CPM5_SBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_CPM5_SBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_CPM5_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_CPM5_SBE_1_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_CPM5_SBE_ERR_MI_H2C0_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C1_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C2_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_H2C3_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H0_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H1_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H2_DAT,
-	EQDMA_CPM5_SBE_ERR_MI_C2H3_DAT,
-	EQDMA_CPM5_SBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_CPM5_SBE_ERR_FUNC_MAP,
-	EQDMA_CPM5_SBE_ERR_DSC_HW_CTXT,
-	EQDMA_CPM5_SBE_ERR_DSC_CRD_RCV,
-	EQDMA_CPM5_SBE_ERR_DSC_SW_CTXT,
-	EQDMA_CPM5_SBE_ERR_DSC_CPLI,
-	EQDMA_CPM5_SBE_ERR_DSC_CPLD,
-	EQDMA_CPM5_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_QID_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_CPM5_SBE_ERR_INT_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_WRB_CTXT_RAM,
-	EQDMA_CPM5_SBE_ERR_PFCH_LL_RAM,
-	EQDMA_CPM5_SBE_ERR_PEND_FIFO_RAM,
-	EQDMA_CPM5_SBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_CPM5_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_CPM5_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_CPM5_DBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_CPM5_DBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_CPM5_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_CPM5_DBE_1_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_CPM5_DBE_ERR_MI_H2C0_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C1_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C2_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_H2C3_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H0_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H1_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H2_DAT,
-	EQDMA_CPM5_DBE_ERR_MI_C2H3_DAT,
-	EQDMA_CPM5_DBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_CPM5_DBE_ERR_FUNC_MAP,
-	EQDMA_CPM5_DBE_ERR_DSC_HW_CTXT,
-	EQDMA_CPM5_DBE_ERR_DSC_CRD_RCV,
-	EQDMA_CPM5_DBE_ERR_DSC_SW_CTXT,
-	EQDMA_CPM5_DBE_ERR_DSC_CPLI,
-	EQDMA_CPM5_DBE_ERR_DSC_CPLD,
-	EQDMA_CPM5_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_QID_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_CPM5_DBE_ERR_INT_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_WRB_CTXT_RAM,
-	EQDMA_CPM5_DBE_ERR_PFCH_LL_RAM,
-	EQDMA_CPM5_DBE_ERR_PEND_FIFO_RAM,
-	EQDMA_CPM5_DBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_CPM5_DBE_ERR_ALL,
-
-	/* MM C2H Errors */
-	EQDMA_CPM5_MM_C2H_WR_SLR_ERR,
-	EQDMA_CPM5_MM_C2H_RD_SLR_ERR,
-	EQDMA_CPM5_MM_C2H_WR_FLR_ERR,
-	EQDMA_CPM5_MM_C2H_UR_ERR,
-	EQDMA_CPM5_MM_C2H_WR_UC_RAM_ERR,
-	EQDMA_CPM5_MM_C2H_ERR_ALL,
-
-	/* MM H2C Engine0 Errors */
-	EQDMA_CPM5_MM_H2C0_RD_HDR_POISON_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_UR_CA_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_BYTE_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_PARAM_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_HDR_ADR_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_FLR_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_DAT_POISON_ERR,
-	EQDMA_CPM5_MM_H2C0_RD_RQ_DIS_ERR,
-	EQDMA_CPM5_MM_H2C0_WR_DEC_ERR,
-	EQDMA_CPM5_MM_H2C0_WR_SLV_ERR,
-	EQDMA_CPM5_MM_H2C0_ERR_ALL,
-
-	EQDMA_CPM5_ERRS_ALL
-};
-
-struct eqdma_cpm5_hw_err_info {
-	enum eqdma_cpm5_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*eqdma_cpm5_hw_err_process)(void *dev_hndl);
-};
-
-#ifdef EQDMA_CPM5_VF_GT_256Q_SUPPORTED
-#define EQDMA_CPM5_OFFSET_VF_VERSION          0x21014
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_VF        0x21000
-#else
-#define EQDMA_CPM5_OFFSET_VF_VERSION           0x5014
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_VF         0x5000
-#endif
-
-#define EQDMA_CPM5_OFFSET_MBOX_BASE_PF         0x42400
-#define EQDMA_CPM5_OFFSET_VF_USER_BAR          0x5018
-
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_H_MASK         GENMASK_ULL(63, 38)
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_HIGH_L_MASK         GENMASK_ULL(37, 6)
-#define EQDMA_CPM5_COMPL_CTXT_BADDR_LOW_MASK            GENMASK_ULL(5, 2)
-
-int eqdma_cpm5_init_ctxt_memory(void *dev_hndl);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-int eqdma_cpm5_init_st_ctxt(void *dev_hndl);
-#endif
-
-int eqdma_cpm5_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int eqdma_cpm5_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_sw_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_prefetch_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-			struct qdma_indirect_intr_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-uint32_t eqdma_cpm5_reg_dump_buf_len(void);
-
-int eqdma_cpm5_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int eqdma_cpm5_hw_error_process(void *dev_hndl);
-const char *eqdma_cpm5_hw_get_error_name(uint32_t err_idx);
-int eqdma_cpm5_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int eqdma_cpm5_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int eqdma_cpm5_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int eqdma_cpm5_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int eqdma_cpm5_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int eqdma_cpm5_set_default_global_csr(void *dev_hndl);
-
-int eqdma_cpm5_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_cpm5_mm_channel_conf(void *dev_hndl, uint8_t channel,
-			uint8_t is_c2h, uint8_t enable);
-
-int eqdma_cpm5_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t eqdma_cpm5_get_config_num_regs(void);
-
-struct xreg_info *eqdma_cpm5_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __EQDMA_CPM5_SOFT_ACCESS_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
deleted file mode 100755
index 4027484..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg.h
+++ /dev/null
@@ -1,1284 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __EQDMA_CPM5_REG_H
-#define __EQDMA_CPM5_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t eqdma_cpm5_config_num_regs_get(void);
-struct xreg_info *eqdma_cpm5_config_regs_get(void);
-#define EQDMA_CPM5_CFG_BLK_IDENTIFIER_ADDR                 0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define EQDMA_CPM5_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR          0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK                GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR     0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK           GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK         GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_SYSTEM_ID_ADDR                  0x10
-#define CFG_BLK_SYSTEM_ID_RSVD_1_MASK                      GENMASK(31, 17)
-#define CFG_BLK_SYSTEM_ID_INST_TYPE_MASK                   BIT(16)
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define EQDMA_CPM5_CFG_BLK_MSIX_ENABLE_ADDR                0x014
-#define CFG_BLK_MSIX_ENABLE_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_PCIE_DATA_WIDTH_ADDR                0x18
-#define CFG_PCIE_DATA_WIDTH_RSVD_1_MASK                    GENMASK(31, 3)
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_PCIE_CTL_ADDR                       0x1C
-#define CFG_PCIE_CTL_RSVD_1_MASK                           GENMASK(31, 18)
-#define CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK                   GENMASK(17, 16)
-#define CFG_PCIE_CTL_RSVD_2_MASK                           GENMASK(15, 2)
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define EQDMA_CPM5_CFG_BLK_MSI_ENABLE_ADDR                 0x20
-#define CFG_BLK_MSI_ENABLE_MASK                           GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_AXI_USER_MAX_PLD_SIZE_ADDR          0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR     0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define EQDMA_CPM5_CFG_BLK_MISC_CTL_ADDR                   0x4C
-#define CFG_BLK_MISC_CTL_RSVD_1_MASK                       GENMASK(31, 24)
-#define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK                   BIT(23)
-#define CFG_BLK_MISC_CTL_RSVD_2_MASK                       BIT(22)
-#define CFG_BLK_MISC_CTL_AXI_WBK_MASK                      BIT(21)
-#define CFG_BLK_MISC_CTL_AXI_DSC_MASK                      BIT(20)
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RSVD_3_MASK                       GENMASK(7, 5)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define EQDMA_CPM5_CFG_PL_CRED_CTL_ADDR                    0x68
-#define CFG_PL_CRED_CTL_RSVD_1_MASK                        GENMASK(31, 5)
-#define CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK                 BIT(4)
-#define CFG_PL_CRED_CTL_RSVD_2_MASK                        GENMASK(3, 1)
-#define CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK                BIT(0)
-#define EQDMA_CPM5_CFG_BLK_SCRATCH_ADDR                    0x80
-#define CFG_BLK_SCRATCH_MASK                              GENMASK(31, 0)
-#define EQDMA_CPM5_CFG_GIC_ADDR                            0xA0
-#define CFG_GIC_RSVD_1_MASK                                GENMASK(31, 1)
-#define CFG_GIC_GIC_IRQ_MASK                               BIT(0)
-#define EQDMA_CPM5_RAM_SBE_MSK_1_A_ADDR                    0xE0
-#define RAM_SBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_SBE_STS_1_A_ADDR                    0xE4
-#define RAM_SBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_CPM5_RAM_DBE_MSK_1_A_ADDR                    0xE8
-#define RAM_DBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_DBE_STS_1_A_ADDR                    0xEC
-#define RAM_DBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_CPM5_RAM_SBE_MSK_A_ADDR                      0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_SBE_STS_A_ADDR                      0xF4
-#define RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_SBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_SBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_SBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_SBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_SBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_SBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_CPM5_RAM_DBE_MSK_A_ADDR                      0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_RAM_DBE_STS_A_ADDR                      0xFC
-#define RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_DBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_DBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_DBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_DBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_DBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_DBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_CPM5_GLBL2_IDENTIFIER_ADDR                   0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_INST_ADDR                 0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_MDMA_ADDR                 0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_STRM_ADDR                 0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_CAP_ADDR                  0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define EQDMA_CPM5_GLBL2_CHANNEL_PASID_CAP_ADDR            0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL2_SYSTEM_ID_ADDR                    0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL2_MISC_CAP_ADDR                     0x134
-#define GLBL2_MISC_CAP_MASK                               GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL2_DBG_PCIE_RQ0_ADDR                 0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 9)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(8, 2)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(1, 0)
-#define EQDMA_CPM5_GLBL2_DBG_PCIE_RQ1_ADDR                 0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 21)
-#define GLBL2_PCIE_RQ1_TAG_FL_MASK                     GENMASK(20, 19)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(18)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(17)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(16)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(15)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(14, 12)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK                BIT(8)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(7)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(6)
-#define GLBL2_PCIE_RQ1_RREQ0_RDY_MASK                  BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RDY_MASK                  BIT(2)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(1)
-#define GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK              BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_WR0_ADDR                0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_WR1_ADDR                0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_RD0_ADDR                0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(16)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(15, 13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_AXIMM_RD1_ADDR                0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_CPM5_GLBL2_DBG_FAB0_ADDR                     0x1D0
-#define GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK            BIT(31)
-#define GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK            BIT(30)
-#define GLBL2_FAB0_H2C_SEG_IN_VLD_MASK                 BIT(29)
-#define GLBL2_FAB0_H2C_SEG_IN_RDY_MASK                 BIT(28)
-#define GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK                GENMASK(27, 24)
-#define GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK                BIT(23)
-#define GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK              GENMASK(22, 16)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK             BIT(15)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK            BIT(14)
-#define GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK              GENMASK(13, 10)
-#define GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK              BIT(9)
-#define GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK              BIT(8)
-#define GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK              BIT(7)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK         BIT(6)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK         BIT(5)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK        BIT(4)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK       BIT(3)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK              BIT(2)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK             BIT(1)
-#define GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK            BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_FAB1_ADDR                     0x1D4
-#define GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK              GENMASK(31, 25)
-#define GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK           GENMASK(24, 18)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK             BIT(17)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK            BIT(16)
-#define GLBL2_FAB1_RSVD_1_MASK                         GENMASK(15, 13)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK          BIT(12)
-#define GLBL2_FAB1_RSVD_2_MASK                         GENMASK(11, 9)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK         BIT(8)
-#define GLBL2_FAB1_RSVD_3_MASK                         GENMASK(7, 5)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK          BIT(4)
-#define GLBL2_FAB1_RSVD_4_MASK                         GENMASK(3, 1)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK         BIT(0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_SEL_ADDR                0x1F4
-#define GLBL2_MATCH_SEL_RSV_MASK                       GENMASK(31, 18)
-#define GLBL2_MATCH_SEL_CSR_SEL_MASK                   GENMASK(17, 13)
-#define GLBL2_MATCH_SEL_CSR_EN_MASK                    BIT(12)
-#define GLBL2_MATCH_SEL_ROTATE1_MASK                   GENMASK(11, 10)
-#define GLBL2_MATCH_SEL_ROTATE0_MASK                   GENMASK(9, 8)
-#define GLBL2_MATCH_SEL_SEL_MASK                       GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_MSK_ADDR                0x1F8
-#define GLBL2_MATCH_MSK_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL2_DBG_MATCH_PAT_ADDR                0x1FC
-#define GLBL2_MATCH_PAT_PATTERN_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_1_ADDR                      0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_2_ADDR                      0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_3_ADDR                      0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_4_ADDR                      0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_5_ADDR                      0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_6_ADDR                      0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_7_ADDR                      0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_8_ADDR                      0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_9_ADDR                      0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_A_ADDR                      0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_B_ADDR                      0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_C_ADDR                      0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_D_ADDR                      0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_E_ADDR                      0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_F_ADDR                      0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_RNG_SZ_10_ADDR                     0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_ERR_STAT_ADDR                      0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 18)
-#define GLBL_ERR_STAT_ERR_FAB_MASK                         BIT(17)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(16)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(15)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                GENMASK(14, 9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define EQDMA_CPM5_GLBL_ERR_MASK_ADDR                      0x24C
-#define GLBL_ERR_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_DSC_CFG_ADDR                       0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_STS_ADDR                   0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 26)
-#define GLBL_DSC_ERR_STS_PORT_ID_MASK                      BIT(25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(8)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(6)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(5)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(4)
-#define GLBL_DSC_ERR_STS_BCNT_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(1)
-#define EQDMA_CPM5_GLBL_DSC_ERR_MSK_ADDR                   0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG0_ADDR                  0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(30)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(29, 13)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG1_ADDR                  0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_ERR_LOG1_CIDX_MASK                        GENMASK(27, 12)
-#define GLBL_DSC_ERR_LOG1_RSVD_2_MASK                      GENMASK(11, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_STS_ADDR                   0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 8)
-#define GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK             BIT(7)
-#define GLBL_TRQ_ERR_STS_RSVD_2_MASK                       BIT(6)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(5)
-#define GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK                BIT(4)
-#define GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK              BIT(3)
-#define GLBL_TRQ_ERR_STS_RSVD_3_MASK                       BIT(2)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(1)
-#define GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_MSK_ADDR                   0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_CPM5_GLBL_TRQ_ERR_LOG_ADDR                   0x26C
-#define GLBL_TRQ_ERR_LOG_SRC_MASK                          BIT(31)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(30, 27)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(26, 17)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(16, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_DAT0_ADDR                  0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_DAT1_ADDR                  0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define EQDMA_CPM5_GLBL_DSC_DBG_CTL_ADDR                   0x278
-#define GLBL_DSC_CTL_RSVD_1_MASK                       GENMASK(31, 3)
-#define GLBL_DSC_CTL_SELECT_MASK                       GENMASK(2, 0)
-#define EQDMA_CPM5_GLBL_DSC_ERR_LOG2_ADDR                  0x27c
-#define GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK                    GENMASK(31, 16)
-#define GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_GLBL_GLBL_INTERRUPT_CFG_ADDR            0x2c4
-#define GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK     BIT(1)
-#define GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK          BIT(0)
-#define EQDMA_CPM5_GLBL_VCH_HOST_PROFILE_ADDR              0x2c8
-#define GLBL_VCH_HOST_PROFILE_RSVD_1_MASK                  GENMASK(31, 28)
-#define GLBL_VCH_HOST_PROFILE_2C_MM_MASK                   GENMASK(27, 24)
-#define GLBL_VCH_HOST_PROFILE_2C_ST_MASK                   GENMASK(23, 20)
-#define GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK                 GENMASK(19, 16)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK             GENMASK(15, 12)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK            GENMASK(11, 8)
-#define GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK                GENMASK(7, 4)
-#define GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK             GENMASK(3, 0)
-#define EQDMA_CPM5_GLBL_BRIDGE_HOST_PROFILE_ADDR           0x308
-#define GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK               GENMASK(31, 4)
-#define GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK                GENMASK(3, 0)
-#define EQDMA_CPM5_AXIMM_IRQ_DEST_ADDR_ADDR                0x30c
-#define AXIMM_IRQ_DEST_ADDR_ADDR_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_FAB_ERR_LOG_ADDR                        0x314
-#define FAB_ERR_LOG_RSVD_1_MASK                            GENMASK(31, 7)
-#define FAB_ERR_LOG_SRC_MASK                               GENMASK(6, 0)
-#define EQDMA_CPM5_IND_CTXT_DATA_ADDR                      0x804
-#define IND_CTXT_DATA_DATA_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_IND_CTXT_MASK_ADDR                      0x824
-#define IND_CTXT_MASK                            GENMASK(31, 0)
-#define EQDMA_CPM5_IND_CTXT_CMD_ADDR                       0x844
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 20)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(19, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SEL_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define EQDMA_CPM5_C2H_TIMER_CNT_ADDR                      0xA00
-#define C2H_TIMER_CNT_RSVD_1_MASK                          GENMASK(31, 16)
-#define C2H_TIMER_CNT_MASK                                GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CNT_TH_ADDR                         0xA40
-#define C2H_CNT_TH_RSVD_1_MASK                             GENMASK(31, 16)
-#define C2H_CNT_TH_THESHOLD_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR       0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1_MASK           GENMASK(31, 18)
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR       0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1_MASK           GENMASK(31, 18)
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR     0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1_MASK         GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_ADDR              0xA94
-#define C2H_STAT_AXIS_PKG_CMP_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ACCEPTED_ADDR         0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_CMP_ADDR              0xA9C
-#define C2H_STAT_DESC_RSP_CMP_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WRQ_OUT_ADDR                   0xAA0
-#define C2H_STAT_WRQ_OUT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WPL_REN_ACCEPTED_ADDR          0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_TOTAL_WRQ_LEN_ADDR             0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_RSVD_1_MASK                 GENMASK(31, 18)
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_TOTAL_WPL_LEN_ADDR             0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_RSVD_1_MASK                 GENMASK(31, 18)
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_BUF_SZ_ADDR                         0xAB0
-#define C2H_BUF_SZ_IZE_MASK                                GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_ERR_STAT_ADDR                       0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 21)
-#define C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK                  BIT(20)
-#define C2H_ERR_STAT_HDR_PAR_ERR_MASK                      BIT(19)
-#define C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK                  BIT(18)
-#define C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK                  BIT(17)
-#define C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK                 BIT(16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK                  BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define EQDMA_CPM5_C2H_ERR_MASK_ADDR                       0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_STAT_ADDR                 0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 21)
-#define C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK            BIT(20)
-#define C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK     BIT(19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK         BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_RESERVED2_MASK                  BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RESERVED1_MASK                  BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_MASK_ADDR                 0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_FATAL_ERR_ENABLE_ADDR               0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define EQDMA_CPM5_GLBL_ERR_INT_ADDR                       0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_ERR_INT_HOST_ID_MASK                          GENMASK(29, 26)
-#define GLBL_ERR_INT_DIS_INTR_ON_VF_MASK                   BIT(25)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(24)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(23)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(22, 12)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_ADDR                       0xB08
-#define C2H_PFCH_CFG_EVTFL_TH_MASK                         GENMASK(31, 16)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_1_ADDR                     0xA80
-#define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK                    GENMASK(31, 16)
-#define C2H_PFCH_CFG_1_QCNT_MASK                           GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CFG_2_ADDR                     0xA84
-#define C2H_PFCH_CFG_2_FENCE_MASK                          BIT(31)
-#define C2H_PFCH_CFG_2_RSVD_MASK                           GENMASK(30, 29)
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK               BIT(28)
-#define C2H_PFCH_CFG_2_LL_SZ_TH_MASK                       GENMASK(27, 12)
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK                   GENMASK(11, 6)
-#define C2H_PFCH_CFG_2_NUM_MASK                            GENMASK(5, 0)
-#define EQDMA_CPM5_C2H_INT_TIMER_TICK_ADDR                 0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR    0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1_MASK        GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR     0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1_MASK         GENMASK(31, 18)
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_REQ_ADDR                  0xB18
-#define C2H_STAT_DESC_REQ_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_0_ADDR             0xB1C
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK      BIT(31)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK      BIT(30)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK      GENMASK(29, 27)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK      GENMASK(26, 24)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK        BIT(23)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK        BIT(22)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK       BIT(21)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK       GENMASK(20, 9)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK        BIT(8)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_1_ADDR             0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_2_ADDR             0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_3_ADDR             0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_ERR_CTXT_ADDR              0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define EQDMA_CPM5_C2H_FIRST_ERR_QID_ADDR                  0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_RSVD_MASK                        GENMASK(15, 13)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_IN_ADDR                    0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_OUT_ADDR                   0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_WRB_DRP_ADDR                   0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_STAT_DESC_OUT_ADDR             0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_DSC_CRDT_SENT_ADDR             0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_FCH_DSC_RCVD_ADDR              0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_STAT_NUM_BYP_DSC_RCVD_ADDR              0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define EQDMA_CPM5_C2H_WRB_COAL_CFG_ADDR                   0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define EQDMA_CPM5_C2H_INTR_H2C_REQ_ADDR                   0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_MM_REQ_ADDR                0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_ERR_INT_REQ_ADDR               0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_REQ_ADDR                0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR   0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR  0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR 0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR 0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_MSIX_ACK_ADDR           0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR          0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_NO_MSIX_ADDR            0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR         0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_WR_CMP_ADDR                    0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_4_ADDR             0xB88
-#define C2H_STAT_DMA_ENG_4_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_CPM5_C2H_STAT_DBG_DMA_ENG_5_ADDR             0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK         BIT(29)
-#define C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK        GENMASK(28, 24)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK       GENMASK(23, 22)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK  GENMASK(21, 6)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK BIT(2)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK BIT(1)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK BIT(0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_QID_ADDR                   0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(15)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(14, 12)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_DBG_PFCH_ADDR                       0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_INT_DBG_ADDR                        0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define EQDMA_CPM5_C2H_STAT_IMM_ACCEPTED_ADDR              0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_MARKER_ACCEPTED_ADDR           0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR      0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_PLD_FIFO_CRDT_CNT_ADDR              0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_DYN_REQ_ADDR                   0xBAC
-#define C2H_INTR_DYN_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_DYN_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_INTR_DYN_MISC_ADDR                  0xBB0
-#define C2H_INTR_DYN_MISC_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_INTR_DYN_MISC_CNT_MASK                         GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_LEN_MISMATCH_ADDR              0xBB4
-#define C2H_DROP_LEN_MISMATCH_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_LEN_MISMATCH_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_DESC_RSP_LEN_ADDR              0xBB8
-#define C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_DESC_RSP_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_QID_FIFO_LEN_ADDR              0xBBC
-#define C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_QID_FIFO_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_DROP_PLD_CNT_ADDR                   0xBC0
-#define C2H_DROP_PLD_CNT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_0_ADDR                  0xBC4
-#define C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_0_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_1_ADDR                  0xBC8
-#define C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_1_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_2_ADDR                  0xBCC
-#define C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_2_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_3_ADDR                  0xBD0
-#define C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_3_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_4_ADDR                  0xBD4
-#define C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_4_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_5_ADDR                  0xBD8
-#define C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_5_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_CMPT_FORMAT_6_ADDR                  0xBDC
-#define C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_6_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PFCH_CACHE_DEPTH_ADDR               0xBE0
-#define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK                GENMASK(23, 16)
-#define C2H_PFCH_CACHE_DEPTH_MASK                         GENMASK(7, 0)
-#define EQDMA_CPM5_C2H_WRB_COAL_BUF_DEPTH_ADDR             0xBE4
-#define C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK                 GENMASK(31, 8)
-#define C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK                 GENMASK(7, 0)
-#define EQDMA_CPM5_C2H_PFCH_CRDT_ADDR                      0xBE8
-#define C2H_PFCH_CRDT_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_PFCH_CRDT_RSVD_2_MASK                          BIT(0)
-#define EQDMA_CPM5_C2H_STAT_HAS_CMPT_ACCEPTED_ADDR         0xBEC
-#define C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_STAT_HAS_PLD_ACCEPTED_ADDR          0xBF0
-#define C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_PLD_PKT_ID_ADDR                     0xBF4
-#define C2H_PLD_PKT_ID_CMPT_WAIT_MASK                      GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_DATA_MASK                           GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_PLD_PKT_ID_1_ADDR                   0xBF8
-#define C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK                    GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_1_DATA_MASK                         GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_DROP_PLD_CNT_1_ADDR                 0xBFC
-#define C2H_DROP_PLD_CNT_1_RSVD_1_MASK                     GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_1_CNT_MASK                        GENMASK(17, 0)
-#define EQDMA_CPM5_H2C_ERR_STAT_ADDR                       0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 6)
-#define H2C_ERR_STAT_PAR_ERR_MASK                          BIT(5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define EQDMA_CPM5_H2C_ERR_MASK_ADDR                       0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_FIRST_ERR_QID_ADDR                  0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 13)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_CPM5_H2C_DBG_REG0_ADDR                       0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG1_ADDR                       0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG2_ADDR                       0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_DBG_REG3_ADDR                       0xE18
-#define H2C_REG3_RSVD_1_MASK                           BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define EQDMA_CPM5_H2C_DBG_REG4_ADDR                       0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_FATAL_ERR_EN_ADDR                   0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define EQDMA_CPM5_H2C_REQ_THROT_PCIE_ADDR                 0xE24
-#define H2C_REQ_THROT_PCIE_EN_REQ_MASK                     BIT(31)
-#define H2C_REQ_THROT_PCIE_MASK                           GENMASK(30, 19)
-#define H2C_REQ_THROT_PCIE_EN_DATA_MASK                    BIT(18)
-#define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK                GENMASK(17, 0)
-#define EQDMA_CPM5_H2C_ALN_DBG_REG0_ADDR                   0xE28
-#define H2C_ALN_REG0_NUM_PKT_SENT_MASK                 GENMASK(15, 0)
-#define EQDMA_CPM5_H2C_REQ_THROT_AXIMM_ADDR                0xE2C
-#define H2C_REQ_THROT_AXIMM_EN_REQ_MASK                    BIT(31)
-#define H2C_REQ_THROT_AXIMM_MASK                          GENMASK(30, 19)
-#define H2C_REQ_THROT_AXIMM_EN_DATA_MASK                   BIT(18)
-#define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK               GENMASK(17, 0)
-#define EQDMA_CPM5_C2H_MM_CTL_ADDR                         0x1004
-#define C2H_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define C2H_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define C2H_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define C2H_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_CPM5_C2H_MM_STATUS_ADDR                      0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_CPM5_C2H_MM_CMPL_DESC_CNT_ADDR               0x1048
-#define C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR        0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK         BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK         GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define EQDMA_CPM5_C2H_MM_ERR_CODE_ADDR                    0x1058
-#define C2H_MM_ERR_CODE_RESERVED1_MASK                     GENMASK(31, 28)
-#define C2H_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define C2H_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define C2H_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_CPM5_C2H_MM_ERR_INFO_ADDR                    0x105C
-#define C2H_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define C2H_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CTL_ADDR                0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR         0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR         0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_DATA_CNT0_ADDR          0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_MM_PERF_MON_DATA_CNT1_ADDR          0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_MM_DBG_ADDR                         0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_CPM5_H2C_MM_CTL_ADDR                         0x1204
-#define H2C_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define H2C_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define H2C_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define H2C_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_CPM5_H2C_MM_STATUS_ADDR                      0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_CPM5_H2C_MM_CMPL_DESC_CNT_ADDR               0x1248
-#define H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR        0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK         GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK         GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK         GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK         GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK         GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK         BIT(0)
-#define EQDMA_CPM5_H2C_MM_ERR_CODE_ADDR                    0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 28)
-#define H2C_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define H2C_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define H2C_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_CPM5_H2C_MM_ERR_INFO_ADDR                    0x125C
-#define H2C_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define H2C_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CTL_ADDR                0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR         0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR         0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_DATA_CNT0_ADDR          0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_CPM5_H2C_MM_PERF_MON_DATA_CNT1_ADDR          0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_CPM5_H2C_MM_DBG_ADDR                         0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_CPM5_C2H_CRDT_COAL_CFG_1_ADDR                0x1400
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK               GENMASK(17, 10)
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK                  GENMASK(9, 0)
-#define EQDMA_CPM5_C2H_CRDT_COAL_CFG_2_ADDR                0x1404
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK                    GENMASK(31, 24)
-#define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK                   GENMASK(23, 16)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK                 GENMASK(15, 11)
-#define C2H_CRDT_COAL_CFG_2_NT_TH_MASK                     GENMASK(10, 0)
-#define EQDMA_CPM5_C2H_PFCH_BYP_QID_ADDR                   0x1408
-#define C2H_PFCH_BYP_QID_RSVD_1_MASK                       GENMASK(31, 12)
-#define C2H_PFCH_BYP_QID_MASK                             GENMASK(11, 0)
-#define EQDMA_CPM5_C2H_PFCH_BYP_TAG_ADDR                   0x140C
-#define C2H_PFCH_BYP_TAG_RSVD_1_MASK                       GENMASK(31, 20)
-#define C2H_PFCH_BYP_TAG_BYP_QID_MASK                      GENMASK(19, 8)
-#define C2H_PFCH_BYP_TAG_RSVD_2_MASK                       BIT(7)
-#define C2H_PFCH_BYP_TAG_MASK                             GENMASK(6, 0)
-#define EQDMA_CPM5_C2H_WATER_MARK_ADDR                     0x1500
-#define C2H_WATER_MARK_HIGH_WM_MASK                        GENMASK(31, 16)
-#define C2H_WATER_MARK_LOW_WM_MASK                         GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_NOTIFY_EMPTY_ADDR                   0x1800
-#define C2H_NOTIFY_EMPTY_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_NOTIFY_EMPTY_NOE_MASK                          GENMASK(15, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_C2H_ACCEPTED_1_ADDR     0x1804
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_1_ADDR     0x1808
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_ADDR   0x180C
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK            GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_AXIS_PKG_CMP_1_ADDR            0x1810
-#define C2H_STAT_AXIS_PKG_CMP_1_MASK                      GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_STAT_S_AXIS_WRB_ACCEPTED_2_ADDR     0x1814
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK               GENMASK(31, 0)
-#define EQDMA_CPM5_C2H_ST_PLD_FIFO_DEPTH_ADDR              0x1818
-#define C2H_ST_PLD_FIFO_DEPTH_MASK                        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK        GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK        GENMASK(31, 11)
-#define SW_IND_CTXT_DATA_W5_PASID_EN_MASK                 BIT(10)
-#define SW_IND_CTXT_DATA_W5_PASID_H_MASK                  GENMASK(9, 0)
-#define SW_IND_CTXT_DATA_W4_PASID_L_MASK                  GENMASK(31, 20)
-#define SW_IND_CTXT_DATA_W4_HOST_ID_MASK                  GENMASK(19, 16)
-#define SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK                  BIT(15)
-#define SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK             BIT(14)
-#define SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK                BIT(13)
-#define SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK           BIT(12)
-#define SW_IND_CTXT_DATA_W4_INT_AGGR_MASK                 BIT(11)
-#define SW_IND_CTXT_DATA_W4_VEC_MASK                      GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(11, 9)
-#define SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK                GENMASK(8, 5)
-#define SW_IND_CTXT_DATA_W1_AT_MASK                       BIT(4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 29)
-#define SW_IND_CTXT_DATA_W0_FNC_MASK                      GENMASK(28, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   BIT(15)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                GENMASK(14, 11)
-#define HW_IND_CTXT_DATA_W1_EVT_PND_MASK                  BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_2_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 22)
-#define PREFETCH_CTXT_DATA_W0_PFCH_NEED_MASK              GENMASK(21, 16)
-#define PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK               GENMASK(15, 10)
-#define PREFETCH_CTXT_DATA_W0_VIRTIO_MASK                 BIT(9)
-#define PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK               BIT(8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK             GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W6_RSVD_1_H_MASK                   GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W5_RSVD_1_L_MASK                   GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W5_PORT_ID_MASK                    GENMASK(22, 20)
-#define CMPL_CTXT_DATA_W5_SH_CMPT_MASK                    BIT(19)
-#define CMPL_CTXT_DATA_W5_VIO_EOP_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK                 GENMASK(17, 14)
-#define CMPL_CTXT_DATA_W5_PASID_EN_MASK                   BIT(13)
-#define CMPL_CTXT_DATA_W5_PASID_H_MASK                    GENMASK(12, 0)
-#define CMPL_CTXT_DATA_W4_PASID_L_MASK                    GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W4_HOST_ID_MASK                    GENMASK(22, 19)
-#define CMPL_CTXT_DATA_W4_DIR_C2H_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W4_VIO_MASK                        BIT(17)
-#define CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK             BIT(16)
-#define CMPL_CTXT_DATA_W4_INT_AGGR_MASK                   BIT(15)
-#define CMPL_CTXT_DATA_W4_VEC_MASK                        GENMASK(14, 4)
-#define CMPL_CTXT_DATA_W4_AT_MASK                         BIT(3)
-#define CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK                BIT(2)
-#define CMPL_CTXT_DATA_W4_FULL_UPD_MASK                   BIT(1)
-#define CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK              BIT(0)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(31)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(30, 29)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(28)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(27, 12)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(11, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(27, 26)
-#define CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK              GENMASK(25, 0)
-#define CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK              GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_QSIZE_IX_MASK                   GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(27)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W0_TIMER_IX_MASK                   GENMASK(24, 21)
-#define CMPL_CTXT_DATA_W0_CNTER_IX_MASK                   GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(16, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W3_FUNC_MASK                       GENMASK(29, 18)
-#define INTR_CTXT_DATA_W3_RSVD_MASK                       GENMASK(17, 14)
-#define INTR_CTXT_DATA_W3_PASID_EN_MASK                   BIT(13)
-#define INTR_CTXT_DATA_W3_PASID_H_MASK                    GENMASK(12, 0)
-#define INTR_CTXT_DATA_W2_PASID_L_MASK                    GENMASK(31, 23)
-#define INTR_CTXT_DATA_W2_HOST_ID_MASK                    GENMASK(22, 19)
-#define INTR_CTXT_DATA_W2_AT_MASK                         BIT(18)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(17, 6)
-#define INTR_CTXT_DATA_W2_PAGE_SIZE_MASK                  GENMASK(5, 3)
-#define INTR_CTXT_DATA_W2_BADDR_4K_H_MASK                 GENMASK(2, 0)
-#define INTR_CTXT_DATA_W1_BADDR_4K_M_MASK                 GENMASK(31, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 15)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(14)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(13)
-#define INTR_CTXT_DATA_W0_RSVD1_MASK                      BIT(12)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(11, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-#define HOSTID_TABLE_W6_SMID_MASK                          GENMASK(9, 0)
-#define HOSTID_TABLE_W5_H2C_MM_AWPROT_MASK                 GENMASK(27, 26)
-#define HOSTID_TABLE_W5_H2C_MM_AWCACHE_MASK                GENMASK(25, 22)
-#define HOSTID_TABLE_W5_H2C_MM_AWSTEERING_MASK             GENMASK(20, 18)
-#define HOSTID_TABLE_W5_DSC_AWPROT_MASK                    GENMASK(17, 16)
-#define HOSTID_TABLE_W5_DSC_AWCACHE_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W5_DSC_AWSTEERING_MASK                GENMASK(11, 8)
-#define HOSTID_TABLE_W5_INT_MSG_AWPROT_MASK                GENMASK(7, 6)
-#define HOSTID_TABLE_W5_INT_MSG_AWCACHE_MASK               GENMASK(5, 2)
-#define HOSTID_TABLE_W5_INT_MSG_AWSTEERING_H_MASK          GENMASK(0, 0)
-#define HOSTID_TABLE_W4_INT_MSG_AWSTEERING_L_MASK          GENMASK(31, 30)
-#define HOSTID_TABLE_W4_INT_AGGR_AWPROT_MASK               GENMASK(29, 28)
-#define HOSTID_TABLE_W4_INT_AGGR_AWCACHE_MASK              GENMASK(27, 24)
-#define HOSTID_TABLE_W4_INT_AGGR_AWSTEERING_MASK           GENMASK(22, 20)
-#define HOSTID_TABLE_W4_CMPT_AWPROT_MASK                   GENMASK(19, 18)
-#define HOSTID_TABLE_W4_CMPT_AWCACHE_MASK                  GENMASK(17, 14)
-#define HOSTID_TABLE_W4_CMPT_AWSTEERING_MASK               GENMASK(12, 10)
-#define HOSTID_TABLE_W4_C2H_PLD_AWPROT_MASK                GENMASK(9, 8)
-#define HOSTID_TABLE_W4_C2H_PLD_AWCACHE_MASK               GENMASK(7, 4)
-#define HOSTID_TABLE_W4_C2H_PLD_AWSTEERING_MASK            GENMASK(2, 0)
-#define HOSTID_TABLE_W3_C2H_MM_ARPROT_MASK                 GENMASK(7, 6)
-#define HOSTID_TABLE_W3_C2H_MM_ARCACHE_MASK                GENMASK(5, 2)
-#define HOSTID_TABLE_W3_C2H_MM_ARSTEERING_H_MASK           GENMASK(0, 0)
-#define HOSTID_TABLE_W2_C2H_MM_ARSTEERING_L_MASK           GENMASK(31, 30)
-#define HOSTID_TABLE_W2_H2C_MM_ARPROT_MASK                 GENMASK(29, 28)
-#define HOSTID_TABLE_W2_H2C_MM_ARCACHE_MASK                GENMASK(27, 24)
-#define HOSTID_TABLE_W2_H2C_MM_ARSTEERING_MASK             GENMASK(22, 20)
-#define HOSTID_TABLE_W2_H2C_ST_ARPROT_MASK                 GENMASK(19, 18)
-#define HOSTID_TABLE_W2_H2C_ST_ARCACHE_MASK                GENMASK(17, 14)
-#define HOSTID_TABLE_W2_H2C_ST_ARSTEERING_MASK             GENMASK(12, 10)
-#define HOSTID_TABLE_W2_DSC_ARPOT_MASK                     GENMASK(9, 8)
-#define HOSTID_TABLE_W2_DSC_ARCACHE_MASK                   GENMASK(7, 4)
-#define HOSTID_TABLE_W2_DSC_ARSTEERING_MASK                GENMASK(2, 0)
-#define HOSTID_TABLE_W0_VCH_H2C_MM_MASK                    GENMASK(27, 24)
-#define HOSTID_TABLE_W0_VCH_H2C_ST_MASK                    GENMASK(23, 20)
-#define HOSTID_TABLE_W0_VCH_DSC_MASK                       GENMASK(19, 16)
-#define HOSTID_TABLE_W0_VCH_INT_MSG_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W0_VCH_INT_AGGR_MASK                  GENMASK(11, 8)
-#define HOSTID_TABLE_W0_VCH_CMPT_MASK                      GENMASK(7, 4)
-#define HOSTID_TABLE_W0_VCH_H2C_PLD_MASK                   GENMASK(3, 0)
-#define CTXT_SELC_FNC_STS_W0_MSIX_MASK                GENMASK(3, 3)
-#define CTXT_SELC_FNC_STS_W0_MSIX_ENABLE_MASK              GENMASK(2, 2)
-#define CTXT_SELC_FNC_STS_W0_MEM_SPACE_ENABLE_MASK         GENMASK(1, 1)
-#define CTXT_SELC_FNC_STS_W0_BUS_MASTER_ENABLE_MASK        GENMASK(0, 0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
deleted file mode 100755
index 2c71d01..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.c
+++ /dev/null
@@ -1,4009 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "eqdma_cpm5_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_cpm5_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID_RSVD_1",
-		CFG_BLK_SYSTEM_ID_RSVD_1_MASK},
-	{"CFG_BLK_SYSTEM_ID_INST_TYPE",
-		CFG_BLK_SYSTEM_ID_INST_TYPE_MASK},
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msix_enable_field_info[] = {
-	{"CFG_BLK_MSIX_ENABLE",
-		CFG_BLK_MSIX_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_RSVD_1",
-		CFG_PCIE_DATA_WIDTH_RSVD_1_MASK},
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RSVD_1",
-		CFG_PCIE_CTL_RSVD_1_MASK},
-	{"CFG_PCIE_CTL_MGMT_AXIL_CTRL",
-		CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK},
-	{"CFG_PCIE_CTL_RSVD_2",
-		CFG_PCIE_CTL_RSVD_2_MASK},
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE",
-		CFG_BLK_MSI_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_RSVD_1",
-		CFG_BLK_MISC_CTL_RSVD_1_MASK},
-	{"CFG_BLK_MISC_CTL_10B_TAG_EN",
-		CFG_BLK_MISC_CTL_10B_TAG_EN_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_2",
-		CFG_BLK_MISC_CTL_RSVD_2_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_WBK",
-		CFG_BLK_MISC_CTL_AXI_WBK_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_DSC",
-		CFG_BLK_MISC_CTL_AXI_DSC_MASK},
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_3",
-		CFG_BLK_MISC_CTL_RSVD_3_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pl_cred_ctl_field_info[] = {
-	{"CFG_PL_CRED_CTL_RSVD_1",
-		CFG_PL_CRED_CTL_RSVD_1_MASK},
-	{"CFG_PL_CRED_CTL_SLAVE_CRD_RLS",
-		CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK},
-	{"CFG_PL_CRED_CTL_RSVD_2",
-		CFG_PL_CRED_CTL_RSVD_2_MASK},
-	{"CFG_PL_CRED_CTL_MASTER_CRD_RST",
-		CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_field_info[] = {
-	{"CFG_BLK_SCRATCH",
-		CFG_BLK_SCRATCH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_gic_field_info[] = {
-	{"CFG_GIC_RSVD_1",
-		CFG_GIC_RSVD_1_MASK},
-	{"CFG_GIC_GIC_IRQ",
-		CFG_GIC_GIC_IRQ_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_1_a_field_info[] = {
-	{"RAM_SBE_MSK_1_A",
-		RAM_SBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_1_a_field_info[] = {
-	{"RAM_SBE_STS_1_A_RSVD",
-		RAM_SBE_STS_1_A_RSVD_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_SBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_SBE_STS_1_A_TAG_ODD_RAM",
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_1_a_field_info[] = {
-	{"RAM_DBE_MSK_1_A",
-		RAM_DBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_1_a_field_info[] = {
-	{"RAM_DBE_STS_1_A_RSVD",
-		RAM_DBE_STS_1_A_RSVD_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_DBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_DBE_STS_1_A_TAG_ODD_RAM",
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_SBE_STS_A_PEND_FIFO_RAM",
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H3_DAT",
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H2_DAT",
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H1_DAT",
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C3_DAT",
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C2_DAT",
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C1_DAT",
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_DBE_STS_A_PEND_FIFO_RAM",
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H3_DAT",
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H2_DAT",
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H1_DAT",
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C3_DAT",
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C2_DAT",
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C1_DAT",
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP",
-		GLBL2_MISC_CAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_TAG_FL",
-		GLBL2_PCIE_RQ1_TAG_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RDY",
-		GLBL2_PCIE_RQ1_RREQ0_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RDY",
-		GLBL2_PCIE_RQ1_RREQ1_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_STRADDLE",
-		GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab0_field_info[] = {
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_VLD",
-		GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_RDY",
-		GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_VLD",
-		GLBL2_FAB0_H2C_SEG_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_RDY",
-		GLBL2_FAB0_H2C_SEG_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_VLD",
-		GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_RDY",
-		GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_H2C_MST_CRDT_STAT",
-		GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_FULL",
-		GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_VLD",
-		GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_RDY",
-		GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_VLD",
-		GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_RDY",
-		GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_FULL",
-		GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY",
-		GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY",
-		GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab1_field_info[] = {
-	{"GLBL2_FAB1_BYP_OUT_CRDT_STAT",
-		GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_TM_DSC_STS_CRDT_STAT",
-		GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_1",
-		GLBL2_FAB1_RSVD_1_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_2",
-		GLBL2_FAB1_RSVD_2_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_3",
-		GLBL2_FAB1_RSVD_3_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_4",
-		GLBL2_FAB1_RSVD_4_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_sel_field_info[] = {
-	{"GLBL2_MATCH_SEL_RSV",
-		GLBL2_MATCH_SEL_RSV_MASK},
-	{"GLBL2_MATCH_SEL_CSR_SEL",
-		GLBL2_MATCH_SEL_CSR_SEL_MASK},
-	{"GLBL2_MATCH_SEL_CSR_EN",
-		GLBL2_MATCH_SEL_CSR_EN_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE1",
-		GLBL2_MATCH_SEL_ROTATE1_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE0",
-		GLBL2_MATCH_SEL_ROTATE0_MASK},
-	{"GLBL2_MATCH_SEL_SEL",
-		GLBL2_MATCH_SEL_SEL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_msk_field_info[] = {
-	{"GLBL2_MATCH_MSK",
-		GLBL2_MATCH_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_pat_field_info[] = {
-	{"GLBL2_MATCH_PAT_PATTERN",
-		GLBL2_MATCH_PAT_PATTERN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_FAB",
-		GLBL_ERR_STAT_ERR_FAB_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_PORT_ID",
-		GLBL_DSC_ERR_STS_PORT_ID_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_BCNT",
-		GLBL_DSC_ERR_STS_BCNT_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_CIDX",
-		GLBL_DSC_ERR_LOG1_CIDX_MASK},
-	{"GLBL_DSC_ERR_LOG1_RSVD_2",
-		GLBL_DSC_ERR_LOG1_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_2",
-		GLBL_TRQ_ERR_STS_RSVD_2_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_QSPC_UNMAPPED",
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_3",
-		GLBL_TRQ_ERR_STS_RSVD_3_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_CSR_UNMAPPED",
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_SRC",
-		GLBL_TRQ_ERR_LOG_SRC_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_ctl_field_info[] = {
-	{"GLBL_DSC_CTL_RSVD_1",
-		GLBL_DSC_CTL_RSVD_1_MASK},
-	{"GLBL_DSC_CTL_SELECT",
-		GLBL_DSC_CTL_SELECT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log2_field_info[] = {
-	{"GLBL_DSC_ERR_LOG2_OLD_PIDX",
-		GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK},
-	{"GLBL_DSC_ERR_LOG2_NEW_PIDX",
-		GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_glbl_interrupt_cfg_field_info[] = {
-	{"GLBL_GLBL_INTERRUPT_CFG_RSVD_1",
-		GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING",
-		GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR",
-		GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_vch_host_profile_field_info[] = {
-	{"GLBL_VCH_HOST_PROFILE_RSVD_1",
-		GLBL_VCH_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_MM",
-		GLBL_VCH_HOST_PROFILE_2C_MM_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_ST",
-		GLBL_VCH_HOST_PROFILE_2C_ST_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_DSC",
-		GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_MSG",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_CMPT",
-		GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD",
-		GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl_bridge_host_profile_field_info[] = {
-	{"GLBL_BRIDGE_HOST_PROFILE_RSVD_1",
-		GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_BRIDGE_HOST_PROFILE_BDGID",
-		GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK},
-};
-
-
-static struct regfield_info
-	aximm_irq_dest_addr_field_info[] = {
-	{"AXIMM_IRQ_DEST_ADDR_ADDR",
-		AXIMM_IRQ_DEST_ADDR_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	fab_err_log_field_info[] = {
-	{"FAB_ERR_LOG_RSVD_1",
-		FAB_ERR_LOG_RSVD_1_MASK},
-	{"FAB_ERR_LOG_SRC",
-		FAB_ERR_LOG_SRC_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_field_info[] = {
-	{"IND_CTXT_DATA_DATA",
-		IND_CTXT_DATA_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_mask_field_info[] = {
-	{"IND_CTXT",
-		IND_CTXT_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SEL",
-		IND_CTXT_CMD_SEL_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_field_info[] = {
-	{"C2H_TIMER_CNT_RSVD_1",
-		C2H_TIMER_CNT_RSVD_1_MASK},
-	{"C2H_TIMER_CNT",
-		C2H_TIMER_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_field_info[] = {
-	{"C2H_CNT_TH_RSVD_1",
-		C2H_CNT_TH_RSVD_1_MASK},
-	{"C2H_CNT_TH_THESHOLD_CNT",
-		C2H_CNT_TH_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_RSVD_1",
-		C2H_STAT_AXIS_PKG_CMP_RSVD_1_MASK},
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_RSVD_1",
-		C2H_STAT_DESC_RSP_CMP_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT_RSVD_1",
-		C2H_STAT_WRQ_OUT_RSVD_1_MASK},
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED_RSVD_1",
-		C2H_STAT_WPL_REN_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN_RSVD_1",
-		C2H_STAT_TOTAL_WRQ_LEN_RSVD_1_MASK},
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN_RSVD_1",
-		C2H_STAT_TOTAL_WPL_LEN_RSVD_1_MASK},
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_field_info[] = {
-	{"C2H_BUF_SZ_IZE",
-		C2H_BUF_SZ_IZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PORT_ID_ERR",
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_PAR_ERR",
-		C2H_ERR_STAT_HDR_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_COR_ERR",
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_ERR_STAT_AVL_RING_DSC_ERR",
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_SH_CMPT_DSC_ERR",
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED2",
-		C2H_FATAL_ERR_STAT_RESERVED2_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED1",
-		C2H_FATAL_ERR_STAT_RESERVED1_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_HOST_ID",
-		GLBL_ERR_INT_HOST_ID_MASK},
-	{"GLBL_ERR_INT_DIS_INTR_ON_VF",
-		GLBL_ERR_INT_DIS_INTR_ON_VF_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVTFL_TH",
-		C2H_PFCH_CFG_EVTFL_TH_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_1_field_info[] = {
-	{"C2H_PFCH_CFG_1_EVT_QCNT_TH",
-		C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_1_QCNT",
-		C2H_PFCH_CFG_1_QCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_2_field_info[] = {
-	{"C2H_PFCH_CFG_2_FENCE",
-		C2H_PFCH_CFG_2_FENCE_MASK},
-	{"C2H_PFCH_CFG_2_RSVD",
-		C2H_PFCH_CFG_2_RSVD_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NO_DROP",
-		C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK},
-	{"C2H_PFCH_CFG_2_LL_SZ_TH",
-		C2H_PFCH_CFG_2_LL_SZ_TH_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NUM",
-		C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK},
-	{"C2H_PFCH_CFG_2_NUM",
-		C2H_PFCH_CFG_2_NUM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ_RSVD_1",
-		C2H_STAT_DESC_REQ_RSVD_1_MASK},
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_VLD",
-		C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_TYPE",
-		C2H_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"C2H_FIRST_ERR_QID_RSVD",
-		C2H_FIRST_ERR_QID_RSVD_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_RSVD_1",
-		C2H_STAT_DMA_ENG_4_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_VLD",
-		C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ",
-		C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_req_field_info[] = {
-	{"C2H_INTR_DYN_REQ_RSVD_1",
-		C2H_INTR_DYN_REQ_RSVD_1_MASK},
-	{"C2H_INTR_DYN_REQ_CNT",
-		C2H_INTR_DYN_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_misc_field_info[] = {
-	{"C2H_INTR_DYN_MISC_RSVD_1",
-		C2H_INTR_DYN_MISC_RSVD_1_MASK},
-	{"C2H_INTR_DYN_MISC_CNT",
-		C2H_INTR_DYN_MISC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_len_mismatch_field_info[] = {
-	{"C2H_DROP_LEN_MISMATCH_RSVD_1",
-		C2H_DROP_LEN_MISMATCH_RSVD_1_MASK},
-	{"C2H_DROP_LEN_MISMATCH_CNT",
-		C2H_DROP_LEN_MISMATCH_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_desc_rsp_len_field_info[] = {
-	{"C2H_DROP_DESC_RSP_LEN_RSVD_1",
-		C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK},
-	{"C2H_DROP_DESC_RSP_LEN_CNT",
-		C2H_DROP_DESC_RSP_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_qid_fifo_len_field_info[] = {
-	{"C2H_DROP_QID_FIFO_LEN_RSVD_1",
-		C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK},
-	{"C2H_DROP_QID_FIFO_LEN_CNT",
-		C2H_DROP_QID_FIFO_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_field_info[] = {
-	{"C2H_DROP_PLD_CNT_RSVD_1",
-		C2H_DROP_PLD_CNT_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_CNT",
-		C2H_DROP_PLD_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_0_field_info[] = {
-	{"C2H_CMPT_FORMAT_0_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_0_COLOR_LOC",
-		C2H_CMPT_FORMAT_0_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_1_field_info[] = {
-	{"C2H_CMPT_FORMAT_1_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_1_COLOR_LOC",
-		C2H_CMPT_FORMAT_1_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_2_field_info[] = {
-	{"C2H_CMPT_FORMAT_2_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_2_COLOR_LOC",
-		C2H_CMPT_FORMAT_2_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_3_field_info[] = {
-	{"C2H_CMPT_FORMAT_3_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_3_COLOR_LOC",
-		C2H_CMPT_FORMAT_3_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_4_field_info[] = {
-	{"C2H_CMPT_FORMAT_4_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_4_COLOR_LOC",
-		C2H_CMPT_FORMAT_4_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_5_field_info[] = {
-	{"C2H_CMPT_FORMAT_5_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_5_COLOR_LOC",
-		C2H_CMPT_FORMAT_5_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_6_field_info[] = {
-	{"C2H_CMPT_FORMAT_6_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_6_COLOR_LOC",
-		C2H_CMPT_FORMAT_6_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cache_depth_field_info[] = {
-	{"C2H_PFCH_CACHE_DEPTH_MAX_STBUF",
-		C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK},
-	{"C2H_PFCH_CACHE_DEPTH",
-		C2H_PFCH_CACHE_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_buf_depth_field_info[] = {
-	{"C2H_WRB_COAL_BUF_DEPTH_RSVD_1",
-		C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK},
-	{"C2H_WRB_COAL_BUF_DEPTH_BUFFER",
-		C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_crdt_field_info[] = {
-	{"C2H_PFCH_CRDT_RSVD_1",
-		C2H_PFCH_CRDT_RSVD_1_MASK},
-	{"C2H_PFCH_CRDT_RSVD_2",
-		C2H_PFCH_CRDT_RSVD_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_cmpt_accepted_field_info[] = {
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_CNT",
-		C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_pld_accepted_field_info[] = {
-	{"C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_PLD_ACCEPTED_CNT",
-		C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_field_info[] = {
-	{"C2H_PLD_PKT_ID_CMPT_WAIT",
-		C2H_PLD_PKT_ID_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_DATA",
-		C2H_PLD_PKT_ID_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_1_field_info[] = {
-	{"C2H_PLD_PKT_ID_1_CMPT_WAIT",
-		C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_1_DATA",
-		C2H_PLD_PKT_ID_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_1_field_info[] = {
-	{"C2H_DROP_PLD_CNT_1_RSVD_1",
-		C2H_DROP_PLD_CNT_1_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_1_CNT",
-		C2H_DROP_PLD_CNT_1_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_PAR_ERR",
-		H2C_ERR_STAT_PAR_ERR_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3_RSVD_1",
-		H2C_REG3_RSVD_1_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_pcie_field_info[] = {
-	{"H2C_REQ_THROT_PCIE_EN_REQ",
-		H2C_REQ_THROT_PCIE_EN_REQ_MASK},
-	{"H2C_REQ_THROT_PCIE",
-		H2C_REQ_THROT_PCIE_MASK},
-	{"H2C_REQ_THROT_PCIE_EN_DATA",
-		H2C_REQ_THROT_PCIE_EN_DATA_MASK},
-	{"H2C_REQ_THROT_PCIE_DATA_THRESH",
-		H2C_REQ_THROT_PCIE_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	h2c_aln_dbg_reg0_field_info[] = {
-	{"H2C_ALN_REG0_NUM_PKT_SENT",
-		H2C_ALN_REG0_NUM_PKT_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_aximm_field_info[] = {
-	{"H2C_REQ_THROT_AXIMM_EN_REQ",
-		H2C_REQ_THROT_AXIMM_EN_REQ_MASK},
-	{"H2C_REQ_THROT_AXIMM",
-		H2C_REQ_THROT_AXIMM_MASK},
-	{"H2C_REQ_THROT_AXIMM_EN_DATA",
-		H2C_REQ_THROT_AXIMM_EN_DATA_MASK},
-	{"H2C_REQ_THROT_AXIMM_DATA_THRESH",
-		H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_ctl_field_info[] = {
-	{"C2H_MM_CTL_RESERVED1",
-		C2H_MM_CTL_RESERVED1_MASK},
-	{"C2H_MM_CTL_ERRC_EN",
-		C2H_MM_CTL_ERRC_EN_MASK},
-	{"C2H_MM_CTL_RESERVED0",
-		C2H_MM_CTL_RESERVED0_MASK},
-	{"C2H_MM_CTL_RUN",
-		C2H_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_cmpl_desc_cnt_field_info[] = {
-	{"C2H_MM_CMPL_DESC_CNT_C2H_CO",
-		C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED1",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED0",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RESERVED1",
-		C2H_MM_ERR_CODE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_CIDX",
-		C2H_MM_ERR_CODE_CIDX_MASK},
-	{"C2H_MM_ERR_CODE_RESERVED0",
-		C2H_MM_ERR_CODE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_SUB_TYPE",
-		C2H_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_VALID",
-		C2H_MM_ERR_INFO_VALID_MASK},
-	{"C2H_MM_ERR_INFO_SEL",
-		C2H_MM_ERR_INFO_SEL_MASK},
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_ctl_field_info[] = {
-	{"H2C_MM_CTL_RESERVED1",
-		H2C_MM_CTL_RESERVED1_MASK},
-	{"H2C_MM_CTL_ERRC_EN",
-		H2C_MM_CTL_ERRC_EN_MASK},
-	{"H2C_MM_CTL_RESERVED0",
-		H2C_MM_CTL_RESERVED0_MASK},
-	{"H2C_MM_CTL_RUN",
-		H2C_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_cmpl_desc_cnt_field_info[] = {
-	{"H2C_MM_CMPL_DESC_CNT_H2C_CO",
-		H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED5",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED4",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED3",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED2",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED1",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED0",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_CIDX",
-		H2C_MM_ERR_CODE_CIDX_MASK},
-	{"H2C_MM_ERR_CODE_RESERVED0",
-		H2C_MM_ERR_CODE_RESERVED0_MASK},
-	{"H2C_MM_ERR_CODE_SUB_TYPE",
-		H2C_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_VALID",
-		H2C_MM_ERR_INFO_VALID_MASK},
-	{"H2C_MM_ERR_INFO_SEL",
-		H2C_MM_ERR_INFO_SEL_MASK},
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_1_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_1_RSVD_1",
-		C2H_CRDT_COAL_CFG_1_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH",
-		C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_1_TIMER_TH",
-		C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_2_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_2_RSVD_1",
-		C2H_CRDT_COAL_CFG_2_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_FIFO_TH",
-		C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_2_RESERVED1",
-		C2H_CRDT_COAL_CFG_2_RESERVED1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_NT_TH",
-		C2H_CRDT_COAL_CFG_2_NT_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_qid_field_info[] = {
-	{"C2H_PFCH_BYP_QID_RSVD_1",
-		C2H_PFCH_BYP_QID_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_QID",
-		C2H_PFCH_BYP_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_tag_field_info[] = {
-	{"C2H_PFCH_BYP_TAG_RSVD_1",
-		C2H_PFCH_BYP_TAG_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_TAG_BYP_QID",
-		C2H_PFCH_BYP_TAG_BYP_QID_MASK},
-	{"C2H_PFCH_BYP_TAG_RSVD_2",
-		C2H_PFCH_BYP_TAG_RSVD_2_MASK},
-	{"C2H_PFCH_BYP_TAG",
-		C2H_PFCH_BYP_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_water_mark_field_info[] = {
-	{"C2H_WATER_MARK_HIGH_WM",
-		C2H_WATER_MARK_HIGH_WM_MASK},
-	{"C2H_WATER_MARK_LOW_WM",
-		C2H_WATER_MARK_LOW_WM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_notify_empty_field_info[] = {
-	{"C2H_NOTIFY_EMPTY_RSVD_1",
-		C2H_NOTIFY_EMPTY_RSVD_1_MASK},
-	{"C2H_NOTIFY_EMPTY_NOE",
-		C2H_NOTIFY_EMPTY_NOE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_1_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_1",
-		C2H_STAT_AXIS_PKG_CMP_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_2_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_st_pld_fifo_depth_field_info[] = {
-	{"C2H_ST_PLD_FIFO_DEPTH",
-		C2H_ST_PLD_FIFO_DEPTH_MASK},
-};
-
-static struct xreg_info eqdma_cpm5_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSIX_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msix_enable_field_info),
-	cfg_blk_msix_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x20,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_PL_CRED_CTL", 0x68,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pl_cred_ctl_field_info),
-	cfg_pl_cred_ctl_field_info
-},
-{"CFG_BLK_SCRATCH", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_field_info),
-	cfg_blk_scratch_field_info
-},
-{"CFG_GIC", 0xa0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_gic_field_info),
-	cfg_gic_field_info
-},
-{"RAM_SBE_MSK_1_A", 0xe0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_1_a_field_info),
-	ram_sbe_msk_1_a_field_info
-},
-{"RAM_SBE_STS_1_A", 0xe4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_1_a_field_info),
-	ram_sbe_sts_1_a_field_info
-},
-{"RAM_DBE_MSK_1_A", 0xe8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_1_a_field_info),
-	ram_dbe_msk_1_a_field_info
-},
-{"RAM_DBE_STS_1_A", 0xec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_1_a_field_info),
-	ram_dbe_sts_1_a_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL2_DBG_FAB0", 0x1d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab0_field_info),
-	glbl2_dbg_fab0_field_info
-},
-{"GLBL2_DBG_FAB1", 0x1d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab1_field_info),
-	glbl2_dbg_fab1_field_info
-},
-{"GLBL2_DBG_MATCH_SEL", 0x1f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_sel_field_info),
-	glbl2_dbg_match_sel_field_info
-},
-{"GLBL2_DBG_MATCH_MSK", 0x1f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_msk_field_info),
-	glbl2_dbg_match_msk_field_info
-},
-{"GLBL2_DBG_MATCH_PAT", 0x1fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_pat_field_info),
-	glbl2_dbg_match_pat_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"GLBL_DSC_DBG_CTL", 0x278,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_ctl_field_info),
-	glbl_dsc_dbg_ctl_field_info
-},
-{"GLBL_DSC_ERR_LOG2", 0x27c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log2_field_info),
-	glbl_dsc_err_log2_field_info
-},
-{"GLBL_GLBL_INTERRUPT_CFG", 0x2c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_glbl_interrupt_cfg_field_info),
-	glbl_glbl_interrupt_cfg_field_info
-},
-{"GLBL_VCH_HOST_PROFILE", 0x2c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_vch_host_profile_field_info),
-	glbl_vch_host_profile_field_info
-},
-{"GLBL_BRIDGE_HOST_PROFILE", 0x308,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_bridge_host_profile_field_info),
-	glbl_bridge_host_profile_field_info
-},
-{"AXIMM_IRQ_DEST_ADDR", 0x30c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(aximm_irq_dest_addr_field_info),
-	aximm_irq_dest_addr_field_info
-},
-{"FAB_ERR_LOG", 0x314,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(fab_err_log_field_info),
-	fab_err_log_field_info
-},
-{"IND_CTXT_DATA", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_field_info),
-	ind_ctxt_data_field_info
-},
-{"IND_CTXT_MASK", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_mask_field_info),
-	ind_ctxt_mask_field_info
-},
-{"IND_CTXT_CMD", 0x844,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_field_info),
-	c2h_timer_cnt_field_info
-},
-{"C2H_CNT_TH", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_field_info),
-	c2h_cnt_th_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_field_info),
-	c2h_buf_sz_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_PFCH_CFG_1", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_1_field_info),
-	c2h_pfch_cfg_1_field_info
-},
-{"C2H_PFCH_CFG_2", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_2_field_info),
-	c2h_pfch_cfg_2_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"C2H_INTR_DYN_REQ", 0xbac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_req_field_info),
-	c2h_intr_dyn_req_field_info
-},
-{"C2H_INTR_DYN_MISC", 0xbb0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_misc_field_info),
-	c2h_intr_dyn_misc_field_info
-},
-{"C2H_DROP_LEN_MISMATCH", 0xbb4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_len_mismatch_field_info),
-	c2h_drop_len_mismatch_field_info
-},
-{"C2H_DROP_DESC_RSP_LEN", 0xbb8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_desc_rsp_len_field_info),
-	c2h_drop_desc_rsp_len_field_info
-},
-{"C2H_DROP_QID_FIFO_LEN", 0xbbc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_qid_fifo_len_field_info),
-	c2h_drop_qid_fifo_len_field_info
-},
-{"C2H_DROP_PLD_CNT", 0xbc0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_field_info),
-	c2h_drop_pld_cnt_field_info
-},
-{"C2H_CMPT_FORMAT_0", 0xbc4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_0_field_info),
-	c2h_cmpt_format_0_field_info
-},
-{"C2H_CMPT_FORMAT_1", 0xbc8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_1_field_info),
-	c2h_cmpt_format_1_field_info
-},
-{"C2H_CMPT_FORMAT_2", 0xbcc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_2_field_info),
-	c2h_cmpt_format_2_field_info
-},
-{"C2H_CMPT_FORMAT_3", 0xbd0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_3_field_info),
-	c2h_cmpt_format_3_field_info
-},
-{"C2H_CMPT_FORMAT_4", 0xbd4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_4_field_info),
-	c2h_cmpt_format_4_field_info
-},
-{"C2H_CMPT_FORMAT_5", 0xbd8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_5_field_info),
-	c2h_cmpt_format_5_field_info
-},
-{"C2H_CMPT_FORMAT_6", 0xbdc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_6_field_info),
-	c2h_cmpt_format_6_field_info
-},
-{"C2H_PFCH_CACHE_DEPTH", 0xbe0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cache_depth_field_info),
-	c2h_pfch_cache_depth_field_info
-},
-{"C2H_WRB_COAL_BUF_DEPTH", 0xbe4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_buf_depth_field_info),
-	c2h_wrb_coal_buf_depth_field_info
-},
-{"C2H_PFCH_CRDT", 0xbe8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_crdt_field_info),
-	c2h_pfch_crdt_field_info
-},
-{"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_cmpt_accepted_field_info),
-	c2h_stat_has_cmpt_accepted_field_info
-},
-{"C2H_STAT_HAS_PLD_ACCEPTED", 0xbf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_pld_accepted_field_info),
-	c2h_stat_has_pld_accepted_field_info
-},
-{"C2H_PLD_PKT_ID", 0xbf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_field_info),
-	c2h_pld_pkt_id_field_info
-},
-{"C2H_PLD_PKT_ID_1", 0xbf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_1_field_info),
-	c2h_pld_pkt_id_1_field_info
-},
-{"C2H_DROP_PLD_CNT_1", 0xbfc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_1_field_info),
-	c2h_drop_pld_cnt_1_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"H2C_REQ_THROT_PCIE", 0xe24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_pcie_field_info),
-	h2c_req_throt_pcie_field_info
-},
-{"H2C_ALN_DBG_REG0", 0xe28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_aln_dbg_reg0_field_info),
-	h2c_aln_dbg_reg0_field_info
-},
-{"H2C_REQ_THROT_AXIMM", 0xe2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_aximm_field_info),
-	h2c_req_throt_aximm_field_info
-},
-{"C2H_MM_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_ctl_field_info),
-	c2h_mm_ctl_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_MM_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_cmpl_desc_cnt_field_info),
-	c2h_mm_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_MM_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_ctl_field_info),
-	h2c_mm_ctl_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_MM_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_cmpl_desc_cnt_field_info),
-	h2c_mm_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"C2H_CRDT_COAL_CFG_1", 0x1400,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_1_field_info),
-	c2h_crdt_coal_cfg_1_field_info
-},
-{"C2H_CRDT_COAL_CFG_2", 0x1404,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_2_field_info),
-	c2h_crdt_coal_cfg_2_field_info
-},
-{"C2H_PFCH_BYP_QID", 0x1408,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_qid_field_info),
-	c2h_pfch_byp_qid_field_info
-},
-{"C2H_PFCH_BYP_TAG", 0x140c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_tag_field_info),
-	c2h_pfch_byp_tag_field_info
-},
-{"C2H_WATER_MARK", 0x1500,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_water_mark_field_info),
-	c2h_water_mark_field_info
-},
-{"C2H_NOTIFY_EMPTY", 0x1800,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_notify_empty_field_info),
-	c2h_notify_empty_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1", 0x1804,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_1_field_info),
-	c2h_stat_s_axis_c2h_accepted_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1", 0x1808,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_1_field_info),
-	c2h_stat_s_axis_wrb_accepted_1_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1", 0x180c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_1_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP_1", 0x1810,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_1_field_info),
-	c2h_stat_axis_pkg_cmp_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2", 0x1814,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_2_field_info),
-	c2h_stat_s_axis_wrb_accepted_2_field_info
-},
-{"C2H_ST_PLD_FIFO_DEPTH", 0x1818,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_st_pld_fifo_depth_field_info),
-	c2h_st_pld_fifo_depth_field_info
-},
-
-};
-
-uint32_t eqdma_cpm5_config_num_regs_get(void)
-{
-	return (sizeof(eqdma_cpm5_config_regs)/
-		sizeof(eqdma_cpm5_config_regs[0]));
-}
-
-struct xreg_info *eqdma_cpm5_config_regs_get(void)
-{
-	return eqdma_cpm5_config_regs;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
deleted file mode 100755
index 0a65fba..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.c
+++ /dev/null
@@ -1,6817 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "eqdma_soft_access.h"
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_access.tmh"
-#endif
-
-/** EQDMA Context array size */
-#define EQDMA_FMAP_NUM_WORDS				 2
-#define EQDMA_SW_CONTEXT_NUM_WORDS           8
-#define EQDMA_HW_CONTEXT_NUM_WORDS           2
-#define EQDMA_PFETCH_CONTEXT_NUM_WORDS       2
-#define EQDMA_CR_CONTEXT_NUM_WORDS           1
-#define EQDMA_CMPT_CONTEXT_NUM_WORDS         6
-#define EQDMA_IND_INTR_CONTEXT_NUM_WORDS     4
-
-#define EQDMA_VF_USER_BAR_ID                 2
-
-#define EQDMA_REG_GROUP_1_START_ADDR	0x000
-#define EQDMA_REG_GROUP_2_START_ADDR	0x804
-#define EQDMA_REG_GROUP_3_START_ADDR	0xB00
-#define EQDMA_REG_GROUP_4_START_ADDR	0x5014
-
-#define EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS   11
-#define EQDMA_GLBL_TRQ_ERR_ALL_MASK          0XB3
-#define EQDMA_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define EQDMA_C2H_ERR_ALL_MASK				0X3F6DF
-#define EQDMA_C2H_FATAL_ERR_ALL_MASK		0X1FDF1B
-#define EQDMA_H2C_ERR_ALL_MASK				0X3F
-#define EQDMA_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_DBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_MM_C2H_ERR_ALL_MASK			0X70000003
-#define EQDMA_MM_H2C0_ERR_ALL_MASK		    0X3041013E
-
-
-
-
-/* H2C Throttle settings for QDMA 4.0 */
-#define EQDMA_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA_THROT_EN_DATA               1
-#define EQDMA_THROT_EN_REQ                0
-#define EQDMA_H2C_THROT_REQ_THRESH        0xC0
-
-/* H2C Throttle settings for QDMA 5.0 */
-#define EQDMA5_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA5_THROT_EN_DATA               1
-#define EQDMA5_THROT_EN_REQ                1
-#define EQDMA5_H2C_THROT_REQ_THRESH        0xC0
-
-/* CSR Default values for QDMA 5.0 */
-#define EQDMA5_DEFAULT_C2H_UODSC_LIMIT     5
-#define EQDMA5_DEFAULT_H2C_UODSC_LIMIT     8
-#define EQDMA5_DEFAULT_MAX_DSC_FETCH       5
-#define EQDMA5_DEFAULT_WRB_INT             QDMA_WRB_INTERVAL_128
-
-/* C2H prefetch Throttle configuration. */
-#define EQDMA5_DEFAULT_C2H_EVT_QCNT_TH     0x38
-#define EQDMA5_DEFAULT_C2H_PFCH_QCNT       0x3c
-
-/** Auxillary Bitmasks for fields spanning multiple words */
-#define EQDMA_SW_CTXT_PASID_GET_H_MASK              GENMASK(21, 12)
-#define EQDMA_SW_CTXT_PASID_GET_L_MASK              GENMASK(11, 0)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK    GENMASK_ULL(63, 53)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK    GENMASK_ULL(52, 21)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK    GENMASK_ULL(20, 0)
-#define EQDMA_CMPL_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CMPL_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-#define EQDMA_INTR_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_INTR_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-
-
-#define EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT		0x10C
-
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT		0x104
-#define QDMA_GLBL2_PF3_BAR_MAP_MASK				GENMASK(23, 18)
-#define QDMA_GLBL2_PF2_BAR_MAP_MASK				GENMASK(17, 12)
-#define QDMA_GLBL2_PF1_BAR_MAP_MASK				GENMASK(11, 6)
-#define QDMA_GLBL2_PF0_BAR_MAP_MASK				GENMASK(5, 0)
-
-#define EQDMA_GLBL2_DBG_MODE_EN_MASK			BIT(4)
-#define EQDMA_GLBL2_DESC_ENG_MODE_MASK			GENMASK(3, 2)
-#define EQDMA_GLBL2_FLR_PRESENT_MASK			BIT(1)
-#define EQDMA_GLBL2_MAILBOX_EN_MASK				BIT(0)
-
-/** EQDMA_IND_REG_SEL_FMAP */
-#define EQDMA_FMAP_CTXT_W1_QID_MAX_MASK         GENMASK(11, 0)
-#define EQDMA_FMAP_CTXT_W0_QID_MASK             GENMASK(10, 0)
-
-#define EQDMA_GLBL2_IP_VERSION_MASK             GENMASK(23, 20)
-#define EQDMA_GLBL2_VF_IP_VERSION_MASK          GENMASK(7, 4)
-
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl);
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl);
-static void eqdma_hw_desc_err_process(void *dev_hndl);
-static void eqdma_hw_trq_err_process(void *dev_hndl);
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl);
-static void eqdma_mm_h2c0_err_process(void *dev_hndl);
-static void eqdma_mm_c2h0_err_process(void *dev_hndl);
-
-static struct eqdma_hw_err_info eqdma_err_info[EQDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		EQDMA_DSC_ERR_POISON,
-		"Poison error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_BCNT,
-		"Unexpected Byte count in completion error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_BCNT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR,
-		"FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_PORT_ID,
-		"Port ID Error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PORT_ID_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_VF_ACCESS,
-		"VF attempted to access Global register space or Function map",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-		"Access targeted unmapped register via queue space pathway",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-		"Timeout on request to dma internal queue space register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-		"A Shared CMPT queue has encountered a descriptor error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-		"Available ring fetch returns descriptor with error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-		"multi-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-		"single-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_WRB_PORT_ID_ERR,
-		"Port ID error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-		"A non-EOP descriptor received",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_PAR,
-		"Internal data parity error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Even RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM 1 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_ALL,
-		"All SBE Errors.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-{
-		EQDMA_SBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slavle FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slave FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	/* MM C2H Engine 0 errors */
-	{
-		EQDMA_MM_C2H_WR_SLR_ERR,
-		"MM C2H0 WR SLV Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_RD_SLR_ERR,
-		"MM C2H0 RD SLV Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_WR_FLR_ERR,
-		"MM C2H0 WR FLR Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_UR_ERR,
-		"MM C2H0 Unsupported Request Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_WR_UC_RAM_ERR,
-		"MM C2H0 Write Uncorrectable RAM Error",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	{
-		EQDMA_MM_C2H_ERR_ALL,
-		"All MM C2H Errors",
-		EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_C2H_MM_STATUS_ADDR,
-		EQDMA_MM_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK,
-		&eqdma_mm_c2h0_err_process
-	},
-	/* MM H2C Engine 0 Errors */
-	{
-		EQDMA_MM_H2C0_RD_HDR_POISON_ERR,
-		"MM H2C0 Read cmpt header pison Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_UR_CA_ERR,
-		"MM H2C0 Read cmpt unsupported request Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_BYTE_ERR,
-		"MM H2C0 Read cmpt hdr byte cnt Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_PARAM_ERR,
-		"MM H2C0 Read cmpt hdr param mismatch Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_HDR_ADR_ERR,
-		"MM H2C0 Read cmpt hdr address mismatch Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_FLR_ERR,
-		"MM H2C0 Read flr Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_DAT_POISON_ERR,
-		"MM H2C0 Read data poison Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_RD_RQ_DIS_ERR,
-		"MM H2C0 Read request disable Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_WR_DEC_ERR,
-		"MM H2C0 Write desc Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_WR_SLV_ERR,
-		"MM H2C0 Write slv Error",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-	{
-		EQDMA_MM_H2C0_ERR_ALL,
-		"All MM H2C Errors",
-		EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR,
-		EQDMA_H2C_MM_STATUS_ADDR,
-		EQDMA_MM_H2C0_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK,
-		&eqdma_mm_h2c0_err_process
-	},
-
-};
-
-static int32_t all_eqdma_hw_errs[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	EQDMA_DSC_ERR_ALL,
-	EQDMA_TRQ_ERR_ALL,
-	EQDMA_ST_C2H_ERR_ALL,
-	EQDMA_ST_FATAL_ERR_ALL,
-	EQDMA_ST_H2C_ERR_ALL,
-	EQDMA_SBE_1_ERR_ALL,
-	EQDMA_SBE_ERR_ALL,
-	EQDMA_DBE_1_ERR_ALL,
-	EQDMA_DBE_ERR_ALL,
-	EQDMA_MM_C2H_ERR_ALL,
-	EQDMA_MM_H2C0_ERR_ALL
-};
-
-static struct qctx_entry eqdma_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Interrupt with VF", 0},
-	{"Pack descriptor output interface", 0},
-	{"Irq Bypass", 0},
-};
-
-static struct qctx_entry eqdma_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry eqdma_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry eqdma_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry eqdma_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Addr High (L)[37:6]", 0},
-	{"Base Addr High(H)[63:38]", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Insterrupt with VF", 0},
-	{"c2h Direction", 0},
-	{"Base Addr Low[5:2]", 0},
-	{"Shared Completion Queue", 0},
-};
-
-static struct qctx_entry eqdma_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Variable Descriptor", 0},
-	{"Number of descriptors prefetched", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry eqdma_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-	{"Function Id", 0},
-};
-
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t eqdma_get_config_num_regs(void)
-{
-	return eqdma_config_num_regs_get();
-}
-
-struct xreg_info *eqdma_get_config_regs(void)
-{
-	return eqdma_config_regs_get();
-}
-
-uint32_t eqdma_reg_dump_buf_len(void)
-{
-	uint32_t length = (eqdma_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int len = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-			sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(eqdma_sw_ctxt_entries) /
-				sizeof(eqdma_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_hw_ctxt_entries) /
-			sizeof(eqdma_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_credit_ctxt_entries) /
-			sizeof(eqdma_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_fmap_ctxt_entries) /
-			sizeof(eqdma_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(eqdma_c2h_pftch_ctxt_entries) /
-				sizeof(eqdma_c2h_pftch_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return 0;
-}
-
-
-static uint32_t eqdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof(eqdma_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-
-static void eqdma_set_perf_opt(void *dev_hndl)
-{
-	uint32_t reg_val = 0, data_th = 0, pfch_cache_dpth = 0;
-	/****
-	 * TODO: All the below settings are for QDMA5.0
-	 * Need to add the QDMA4.0 settings
-	 */
-#define EQDMA_PFTCH_CACHE_DEPTH				64
-#define GLBL_DSC_CFG_RSVD_1_DFLT			0
-#define EQDMA_GLBL_DSC_CFG_C2H_UODSC_LIMIT		5
-#define EQDMA_GLBL_DSC_CFG_H2C_UODSC_LIMIT              8
-#define GLBL_DSC_CFG_UNC_OVR_COR_DFLT                   0
-#define GLBL_DSC_CFG_CTXT_FER_DIS_DFLT			0
-#define GLBL_DSC_CFG_RSVD_2_DFLT                        0
-#define EQDMA_GLBL_DSC_CFG_MAXFETCH                     2
-#define EQDMA_GLBL_DSC_CFG_WB_ACC_INT			5
-
-	reg_val =
-		FIELD_SET(GLBL_DSC_CFG_RSVD_1_MASK, GLBL_DSC_CFG_RSVD_1_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK,
-					EQDMA_GLBL_DSC_CFG_C2H_UODSC_LIMIT) |
-		FIELD_SET(GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK,
-					EQDMA_GLBL_DSC_CFG_H2C_UODSC_LIMIT) |
-		FIELD_SET(GLBL_DSC_CFG_UNC_OVR_COR_MASK,
-					GLBL_DSC_CFG_UNC_OVR_COR_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_CTXT_FER_DIS_MASK,
-					GLBL_DSC_CFG_CTXT_FER_DIS_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_RSVD_2_MASK, GLBL_DSC_CFG_RSVD_2_DFLT) |
-		FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-				EQDMA_GLBL_DSC_CFG_MAXFETCH) |
-		FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-				EQDMA_GLBL_DSC_CFG_WB_ACC_INT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-
-#define CFG_BLK_MISC_CTL_RSVD_1_DFLT                       0
-#define CFG_BLK_MISC_CTL_10B_TAG_DFLT                      0
-#define CFG_BLK_MISC_CTL_RSVD_2_DFLT                       0
-#define CFG_BLK_MISC_CTL_AXI_WBK_DFLT                      0
-#define CFG_BLK_MISC_CTL_AXI_DSC_DFLT                      0
-#define CFG_BLK_MISC_CTL_NUM_TAG_DFLT                      256
-#define CFG_BLK_MISC_CTL_RSVD_3_DFLT                       0
-#define EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL             9
-
-
-	reg_val =
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_1_MASK,
-				CFG_BLK_MISC_CTL_RSVD_1_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_10B_TAG_EN_MASK,
-					CFG_BLK_MISC_CTL_10B_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_2_MASK,
-				CFG_BLK_MISC_CTL_RSVD_2_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_WBK_MASK,
-					CFG_BLK_MISC_CTL_AXI_WBK_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_AXI_DSC_MASK,
-					CFG_BLK_MISC_CTL_AXI_DSC_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_NUM_TAG_MASK,
-					CFG_BLK_MISC_CTL_NUM_TAG_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RSVD_3_MASK,
-				CFG_BLK_MISC_CTL_RSVD_3_DFLT) |
-		FIELD_SET(CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK,
-				EQDMA_CFG_BLK_MISC_CTL_RQ_METERING_MUL);
-	qdma_reg_write(dev_hndl, EQDMA_CFG_BLK_MISC_CTL_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_CFG_BLK_MISC_CTL_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_CFG_BLK_MISC_CTL_ADDR, reg_val);
-
-#define EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH                    256
-#define C2H_PFCH_CFG_FL_TH_DFLT                           256
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_EVTFL_TH_MASK,
-				EQDMA_PFTCH_CFG_EVT_PFTH_FL_TH) |
-		FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK, C2H_PFCH_CFG_FL_TH_DFLT);
-
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_ADDR, reg_val);
-
-#define EQDMA_C2H_PFCH_CFG_1_QCNT_MASK		(EQDMA_PFTCH_CACHE_DEPTH - 4)
-#define EQDMA_C2H_PFCH_CFG_1_EVNT_QCNT_TH	EQDMA_C2H_PFCH_CFG_1_QCNT_MASK
-	pfch_cache_dpth = qdma_reg_read(dev_hndl,
-			EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR);
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK,
-				(pfch_cache_dpth - 4)) |
-		FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK, (pfch_cache_dpth - 4));
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_1_ADDR, reg_val);
-
-#define EQDMA_C2H_PFCH_CFG_2_FENCE_EN               1
-#define C2H_PFCH_CFG_2_RSVD_DFLT                    0
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT        0
-#define C2H_PFCH_CFG_2_LL_SZ_TH_DFLT                1024
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM                 15
-#define C2H_PFCH_CFG_2_NUM_DFLT                     8
-
-	reg_val =
-		FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK,
-				EQDMA_C2H_PFCH_CFG_2_FENCE_EN) |
-		FIELD_SET(C2H_PFCH_CFG_2_RSVD_MASK, C2H_PFCH_CFG_2_RSVD_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK,
-					C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_LL_SZ_TH_MASK,
-				C2H_PFCH_CFG_2_LL_SZ_TH_DFLT) |
-		FIELD_SET(C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK,
-					C2H_PFCH_CFG_2_VAR_DESC_NUM) |
-		FIELD_SET(C2H_PFCH_CFG_2_NUM_MASK, C2H_PFCH_CFG_2_NUM_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-#define PFCH_CFG_3_RSVD_DFLT                               0
-#define PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_DFLT            256
-#define PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_DFLT          0
-
-
-	reg_val =
-		FIELD_SET(PFCH_CFG_3_RSVD_MASK, PFCH_CFG_3_RSVD_DFLT) |
-		FIELD_SET(PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK,
-				PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_DFLT) |
-		FIELD_SET(PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK,
-				PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_PFCH_CFG_3_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_PFCH_CFG_3_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-#define EQDMA_PFCH_CFG_4_GLB_EVT_TIMER_TICK             64
-#define PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_DFLT           0
-#define EQDMA_PFCH_CFG_4_EVT_TIMER_TICK                 400
-#define PFCH_CFG_4_DISABLE_EVT_TIMER_DFLT               0
-
-
-	reg_val =
-		FIELD_SET(PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK,
-				EQDMA_PFCH_CFG_4_GLB_EVT_TIMER_TICK) |
-		FIELD_SET(PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK,
-				PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_DFLT) |
-		FIELD_SET(PFCH_CFG_4_EVT_TIMER_TICK_MASK,
-				EQDMA_PFCH_CFG_4_EVT_TIMER_TICK) |
-		FIELD_SET(PFCH_CFG_4_DISABLE_EVT_TIMER_MASK,
-				PFCH_CFG_4_DISABLE_EVT_TIMER_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_PFCH_CFG_4_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_PFCH_CFG_4_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_PFCH_CFG_4_ADDR, reg_val);
-/**************** SET_2 *******************/
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT             0
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT        16
-#define EQDMA_C2H_CRDT_COAL_CFG_1_TIMER_TH          16 //64
-
-
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_RSVD_1_MASK,
-				C2H_CRDT_COAL_CFG_1_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK,
-				C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK,
-				EQDMA_C2H_CRDT_COAL_CFG_1_TIMER_TH);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_CRDT_COAL_CFG_1_ADDR, reg_val);
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT                   0
-#define EQDMA_C2H_CRDT_COAL_CFG_2_FIFO_TH	(EQDMA_PFTCH_CACHE_DEPTH - 8)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT                0
-#define EQDMA_C2H_CRDT_COAL_CFG_2_CRDT_TH                 96
-
-	reg_val =
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RSVD_1_MASK,
-					C2H_CRDT_COAL_CFG_2_RSVD_1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK,
-					(pfch_cache_dpth - 8)) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_RESERVED1_MASK,
-					C2H_CRDT_COAL_CFG_2_RESERVED1_DFLT) |
-		FIELD_SET(C2H_CRDT_COAL_CFG_2_NT_TH_MASK,
-					EQDMA_C2H_CRDT_COAL_CFG_2_CRDT_TH);
-	qdma_reg_write(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_C2H_CRDT_COAL_CFG_2_ADDR, reg_val);
-
-/**************** SET_3 *******************/
-#define EQDMA_GLBL2_RRQ_PCIE_THROT_REQ_EN                  0
-#define GLBL2_RRQ_PCIE_THROT_REQ_DFLT                      192
-#define GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT                   1
-#define GLBL2_RRQ_PCIE_THROT_DAT_DFLT                      20480
-
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK,
-					EQDMA_GLBL2_RRQ_PCIE_THROT_REQ_EN) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_REQ_MASK,
-					GLBL2_RRQ_PCIE_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK,
-					GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_PCIE_THROT_DAT_MASK,
-					GLBL2_RRQ_PCIE_THROT_DAT_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-#define GLBL2_RRQ_AXIMM_THROT_REQ_EN_DFLT                  0
-#define GLBL2_RRQ_AXIMM_THROT_REQ_DFLT                     0
-#define GLBL2_RRQ_AXIMM_THROT_DAT_EN_DFLT                  0
-#define GLBL2_RRQ_AXIMM_THROT_DAT_DFLT                     0
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK,
-					GLBL2_RRQ_AXIMM_THROT_REQ_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_REQ_MASK,
-					GLBL2_RRQ_AXIMM_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK,
-					GLBL2_RRQ_AXIMM_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_AXIMM_THROT_DAT_MASK,
-					GLBL2_RRQ_AXIMM_THROT_DAT_DFLT);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR, reg_val);
-#define GLBL2_RRQ_BRG_THROT_REQ_EN_DFLT                    1
-#define GLBL2_RRQ_BRG_THROT_REQ_DFLT             GLBL2_RRQ_PCIE_THROT_REQ_DFLT
-#define GLBL2_RRQ_BRG_THROT_DAT_EN_DFLT                    1
-
-
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR);
-	qdma_log_info("%s: BF reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR, reg_val);
-	data_th = FIELD_GET(GLBL2_RRQ_PCIE_THROT_DAT_MASK, reg_val);
-
-	reg_val =
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_REQ_EN_MASK,
-				GLBL2_RRQ_BRG_THROT_REQ_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_REQ_MASK,
-				GLBL2_RRQ_BRG_THROT_REQ_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_DAT_EN_MASK,
-				GLBL2_RRQ_BRG_THROT_DAT_EN_DFLT) |
-		FIELD_SET(GLBL2_RRQ_BRG_THROT_DAT_MASK, data_th);
-	qdma_reg_write(dev_hndl, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_GLBL2_RRQ_BRG_THROT_ADDR, reg_val);
-
-/******************* SET_4 *************************/
-#define EQDMA_H2C_REQ_THROT_PCIE_EN_REQ                     1
-#define EQDMA_H2C_REQ_THROT_PCIE_REQ_TH          GLBL2_RRQ_PCIE_THROT_REQ_DFLT
-#define EQDMA_H2C_REQ_THROT_PCIE_EN_DATA                    1
-#define EQDMA_H2C_REQ_THROT_PCIE_DATA_TH                    24576
-
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-				EQDMA_H2C_REQ_THROT_PCIE_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_REQ_THROT_PCIE_ADDR, reg_val);
-#define EQDMA_H2C_REQ_THROT_AXIMM_EN_REQ            1
-#define EQDMA_H2C_REQ_THROT_AXIMM_REQ_TH            64
-#define EQDMA_H2C_REQ_THROT_AXIMM_EN_DATA           1
-#define EQDMA_H2C_REQ_THROT_AXIMM_DATA_TH           16384
-
-	reg_val =
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_REQ_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_EN_REQ) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_REQ_TH) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_EN_DATA_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_EN_DATA) |
-		FIELD_SET(H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK,
-					EQDMA_H2C_REQ_THROT_AXIMM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_REQ_THROT_AXIMM_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_REQ_THROT_AXIMM_ADDR, reg_val);
-
-#define H2C_MM_DATA_THROTTLE_RSVD_1_DFLT        0
-#define EQDMA_H2C_MM_DATA_TH_EN		      GLBL2_RRQ_PCIE_THROT_DAT_EN_DFLT
-#define EQDMA_H2C_MM_DATA_TH		      GLBL2_RRQ_PCIE_THROT_DAT_DFLT
-
-	reg_val =
-		FIELD_SET(H2C_MM_DATA_THROTTLE_RSVD_1_MASK,
-				H2C_MM_DATA_THROTTLE_RSVD_1_DFLT) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_EN_MASK,
-				EQDMA_H2C_MM_DATA_TH_EN) |
-		FIELD_SET(H2C_MM_DATA_THROTTLE_DAT_MASK, EQDMA_H2C_MM_DATA_TH);
-	qdma_reg_write(dev_hndl, EQDMA_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_H2C_MM_DATA_THROTTLE_ADDR);
-	qdma_log_info("%s: reg = 0x%08X val = 0x%08X\n",
-			__func__, EQDMA_H2C_MM_DATA_THROTTLE_ADDR, reg_val);
-
-}
-
-
-/*
- * eqdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-		 index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_get_ip_version(void *dev_hndl, uint8_t is_vf,
-			uint32_t *ip_version)
-{
-	uint32_t ver_reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_OFFSET_VF_VERSION :
-			EQDMA_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	ver_reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	if (!is_vf) {
-		*ip_version =
-			FIELD_GET(EQDMA_GLBL2_IP_VERSION_MASK,
-				ver_reg_val);
-	} else {
-		*ip_version =
-			FIELD_GET(EQDMA_GLBL2_VF_IP_VERSION_MASK,
-					ver_reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void eqdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	int i = 0;
-
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pidx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_arm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fnc_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->qen;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->frcd_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_chk;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_intvl_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->at;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fetch_max;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->rngsz_idx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->desc_sz;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->bypass;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mm_chn;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbk_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->port_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_no_last;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err_wb_sent;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_req;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mrkr_dis;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->is_mm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->vec;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->intr_aggr;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->dis_intr_on_vf;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pack_byp_out;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_byp;
-
-}
-
-/*
- * eqdma_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void eqdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	int i = 0;
-
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_stat_desc;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_int;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->trig_mode;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->fnc_id;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->counter_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->in_st;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->color;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ringsz_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->desc_sz;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->pidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->cidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->valid;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->err;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->user_trig_pend;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_running;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->full_upd;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ovf_chk_dis;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->at;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->vec;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->int_aggr;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dis_intr_on_vf;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dir_c2h;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->sh_cmpt;
-}
-
-/*
- * eqdma_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void eqdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	int i = 0;
-
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->cidx;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->crd_use;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->dsc_pend;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->idl_stp_b;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->evt_pnd;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * eqdma_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void eqdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	eqdma_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * eqdma_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void eqdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt
-		*pfetch_ctxt)
-{
-	int i = 0;
-
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bypass;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bufsz_idx;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->port_id;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->var_desc;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->num_pftch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->err;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch_en;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->sw_crdt;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->valid;
-}
-
-/*
- * eqdma_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void eqdma_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	eqdma_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	eqdma_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * eqdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void eqdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	int i = 0;
-
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->valid;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->vec;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->int_st;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->color;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->page_size;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->pidx;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->at;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->func_id;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_set_default_global_csr(void *dev_hndl)
-{
-	int rv = QDMA_SUCCESS;
-
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-	uint32_t eqdma_ip_version;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	rv = eqdma_get_ip_version(dev_hndl, 0, &eqdma_ip_version);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-		/* Writeback Interval */
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val =
-				FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-						DEFAULT_MAX_DSC_FETCH) |
-				FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-						DEFAULT_WRB_INT);
-
-			qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR,
-					reg_val);
-		}
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR);
-			cfg_val = FIELD_GET(C2H_PFCH_CACHE_DEPTH_MASK, reg_val);
-			reg_val = FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK,
-					(cfg_val >> 2)) |
-				FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK,
-						((cfg_val >> 2) - 4));
-
-			qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR,
-					reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_C2H_PFCH_CFG_2_ADDR);
-			reg_val |= FIELD_SET(C2H_PFCH_CFG_2_FENCE_MASK, 1);
-			qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR,
-					reg_val);
-		}
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, EQDMA_C2H_INT_TIMER_TICK_ADDR,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR);
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, EQDMA_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-		/* H2C throttle Configuration*/
-		if (eqdma_ip_version == EQDMA_IP_VERSION_4) {
-			reg_val =
-				FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-						EQDMA_H2C_THROT_DATA_THRESH) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-						EQDMA_THROT_EN_DATA) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-						EQDMA_H2C_THROT_REQ_THRESH) |
-				FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-						EQDMA_THROT_EN_REQ);
-
-			qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR,
-					reg_val);
-		}
-	}
-
-	if (eqdma_ip_version == EQDMA_IP_VERSION_5)
-		eqdma_set_perf_opt(dev_hndl);
-	return QDMA_SUCCESS;
-}
-
-/*
- * dump_eqdma_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			eqdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	eqdma_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(eqdma_sw_ctxt_entries) /
-				sizeof((eqdma_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[i].name,
-				eqdma_sw_ctxt_entries[i].value,
-				eqdma_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(eqdma_hw_ctxt_entries) /
-				sizeof((eqdma_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_hw_ctxt_entries[i].name,
-				eqdma_hw_ctxt_entries[i].value,
-				eqdma_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(eqdma_credit_ctxt_entries) /
-			sizeof((eqdma_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_credit_ctxt_entries[i].name,
-				eqdma_credit_ctxt_entries[i].value,
-				eqdma_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof((eqdma_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cmpt_ctxt_entries[i].name,
-				eqdma_cmpt_ctxt_entries[i].value,
-				eqdma_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(eqdma_c2h_pftch_ctxt_entries) /
-			sizeof(eqdma_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_c2h_pftch_ctxt_entries[i].name,
-				eqdma_c2h_pftch_ctxt_entries[i].value,
-				eqdma_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* FMAP context dump */
-	n = sizeof(eqdma_fmap_ctxt_entries) /
-		sizeof((eqdma_fmap_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"FMAP Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-			DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_fmap_ctxt_entries[i].name,
-			eqdma_fmap_ctxt_entries[i].value,
-			eqdma_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * dump_eqdma_intr_context() - Helper function to dump interrupt context into
- * string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	eqdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof((eqdma_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_ind_intr_ctxt_entries[i].name,
-			eqdma_ind_intr_ctxt_entries[i].value,
-			eqdma_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_version() - Function to get the eqdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_OFFSET_VF_VERSION :
-			EQDMA_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	pasid_l =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	virtio_desc_base_l = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_m = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_h = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-		ctxt->virtio_dsc_base);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_FNC_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-				  ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->intr_aggr) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				ctxt->virtio_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				ctxt->pack_byp_out) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK, ctxt->irq_byp) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				virtio_desc_base_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				virtio_desc_base_m);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				virtio_desc_base_h);
-
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-				sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_FNC_MASK,
-				sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(SW_IND_CTXT_DATA_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		(uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK,
-				sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-				sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-				sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-				sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-				sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-				sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(SW_IND_CTXT_DATA_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr = (uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK,
-			sw_ctxt[4]));
-	ctxt->dis_intr_on_vf =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				sw_ctxt[4]));
-	ctxt->virtio_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				sw_ctxt[4]));
-	ctxt->pack_byp_out =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				sw_ctxt[4]));
-	ctxt->irq_byp =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK,
-				sw_ctxt[4]));
-	ctxt->host_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK,
-				sw_ctxt[4]));
-	pasid_l = FIELD_GET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, sw_ctxt[4]);
-
-	pasid_h = FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, sw_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK,
-			sw_ctxt[5]);
-	virtio_desc_base_l =
-		FIELD_GET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				sw_ctxt[5]);
-	virtio_desc_base_m =
-		FIELD_GET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				sw_ctxt[6]);
-
-	virtio_desc_base_h =
-		FIELD_GET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				sw_ctxt[6]);
-
-	ctxt->pasid =
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_L_MASK, pasid_l) |
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	ctxt->virtio_dsc_base =
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-					(uint64_t)virtio_desc_base_l) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-					(uint64_t)virtio_desc_base_m) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-					(uint64_t)virtio_desc_base_h);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK,
-				ctxt->num_pftch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				ctxt->var_desc) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-			pfetch_ctxt[0]);
-	ctxt->num_pftch = (uint16_t) FIELD_GET(
-			PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->var_desc = (uint8_t)
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr4_high_l, baddr4_high_h,
-			baddr4_low, pidx_l, pidx_h, pasid_l, pasid_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr4_high_l = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-			ctxt->bs_addr);
-	baddr4_high_h = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-			ctxt->bs_addr);
-	baddr4_low = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK, ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK, baddr4_high_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK, baddr4_high_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, ctxt->full_upd) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->int_aggr) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VIO_MASK, ctxt->vio) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK, ctxt->dir_c2h) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-				ctxt->pasid_en) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK,
-				baddr4_low) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK, ctxt->vio_eop) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK, ctxt->sh_cmpt);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr4_high_l, baddr4_high_h, baddr4_low,
-			pidx_l, pidx_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr4_high_l = FIELD_GET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK,
-			cmpt_ctxt[1]);
-
-	baddr4_high_h = FIELD_GET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK,
-			cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(CMPL_CTXT_DATA_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(CMPL_CTXT_DATA_W4_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, cmpt_ctxt[4]));
-	ctxt->dis_intr_on_vf = (uint8_t)
-		FIELD_GET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				cmpt_ctxt[4]);
-	ctxt->vio = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_VIO_MASK,
-			cmpt_ctxt[4]);
-	ctxt->dir_c2h = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK,
-			cmpt_ctxt[4]);
-	ctxt->host_id = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_HOST_ID_MASK,
-			cmpt_ctxt[4]);
-	pasid_l = FIELD_GET(CMPL_CTXT_DATA_W4_PASID_L_MASK, cmpt_ctxt[4]);
-
-	pasid_h = (uint32_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_H_MASK,
-			cmpt_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-			cmpt_ctxt[5]);
-	baddr4_low = (uint8_t)FIELD_GET(
-			CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK, cmpt_ctxt[5]);
-	ctxt->vio_eop = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK,
-			cmpt_ctxt[5]);
-	ctxt->sh_cmpt = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK,
-			cmpt_ctxt[5]);
-
-	ctxt->bs_addr =
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				(uint64_t)baddr4_high_l) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				(uint64_t)baddr4_high_h) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				(uint64_t)baddr4_low);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK,
-				(uint64_t)pasid_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[EQDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-					hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-					hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_EVT_PND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[EQDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[EQDMA_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(EQDMA_FMAP_CTXT_W1_QID_MAX_MASK, config->qmax);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[EQDMA_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, func_id,
-			EQDMA_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(EQDMA_FMAP_CTXT_W0_QID_MASK, fmap[0]);
-	config->qmax = FIELD_GET(EQDMA_FMAP_CTXT_W1_QID_MAX_MASK, fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_context_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_fmap_context_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return eqdma_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_fmap_context_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_fmap_context_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_fmap_context_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	pasid_l =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(INTR_CTXT_DATA_W2_AT_MASK, ctxt->at) |
-		FIELD_SET(INTR_CTXT_DATA_W2_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PASID_L_MASK, pasid_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_H_MASK, pasid_h) |
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(INTR_CTXT_DATA_W3_FUNC_MASK, ctxt->func_id);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			EQDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_AT_MASK, intr_ctxt[2]));
-	ctxt->host_id = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_HOST_ID_MASK,
-			intr_ctxt[2]));
-	pasid_l = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_PASID_L_MASK,
-			intr_ctxt[2]));
-
-	pasid_h = FIELD_GET(INTR_CTXT_DATA_W3_PASID_H_MASK, intr_ctxt[3]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(INTR_CTXT_DATA_W3_PASID_EN_MASK,
-			intr_ctxt[3]);
-
-	ctxt->func_id = (uint16_t)FIELD_GET(INTR_CTXT_DATA_W3_FUNC_MASK,
-			intr_ctxt[3]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < eqdma_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s", reg_info[i].name);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @context:	Queue Context
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_intr_context() - Function to get qdma interrupt context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @intr_ctx:	Interrupt Context
- * @ring_index: Ring index
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = eqdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = eqdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = eqdma_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = eqdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = eqdma_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_eqdma_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_user_bar() - Function to get the AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite bar number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  EQDMA_OFFSET_VF_USER_BAR :
-			EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: AXI Master Lite bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-	user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG0_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG1_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT0_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT1_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG2_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_err_dump_ctxt_info() - Dump the imp ctxt fields on HW error
- *
- * @dev_hndl: device handle
- * @first_err_qid: First Error QID
- * @en_st: ST Mode or MM Mode enabled
- * @c2h: C2H or H2C Mode
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_err_dump_ctxt_info(void *dev_hndl,
-		uint32_t first_err_qid_reg,
-		uint8_t en_st, uint8_t c2h)
-{
-	uint16_t first_err_qid	= 0;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-
-	first_err_qid = qdma_reg_read(dev_hndl, first_err_qid_reg);
-
-	eqdma_sw_context_read(dev_hndl, c2h, first_err_qid, &sw_ctxt);
-	eqdma_hw_context_read(dev_hndl, c2h, first_err_qid, &hw_ctxt);
-	eqdma_fill_sw_ctxt(&sw_ctxt);
-	eqdma_fill_hw_ctxt(&hw_ctxt);
-
-	if (sw_ctxt.pidx != hw_ctxt.cidx) {
-		qdma_log_info("\n%40s\n", "SW Context:");
-		/** SW Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_sw_ctxt_entries[0].name,
-					eqdma_sw_ctxt_entries[0].value,
-					eqdma_sw_ctxt_entries[0].value);
-		qdma_log_info("\n%40s\n", "HW Context:");
-		/*** HW Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_hw_ctxt_entries[0].name,
-					eqdma_hw_ctxt_entries[0].value,
-					eqdma_hw_ctxt_entries[0].value);
-	}
-
-	if (sw_ctxt.err != 0) {
-		/*** SW Context: ERR ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_sw_ctxt_entries[17].name,
-					eqdma_sw_ctxt_entries[17].value,
-					eqdma_sw_ctxt_entries[17].value);
-	}
-
-	/*** SW Context: ERR WB SENT***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[18].name,
-				eqdma_sw_ctxt_entries[18].value,
-				eqdma_sw_ctxt_entries[18].value);
-
-	/*** SW Context: IRQ REQ***/
-	qdma_log_info("%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[19].name,
-				eqdma_sw_ctxt_entries[19].value,
-				eqdma_sw_ctxt_entries[19].value);
-
-	if (en_st && c2h) {
-		eqdma_cmpt_context_read(dev_hndl, first_err_qid, &cmpt_ctxt);
-		eqdma_fill_cmpt_ctxt(&cmpt_ctxt);
-
-		qdma_log_info("\n%40s\n", "CMPT Context:");
-
-		/*** CMPT Context: int_st ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[6].name,
-					eqdma_cmpt_ctxt_entries[6].value,
-					eqdma_cmpt_ctxt_entries[6].value);
-
-		/** CMPT Context: PIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[12].name,
-					eqdma_cmpt_ctxt_entries[12].value,
-					eqdma_cmpt_ctxt_entries[12].value);
-		/*** CMPT Context: CIDX ***/
-		qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[13].name,
-					eqdma_cmpt_ctxt_entries[13].value,
-					eqdma_cmpt_ctxt_entries[13].value);
-
-		if (cmpt_ctxt.err != 0) {
-			/*** CMPT Context: ERR ***/
-			qdma_log_info("%-47s %#-10x %u\n",
-					eqdma_cmpt_ctxt_entries[15].name,
-					eqdma_cmpt_ctxt_entries[15].value,
-					eqdma_cmpt_ctxt_entries[15].value);
-		}
-	}
-}
-/*****************************************************************************/
-/**
- * eqdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_FIRST_ERR_QID_ADDR,
-		EQDMA_H2C_DBG_REG0_ADDR,
-		EQDMA_H2C_DBG_REG1_ADDR,
-		EQDMA_H2C_DBG_REG2_ADDR,
-		EQDMA_H2C_DBG_REG3_ADDR,
-		EQDMA_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-				EQDMA_H2C_FIRST_ERR_QID_ADDR, 1, 0);
-
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-
-	uint32_t st_c2h_err_reg_list[] = {
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FIRST_ERR_QID_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-				EQDMA_C2H_FIRST_ERR_QID_ADDR, 1, 1);
-
-}
-
-/*****************************************************************************/
-/**
- * eqdma_mm_c2h0_err_process() - Function to dump MM C2H
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_mm_c2h0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_c2h_err_reg_list[] = {
-		EQDMA_C2H_MM_STATUS_ADDR,
-		EQDMA_C2H_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_C2H_MM_ERR_CODE_ADDR,
-		EQDMA_C2H_MM_ERR_INFO_ADDR,
-		EQDMA_C2H_MM_DBG_ADDR
-	};
-	int mm_c2h_err_num_regs = sizeof(mm_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_c2h_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, mm_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_C2H_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_mm_h2c0_err_process() - Function to dump MM H2C
- * Error information
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_mm_h2c0_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t mm_h2c_err_reg_list[] = {
-		EQDMA_H2C_MM_STATUS_ADDR,
-		EQDMA_H2C_MM_CMPL_DESC_CNT_ADDR,
-		EQDMA_H2C_MM_ERR_CODE_ADDR,
-		EQDMA_H2C_MM_ERR_INFO_ADDR,
-		EQDMA_H2C_MM_DBG_ADDR
-	};
-	int mm_h2c_err_num_regs = sizeof(mm_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < mm_h2c_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, mm_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-	eqdma_hw_err_dump_ctxt_info(dev_hndl,
-			EQDMA_H2C_MM_ERR_INFO_ADDR, 0, 1);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *eqdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum eqdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return eqdma_err_info[(enum eqdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		EQDMA_DSC_ERR_POISON,
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_DBE_ERR_MI_H2C0_DAT,
-		EQDMA_MM_C2H_WR_SLR_ERR,
-		EQDMA_MM_H2C0_RD_HDR_POISON_ERR
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR);
-
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, EQDMA_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == EQDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				eqdma_err_info[bit].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			eqdma_err_info[bit].eqdma_hw_err_process(
-						dev_hndl);
-			for (idx = bit; idx < all_eqdma_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				eqdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						eqdma_hw_get_error_name(idx));
-			}
-			qdma_reg_write(dev_hndl,
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum eqdma_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == EQDMA_ERRS_ALL) {
-		for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_eqdma_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == EQDMA_ST_C2H_ERR_ALL ||
-					idx == EQDMA_ST_FATAL_ERR_ALL ||
-					idx == EQDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = eqdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				eqdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				eqdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= EQDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= EQDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(eqdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(eqdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_device_attributes() - Function to get the qdma device
- * attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs =
-			FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en = FIELD_GET(EQDMA_GLBL2_MAILBOX_EN_MASK,
-		reg_val);
-	dev_info->flr_present = FIELD_GET(EQDMA_GLBL2_FLR_PRESENT_MASK,
-		reg_val);
-	dev_info->mm_cmpt_en  = 0;
-	dev_info->debug_mode = FIELD_GET(EQDMA_GLBL2_DBG_MODE_EN_MASK,
-		reg_val);
-	dev_info->desc_eng_mode = FIELD_GET(EQDMA_GLBL2_DESC_ENG_MODE_MASK,
-		reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK, reg_val)) ? 1 : 0;
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		eqdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[reg_count].is_debug_reg == 1)
-			continue;
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *eqdma_config_regs = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = EQDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = EQDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = EQDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = EQDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &eqdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				EQDMA_C2H_TIMER_CNT_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  EQDMA_C2H_MM_CTL_ADDR :
-			EQDMA_H2C_MM_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en)
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *config_regs  = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-			/* If Debug Mode not enabled and the current register
-			 * is debug register, skip reading it.
-			 */
-			if (dev_cap.debug_mode == 0 &&
-					config_regs[j].is_debug_reg == 1)
-				continue;
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
deleted file mode 100755
index 4cc8ca9..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __EQDMA_SOFT_ACCESS_H_
-#define __EQDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum eqdma_error_idx {
-	/* Descriptor errors */
-	EQDMA_DSC_ERR_POISON,
-	EQDMA_DSC_ERR_UR_CA,
-	EQDMA_DSC_ERR_BCNT,
-	EQDMA_DSC_ERR_PARAM,
-	EQDMA_DSC_ERR_ADDR,
-	EQDMA_DSC_ERR_TAG,
-	EQDMA_DSC_ERR_FLR,
-	EQDMA_DSC_ERR_TIMEOUT,
-	EQDMA_DSC_ERR_DAT_POISON,
-	EQDMA_DSC_ERR_FLR_CANCEL,
-	EQDMA_DSC_ERR_DMA,
-	EQDMA_DSC_ERR_DSC,
-	EQDMA_DSC_ERR_RQ_CANCEL,
-	EQDMA_DSC_ERR_DBE,
-	EQDMA_DSC_ERR_SBE,
-	EQDMA_DSC_ERR_PORT_ID,
-	EQDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	EQDMA_TRQ_ERR_CSR_UNMAPPED,
-	EQDMA_TRQ_ERR_VF_ACCESS,
-	EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-	EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-	EQDMA_TRQ_ERR_QID_RANGE,
-	EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-	EQDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-	EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-	EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-	EQDMA_ST_C2H_ERR_QID_MISMATCH,
-	EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-	EQDMA_ST_C2H_ERR_WRB_PORT_ID_ERR,
-	EQDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-	EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-	EQDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-	EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-	EQDMA_ST_H2C_ERR_SBE,
-	EQDMA_ST_H2C_ERR_DBE,
-	EQDMA_ST_H2C_ERR_PAR,
-	EQDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_SBE_1_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_ERR_MI_H2C0_DAT,
-	EQDMA_SBE_ERR_MI_H2C1_DAT,
-	EQDMA_SBE_ERR_MI_H2C2_DAT,
-	EQDMA_SBE_ERR_MI_H2C3_DAT,
-	EQDMA_SBE_ERR_MI_C2H0_DAT,
-	EQDMA_SBE_ERR_MI_C2H1_DAT,
-	EQDMA_SBE_ERR_MI_C2H2_DAT,
-	EQDMA_SBE_ERR_MI_C2H3_DAT,
-	EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_SBE_ERR_FUNC_MAP,
-	EQDMA_SBE_ERR_DSC_HW_CTXT,
-	EQDMA_SBE_ERR_DSC_CRD_RCV,
-	EQDMA_SBE_ERR_DSC_SW_CTXT,
-	EQDMA_SBE_ERR_DSC_CPLI,
-	EQDMA_SBE_ERR_DSC_CPLD,
-	EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_SBE_ERR_QID_FIFO_RAM,
-	EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_SBE_ERR_INT_CTXT_RAM,
-	EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_SBE_ERR_WRB_CTXT_RAM,
-	EQDMA_SBE_ERR_PFCH_LL_RAM,
-	EQDMA_SBE_ERR_PEND_FIFO_RAM,
-	EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_DBE_1_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_ERR_MI_H2C0_DAT,
-	EQDMA_DBE_ERR_MI_H2C1_DAT,
-	EQDMA_DBE_ERR_MI_H2C2_DAT,
-	EQDMA_DBE_ERR_MI_H2C3_DAT,
-	EQDMA_DBE_ERR_MI_C2H0_DAT,
-	EQDMA_DBE_ERR_MI_C2H1_DAT,
-	EQDMA_DBE_ERR_MI_C2H2_DAT,
-	EQDMA_DBE_ERR_MI_C2H3_DAT,
-	EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_DBE_ERR_FUNC_MAP,
-	EQDMA_DBE_ERR_DSC_HW_CTXT,
-	EQDMA_DBE_ERR_DSC_CRD_RCV,
-	EQDMA_DBE_ERR_DSC_SW_CTXT,
-	EQDMA_DBE_ERR_DSC_CPLI,
-	EQDMA_DBE_ERR_DSC_CPLD,
-	EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_DBE_ERR_QID_FIFO_RAM,
-	EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_DBE_ERR_INT_CTXT_RAM,
-	EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_DBE_ERR_WRB_CTXT_RAM,
-	EQDMA_DBE_ERR_PFCH_LL_RAM,
-	EQDMA_DBE_ERR_PEND_FIFO_RAM,
-	EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_DBE_ERR_ALL,
-
-	/* MM C2H Errors */
-	EQDMA_MM_C2H_WR_SLR_ERR,
-	EQDMA_MM_C2H_RD_SLR_ERR,
-	EQDMA_MM_C2H_WR_FLR_ERR,
-	EQDMA_MM_C2H_UR_ERR,
-	EQDMA_MM_C2H_WR_UC_RAM_ERR,
-	EQDMA_MM_C2H_ERR_ALL,
-
-	/* MM H2C Engine0 Errors */
-	EQDMA_MM_H2C0_RD_HDR_POISON_ERR,
-	EQDMA_MM_H2C0_RD_UR_CA_ERR,
-	EQDMA_MM_H2C0_RD_HDR_BYTE_ERR,
-	EQDMA_MM_H2C0_RD_HDR_PARAM_ERR,
-	EQDMA_MM_H2C0_RD_HDR_ADR_ERR,
-	EQDMA_MM_H2C0_RD_FLR_ERR,
-	EQDMA_MM_H2C0_RD_DAT_POISON_ERR,
-	EQDMA_MM_H2C0_RD_RQ_DIS_ERR,
-	EQDMA_MM_H2C0_WR_DEC_ERR,
-	EQDMA_MM_H2C0_WR_SLV_ERR,
-	EQDMA_MM_H2C0_ERR_ALL,
-
-	EQDMA_ERRS_ALL
-};
-
-struct eqdma_hw_err_info {
-	enum eqdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*eqdma_hw_err_process)(void *dev_hndl);
-};
-
-/* In QDMA_GLBL2_MISC_CAP(0x134) register,
- * Bits [23:20] gives QDMA IP version.
- * 0: QDMA3.1, 1: QDMA4.0, 2: QDMA5.0
- */
-#define EQDMA_IP_VERSION_4                1
-#define EQDMA_IP_VERSION_5                2
-
-#define EQDMA_OFFSET_VF_VERSION           0x5014
-#define EQDMA_OFFSET_VF_USER_BAR		  0x5018
-
-#define EQDMA_OFFSET_MBOX_BASE_PF         0x22400
-#define EQDMA_OFFSET_MBOX_BASE_VF         0x5000
-
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK             GENMASK_ULL(63, 38)
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK             GENMASK_ULL(37, 6)
-#define EQDMA_COMPL_CTXT_BADDR_LOW_MASK                GENMASK_ULL(5, 2)
-
-int eqdma_init_ctxt_memory(void *dev_hndl);
-
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int eqdma_get_ip_version(void *dev_hndl, uint8_t is_vf,
-			uint32_t *ip_version);
-
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_sw_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type);
-
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_prefetch_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-			struct qdma_indirect_intr_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-uint32_t eqdma_reg_dump_buf_len(void);
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int eqdma_hw_error_process(void *dev_hndl);
-const char *eqdma_hw_get_error_name(uint32_t err_idx);
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int eqdma_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int eqdma_set_default_global_csr(void *dev_hndl);
-
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t eqdma_get_config_num_regs(void);
-
-struct xreg_info *eqdma_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __EQDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
deleted file mode 100755
index 0905d50..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
+++ /dev/null
@@ -1,1524 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __EQDMA_SOFT_REG_H
-#define __EQDMA_SOFT_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t eqdma_config_num_regs_get(void);
-struct xreg_info *eqdma_config_regs_get(void);
-#define EQDMA_CFG_BLK_IDENTIFIER_ADDR                      0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR               0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK                GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(2, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR          0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK           GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_SYSTEM_ID_ADDR                       0x10
-#define CFG_BLK_SYSTEM_ID_RSVD_1_MASK                      GENMASK(31, 17)
-#define CFG_BLK_SYSTEM_ID_INST_TYPE_MASK                   BIT(16)
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define EQDMA_CFG_BLK_MSIX_ENABLE_ADDR                     0x014
-#define CFG_BLK_MSIX_ENABLE_MASK                          GENMASK(31, 0)
-#define EQDMA_CFG_PCIE_DATA_WIDTH_ADDR                     0x18
-#define CFG_PCIE_DATA_WIDTH_RSVD_1_MASK                    GENMASK(31, 3)
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define EQDMA_CFG_PCIE_CTL_ADDR                            0x1C
-#define CFG_PCIE_CTL_RSVD_1_MASK                           GENMASK(31, 18)
-#define CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK                   GENMASK(17, 16)
-#define CFG_PCIE_CTL_RSVD_2_MASK                           GENMASK(15, 2)
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define EQDMA_CFG_BLK_MSI_ENABLE_ADDR                      0x20
-#define CFG_BLK_MSI_ENABLE_MASK                           GENMASK(31, 0)
-#define EQDMA_CFG_AXI_USER_MAX_PLD_SIZE_ADDR               0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define EQDMA_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR          0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_MISC_CTL_ADDR                        0x4C
-#define CFG_BLK_MISC_CTL_RSVD_1_MASK                       GENMASK(31, 24)
-#define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK                   BIT(23)
-#define CFG_BLK_MISC_CTL_RSVD_2_MASK                       BIT(22)
-#define CFG_BLK_MISC_CTL_AXI_WBK_MASK                      BIT(21)
-#define CFG_BLK_MISC_CTL_AXI_DSC_MASK                      BIT(20)
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RSVD_3_MASK                       GENMASK(7, 5)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define EQDMA_CFG_PL_CRED_CTL_ADDR                         0x68
-#define CFG_PL_CRED_CTL_RSVD_1_MASK                        GENMASK(31, 5)
-#define CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK                 BIT(4)
-#define CFG_PL_CRED_CTL_RSVD_2_MASK                        GENMASK(3, 1)
-#define CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK                BIT(0)
-#define EQDMA_CFG_BLK_SCRATCH_ADDR                         0x80
-#define CFG_BLK_SCRATCH_MASK                              GENMASK(31, 0)
-#define EQDMA_CFG_GIC_ADDR                                 0xA0
-#define CFG_GIC_RSVD_1_MASK                                GENMASK(31, 1)
-#define CFG_GIC_GIC_IRQ_MASK                               BIT(0)
-#define EQDMA_RAM_SBE_MSK_1_A_ADDR                         0xE0
-#define RAM_SBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_1_A_ADDR                         0xE4
-#define RAM_SBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_DBE_MSK_1_A_ADDR                         0xE8
-#define RAM_DBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_1_A_ADDR                         0xEC
-#define RAM_DBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_SBE_MSK_A_ADDR                           0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_A_ADDR                           0xF4
-#define RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_SBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_SBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_SBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_SBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_SBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_SBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_RAM_DBE_MSK_A_ADDR                           0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_A_ADDR                           0xFC
-#define RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_DBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_DBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_DBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_DBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_DBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_DBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_GLBL2_IDENTIFIER_ADDR                        0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define EQDMA_GLBL2_CHANNEL_INST_ADDR                      0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_MDMA_ADDR                      0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_STRM_ADDR                      0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_CAP_ADDR                       0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define EQDMA_GLBL2_CHANNEL_PASID_CAP_ADDR                 0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define EQDMA_GLBL2_SYSTEM_ID_ADDR                         0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define EQDMA_GLBL2_MISC_CAP_ADDR                          0x134
-#define GLBL2_MISC_CAP_MASK                               GENMASK(31, 0)
-#define EQDMA_GLBL2_RRQ_BRG_THROT_ADDR                     0x158
-#define GLBL2_RRQ_BRG_THROT_REQ_EN_MASK                    BIT(31)
-#define GLBL2_RRQ_BRG_THROT_REQ_MASK                       GENMASK(30, 19)
-#define GLBL2_RRQ_BRG_THROT_DAT_EN_MASK                    BIT(18)
-#define GLBL2_RRQ_BRG_THROT_DAT_MASK                       GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_THROT_ADDR                    0x15C
-#define GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK                   BIT(31)
-#define GLBL2_RRQ_PCIE_THROT_REQ_MASK                      GENMASK(30, 19)
-#define GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK                   BIT(18)
-#define GLBL2_RRQ_PCIE_THROT_DAT_MASK                      GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_THROT_ADDR                   0x160
-#define GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK                  BIT(31)
-#define GLBL2_RRQ_AXIMM_THROT_REQ_MASK                     GENMASK(30, 19)
-#define GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK                  BIT(18)
-#define GLBL2_RRQ_AXIMM_THROT_DAT_MASK                     GENMASK(17, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_LAT0_ADDR                     0x164
-#define GLBL2_RRQ_PCIE_LAT0_MAX_MASK                      GENMASK(31, 16)
-#define GLBL2_RRQ_PCIE_LAT0_MIN_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_PCIE_LAT1_ADDR                     0x168
-#define GLBL2_RRQ_PCIE_LAT1_RSVD_MASK                      GENMASK(31, 17)
-#define GLBL2_RRQ_PCIE_LAT1_OVFL_MASK                     BIT(16)
-#define GLBL2_RRQ_PCIE_LAT1_AVG_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_LAT0_ADDR                    0x16C
-#define GLBL2_RRQ_AXIMM_LAT0_MAX_MASK                     GENMASK(31, 16)
-#define GLBL2_RRQ_AXIMM_LAT0_MIN_MASK                     GENMASK(15, 0)
-#define EQDMA_GLBL2_RRQ_AXIMM_LAT1_ADDR                    0x170
-#define GLBL2_RRQ_AXIMM_LAT1_RSVD_MASK                     GENMASK(31, 17)
-#define GLBL2_RRQ_AXIMM_LAT1_OVFL_MASK                    BIT(16)
-#define GLBL2_RRQ_AXIMM_LAT1_AVG_MASK                     GENMASK(15, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ0_ADDR                      0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 9)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(8, 2)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(1, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ1_ADDR                      0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 21)
-#define GLBL2_PCIE_RQ1_TAG_FL_MASK                     GENMASK(20, 19)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(18)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(17)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(16)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(15)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(14, 12)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK                BIT(8)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(7)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(6)
-#define GLBL2_PCIE_RQ1_RREQ0_RDY_MASK                  BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RDY_MASK                  BIT(2)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(1)
-#define GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK              BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR0_ADDR                     0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR1_ADDR                     0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD0_ADDR                     0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(16)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(15, 13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD1_ADDR                     0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_FAB0_ADDR                          0x1D0
-#define GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK            BIT(31)
-#define GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK            BIT(30)
-#define GLBL2_FAB0_H2C_SEG_IN_VLD_MASK                 BIT(29)
-#define GLBL2_FAB0_H2C_SEG_IN_RDY_MASK                 BIT(28)
-#define GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK                GENMASK(27, 24)
-#define GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK                BIT(23)
-#define GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK              GENMASK(22, 16)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK             BIT(15)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK            BIT(14)
-#define GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK              GENMASK(13, 10)
-#define GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK              BIT(9)
-#define GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK              BIT(8)
-#define GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK              BIT(7)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK         BIT(6)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK         BIT(5)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK        BIT(4)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK       BIT(3)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK              BIT(2)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK             BIT(1)
-#define GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK            BIT(0)
-#define EQDMA_GLBL2_DBG_FAB1_ADDR                          0x1D4
-#define GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK              GENMASK(31, 25)
-#define GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK           GENMASK(24, 18)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK             BIT(17)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK            BIT(16)
-#define GLBL2_FAB1_RSVD_1_MASK                         GENMASK(15, 13)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK          BIT(12)
-#define GLBL2_FAB1_RSVD_2_MASK                         GENMASK(11, 9)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK         BIT(8)
-#define GLBL2_FAB1_RSVD_3_MASK                         GENMASK(7, 5)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK          BIT(4)
-#define GLBL2_FAB1_RSVD_4_MASK                         GENMASK(3, 1)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK         BIT(0)
-#define EQDMA_GLBL2_DBG_MATCH_SEL_ADDR                     0x1F4
-#define GLBL2_MATCH_SEL_RSV_MASK                       GENMASK(31, 18)
-#define GLBL2_MATCH_SEL_CSR_SEL_MASK                   GENMASK(17, 13)
-#define GLBL2_MATCH_SEL_CSR_EN_MASK                    BIT(12)
-#define GLBL2_MATCH_SEL_ROTATE1_MASK                   GENMASK(11, 10)
-#define GLBL2_MATCH_SEL_ROTATE0_MASK                   GENMASK(9, 8)
-#define GLBL2_MATCH_SEL_SEL_MASK                       GENMASK(7, 0)
-#define EQDMA_GLBL2_DBG_MATCH_MSK_ADDR                     0x1F8
-#define GLBL2_MATCH_MSK_MASK                      GENMASK(31, 0)
-#define EQDMA_GLBL2_DBG_MATCH_PAT_ADDR                     0x1FC
-#define GLBL2_MATCH_PAT_PATTERN_MASK                   GENMASK(31, 0)
-#define EQDMA_GLBL_RNG_SZ_1_ADDR                           0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_2_ADDR                           0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_3_ADDR                           0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_4_ADDR                           0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_5_ADDR                           0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_6_ADDR                           0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_7_ADDR                           0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_8_ADDR                           0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_9_ADDR                           0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_A_ADDR                           0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_B_ADDR                           0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_C_ADDR                           0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_D_ADDR                           0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_E_ADDR                           0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_F_ADDR                           0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_10_ADDR                          0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL_ERR_STAT_ADDR                           0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 18)
-#define GLBL_ERR_STAT_ERR_FAB_MASK                         BIT(17)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(16)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(15)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                GENMASK(14, 9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define EQDMA_GLBL_ERR_MASK_ADDR                           0x24C
-#define GLBL_ERR_MASK                            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CFG_ADDR                            0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK                  GENMASK(29, 20)
-#define GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK                  GENMASK(19, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_STS_ADDR                        0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 26)
-#define GLBL_DSC_ERR_STS_PORT_ID_MASK                      BIT(25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(8)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(6)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(5)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(4)
-#define GLBL_DSC_ERR_STS_BCNT_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(1)
-#define EQDMA_GLBL_DSC_ERR_MSK_ADDR                        0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG0_ADDR                       0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(30)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(29, 13)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG1_ADDR                       0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_ERR_LOG1_CIDX_MASK                        GENMASK(27, 12)
-#define GLBL_DSC_ERR_LOG1_RSVD_2_MASK                      GENMASK(11, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define EQDMA_GLBL_TRQ_ERR_STS_ADDR                        0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 8)
-#define GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK             BIT(7)
-#define GLBL_TRQ_ERR_STS_RSVD_2_MASK                       BIT(6)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(5)
-#define GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK                BIT(4)
-#define GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK              BIT(3)
-#define GLBL_TRQ_ERR_STS_RSVD_3_MASK                       BIT(2)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(1)
-#define GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK                 BIT(0)
-#define EQDMA_GLBL_TRQ_ERR_MSK_ADDR                        0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_TRQ_ERR_LOG_ADDR                        0x26C
-#define GLBL_TRQ_ERR_LOG_SRC_MASK                          BIT(31)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(30, 27)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(26, 17)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(16, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT0_ADDR                       0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT1_ADDR                       0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define EQDMA_GLBL_DSC_DBG_CTL_ADDR                        0x278
-#define GLBL_DSC_CTL_RSVD_1_MASK                       GENMASK(31, 16)
-#define GLBL_DSC_CTL_LAT_QID_MASK                  GENMASK(15, 4)
-#define GLBL_DSC_CTL_DSC_ENG_LAT_CLR_MASK              BIT(3)
-#define GLBL_DSC_CTL_SELECT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG2_ADDR                       0x27c
-#define GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK                    GENMASK(31, 16)
-#define GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK                    GENMASK(15, 0)
-#define EQDMA_GLBL_GLBL_INTERRUPT_CFG_ADDR                 0x2c4
-#define GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK     BIT(1)
-#define GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK          BIT(0)
-#define EQDMA_GLBL_VCH_HOST_PROFILE_ADDR                   0x2c8
-#define GLBL_VCH_HOST_PROFILE_RSVD_1_MASK                  GENMASK(31, 28)
-#define GLBL_VCH_HOST_PROFILE_2C_MM_MASK                   GENMASK(27, 24)
-#define GLBL_VCH_HOST_PROFILE_2C_ST_MASK                   GENMASK(23, 20)
-#define GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK                 GENMASK(19, 16)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK             GENMASK(15, 12)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK            GENMASK(11, 8)
-#define GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK                GENMASK(7, 4)
-#define GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK             GENMASK(3, 0)
-#define EQDMA_GLBL_BRIDGE_HOST_PROFILE_ADDR                0x308
-#define GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK               GENMASK(31, 4)
-#define GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK                GENMASK(3, 0)
-#define EQDMA_AXIMM_IRQ_DEST_ADDR_ADDR                     0x30c
-#define AXIMM_IRQ_DEST_ADDR_ADDR_MASK                      GENMASK(31, 0)
-#define EQDMA_FAB_ERR_LOG_ADDR                             0x314
-#define FAB_ERR_LOG_RSVD_1_MASK                            GENMASK(31, 7)
-#define FAB_ERR_LOG_SRC_MASK                               GENMASK(6, 0)
-#define EQDMA_GLBL_REQ_ERR_STS_ADDR                        0x318
-#define GLBL_REQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 11)
-#define GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK               BIT(10)
-#define GLBL_REQ_ERR_STS_RC_PRTY_MASK                      BIT(9)
-#define GLBL_REQ_ERR_STS_RC_FLR_MASK                       BIT(8)
-#define GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK                   BIT(7)
-#define GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK                  BIT(6)
-#define GLBL_REQ_ERR_STS_RC_INV_TAG_MASK                   BIT(5)
-#define GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK         BIT(4)
-#define GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK        BIT(3)
-#define GLBL_REQ_ERR_STS_RC_NO_DATA_MASK                   BIT(2)
-#define GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK                 BIT(1)
-#define GLBL_REQ_ERR_STS_RC_POISONED_MASK                  BIT(0)
-#define EQDMA_GLBL_REQ_ERR_MSK_ADDR                        0x31C
-#define GLBL_REQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_DBG_LAT0_A_ADDR                     0x320
-#define GLBL_DSC_LAT0_A_LAT_MAX_MASK                   GENMASK(31, 16)
-#define GLBL_DSC_LAT0_A_LAT_MIN_MASK                   GENMASK(15, 0)
-#define EQDMA_GLBL_DSC_DBG_LAT1_A_ADDR                     0x324
-#define GLBL_DSC_LAT1_A_RSVD_MASK                      GENMASK(31, 17)
-#define GLBL_DSC_LAT1_A_LAT_OVF_MASK                   BIT(16)
-#define GLBL_DSC_LAT1_A_LAT_AVG_MASK                   GENMASK(15, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR0_A_ADDR                     0x328
-#define GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR1_A_ADDR                     0x32C
-#define GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR2_A_ADDR                     0x330
-#define GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CRD_CTR3_A_ADDR                     0x334
-#define GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR0_A_ADDR                 0x338
-#define GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR1_A_ADDR                 0x33C
-#define GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR2_A_ADDR                 0x340
-#define GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_IMM_CRD_CTR3_A_ADDR                 0x344
-#define GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT_MASK          GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR0_A_ADDR                 0x348
-#define GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR1_A_ADDR                 0x34C
-#define GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR2_A_ADDR                 0x350
-#define GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_H2C_OUT_CTR3_A_ADDR                 0x354
-#define GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR0_A_ADDR                 0x358
-#define GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR1_A_ADDR                 0x35C
-#define GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR2_A_ADDR                 0x360
-#define GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_C2H_OUT_CTR3_A_ADDR                 0x364
-#define GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT_MASK       GENMASK(31, 0)
-#define EQDMA_T_ADDR                                       0x368
-#define T_USER_CTR_MAX_MASK                                GENMASK(31, 0)
-#define EQDMA_GLBL_PERF_CNTR_CTL_A1_ADDR                   0x36C
-#define GLBL_PERF_CNTR_CTL_A1_RSVD_MASK                    GENMASK(31, 18)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR_MASK          BIT(17)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ_MASK           BIT(16)
-#define GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX_MASK            GENMASK(15, 0)
-#define EQDMA_GLBL_FREE_CNT_A0_ADDR                        0x370
-#define GLBL_FREE_CNT_A0_S_MASK                            GENMASK(31, 0)
-#define EQDMA_GLBL_FREE_CNT_A1_ADDR                        0x374
-#define GLBL_FREE_CNT_A1_RSVD_MASK                         GENMASK(31, 16)
-#define GLBL_FREE_CNT_A1_S_MASK                            GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A0_ADDR                    0x378
-#define GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A1_ADDR                    0x37C
-#define GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A2_ADDR                    0x380
-#define GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A3_ADDR                    0x384
-#define GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A4_ADDR                    0x388
-#define GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_H2C_CNT_A5_ADDR                    0x38C
-#define GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A0_ADDR                    0x390
-#define GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A1_ADDR                    0x394
-#define GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A2_ADDR                    0x398
-#define GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A3_ADDR                    0x39C
-#define GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A4_ADDR                    0x3A0
-#define GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_AXIS_C2H_CNT_A5_ADDR                    0x3A4
-#define GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A0_ADDR                    0x3A8
-#define GLBL_M_AXI_WR_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A1_ADDR                    0x3AC
-#define GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_WR_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A2_ADDR                    0x3B0
-#define GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A3_ADDR                    0x3B4
-#define GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A4_ADDR                    0x3B8
-#define GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_WR_CNT_A5_ADDR                    0x3BC
-#define GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A0_ADDR                    0x3C0
-#define GLBL_M_AXI_RD_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A1_ADDR                    0x3C4
-#define GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_RD_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A2_ADDR                    0x3C8
-#define GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A3_ADDR                    0x3CC
-#define GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A4_ADDR                    0x3D0
-#define GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXI_RD_CNT_A5_ADDR                    0x3D4
-#define GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A0_ADDR                   0x3D8
-#define GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A1_ADDR                   0x3DC
-#define GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A2_ADDR                   0x3E0
-#define GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A3_ADDR                   0x3E4
-#define GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A4_ADDR                   0x3E8
-#define GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_WR_CNT_A5_ADDR                   0x3EC
-#define GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A0_ADDR                   0x3F0
-#define GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A1_ADDR                   0x3F4
-#define GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A2_ADDR                   0x3F8
-#define GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A3_ADDR                   0x3FC
-#define GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A4_ADDR                   0x400
-#define GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS_MASK               GENMASK(15, 0)
-#define GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_M_AXIB_RD_CNT_A5_ADDR                   0x404
-#define GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A0_ADDR                    0x408
-#define GLBL_S_AXI_WR_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A1_ADDR                    0x40C
-#define GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_WR_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A2_ADDR                    0x410
-#define GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A3_ADDR                    0x414
-#define GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A4_ADDR                    0x418
-#define GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_WR_CNT_A5_ADDR                    0x41C
-#define GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A0_ADDR                    0x420
-#define GLBL_S_AXI_RD_CNT_A0_PKT_CNTS_MASK                 GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A1_ADDR                    0x424
-#define GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_RD_CNT_A1_PKT_CNTS_MASK                 GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A2_ADDR                    0x428
-#define GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A3_ADDR                    0x42C
-#define GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A4_ADDR                    0x430
-#define GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS_MASK                GENMASK(15, 0)
-#define GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS_MASK                GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXI_RD_CNT_A5_ADDR                    0x434
-#define GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS_MASK                GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A0_ADDR                  0x438
-#define GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS_MASK               GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A1_ADDR                  0x43C
-#define GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS_MASK              GENMASK(15, 0)
-#define GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS_MASK               GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A2_ADDR                  0x440
-#define GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A3_ADDR                  0x444
-#define GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A4_ADDR                  0x448
-#define GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS_MASK              GENMASK(15, 0)
-#define GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS_MASK              GENMASK(15, 0)
-#define EQDMA_GLBL_S_AXIS_CMP_CNT_A5_ADDR                  0x44C
-#define GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS_MASK              GENMASK(31, 0)
-#define EQDMA_IND_CTXT_DATA_ADDR                           0x804
-#define IND_CTXT_DATA_DATA_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_MASK_ADDR                           0x824
-#define IND_CTXT_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_CMD_ADDR                            0x844
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 20)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(19, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SEL_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define EQDMA_C2H_TIMER_CNT_ADDR                           0xA00
-#define C2H_TIMER_CNT_RSVD_1_MASK                          GENMASK(31, 16)
-#define C2H_TIMER_CNT_MASK                                GENMASK(15, 0)
-#define EQDMA_C2H_CNT_TH_ADDR                              0xA40
-#define C2H_CNT_TH_RSVD_1_MASK                             GENMASK(31, 16)
-#define C2H_CNT_TH_THESHOLD_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_1_ADDR                          0xA80
-#define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK                    GENMASK(31, 16)
-#define C2H_PFCH_CFG_1_QCNT_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_2_ADDR                          0xA84
-#define C2H_PFCH_CFG_2_FENCE_MASK                          BIT(31)
-#define C2H_PFCH_CFG_2_RSVD_MASK                           GENMASK(30, 29)
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK               BIT(28)
-#define C2H_PFCH_CFG_2_LL_SZ_TH_MASK                       GENMASK(27, 12)
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK                   GENMASK(11, 6)
-#define C2H_PFCH_CFG_2_NUM_MASK                            GENMASK(5, 0)
-#define EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR            0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR            0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR          0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR                   0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ACCEPTED_ADDR              0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_CMP_ADDR                   0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WRQ_OUT_ADDR                        0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WPL_REN_ACCEPTED_ADDR               0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WRQ_LEN_ADDR                  0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WPL_LEN_ADDR                  0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_BUF_SZ_ADDR                              0xAB0
-#define C2H_BUF_SZ_IZE_MASK                                GENMASK(31, 0)
-#define EQDMA_C2H_ERR_STAT_ADDR                            0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 21)
-#define C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK                  BIT(20)
-#define C2H_ERR_STAT_HDR_PAR_ERR_MASK                      BIT(19)
-#define C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK                  BIT(18)
-#define C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK                  BIT(17)
-#define C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK                 BIT(16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK                  BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define EQDMA_C2H_ERR_MASK_ADDR                            0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_STAT_ADDR                      0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 21)
-#define C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK            BIT(20)
-#define C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK     BIT(19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK         BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_RESERVED2_MASK                  BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RESERVED1_MASK                  BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define EQDMA_C2H_FATAL_ERR_MASK_ADDR                      0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_ENABLE_ADDR                    0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define EQDMA_GLBL_ERR_INT_ADDR                            0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_ERR_INT_HOST_ID_MASK                          GENMASK(29, 26)
-#define GLBL_ERR_INT_DIS_INTR_ON_VF_MASK                   BIT(25)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(24)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(23)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(22, 12)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_CFG_ADDR                            0xB08
-#define C2H_PFCH_CFG_EVTFL_TH_MASK                         GENMASK(31, 16)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(15, 0)
-#define EQDMA_C2H_INT_TIMER_TICK_ADDR                      0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR         0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR          0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_REQ_ADDR                       0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR                  0xB1C
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK      BIT(31)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK      BIT(30)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK      GENMASK(29, 27)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK      GENMASK(26, 24)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK        BIT(23)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK        BIT(22)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK       BIT(21)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK       GENMASK(20, 9)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK        BIT(8)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR                  0xB20
-#define C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE_MASK   GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD_MASK  GENMASK(29, 29)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR                  0xB24
-#define C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE_MASK   GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1_MASK GENMASK(29, 29)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1_MASK     GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1_MASK     GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1_MASK      GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR                  0xB28
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT_MASK BIT(31)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER_MASK BIT(30)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ_MASK BIT(29)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID_MASK   GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT_MASK    GENMASK(16, 12)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK       BIT(11)
-#define C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK       BIT(10)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(8)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(7)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(6)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK   BIT(4)
-#define C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK   BIT(3)
-#define C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_MASK      BIT(2)
-#define C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_C2H_DBG_PFCH_ERR_CTXT_ADDR                   0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define EQDMA_C2H_FIRST_ERR_QID_ADDR                       0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_RSVD_MASK                        GENMASK(15, 13)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_STAT_NUM_WRB_IN_ADDR                         0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_OUT_ADDR                        0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_DRP_ADDR                        0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_STAT_DESC_OUT_ADDR                  0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_DSC_CRDT_SENT_ADDR                  0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_FCH_DSC_RCVD_ADDR                   0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define EQDMA_STAT_NUM_BYP_DSC_RCVD_ADDR                   0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define EQDMA_C2H_WRB_COAL_CFG_ADDR                        0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define EQDMA_C2H_INTR_H2C_REQ_ADDR                        0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_MM_REQ_ADDR                     0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_ERR_INT_REQ_ADDR                    0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_REQ_ADDR                     0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR        0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR       0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR    0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR      0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_ACK_ADDR                0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR               0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_NO_MSIX_ADDR                 0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR              0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_WR_CMP_ADDR                         0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_4_ADDR                  0xB88
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1_MASK BIT(31)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1_MASK BIT(30)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1_MASK BIT(29)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1_MASK  GENMASK(16, 12)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1_MASK     BIT(11)
-#define C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1_MASK     BIT(10)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1_MASK  BIT(9)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1_MASK BIT(8)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1_MASK BIT(7)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1_MASK BIT(6)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1_MASK    BIT(2)
-#define C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1_MASK      BIT(1)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1_MASK   BIT(0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_5_ADDR                  0xB8C
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY_MASK        BIT(31)
-#define C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK         BIT(30)
-#define C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK        GENMASK(29, 24)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK       GENMASK(23, 22)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK  GENMASK(21, 6)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK BIT(2)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK BIT(1)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK BIT(0)
-#define EQDMA_C2H_DBG_PFCH_QID_ADDR                        0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(15)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(14, 12)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(11, 0)
-#define EQDMA_C2H_DBG_PFCH_ADDR                            0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_INT_DBG_ADDR                             0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define EQDMA_C2H_STAT_IMM_ACCEPTED_ADDR                   0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_STAT_MARKER_ACCEPTED_ADDR                0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR           0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define EQDMA_C2H_PLD_FIFO_CRDT_CNT_ADDR                   0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_REQ_ADDR                        0xBAC
-#define C2H_INTR_DYN_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_DYN_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_MISC_ADDR                       0xBB0
-#define C2H_INTR_DYN_MISC_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_INTR_DYN_MISC_CNT_MASK                         GENMASK(17, 0)
-#define EQDMA_C2H_DROP_LEN_MISMATCH_ADDR                   0xBB4
-#define C2H_DROP_LEN_MISMATCH_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_LEN_MISMATCH_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_DESC_RSP_LEN_ADDR                   0xBB8
-#define C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_DESC_RSP_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_QID_FIFO_LEN_ADDR                   0xBBC
-#define C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_QID_FIFO_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_ADDR                        0xBC0
-#define C2H_DROP_PLD_CNT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_CMPT_FORMAT_0_ADDR                       0xBC4
-#define C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_0_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_1_ADDR                       0xBC8
-#define C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_1_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_2_ADDR                       0xBCC
-#define C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_2_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_3_ADDR                       0xBD0
-#define C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_3_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_4_ADDR                       0xBD4
-#define C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_4_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_5_ADDR                       0xBD8
-#define C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_5_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_6_ADDR                       0xBDC
-#define C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_6_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR                    0xBE0
-#define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK                GENMASK(23, 16)
-#define C2H_PFCH_CACHE_DEPTH_MASK                         GENMASK(7, 0)
-#define EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR                  0xBE4
-#define C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK                 GENMASK(31, 8)
-#define C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK                 GENMASK(7, 0)
-#define EQDMA_C2H_PFCH_CRDT_ADDR                           0xBE8
-#define C2H_PFCH_CRDT_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_PFCH_CRDT_RSVD_2_MASK                          BIT(0)
-#define EQDMA_C2H_STAT_HAS_CMPT_ACCEPTED_ADDR              0xBEC
-#define C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_HAS_PLD_ACCEPTED_ADDR               0xBF0
-#define C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_PLD_PKT_ID_ADDR                          0xBF4
-#define C2H_PLD_PKT_ID_CMPT_WAIT_MASK                      GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_DATA_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PLD_PKT_ID_1_ADDR                        0xBF8
-#define C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK                    GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_1_DATA_MASK                         GENMASK(15, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_1_ADDR                      0xBFC
-#define C2H_DROP_PLD_CNT_1_RSVD_1_MASK                     GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_1_CNT_MASK                        GENMASK(17, 0)
-#define EQDMA_H2C_ERR_STAT_ADDR                            0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 6)
-#define H2C_ERR_STAT_PAR_ERR_MASK                          BIT(5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define EQDMA_H2C_ERR_MASK_ADDR                            0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_H2C_FIRST_ERR_QID_ADDR                       0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 13)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_H2C_DBG_REG0_ADDR                            0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG1_ADDR                            0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG2_ADDR                            0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG3_ADDR                            0xE18
-#define H2C_REG3_RSVD_1_MASK                           BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define EQDMA_H2C_DBG_REG4_ADDR                            0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define EQDMA_H2C_FATAL_ERR_EN_ADDR                        0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define EQDMA_H2C_REQ_THROT_PCIE_ADDR                      0xE24
-#define H2C_REQ_THROT_PCIE_EN_REQ_MASK                     BIT(31)
-#define H2C_REQ_THROT_PCIE_MASK                           GENMASK(30, 19)
-#define H2C_REQ_THROT_PCIE_EN_DATA_MASK                    BIT(18)
-#define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK                GENMASK(17, 0)
-#define EQDMA_H2C_ALN_DBG_REG0_ADDR                        0xE28
-#define H2C_ALN_REG0_NUM_PKT_SENT_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_REQ_THROT_AXIMM_ADDR                     0xE2C
-#define H2C_REQ_THROT_AXIMM_EN_REQ_MASK                    BIT(31)
-#define H2C_REQ_THROT_AXIMM_MASK                          GENMASK(30, 19)
-#define H2C_REQ_THROT_AXIMM_EN_DATA_MASK                   BIT(18)
-#define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK               GENMASK(17, 0)
-#define EQDMA_C2H_MM_CTL_ADDR                              0x1004
-#define C2H_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define C2H_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define C2H_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define C2H_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_C2H_MM_STATUS_ADDR                           0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_C2H_MM_CMPL_DESC_CNT_ADDR                    0x1048
-#define C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK         BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK         GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define EQDMA_C2H_MM_ERR_CODE_ADDR                         0x1058
-#define C2H_MM_ERR_CODE_RESERVED1_MASK                     GENMASK(31, 28)
-#define C2H_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define C2H_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define C2H_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_C2H_MM_ERR_INFO_ADDR                         0x105C
-#define C2H_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define C2H_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_C2H_MM_PERF_MON_CTL_ADDR                     0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR              0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR              0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT0_ADDR               0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT1_ADDR               0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_C2H_MM_DBG_ADDR                              0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_H2C_MM_CTL_ADDR                              0x1204
-#define H2C_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define H2C_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define H2C_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define H2C_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_H2C_MM_STATUS_ADDR                           0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_H2C_MM_CMPL_DESC_CNT_ADDR                    0x1248
-#define H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK         GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK         GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK         GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK         GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK         GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK         BIT(0)
-#define EQDMA_H2C_MM_ERR_CODE_ADDR                         0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 28)
-#define H2C_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define H2C_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define H2C_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_H2C_MM_ERR_INFO_ADDR                         0x125C
-#define H2C_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define H2C_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_H2C_MM_PERF_MON_CTL_ADDR                     0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR              0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR              0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT0_ADDR               0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT1_ADDR               0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_H2C_MM_DBG_ADDR                              0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_H2C_MM_DATA_THROTTLE_ADDR                    0x12EC
-#define H2C_MM_DATA_THROTTLE_RSVD_1_MASK                   GENMASK(31, 17)
-#define H2C_MM_DATA_THROTTLE_DAT_EN_MASK                   BIT(16)
-#define H2C_MM_DATA_THROTTLE_DAT_MASK                      GENMASK(15, 0)
-#define EQDMA_C2H_CRDT_COAL_CFG_1_ADDR                     0x1400
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK               GENMASK(17, 10)
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK                  GENMASK(9, 0)
-#define EQDMA_C2H_CRDT_COAL_CFG_2_ADDR                     0x1404
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK                    GENMASK(31, 24)
-#define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK                   GENMASK(23, 16)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK                 GENMASK(15, 11)
-#define C2H_CRDT_COAL_CFG_2_NT_TH_MASK                     GENMASK(10, 0)
-#define EQDMA_C2H_PFCH_BYP_QID_ADDR                        0x1408
-#define C2H_PFCH_BYP_QID_RSVD_1_MASK                       GENMASK(31, 12)
-#define C2H_PFCH_BYP_QID_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_BYP_TAG_ADDR                        0x140C
-#define C2H_PFCH_BYP_TAG_RSVD_1_MASK                       GENMASK(31, 20)
-#define C2H_PFCH_BYP_TAG_BYP_QID_MASK                      GENMASK(19, 8)
-#define C2H_PFCH_BYP_TAG_RSVD_2_MASK                       BIT(7)
-#define C2H_PFCH_BYP_TAG_MASK                             GENMASK(6, 0)
-#define EQDMA_C2H_WATER_MARK_ADDR                          0x1410
-#define C2H_WATER_MARK_HIGH_WM_MASK                        GENMASK(31, 16)
-#define C2H_WATER_MARK_LOW_WM_MASK                         GENMASK(15, 0)
-#define EQDMA_C2H_NOTIFY_EMPTY_ADDR                        0x1450
-#define C2H_NOTIFY_EMPTY_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_NOTIFY_EMPTY_NOE_MASK                          GENMASK(15, 0)
-#define EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_1_ADDR          0x1454
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_1_ADDR          0x1458
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_ADDR        0x145C
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK            GENMASK(31, 0)
-#define EQDMA_C2H_STAT_AXIS_PKG_CMP_1_ADDR                 0x1460
-#define C2H_STAT_AXIS_PKG_CMP_1_MASK                      GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_2_ADDR          0x1464
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK               GENMASK(31, 0)
-#define EQDMA_C2H_ST_PLD_FIFO_DEPTH_ADDR                   0x1468
-#define C2H_ST_PLD_FIFO_DEPTH_MASK                        GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_6_ADDR                  0x146C
-#define C2H_STAT_DMA_ENG_6_RSVD_MASK                   GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_MASK \
-	GENMASK(16, 1)
-#define C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST_MASK BIT(0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_7_ADDR                  0x1470
-#define C2H_STAT_DMA_ENG_7_RSVD_MASK                   GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1_MASK GENMASK(28, 17)
-#define C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1_MASK \
-	GENMASK(16, 1)
-#define C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1_MASK BIT(0)
-#define EQDMA_C2H_STAT_PCIE_CMP_1_ADDR                     0x1474
-#define C2H_STAT_PCIE_CMP_1_DEPTH_MASK                     GENMASK(31, 0)
-#define EQDMA_C2H_PLD_FIFO_ALMOST_FULL_ADDR                0x1478
-#define C2H_PLD_FIFO_ALMOST_FULL_ENABLE_MASK               BIT(31)
-#define C2H_PLD_FIFO_ALMOST_FULL_TH_MASK                   GENMASK(30, 0)
-#define EQDMA_PFCH_CFG_3_ADDR                              0x147C
-#define PFCH_CFG_3_RSVD_MASK                               GENMASK(31, 16)
-#define PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK            GENMASK(15, 7)
-#define PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK          GENMASK(6, 0)
-#define EQDMA_CMPT_CFG_0_ADDR                              0x1480
-#define CMPT_CFG_0_RSVD_MASK                               GENMASK(31, 2)
-#define CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY_MASK             BIT(1)
-#define CMPT_CFG_0_VIO_EVNT_SUP_EN_MASK                    BIT(0)
-#define EQDMA_PFCH_CFG_4_ADDR                              0x1484
-#define PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK                 GENMASK(31, 17)
-#define PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK              BIT(16)
-#define PFCH_CFG_4_EVT_TIMER_TICK_MASK                     GENMASK(15, 1)
-#define PFCH_CFG_4_DISABLE_EVT_TIMER_MASK                  BIT(0)
-#define SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK        GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK        GENMASK(31, 11)
-#define SW_IND_CTXT_DATA_W5_PASID_EN_MASK                 BIT(10)
-#define SW_IND_CTXT_DATA_W5_PASID_H_MASK                  GENMASK(9, 0)
-#define SW_IND_CTXT_DATA_W4_PASID_L_MASK                  GENMASK(31, 20)
-#define SW_IND_CTXT_DATA_W4_HOST_ID_MASK                  GENMASK(19, 16)
-#define SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK                  BIT(15)
-#define SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK             BIT(14)
-#define SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK                BIT(13)
-#define SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK           BIT(12)
-#define SW_IND_CTXT_DATA_W4_INT_AGGR_MASK                 BIT(11)
-#define SW_IND_CTXT_DATA_W4_VEC_MASK                      GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(11, 9)
-#define SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK                GENMASK(8, 5)
-#define SW_IND_CTXT_DATA_W1_AT_MASK                       BIT(4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 29)
-#define SW_IND_CTXT_DATA_W0_FNC_MASK                      GENMASK(28, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   BIT(15)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                GENMASK(14, 11)
-#define HW_IND_CTXT_DATA_W1_EVT_PND_MASK                  BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_2_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 22)
-#define PREFETCH_CTXT_DATA_W0_PFCH_NEED_MASK              GENMASK(21, 16)
-#define PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK               GENMASK(15, 10)
-#define PREFETCH_CTXT_DATA_W0_VIRTIO_MASK                 BIT(9)
-#define PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK               BIT(8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK             GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W6_RSVD_1_H_MASK                   GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W5_RSVD_1_L_MASK                   GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W5_PORT_ID_MASK                    GENMASK(22, 20)
-#define CMPL_CTXT_DATA_W5_SH_CMPT_MASK                    BIT(19)
-#define CMPL_CTXT_DATA_W5_VIO_EOP_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK                 GENMASK(17, 14)
-#define CMPL_CTXT_DATA_W5_PASID_EN_MASK                   BIT(13)
-#define CMPL_CTXT_DATA_W5_PASID_H_MASK                    GENMASK(12, 0)
-#define CMPL_CTXT_DATA_W4_PASID_L_MASK                    GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W4_HOST_ID_MASK                    GENMASK(22, 19)
-#define CMPL_CTXT_DATA_W4_DIR_C2H_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W4_VIO_MASK                        BIT(17)
-#define CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK             BIT(16)
-#define CMPL_CTXT_DATA_W4_INT_AGGR_MASK                   BIT(15)
-#define CMPL_CTXT_DATA_W4_VEC_MASK                        GENMASK(14, 4)
-#define CMPL_CTXT_DATA_W4_AT_MASK                         BIT(3)
-#define CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK                BIT(2)
-#define CMPL_CTXT_DATA_W4_FULL_UPD_MASK                   BIT(1)
-#define CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK              BIT(0)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(31)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(30, 29)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(28)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(27, 12)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(11, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(27, 26)
-#define CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK              GENMASK(25, 0)
-#define CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK              GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_QSIZE_IX_MASK                   GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(27)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W0_TIMER_IX_MASK                   GENMASK(24, 21)
-#define CMPL_CTXT_DATA_W0_CNTER_IX_MASK                   GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(16, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W3_FUNC_MASK                       GENMASK(29, 18)
-#define INTR_CTXT_DATA_W3_RSVD_MASK                       GENMASK(17, 14)
-#define INTR_CTXT_DATA_W3_PASID_EN_MASK                   BIT(13)
-#define INTR_CTXT_DATA_W3_PASID_H_MASK                    GENMASK(12, 0)
-#define INTR_CTXT_DATA_W2_PASID_L_MASK                    GENMASK(31, 23)
-#define INTR_CTXT_DATA_W2_HOST_ID_MASK                    GENMASK(22, 19)
-#define INTR_CTXT_DATA_W2_AT_MASK                         BIT(18)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(17, 6)
-#define INTR_CTXT_DATA_W2_PAGE_SIZE_MASK                  GENMASK(5, 3)
-#define INTR_CTXT_DATA_W2_BADDR_4K_H_MASK                 GENMASK(2, 0)
-#define INTR_CTXT_DATA_W1_BADDR_4K_M_MASK                 GENMASK(31, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 15)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(14)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(13)
-#define INTR_CTXT_DATA_W0_RSVD1_MASK                      BIT(12)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(11, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-#define HOSTID_TABLE_W6_SMID_MASK                          GENMASK(9, 0)
-#define HOSTID_TABLE_W5_H2C_MM_AWPROT_MASK                 GENMASK(27, 26)
-#define HOSTID_TABLE_W5_H2C_MM_AWCACHE_MASK                GENMASK(25, 22)
-#define HOSTID_TABLE_W5_H2C_MM_AWSTEERING_MASK             GENMASK(20, 18)
-#define HOSTID_TABLE_W5_DSC_AWPROT_MASK                    GENMASK(17, 16)
-#define HOSTID_TABLE_W5_DSC_AWCACHE_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W5_DSC_AWSTEERING_MASK                GENMASK(11, 8)
-#define HOSTID_TABLE_W5_INT_MSG_AWPROT_MASK                GENMASK(7, 6)
-#define HOSTID_TABLE_W5_INT_MSG_AWCACHE_MASK               GENMASK(5, 2)
-#define HOSTID_TABLE_W5_INT_MSG_AWSTEERING_H_MASK          GENMASK(0, 0)
-#define HOSTID_TABLE_W4_INT_MSG_AWSTEERING_L_MASK          GENMASK(31, 30)
-#define HOSTID_TABLE_W4_INT_AGGR_AWPROT_MASK               GENMASK(29, 28)
-#define HOSTID_TABLE_W4_INT_AGGR_AWCACHE_MASK              GENMASK(27, 24)
-#define HOSTID_TABLE_W4_INT_AGGR_AWSTEERING_MASK           GENMASK(22, 20)
-#define HOSTID_TABLE_W4_CMPT_AWPROT_MASK                   GENMASK(19, 18)
-#define HOSTID_TABLE_W4_CMPT_AWCACHE_MASK                  GENMASK(17, 14)
-#define HOSTID_TABLE_W4_CMPT_AWSTEERING_MASK               GENMASK(12, 10)
-#define HOSTID_TABLE_W4_C2H_PLD_AWPROT_MASK                GENMASK(9, 8)
-#define HOSTID_TABLE_W4_C2H_PLD_AWCACHE_MASK               GENMASK(7, 4)
-#define HOSTID_TABLE_W4_C2H_PLD_AWSTEERING_MASK            GENMASK(2, 0)
-#define HOSTID_TABLE_W3_C2H_MM_ARPROT_MASK                 GENMASK(7, 6)
-#define HOSTID_TABLE_W3_C2H_MM_ARCACHE_MASK                GENMASK(5, 2)
-#define HOSTID_TABLE_W3_C2H_MM_ARSTEERING_H_MASK           GENMASK(0, 0)
-#define HOSTID_TABLE_W2_C2H_MM_ARSTEERING_L_MASK           GENMASK(31, 30)
-#define HOSTID_TABLE_W2_H2C_MM_ARPROT_MASK                 GENMASK(29, 28)
-#define HOSTID_TABLE_W2_H2C_MM_ARCACHE_MASK                GENMASK(27, 24)
-#define HOSTID_TABLE_W2_H2C_MM_ARSTEERING_MASK             GENMASK(22, 20)
-#define HOSTID_TABLE_W2_H2C_ST_ARPROT_MASK                 GENMASK(19, 18)
-#define HOSTID_TABLE_W2_H2C_ST_ARCACHE_MASK                GENMASK(17, 14)
-#define HOSTID_TABLE_W2_H2C_ST_ARSTEERING_MASK             GENMASK(12, 10)
-#define HOSTID_TABLE_W2_DSC_ARPOT_MASK                     GENMASK(9, 8)
-#define HOSTID_TABLE_W2_DSC_ARCACHE_MASK                   GENMASK(7, 4)
-#define HOSTID_TABLE_W2_DSC_ARSTEERING_MASK                GENMASK(2, 0)
-#define HOSTID_TABLE_W0_VCH_H2C_MM_MASK                    GENMASK(27, 24)
-#define HOSTID_TABLE_W0_VCH_H2C_ST_MASK                    GENMASK(23, 20)
-#define HOSTID_TABLE_W0_VCH_DSC_MASK                       GENMASK(19, 16)
-#define HOSTID_TABLE_W0_VCH_INT_MSG_MASK                   GENMASK(15, 12)
-#define HOSTID_TABLE_W0_VCH_INT_AGGR_MASK                  GENMASK(11, 8)
-#define HOSTID_TABLE_W0_VCH_CMPT_MASK                      GENMASK(7, 4)
-#define HOSTID_TABLE_W0_VCH_H2C_PLD_MASK                   GENMASK(3, 0)
-#define CTXT_SELC_FNC_STS_W0_MSIX_MASK                GENMASK(3, 3)
-#define CTXT_SELC_FNC_STS_W0_MSIX_ENABLE_MASK              GENMASK(2, 2)
-#define CTXT_SELC_FNC_STS_W0_MEM_SPACE_ENABLE_MASK         GENMASK(1, 1)
-#define CTXT_SELC_FNC_STS_W0_BUS_MASTER_ENABLE_MASK        GENMASK(0, 0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
deleted file mode 100755
index 8754fb7..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
+++ /dev/null
@@ -1,5322 +0,0 @@
-/*
- * Copyright (c) 2019-2022 Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID_RSVD_1",
-		CFG_BLK_SYSTEM_ID_RSVD_1_MASK},
-	{"CFG_BLK_SYSTEM_ID_INST_TYPE",
-		CFG_BLK_SYSTEM_ID_INST_TYPE_MASK},
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msix_enable_field_info[] = {
-	{"CFG_BLK_MSIX_ENABLE",
-		CFG_BLK_MSIX_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_RSVD_1",
-		CFG_PCIE_DATA_WIDTH_RSVD_1_MASK},
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RSVD_1",
-		CFG_PCIE_CTL_RSVD_1_MASK},
-	{"CFG_PCIE_CTL_MGMT_AXIL_CTRL",
-		CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK},
-	{"CFG_PCIE_CTL_RSVD_2",
-		CFG_PCIE_CTL_RSVD_2_MASK},
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE",
-		CFG_BLK_MSI_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_RSVD_1",
-		CFG_BLK_MISC_CTL_RSVD_1_MASK},
-	{"CFG_BLK_MISC_CTL_10B_TAG_EN",
-		CFG_BLK_MISC_CTL_10B_TAG_EN_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_2",
-		CFG_BLK_MISC_CTL_RSVD_2_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_WBK",
-		CFG_BLK_MISC_CTL_AXI_WBK_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_DSC",
-		CFG_BLK_MISC_CTL_AXI_DSC_MASK},
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_3",
-		CFG_BLK_MISC_CTL_RSVD_3_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pl_cred_ctl_field_info[] = {
-	{"CFG_PL_CRED_CTL_RSVD_1",
-		CFG_PL_CRED_CTL_RSVD_1_MASK},
-	{"CFG_PL_CRED_CTL_SLAVE_CRD_RLS",
-		CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK},
-	{"CFG_PL_CRED_CTL_RSVD_2",
-		CFG_PL_CRED_CTL_RSVD_2_MASK},
-	{"CFG_PL_CRED_CTL_MASTER_CRD_RST",
-		CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_field_info[] = {
-	{"CFG_BLK_SCRATCH",
-		CFG_BLK_SCRATCH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_gic_field_info[] = {
-	{"CFG_GIC_RSVD_1",
-		CFG_GIC_RSVD_1_MASK},
-	{"CFG_GIC_GIC_IRQ",
-		CFG_GIC_GIC_IRQ_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_1_a_field_info[] = {
-	{"RAM_SBE_MSK_1_A",
-		RAM_SBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_1_a_field_info[] = {
-	{"RAM_SBE_STS_1_A_RSVD",
-		RAM_SBE_STS_1_A_RSVD_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_SBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_SBE_STS_1_A_TAG_ODD_RAM",
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_1_a_field_info[] = {
-	{"RAM_DBE_MSK_1_A",
-		RAM_DBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_1_a_field_info[] = {
-	{"RAM_DBE_STS_1_A_RSVD",
-		RAM_DBE_STS_1_A_RSVD_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_DBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_DBE_STS_1_A_TAG_ODD_RAM",
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_SBE_STS_A_PEND_FIFO_RAM",
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H3_DAT",
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H2_DAT",
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H1_DAT",
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C3_DAT",
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C2_DAT",
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C1_DAT",
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_DBE_STS_A_PEND_FIFO_RAM",
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H3_DAT",
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H2_DAT",
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H1_DAT",
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C3_DAT",
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C2_DAT",
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C1_DAT",
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP",
-		GLBL2_MISC_CAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_brg_throt_field_info[] = {
-	{"GLBL2_RRQ_BRG_THROT_REQ_EN",
-		GLBL2_RRQ_BRG_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_BRG_THROT_REQ",
-		GLBL2_RRQ_BRG_THROT_REQ_MASK},
-	{"GLBL2_RRQ_BRG_THROT_DAT_EN",
-		GLBL2_RRQ_BRG_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_BRG_THROT_DAT",
-		GLBL2_RRQ_BRG_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_throt_field_info[] = {
-	{"GLBL2_RRQ_PCIE_THROT_REQ_EN",
-		GLBL2_RRQ_PCIE_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_REQ",
-		GLBL2_RRQ_PCIE_THROT_REQ_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_DAT_EN",
-		GLBL2_RRQ_PCIE_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_PCIE_THROT_DAT",
-		GLBL2_RRQ_PCIE_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_throt_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_THROT_REQ_EN",
-		GLBL2_RRQ_AXIMM_THROT_REQ_EN_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_REQ",
-		GLBL2_RRQ_AXIMM_THROT_REQ_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_DAT_EN",
-		GLBL2_RRQ_AXIMM_THROT_DAT_EN_MASK},
-	{"GLBL2_RRQ_AXIMM_THROT_DAT",
-		GLBL2_RRQ_AXIMM_THROT_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_lat0_field_info[] = {
-	{"GLBL2_RRQ_PCIE_LAT0_MAX",
-		GLBL2_RRQ_PCIE_LAT0_MAX_MASK},
-	{"GLBL2_RRQ_PCIE_LAT0_MIN",
-		GLBL2_RRQ_PCIE_LAT0_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_pcie_lat1_field_info[] = {
-	{"GLBL2_RRQ_PCIE_LAT1_RSVD",
-		GLBL2_RRQ_PCIE_LAT1_RSVD_MASK},
-	{"GLBL2_RRQ_PCIE_LAT1_OVFL",
-		GLBL2_RRQ_PCIE_LAT1_OVFL_MASK},
-	{"GLBL2_RRQ_PCIE_LAT1_AVG",
-		GLBL2_RRQ_PCIE_LAT1_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_lat0_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_LAT0_MAX",
-		GLBL2_RRQ_AXIMM_LAT0_MAX_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT0_MIN",
-		GLBL2_RRQ_AXIMM_LAT0_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_rrq_aximm_lat1_field_info[] = {
-	{"GLBL2_RRQ_AXIMM_LAT1_RSVD",
-		GLBL2_RRQ_AXIMM_LAT1_RSVD_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT1_OVFL",
-		GLBL2_RRQ_AXIMM_LAT1_OVFL_MASK},
-	{"GLBL2_RRQ_AXIMM_LAT1_AVG",
-		GLBL2_RRQ_AXIMM_LAT1_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_TAG_FL",
-		GLBL2_PCIE_RQ1_TAG_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RDY",
-		GLBL2_PCIE_RQ1_RREQ0_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RDY",
-		GLBL2_PCIE_RQ1_RREQ1_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_STRADDLE",
-		GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab0_field_info[] = {
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_VLD",
-		GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_RDY",
-		GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_VLD",
-		GLBL2_FAB0_H2C_SEG_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_RDY",
-		GLBL2_FAB0_H2C_SEG_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_VLD",
-		GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_RDY",
-		GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_H2C_MST_CRDT_STAT",
-		GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_FULL",
-		GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_VLD",
-		GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_RDY",
-		GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_VLD",
-		GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_RDY",
-		GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_FULL",
-		GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY",
-		GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY",
-		GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab1_field_info[] = {
-	{"GLBL2_FAB1_BYP_OUT_CRDT_STAT",
-		GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_TM_DSC_STS_CRDT_STAT",
-		GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_1",
-		GLBL2_FAB1_RSVD_1_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_2",
-		GLBL2_FAB1_RSVD_2_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_3",
-		GLBL2_FAB1_RSVD_3_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_4",
-		GLBL2_FAB1_RSVD_4_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_sel_field_info[] = {
-	{"GLBL2_MATCH_SEL_RSV",
-		GLBL2_MATCH_SEL_RSV_MASK},
-	{"GLBL2_MATCH_SEL_CSR_SEL",
-		GLBL2_MATCH_SEL_CSR_SEL_MASK},
-	{"GLBL2_MATCH_SEL_CSR_EN",
-		GLBL2_MATCH_SEL_CSR_EN_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE1",
-		GLBL2_MATCH_SEL_ROTATE1_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE0",
-		GLBL2_MATCH_SEL_ROTATE0_MASK},
-	{"GLBL2_MATCH_SEL_SEL",
-		GLBL2_MATCH_SEL_SEL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_msk_field_info[] = {
-	{"GLBL2_MATCH_MSK",
-		GLBL2_MATCH_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_pat_field_info[] = {
-	{"GLBL2_MATCH_PAT_PATTERN",
-		GLBL2_MATCH_PAT_PATTERN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_FAB",
-		GLBL_ERR_STAT_ERR_FAB_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_C2H_UODSC_LIMIT",
-		GLBL_DSC_CFG_C2H_UODSC_LIMIT_MASK},
-	{"GLBL_DSC_CFG_H2C_UODSC_LIMIT",
-		GLBL_DSC_CFG_H2C_UODSC_LIMIT_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_PORT_ID",
-		GLBL_DSC_ERR_STS_PORT_ID_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_BCNT",
-		GLBL_DSC_ERR_STS_BCNT_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_CIDX",
-		GLBL_DSC_ERR_LOG1_CIDX_MASK},
-	{"GLBL_DSC_ERR_LOG1_RSVD_2",
-		GLBL_DSC_ERR_LOG1_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_2",
-		GLBL_TRQ_ERR_STS_RSVD_2_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_QSPC_UNMAPPED",
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_3",
-		GLBL_TRQ_ERR_STS_RSVD_3_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_CSR_UNMAPPED",
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_SRC",
-		GLBL_TRQ_ERR_LOG_SRC_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_ctl_field_info[] = {
-	{"GLBL_DSC_CTL_RSVD_1",
-		GLBL_DSC_CTL_RSVD_1_MASK},
-	{"GLBL_DSC_CTL_LAT_QID",
-		GLBL_DSC_CTL_LAT_QID_MASK},
-	{"GLBL_DSC_CTL_DSC_ENG_LAT_CLR",
-		GLBL_DSC_CTL_DSC_ENG_LAT_CLR_MASK},
-	{"GLBL_DSC_CTL_SELECT",
-		GLBL_DSC_CTL_SELECT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log2_field_info[] = {
-	{"GLBL_DSC_ERR_LOG2_OLD_PIDX",
-		GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK},
-	{"GLBL_DSC_ERR_LOG2_NEW_PIDX",
-		GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_glbl_interrupt_cfg_field_info[] = {
-	{"GLBL_GLBL_INTERRUPT_CFG_RSVD_1",
-		GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING",
-		GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR",
-		GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_vch_host_profile_field_info[] = {
-	{"GLBL_VCH_HOST_PROFILE_RSVD_1",
-		GLBL_VCH_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_MM",
-		GLBL_VCH_HOST_PROFILE_2C_MM_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_ST",
-		GLBL_VCH_HOST_PROFILE_2C_ST_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_DSC",
-		GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_MSG",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_CMPT",
-		GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD",
-		GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl_bridge_host_profile_field_info[] = {
-	{"GLBL_BRIDGE_HOST_PROFILE_RSVD_1",
-		GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_BRIDGE_HOST_PROFILE_BDGID",
-		GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK},
-};
-
-
-static struct regfield_info
-	aximm_irq_dest_addr_field_info[] = {
-	{"AXIMM_IRQ_DEST_ADDR_ADDR",
-		AXIMM_IRQ_DEST_ADDR_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	fab_err_log_field_info[] = {
-	{"FAB_ERR_LOG_RSVD_1",
-		FAB_ERR_LOG_RSVD_1_MASK},
-	{"FAB_ERR_LOG_SRC",
-		FAB_ERR_LOG_SRC_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_sts_field_info[] = {
-	{"GLBL_REQ_ERR_STS_RSVD_1",
-		GLBL_REQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_REQ_ERR_STS_RC_DISCONTINUE",
-		GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK},
-	{"GLBL_REQ_ERR_STS_RC_PRTY",
-		GLBL_REQ_ERR_STS_RC_PRTY_MASK},
-	{"GLBL_REQ_ERR_STS_RC_FLR",
-		GLBL_REQ_ERR_STS_RC_FLR_MASK},
-	{"GLBL_REQ_ERR_STS_RC_TIMEOUT",
-		GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_BCNT",
-		GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_TAG",
-		GLBL_REQ_ERR_STS_RC_INV_TAG_MASK},
-	{"GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_NO_DATA",
-		GLBL_REQ_ERR_STS_RC_NO_DATA_MASK},
-	{"GLBL_REQ_ERR_STS_RC_UR_CA_CRS",
-		GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK},
-	{"GLBL_REQ_ERR_STS_RC_POISONED",
-		GLBL_REQ_ERR_STS_RC_POISONED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_msk_field_info[] = {
-	{"GLBL_REQ_ERR_MSK",
-		GLBL_REQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_lat0_a_field_info[] = {
-	{"GLBL_DSC_LAT0_A_LAT_MAX",
-		GLBL_DSC_LAT0_A_LAT_MAX_MASK},
-	{"GLBL_DSC_LAT0_A_LAT_MIN",
-		GLBL_DSC_LAT0_A_LAT_MIN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_lat1_a_field_info[] = {
-	{"GLBL_DSC_LAT1_A_RSVD",
-		GLBL_DSC_LAT1_A_RSVD_MASK},
-	{"GLBL_DSC_LAT1_A_LAT_OVF",
-		GLBL_DSC_LAT1_A_LAT_OVF_MASK},
-	{"GLBL_DSC_LAT1_A_LAT_AVG",
-		GLBL_DSC_LAT1_A_LAT_AVG_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr0_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT",
-		GLBL_DSC_CRD_CTR0_A_CRD_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr1_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT",
-		GLBL_DSC_CRD_CTR1_A_CRD_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr2_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT",
-		GLBL_DSC_CRD_CTR2_A_CRD_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_crd_ctr3_a_field_info[] = {
-	{"GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT",
-		GLBL_DSC_CRD_CTR3_A_CRD_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr0_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT",
-		GLBL_DSC_IMM_CRD_CTR0_A_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr1_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT",
-		GLBL_DSC_IMM_CRD_CTR1_A_RCV_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr2_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT",
-		GLBL_DSC_IMM_CRD_CTR2_A_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_imm_crd_ctr3_a_field_info[] = {
-	{"GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT",
-		GLBL_DSC_IMM_CRD_CTR3_A_RCV_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr0_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT",
-		GLBL_DSC_H2C_OUT_CTR0_A_H2CVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr1_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT",
-		GLBL_DSC_H2C_OUT_CTR1_A_H2CVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr2_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT",
-		GLBL_DSC_H2C_OUT_CTR2_A_H2CVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_h2c_out_ctr3_a_field_info[] = {
-	{"GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT",
-		GLBL_DSC_H2C_OUT_CTR3_A_H2CVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr0_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT",
-		GLBL_DSC_C2H_OUT_CTR0_A_C2HVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr1_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT",
-		GLBL_DSC_C2H_OUT_CTR1_A_C2HVLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr2_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT",
-		GLBL_DSC_C2H_OUT_CTR2_A_C2HVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_c2h_out_ctr3_a_field_info[] = {
-	{"GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT",
-		GLBL_DSC_C2H_OUT_CTR3_A_C2HVLD_NRDY_CNT_MASK},
-};
-
-
-static struct regfield_info
-	t_field_info[] = {
-	{"T_USER_CTR_MAX",
-		T_USER_CTR_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_perf_cntr_ctl_a1_field_info[] = {
-	{"GLBL_PERF_CNTR_CTL_A1_RSVD",
-		GLBL_PERF_CNTR_CTL_A1_RSVD_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_CLEAR_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_READ_MASK},
-	{"GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX",
-		GLBL_PERF_CNTR_CTL_A1_USER_CTR_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_free_cnt_a0_field_info[] = {
-	{"GLBL_FREE_CNT_A0_S",
-		GLBL_FREE_CNT_A0_S_MASK},
-};
-
-
-static struct regfield_info
-	glbl_free_cnt_a1_field_info[] = {
-	{"GLBL_FREE_CNT_A1_RSVD",
-		GLBL_FREE_CNT_A1_RSVD_MASK},
-	{"GLBL_FREE_CNT_A1_S",
-		GLBL_FREE_CNT_A1_S_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a0_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS",
-		GLBL_AXIS_H2C_CNT_A0_MPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a1_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS",
-		GLBL_AXIS_H2C_CNT_A1_MIDLE_CNTS_MASK},
-	{"GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS",
-		GLBL_AXIS_H2C_CNT_A1_MPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a2_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS",
-		GLBL_AXIS_H2C_CNT_A2_MIDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a3_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS",
-		GLBL_AXIS_H2C_CNT_A3_MACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a4_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS",
-		GLBL_AXIS_H2C_CNT_A4_MBUSY_CNTS_MASK},
-	{"GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS",
-		GLBL_AXIS_H2C_CNT_A4_MACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_h2c_cnt_a5_field_info[] = {
-	{"GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS",
-		GLBL_AXIS_H2C_CNT_A5_MBUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a0_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS",
-		GLBL_AXIS_C2H_CNT_A0_SPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a1_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS",
-		GLBL_AXIS_C2H_CNT_A1_SIDLE_CNTS_MASK},
-	{"GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS",
-		GLBL_AXIS_C2H_CNT_A1_SPKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a2_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS",
-		GLBL_AXIS_C2H_CNT_A2_SIDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a3_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS",
-		GLBL_AXIS_C2H_CNT_A3_SACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a4_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS",
-		GLBL_AXIS_C2H_CNT_A4_SBUSY_CNTS_MASK},
-	{"GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS",
-		GLBL_AXIS_C2H_CNT_A4_SACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_axis_c2h_cnt_a5_field_info[] = {
-	{"GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS",
-		GLBL_AXIS_C2H_CNT_A5_SBUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a0_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A0_PKT_CNTS",
-		GLBL_M_AXI_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a1_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXI_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXI_WR_CNT_A1_PKT_CNTS",
-		GLBL_M_AXI_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a2_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXI_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a3_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXI_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a4_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXI_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXI_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_wr_cnt_a5_field_info[] = {
-	{"GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXI_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a0_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A0_PKT_CNTS",
-		GLBL_M_AXI_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a1_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXI_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXI_RD_CNT_A1_PKT_CNTS",
-		GLBL_M_AXI_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a2_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXI_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a3_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXI_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a4_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXI_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXI_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axi_rd_cnt_a5_field_info[] = {
-	{"GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXI_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a0_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS",
-		GLBL_M_AXIB_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a1_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXIB_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS",
-		GLBL_M_AXIB_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a2_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXIB_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a3_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXIB_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a4_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXIB_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXIB_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_wr_cnt_a5_field_info[] = {
-	{"GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXIB_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a0_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS",
-		GLBL_M_AXIB_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a1_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS",
-		GLBL_M_AXIB_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS",
-		GLBL_M_AXIB_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a2_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS",
-		GLBL_M_AXIB_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a3_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS",
-		GLBL_M_AXIB_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a4_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS",
-		GLBL_M_AXIB_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS",
-		GLBL_M_AXIB_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_m_axib_rd_cnt_a5_field_info[] = {
-	{"GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS",
-		GLBL_M_AXIB_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a0_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A0_PKT_CNTS",
-		GLBL_S_AXI_WR_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a1_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXI_WR_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXI_WR_CNT_A1_PKT_CNTS",
-		GLBL_S_AXI_WR_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a2_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXI_WR_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a3_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXI_WR_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a4_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXI_WR_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXI_WR_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_wr_cnt_a5_field_info[] = {
-	{"GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXI_WR_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a0_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A0_PKT_CNTS",
-		GLBL_S_AXI_RD_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a1_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXI_RD_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXI_RD_CNT_A1_PKT_CNTS",
-		GLBL_S_AXI_RD_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a2_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXI_RD_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a3_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXI_RD_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a4_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXI_RD_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXI_RD_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axi_rd_cnt_a5_field_info[] = {
-	{"GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXI_RD_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a0_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A0_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a1_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A1_IDLE_CNTS_MASK},
-	{"GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A1_PKT_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a2_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A2_IDLE_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a3_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A3_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a4_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A4_BUSY_CNTS_MASK},
-	{"GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A4_ACTV_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_s_axis_cmp_cnt_a5_field_info[] = {
-	{"GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS",
-		GLBL_S_AXIS_CMP_CNT_A5_BUSY_CNTS_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_field_info[] = {
-	{"IND_CTXT_DATA_DATA",
-		IND_CTXT_DATA_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_mask_field_info[] = {
-	{"IND_CTXT",
-		IND_CTXT_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SEL",
-		IND_CTXT_CMD_SEL_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_field_info[] = {
-	{"C2H_TIMER_CNT_RSVD_1",
-		C2H_TIMER_CNT_RSVD_1_MASK},
-	{"C2H_TIMER_CNT",
-		C2H_TIMER_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_field_info[] = {
-	{"C2H_CNT_TH_RSVD_1",
-		C2H_CNT_TH_RSVD_1_MASK},
-	{"C2H_CNT_TH_THESHOLD_CNT",
-		C2H_CNT_TH_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_1_field_info[] = {
-	{"C2H_PFCH_CFG_1_EVT_QCNT_TH",
-		C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_1_QCNT",
-		C2H_PFCH_CFG_1_QCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_2_field_info[] = {
-	{"C2H_PFCH_CFG_2_FENCE",
-		C2H_PFCH_CFG_2_FENCE_MASK},
-	{"C2H_PFCH_CFG_2_RSVD",
-		C2H_PFCH_CFG_2_RSVD_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NO_DROP",
-		C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK},
-	{"C2H_PFCH_CFG_2_LL_SZ_TH",
-		C2H_PFCH_CFG_2_LL_SZ_TH_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NUM",
-		C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK},
-	{"C2H_PFCH_CFG_2_NUM",
-		C2H_PFCH_CFG_2_NUM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_field_info[] = {
-	{"C2H_BUF_SZ_IZE",
-		C2H_BUF_SZ_IZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PORT_ID_ERR",
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_PAR_ERR",
-		C2H_ERR_STAT_HDR_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_COR_ERR",
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_ERR_STAT_AVL_RING_DSC_ERR",
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_SH_CMPT_DSC_ERR",
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED2",
-		C2H_FATAL_ERR_STAT_RESERVED2_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED1",
-		C2H_FATAL_ERR_STAT_RESERVED1_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_HOST_ID",
-		GLBL_ERR_INT_HOST_ID_MASK},
-	{"GLBL_ERR_INT_DIS_INTR_ON_VF",
-		GLBL_ERR_INT_DIS_INTR_ON_VF_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVTFL_TH",
-		C2H_PFCH_CFG_EVTFL_TH_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE",
-		C2H_STAT_DMA_ENG_1_WRB_USER_0_CMPT_TYPE_MASK},
-	{"C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_1_DESC_RSP_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE",
-		C2H_STAT_DMA_ENG_2_WRB_USER_1_CMPT_TYPE_MASK},
-	{"C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_2_DESC_RSP_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1",
-		C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_HAS_CMPT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_DAT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_3_WR_HDR_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER",
-		C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_MASK},
-	{"C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_TYPE",
-		C2H_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"C2H_FIRST_ERR_QID_RSVD",
-		C2H_FIRST_ERR_QID_RSVD_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_HAS_CMPT_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_MARKER_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_DROP_REQ_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_DAT_QID_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1",
-		C2H_STAT_DMA_ENG_4_WR_HDR_FIFO_OUT_CNT_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1",
-		C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ",
-		C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_req_field_info[] = {
-	{"C2H_INTR_DYN_REQ_RSVD_1",
-		C2H_INTR_DYN_REQ_RSVD_1_MASK},
-	{"C2H_INTR_DYN_REQ_CNT",
-		C2H_INTR_DYN_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_misc_field_info[] = {
-	{"C2H_INTR_DYN_MISC_RSVD_1",
-		C2H_INTR_DYN_MISC_RSVD_1_MASK},
-	{"C2H_INTR_DYN_MISC_CNT",
-		C2H_INTR_DYN_MISC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_len_mismatch_field_info[] = {
-	{"C2H_DROP_LEN_MISMATCH_RSVD_1",
-		C2H_DROP_LEN_MISMATCH_RSVD_1_MASK},
-	{"C2H_DROP_LEN_MISMATCH_CNT",
-		C2H_DROP_LEN_MISMATCH_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_desc_rsp_len_field_info[] = {
-	{"C2H_DROP_DESC_RSP_LEN_RSVD_1",
-		C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK},
-	{"C2H_DROP_DESC_RSP_LEN_CNT",
-		C2H_DROP_DESC_RSP_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_qid_fifo_len_field_info[] = {
-	{"C2H_DROP_QID_FIFO_LEN_RSVD_1",
-		C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK},
-	{"C2H_DROP_QID_FIFO_LEN_CNT",
-		C2H_DROP_QID_FIFO_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_field_info[] = {
-	{"C2H_DROP_PLD_CNT_RSVD_1",
-		C2H_DROP_PLD_CNT_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_CNT",
-		C2H_DROP_PLD_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_0_field_info[] = {
-	{"C2H_CMPT_FORMAT_0_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_0_COLOR_LOC",
-		C2H_CMPT_FORMAT_0_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_1_field_info[] = {
-	{"C2H_CMPT_FORMAT_1_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_1_COLOR_LOC",
-		C2H_CMPT_FORMAT_1_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_2_field_info[] = {
-	{"C2H_CMPT_FORMAT_2_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_2_COLOR_LOC",
-		C2H_CMPT_FORMAT_2_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_3_field_info[] = {
-	{"C2H_CMPT_FORMAT_3_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_3_COLOR_LOC",
-		C2H_CMPT_FORMAT_3_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_4_field_info[] = {
-	{"C2H_CMPT_FORMAT_4_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_4_COLOR_LOC",
-		C2H_CMPT_FORMAT_4_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_5_field_info[] = {
-	{"C2H_CMPT_FORMAT_5_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_5_COLOR_LOC",
-		C2H_CMPT_FORMAT_5_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_6_field_info[] = {
-	{"C2H_CMPT_FORMAT_6_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_6_COLOR_LOC",
-		C2H_CMPT_FORMAT_6_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cache_depth_field_info[] = {
-	{"C2H_PFCH_CACHE_DEPTH_MAX_STBUF",
-		C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK},
-	{"C2H_PFCH_CACHE_DEPTH",
-		C2H_PFCH_CACHE_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_buf_depth_field_info[] = {
-	{"C2H_WRB_COAL_BUF_DEPTH_RSVD_1",
-		C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK},
-	{"C2H_WRB_COAL_BUF_DEPTH_BUFFER",
-		C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_crdt_field_info[] = {
-	{"C2H_PFCH_CRDT_RSVD_1",
-		C2H_PFCH_CRDT_RSVD_1_MASK},
-	{"C2H_PFCH_CRDT_RSVD_2",
-		C2H_PFCH_CRDT_RSVD_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_cmpt_accepted_field_info[] = {
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_CNT",
-		C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_pld_accepted_field_info[] = {
-	{"C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_PLD_ACCEPTED_CNT",
-		C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_field_info[] = {
-	{"C2H_PLD_PKT_ID_CMPT_WAIT",
-		C2H_PLD_PKT_ID_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_DATA",
-		C2H_PLD_PKT_ID_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_1_field_info[] = {
-	{"C2H_PLD_PKT_ID_1_CMPT_WAIT",
-		C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_1_DATA",
-		C2H_PLD_PKT_ID_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_1_field_info[] = {
-	{"C2H_DROP_PLD_CNT_1_RSVD_1",
-		C2H_DROP_PLD_CNT_1_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_1_CNT",
-		C2H_DROP_PLD_CNT_1_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_PAR_ERR",
-		H2C_ERR_STAT_PAR_ERR_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3_RSVD_1",
-		H2C_REG3_RSVD_1_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_pcie_field_info[] = {
-	{"H2C_REQ_THROT_PCIE_EN_REQ",
-		H2C_REQ_THROT_PCIE_EN_REQ_MASK},
-	{"H2C_REQ_THROT_PCIE",
-		H2C_REQ_THROT_PCIE_MASK},
-	{"H2C_REQ_THROT_PCIE_EN_DATA",
-		H2C_REQ_THROT_PCIE_EN_DATA_MASK},
-	{"H2C_REQ_THROT_PCIE_DATA_THRESH",
-		H2C_REQ_THROT_PCIE_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	h2c_aln_dbg_reg0_field_info[] = {
-	{"H2C_ALN_REG0_NUM_PKT_SENT",
-		H2C_ALN_REG0_NUM_PKT_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_aximm_field_info[] = {
-	{"H2C_REQ_THROT_AXIMM_EN_REQ",
-		H2C_REQ_THROT_AXIMM_EN_REQ_MASK},
-	{"H2C_REQ_THROT_AXIMM",
-		H2C_REQ_THROT_AXIMM_MASK},
-	{"H2C_REQ_THROT_AXIMM_EN_DATA",
-		H2C_REQ_THROT_AXIMM_EN_DATA_MASK},
-	{"H2C_REQ_THROT_AXIMM_DATA_THRESH",
-		H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_ctl_field_info[] = {
-	{"C2H_MM_CTL_RESERVED1",
-		C2H_MM_CTL_RESERVED1_MASK},
-	{"C2H_MM_CTL_ERRC_EN",
-		C2H_MM_CTL_ERRC_EN_MASK},
-	{"C2H_MM_CTL_RESERVED0",
-		C2H_MM_CTL_RESERVED0_MASK},
-	{"C2H_MM_CTL_RUN",
-		C2H_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_cmpl_desc_cnt_field_info[] = {
-	{"C2H_MM_CMPL_DESC_CNT_C2H_CO",
-		C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED1",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED0",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RESERVED1",
-		C2H_MM_ERR_CODE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_CIDX",
-		C2H_MM_ERR_CODE_CIDX_MASK},
-	{"C2H_MM_ERR_CODE_RESERVED0",
-		C2H_MM_ERR_CODE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_SUB_TYPE",
-		C2H_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_VALID",
-		C2H_MM_ERR_INFO_VALID_MASK},
-	{"C2H_MM_ERR_INFO_SEL",
-		C2H_MM_ERR_INFO_SEL_MASK},
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_ctl_field_info[] = {
-	{"H2C_MM_CTL_RESERVED1",
-		H2C_MM_CTL_RESERVED1_MASK},
-	{"H2C_MM_CTL_ERRC_EN",
-		H2C_MM_CTL_ERRC_EN_MASK},
-	{"H2C_MM_CTL_RESERVED0",
-		H2C_MM_CTL_RESERVED0_MASK},
-	{"H2C_MM_CTL_RUN",
-		H2C_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_cmpl_desc_cnt_field_info[] = {
-	{"H2C_MM_CMPL_DESC_CNT_H2C_CO",
-		H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED5",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED4",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED3",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED2",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED1",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED0",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_CIDX",
-		H2C_MM_ERR_CODE_CIDX_MASK},
-	{"H2C_MM_ERR_CODE_RESERVED0",
-		H2C_MM_ERR_CODE_RESERVED0_MASK},
-	{"H2C_MM_ERR_CODE_SUB_TYPE",
-		H2C_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_VALID",
-		H2C_MM_ERR_INFO_VALID_MASK},
-	{"H2C_MM_ERR_INFO_SEL",
-		H2C_MM_ERR_INFO_SEL_MASK},
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_data_throttle_field_info[] = {
-	{"H2C_MM_DATA_THROTTLE_RSVD_1",
-		H2C_MM_DATA_THROTTLE_RSVD_1_MASK},
-	{"H2C_MM_DATA_THROTTLE_DAT_EN",
-		H2C_MM_DATA_THROTTLE_DAT_EN_MASK},
-	{"H2C_MM_DATA_THROTTLE_DAT",
-		H2C_MM_DATA_THROTTLE_DAT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_1_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_1_RSVD_1",
-		C2H_CRDT_COAL_CFG_1_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH",
-		C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_1_TIMER_TH",
-		C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_2_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_2_RSVD_1",
-		C2H_CRDT_COAL_CFG_2_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_FIFO_TH",
-		C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_2_RESERVED1",
-		C2H_CRDT_COAL_CFG_2_RESERVED1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_NT_TH",
-		C2H_CRDT_COAL_CFG_2_NT_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_qid_field_info[] = {
-	{"C2H_PFCH_BYP_QID_RSVD_1",
-		C2H_PFCH_BYP_QID_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_QID",
-		C2H_PFCH_BYP_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_tag_field_info[] = {
-	{"C2H_PFCH_BYP_TAG_RSVD_1",
-		C2H_PFCH_BYP_TAG_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_TAG_BYP_QID",
-		C2H_PFCH_BYP_TAG_BYP_QID_MASK},
-	{"C2H_PFCH_BYP_TAG_RSVD_2",
-		C2H_PFCH_BYP_TAG_RSVD_2_MASK},
-	{"C2H_PFCH_BYP_TAG",
-		C2H_PFCH_BYP_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_water_mark_field_info[] = {
-	{"C2H_WATER_MARK_HIGH_WM",
-		C2H_WATER_MARK_HIGH_WM_MASK},
-	{"C2H_WATER_MARK_LOW_WM",
-		C2H_WATER_MARK_LOW_WM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_notify_empty_field_info[] = {
-	{"C2H_NOTIFY_EMPTY_RSVD_1",
-		C2H_NOTIFY_EMPTY_RSVD_1_MASK},
-	{"C2H_NOTIFY_EMPTY_NOE",
-		C2H_NOTIFY_EMPTY_NOE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_1_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_1_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_1_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP_1",
-		C2H_STAT_AXIS_PKG_CMP_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_2_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_st_pld_fifo_depth_field_info[] = {
-	{"C2H_ST_PLD_FIFO_DEPTH",
-		C2H_ST_PLD_FIFO_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_6_field_info[] = {
-	{"C2H_STAT_DMA_ENG_6_RSVD",
-		C2H_STAT_DMA_ENG_6_RSVD_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID",
-		C2H_STAT_DMA_ENG_6_PLD_ST_FIFO_OUT_DATA_QID_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID",
-		C2H_STAT_DMA_ENG_6_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_MASK},
-	{"C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST",
-		C2H_STAT_DMA_ENG_6_PLD_PKT_ID_LARGER_PLD_ST_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_7_field_info[] = {
-	{"C2H_STAT_DMA_ENG_7_RSVD",
-		C2H_STAT_DMA_ENG_7_RSVD_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1",
-		C2H_STAT_DMA_ENG_7_PLD_ST_FIFO_OUT_DATA_QID_1_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1",
-		C2H_STAT_DMA_ENG_7_PLD_STS_FIFO_OUT_DATA_PLD_ST_PKT_ID_1_MASK},
-	{"C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1",
-		C2H_STAT_DMA_ENG_7_PLD_PKT_ID_LARGER_PLD_ST_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_pcie_cmp_1_field_info[] = {
-	{"C2H_STAT_PCIE_CMP_1_DEPTH",
-		C2H_STAT_PCIE_CMP_1_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_almost_full_field_info[] = {
-	{"C2H_PLD_FIFO_ALMOST_FULL_ENABLE",
-		C2H_PLD_FIFO_ALMOST_FULL_ENABLE_MASK},
-	{"C2H_PLD_FIFO_ALMOST_FULL_TH",
-		C2H_PLD_FIFO_ALMOST_FULL_TH_MASK},
-};
-
-
-static struct regfield_info
-	pfch_cfg_3_field_info[] = {
-	{"PFCH_CFG_3_RSVD",
-		PFCH_CFG_3_RSVD_MASK},
-	{"PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH",
-		PFCH_CFG_3_VAR_DESC_FL_FREE_CNT_TH_MASK},
-	{"PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH",
-		PFCH_CFG_3_VAR_DESC_LG_PKT_CAM_CN_TH_MASK},
-};
-
-
-static struct regfield_info
-	cmpt_cfg_0_field_info[] = {
-	{"CMPT_CFG_0_RSVD",
-		CMPT_CFG_0_RSVD_MASK},
-	{"CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY",
-		CMPT_CFG_0_VIO_SPRS_INT_AFTER_RTY_MASK},
-	{"CMPT_CFG_0_VIO_EVNT_SUP_EN",
-		CMPT_CFG_0_VIO_EVNT_SUP_EN_MASK},
-};
-
-
-static struct regfield_info
-	pfch_cfg_4_field_info[] = {
-	{"PFCH_CFG_4_GLB_EVT_TIMER_TICK",
-		PFCH_CFG_4_GLB_EVT_TIMER_TICK_MASK},
-	{"PFCH_CFG_4_DISABLE_GLB_EVT_TIMER",
-		PFCH_CFG_4_DISABLE_GLB_EVT_TIMER_MASK},
-	{"PFCH_CFG_4_EVT_TIMER_TICK",
-		PFCH_CFG_4_EVT_TIMER_TICK_MASK},
-	{"PFCH_CFG_4_DISABLE_EVT_TIMER",
-		PFCH_CFG_4_DISABLE_EVT_TIMER_MASK},
-};
-
-static struct xreg_info eqdma_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSIX_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msix_enable_field_info),
-	cfg_blk_msix_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x20,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_PL_CRED_CTL", 0x68,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pl_cred_ctl_field_info),
-	cfg_pl_cred_ctl_field_info
-},
-{"CFG_BLK_SCRATCH", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_field_info),
-	cfg_blk_scratch_field_info
-},
-{"CFG_GIC", 0xa0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_gic_field_info),
-	cfg_gic_field_info
-},
-{"RAM_SBE_MSK_1_A", 0xe0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_1_a_field_info),
-	ram_sbe_msk_1_a_field_info
-},
-{"RAM_SBE_STS_1_A", 0xe4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_1_a_field_info),
-	ram_sbe_sts_1_a_field_info
-},
-{"RAM_DBE_MSK_1_A", 0xe8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_1_a_field_info),
-	ram_dbe_msk_1_a_field_info
-},
-{"RAM_DBE_STS_1_A", 0xec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_1_a_field_info),
-	ram_dbe_sts_1_a_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_RRQ_BRG_THROT", 0x158,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_brg_throt_field_info),
-	glbl2_rrq_brg_throt_field_info
-},
-{"GLBL2_RRQ_PCIE_THROT", 0x15c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_throt_field_info),
-	glbl2_rrq_pcie_throt_field_info
-},
-{"GLBL2_RRQ_AXIMM_THROT", 0x160,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_throt_field_info),
-	glbl2_rrq_aximm_throt_field_info
-},
-{"GLBL2_RRQ_PCIE_LAT0", 0x164,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_lat0_field_info),
-	glbl2_rrq_pcie_lat0_field_info
-},
-{"GLBL2_RRQ_PCIE_LAT1", 0x168,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_pcie_lat1_field_info),
-	glbl2_rrq_pcie_lat1_field_info
-},
-{"GLBL2_RRQ_AXIMM_LAT0", 0x16c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_lat0_field_info),
-	glbl2_rrq_aximm_lat0_field_info
-},
-{"GLBL2_RRQ_AXIMM_LAT1", 0x170,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_rrq_aximm_lat1_field_info),
-	glbl2_rrq_aximm_lat1_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL2_DBG_FAB0", 0x1d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab0_field_info),
-	glbl2_dbg_fab0_field_info
-},
-{"GLBL2_DBG_FAB1", 0x1d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab1_field_info),
-	glbl2_dbg_fab1_field_info
-},
-{"GLBL2_DBG_MATCH_SEL", 0x1f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_sel_field_info),
-	glbl2_dbg_match_sel_field_info
-},
-{"GLBL2_DBG_MATCH_MSK", 0x1f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_msk_field_info),
-	glbl2_dbg_match_msk_field_info
-},
-{"GLBL2_DBG_MATCH_PAT", 0x1fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_pat_field_info),
-	glbl2_dbg_match_pat_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"GLBL_DSC_DBG_CTL", 0x278,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_ctl_field_info),
-	glbl_dsc_dbg_ctl_field_info
-},
-{"GLBL_DSC_ERR_LOG2", 0x27c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log2_field_info),
-	glbl_dsc_err_log2_field_info
-},
-{"GLBL_GLBL_INTERRUPT_CFG", 0x2c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_glbl_interrupt_cfg_field_info),
-	glbl_glbl_interrupt_cfg_field_info
-},
-{"GLBL_VCH_HOST_PROFILE", 0x2c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_vch_host_profile_field_info),
-	glbl_vch_host_profile_field_info
-},
-{"GLBL_BRIDGE_HOST_PROFILE", 0x308,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_bridge_host_profile_field_info),
-	glbl_bridge_host_profile_field_info
-},
-{"AXIMM_IRQ_DEST_ADDR", 0x30c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(aximm_irq_dest_addr_field_info),
-	aximm_irq_dest_addr_field_info
-},
-{"FAB_ERR_LOG", 0x314,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(fab_err_log_field_info),
-	fab_err_log_field_info
-},
-{"GLBL_REQ_ERR_STS", 0x318,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_sts_field_info),
-	glbl_req_err_sts_field_info
-},
-{"GLBL_REQ_ERR_MSK", 0x31c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_msk_field_info),
-	glbl_req_err_msk_field_info
-},
-{"GLBL_DSC_DBG_LAT0_A", 0x320,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_dbg_lat0_a_field_info),
-	glbl_dsc_dbg_lat0_a_field_info
-},
-{"GLBL_DSC_DBG_LAT1_A", 0x324,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_dbg_lat1_a_field_info),
-	glbl_dsc_dbg_lat1_a_field_info
-},
-{"GLBL_DSC_CRD_CTR0_A", 0x328,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr0_a_field_info),
-	glbl_dsc_crd_ctr0_a_field_info
-},
-{"GLBL_DSC_CRD_CTR1_A", 0x32c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr1_a_field_info),
-	glbl_dsc_crd_ctr1_a_field_info
-},
-{"GLBL_DSC_CRD_CTR2_A", 0x330,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr2_a_field_info),
-	glbl_dsc_crd_ctr2_a_field_info
-},
-{"GLBL_DSC_CRD_CTR3_A", 0x334,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_crd_ctr3_a_field_info),
-	glbl_dsc_crd_ctr3_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR0_A", 0x338,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr0_a_field_info),
-	glbl_dsc_imm_crd_ctr0_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR1_A", 0x33c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr1_a_field_info),
-	glbl_dsc_imm_crd_ctr1_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR2_A", 0x340,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr2_a_field_info),
-	glbl_dsc_imm_crd_ctr2_a_field_info
-},
-{"GLBL_DSC_IMM_CRD_CTR3_A", 0x344,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_imm_crd_ctr3_a_field_info),
-	glbl_dsc_imm_crd_ctr3_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR0_A", 0x348,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr0_a_field_info),
-	glbl_dsc_h2c_out_ctr0_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR1_A", 0x34c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr1_a_field_info),
-	glbl_dsc_h2c_out_ctr1_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR2_A", 0x350,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr2_a_field_info),
-	glbl_dsc_h2c_out_ctr2_a_field_info
-},
-{"GLBL_DSC_H2C_OUT_CTR3_A", 0x354,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_h2c_out_ctr3_a_field_info),
-	glbl_dsc_h2c_out_ctr3_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR0_A", 0x358,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr0_a_field_info),
-	glbl_dsc_c2h_out_ctr0_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR1_A", 0x35c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr1_a_field_info),
-	glbl_dsc_c2h_out_ctr1_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR2_A", 0x360,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr2_a_field_info),
-	glbl_dsc_c2h_out_ctr2_a_field_info
-},
-{"GLBL_DSC_C2H_OUT_CTR3_A", 0x364,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_dsc_c2h_out_ctr3_a_field_info),
-	glbl_dsc_c2h_out_ctr3_a_field_info
-},
-{"T", 0x368,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(t_field_info),
-	t_field_info
-},
-{"GLBL_PERF_CNTR_CTL_A1", 0x36c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_perf_cntr_ctl_a1_field_info),
-	glbl_perf_cntr_ctl_a1_field_info
-},
-{"GLBL_FREE_CNT_A0", 0x370,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_free_cnt_a0_field_info),
-	glbl_free_cnt_a0_field_info
-},
-{"GLBL_FREE_CNT_A1", 0x374,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_free_cnt_a1_field_info),
-	glbl_free_cnt_a1_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A0", 0x378,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a0_field_info),
-	glbl_axis_h2c_cnt_a0_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A1", 0x37c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a1_field_info),
-	glbl_axis_h2c_cnt_a1_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A2", 0x380,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a2_field_info),
-	glbl_axis_h2c_cnt_a2_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A3", 0x384,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a3_field_info),
-	glbl_axis_h2c_cnt_a3_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A4", 0x388,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a4_field_info),
-	glbl_axis_h2c_cnt_a4_field_info
-},
-{"GLBL_AXIS_H2C_CNT_A5", 0x38c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_h2c_cnt_a5_field_info),
-	glbl_axis_h2c_cnt_a5_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A0", 0x390,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a0_field_info),
-	glbl_axis_c2h_cnt_a0_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A1", 0x394,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a1_field_info),
-	glbl_axis_c2h_cnt_a1_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A2", 0x398,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a2_field_info),
-	glbl_axis_c2h_cnt_a2_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A3", 0x39c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a3_field_info),
-	glbl_axis_c2h_cnt_a3_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A4", 0x3a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a4_field_info),
-	glbl_axis_c2h_cnt_a4_field_info
-},
-{"GLBL_AXIS_C2H_CNT_A5", 0x3a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_axis_c2h_cnt_a5_field_info),
-	glbl_axis_c2h_cnt_a5_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A0", 0x3a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a0_field_info),
-	glbl_m_axi_wr_cnt_a0_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A1", 0x3ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a1_field_info),
-	glbl_m_axi_wr_cnt_a1_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A2", 0x3b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a2_field_info),
-	glbl_m_axi_wr_cnt_a2_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A3", 0x3b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a3_field_info),
-	glbl_m_axi_wr_cnt_a3_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A4", 0x3b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a4_field_info),
-	glbl_m_axi_wr_cnt_a4_field_info
-},
-{"GLBL_M_AXI_WR_CNT_A5", 0x3bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_wr_cnt_a5_field_info),
-	glbl_m_axi_wr_cnt_a5_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A0", 0x3c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a0_field_info),
-	glbl_m_axi_rd_cnt_a0_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A1", 0x3c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a1_field_info),
-	glbl_m_axi_rd_cnt_a1_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A2", 0x3c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a2_field_info),
-	glbl_m_axi_rd_cnt_a2_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A3", 0x3cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a3_field_info),
-	glbl_m_axi_rd_cnt_a3_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A4", 0x3d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a4_field_info),
-	glbl_m_axi_rd_cnt_a4_field_info
-},
-{"GLBL_M_AXI_RD_CNT_A5", 0x3d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axi_rd_cnt_a5_field_info),
-	glbl_m_axi_rd_cnt_a5_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A0", 0x3d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a0_field_info),
-	glbl_m_axib_wr_cnt_a0_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A1", 0x3dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a1_field_info),
-	glbl_m_axib_wr_cnt_a1_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A2", 0x3e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a2_field_info),
-	glbl_m_axib_wr_cnt_a2_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A3", 0x3e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a3_field_info),
-	glbl_m_axib_wr_cnt_a3_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A4", 0x3e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a4_field_info),
-	glbl_m_axib_wr_cnt_a4_field_info
-},
-{"GLBL_M_AXIB_WR_CNT_A5", 0x3ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_wr_cnt_a5_field_info),
-	glbl_m_axib_wr_cnt_a5_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A0", 0x3f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a0_field_info),
-	glbl_m_axib_rd_cnt_a0_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A1", 0x3f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a1_field_info),
-	glbl_m_axib_rd_cnt_a1_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A2", 0x3f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a2_field_info),
-	glbl_m_axib_rd_cnt_a2_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A3", 0x3fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a3_field_info),
-	glbl_m_axib_rd_cnt_a3_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A4", 0x400,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a4_field_info),
-	glbl_m_axib_rd_cnt_a4_field_info
-},
-{"GLBL_M_AXIB_RD_CNT_A5", 0x404,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_m_axib_rd_cnt_a5_field_info),
-	glbl_m_axib_rd_cnt_a5_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A0", 0x408,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a0_field_info),
-	glbl_s_axi_wr_cnt_a0_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A1", 0x40c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a1_field_info),
-	glbl_s_axi_wr_cnt_a1_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A2", 0x410,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a2_field_info),
-	glbl_s_axi_wr_cnt_a2_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A3", 0x414,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a3_field_info),
-	glbl_s_axi_wr_cnt_a3_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A4", 0x418,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a4_field_info),
-	glbl_s_axi_wr_cnt_a4_field_info
-},
-{"GLBL_S_AXI_WR_CNT_A5", 0x41c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_wr_cnt_a5_field_info),
-	glbl_s_axi_wr_cnt_a5_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A0", 0x420,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a0_field_info),
-	glbl_s_axi_rd_cnt_a0_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A1", 0x424,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a1_field_info),
-	glbl_s_axi_rd_cnt_a1_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A2", 0x428,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a2_field_info),
-	glbl_s_axi_rd_cnt_a2_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A3", 0x42c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a3_field_info),
-	glbl_s_axi_rd_cnt_a3_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A4", 0x430,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a4_field_info),
-	glbl_s_axi_rd_cnt_a4_field_info
-},
-{"GLBL_S_AXI_RD_CNT_A5", 0x434,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axi_rd_cnt_a5_field_info),
-	glbl_s_axi_rd_cnt_a5_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A0", 0x438,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a0_field_info),
-	glbl_s_axis_cmp_cnt_a0_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A1", 0x43c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a1_field_info),
-	glbl_s_axis_cmp_cnt_a1_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A2", 0x440,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a2_field_info),
-	glbl_s_axis_cmp_cnt_a2_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A3", 0x444,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a3_field_info),
-	glbl_s_axis_cmp_cnt_a3_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A4", 0x448,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a4_field_info),
-	glbl_s_axis_cmp_cnt_a4_field_info
-},
-{"GLBL_S_AXIS_CMP_CNT_A5", 0x44c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_s_axis_cmp_cnt_a5_field_info),
-	glbl_s_axis_cmp_cnt_a5_field_info
-},
-{"IND_CTXT_DATA", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_field_info),
-	ind_ctxt_data_field_info
-},
-{"IND_CTXT_MASK", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_mask_field_info),
-	ind_ctxt_mask_field_info
-},
-{"IND_CTXT_CMD", 0x844,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_field_info),
-	c2h_timer_cnt_field_info
-},
-{"C2H_CNT_TH", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_field_info),
-	c2h_cnt_th_field_info
-},
-{"C2H_PFCH_CFG_1", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_1_field_info),
-	c2h_pfch_cfg_1_field_info
-},
-{"C2H_PFCH_CFG_2", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_pfch_cfg_2_field_info),
-	c2h_pfch_cfg_2_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_field_info),
-	c2h_buf_sz_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"C2H_INTR_DYN_REQ", 0xbac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_req_field_info),
-	c2h_intr_dyn_req_field_info
-},
-{"C2H_INTR_DYN_MISC", 0xbb0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_misc_field_info),
-	c2h_intr_dyn_misc_field_info
-},
-{"C2H_DROP_LEN_MISMATCH", 0xbb4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_len_mismatch_field_info),
-	c2h_drop_len_mismatch_field_info
-},
-{"C2H_DROP_DESC_RSP_LEN", 0xbb8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_desc_rsp_len_field_info),
-	c2h_drop_desc_rsp_len_field_info
-},
-{"C2H_DROP_QID_FIFO_LEN", 0xbbc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_qid_fifo_len_field_info),
-	c2h_drop_qid_fifo_len_field_info
-},
-{"C2H_DROP_PLD_CNT", 0xbc0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_field_info),
-	c2h_drop_pld_cnt_field_info
-},
-{"C2H_CMPT_FORMAT_0", 0xbc4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_0_field_info),
-	c2h_cmpt_format_0_field_info
-},
-{"C2H_CMPT_FORMAT_1", 0xbc8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_1_field_info),
-	c2h_cmpt_format_1_field_info
-},
-{"C2H_CMPT_FORMAT_2", 0xbcc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_2_field_info),
-	c2h_cmpt_format_2_field_info
-},
-{"C2H_CMPT_FORMAT_3", 0xbd0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_3_field_info),
-	c2h_cmpt_format_3_field_info
-},
-{"C2H_CMPT_FORMAT_4", 0xbd4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_4_field_info),
-	c2h_cmpt_format_4_field_info
-},
-{"C2H_CMPT_FORMAT_5", 0xbd8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_5_field_info),
-	c2h_cmpt_format_5_field_info
-},
-{"C2H_CMPT_FORMAT_6", 0xbdc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_6_field_info),
-	c2h_cmpt_format_6_field_info
-},
-{"C2H_PFCH_CACHE_DEPTH", 0xbe0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cache_depth_field_info),
-	c2h_pfch_cache_depth_field_info
-},
-{"C2H_WRB_COAL_BUF_DEPTH", 0xbe4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_buf_depth_field_info),
-	c2h_wrb_coal_buf_depth_field_info
-},
-{"C2H_PFCH_CRDT", 0xbe8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_crdt_field_info),
-	c2h_pfch_crdt_field_info
-},
-{"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_cmpt_accepted_field_info),
-	c2h_stat_has_cmpt_accepted_field_info
-},
-{"C2H_STAT_HAS_PLD_ACCEPTED", 0xbf0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_pld_accepted_field_info),
-	c2h_stat_has_pld_accepted_field_info
-},
-{"C2H_PLD_PKT_ID", 0xbf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_field_info),
-	c2h_pld_pkt_id_field_info
-},
-{"C2H_PLD_PKT_ID_1", 0xbf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_1_field_info),
-	c2h_pld_pkt_id_1_field_info
-},
-{"C2H_DROP_PLD_CNT_1", 0xbfc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_1_field_info),
-	c2h_drop_pld_cnt_1_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"H2C_REQ_THROT_PCIE", 0xe24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_pcie_field_info),
-	h2c_req_throt_pcie_field_info
-},
-{"H2C_ALN_DBG_REG0", 0xe28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_aln_dbg_reg0_field_info),
-	h2c_aln_dbg_reg0_field_info
-},
-{"H2C_REQ_THROT_AXIMM", 0xe2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_aximm_field_info),
-	h2c_req_throt_aximm_field_info
-},
-{"C2H_MM_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_ctl_field_info),
-	c2h_mm_ctl_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_MM_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_cmpl_desc_cnt_field_info),
-	c2h_mm_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_MM_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_ctl_field_info),
-	h2c_mm_ctl_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_MM_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_cmpl_desc_cnt_field_info),
-	h2c_mm_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"H2C_MM_DATA_THROTTLE", 0x12ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_data_throttle_field_info),
-	h2c_mm_data_throttle_field_info
-},
-{"C2H_CRDT_COAL_CFG_1", 0x1400,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_1_field_info),
-	c2h_crdt_coal_cfg_1_field_info
-},
-{"C2H_CRDT_COAL_CFG_2", 0x1404,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_2_field_info),
-	c2h_crdt_coal_cfg_2_field_info
-},
-{"C2H_PFCH_BYP_QID", 0x1408,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_qid_field_info),
-	c2h_pfch_byp_qid_field_info
-},
-{"C2H_PFCH_BYP_TAG", 0x140c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_tag_field_info),
-	c2h_pfch_byp_tag_field_info
-},
-{"C2H_WATER_MARK", 0x1410,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_water_mark_field_info),
-	c2h_water_mark_field_info
-},
-{"C2H_NOTIFY_EMPTY", 0x1450,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_notify_empty_field_info),
-	c2h_notify_empty_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED_1", 0x1454,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_1_field_info),
-	c2h_stat_s_axis_c2h_accepted_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_1", 0x1458,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_1_field_info),
-	c2h_stat_s_axis_wrb_accepted_1_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_1", 0x145c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_1_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_1_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP_1", 0x1460,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_1_field_info),
-	c2h_stat_axis_pkg_cmp_1_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED_2", 0x1464,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_2_field_info),
-	c2h_stat_s_axis_wrb_accepted_2_field_info
-},
-{"C2H_ST_PLD_FIFO_DEPTH", 0x1468,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_st_pld_fifo_depth_field_info),
-	c2h_st_pld_fifo_depth_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_6", 0x146c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_6_field_info),
-	c2h_stat_dbg_dma_eng_6_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_7", 0x1470,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_7_field_info),
-	c2h_stat_dbg_dma_eng_7_field_info
-},
-{"C2H_STAT_PCIE_CMP_1", 0x1474,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_pcie_cmp_1_field_info),
-	c2h_stat_pcie_cmp_1_field_info
-},
-{"C2H_PLD_FIFO_ALMOST_FULL", 0x1478,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_almost_full_field_info),
-	c2h_pld_fifo_almost_full_field_info
-},
-{"PFCH_CFG_3", 0x147c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(pfch_cfg_3_field_info),
-	pfch_cfg_3_field_info
-},
-{"CMPT_CFG_0", 0x1480,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cmpt_cfg_0_field_info),
-	cmpt_cfg_0_field_info
-},
-{"PFCH_CFG_4", 0x1484,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(pfch_cfg_4_field_info),
-	pfch_cfg_4_field_info
-},
-
-};
-
-uint32_t eqdma_config_num_regs_get(void)
-{
-	return (sizeof(eqdma_config_regs)/
-		sizeof(eqdma_config_regs[0]));
-}
-
-struct xreg_info *eqdma_config_regs_get(void)
-{
-	return eqdma_config_regs;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c
deleted file mode 100755
index 6b468d5..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.c
+++ /dev/null
@@ -1,1514 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_access_common.h"
-#include "qdma_platform.h"
-#include "qdma_soft_reg.h"
-#include "qdma_soft_access.h"
-#include "qdma_cpm4_access/qdma_cpm4_access.h"
-#include "eqdma_soft_access.h"
-#include "eqdma_cpm5_access/eqdma_cpm5_access.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_access_common.tmh"
-#endif
-
-/* qdma version info */
-#define RTL_BASE_VERSION                        2
-#define RTL_PATCH_VERSION                       3
-
-/**
- * enum qdma_ip - To hold ip type
- */
-enum qdma_ip {
-	QDMA_OR_VERSAL_IP,
-	EQDMA_IP,
-	EQDMA_CPM5_IP
-};
-
-
-/*
- * hw_monitor_reg() - polling a register repeatly until
- *	(the register value & mask) == val or time is up
- *
- * return -QDMA_BUSY_IIMEOUT_ERR if register value didn't match, 0 other wise
- */
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us, uint32_t timeout_us)
-{
-	int count;
-	uint32_t v;
-
-	if (!interval_us)
-		interval_us = QDMA_REG_POLL_DFLT_INTERVAL_US;
-	if (!timeout_us)
-		timeout_us = QDMA_REG_POLL_DFLT_TIMEOUT_US;
-
-	count = timeout_us / interval_us;
-
-	do {
-		v = qdma_reg_read(dev_hndl, reg);
-		if ((v & mask) == val)
-			return QDMA_SUCCESS;
-		qdma_udelay(interval_us);
-	} while (--count);
-
-	v = qdma_reg_read(dev_hndl, reg);
-	if ((v & mask) == val)
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: Reg read=%u Expected=%u, err:%d\n",
-				   __func__, v, val,
-				   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-	return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_rtl_version() - Function to get the rtl_version in
- * string format
- *
- * @rtl_version: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_rtl_version(enum qdma_rtl_version rtl_version)
-{
-	switch (rtl_version) {
-	case QDMA_RTL_PATCH:
-		return "RTL Patch";
-	case QDMA_RTL_BASE:
-		return "RTL Base";
-	default:
-		qdma_log_error("%s: invalid rtl_version(%d), err:%d\n",
-				__func__, rtl_version, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_ip_type() - Function to get the ip type in string format
- *
- * @dev_hndl:  device handle
- * @is_vf:	   Whether PF or VF
- * @ip_type:   IP Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_ip_type(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type)
-{
-	uint32_t ip_version;
-	int rv = QDMA_SUCCESS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-
-	switch (ip_type) {
-	case QDMA_VERSAL_HARD_IP:
-		return "Versal Hard IP";
-	case QDMA_VERSAL_SOFT_IP:
-		return "Versal Soft IP";
-	case QDMA_SOFT_IP:
-		return "QDMA Soft IP";
-	case EQDMA_SOFT_IP:
-		rv = eqdma_get_ip_version(dev_hndl, is_vf, &ip_version);
-		if (rv != QDMA_SUCCESS)
-			return NULL;
-
-		if (ip_version == EQDMA_IP_VERSION_4)
-			return "EQDMA4.0 Soft IP";
-		else if (ip_version == EQDMA_IP_VERSION_5)
-			return "EQDMA5.0 Soft IP";
-
-		qdma_log_error("%s: invalid eqdma ip version(%d), err:%d\n",
-				__func__, ip_version, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	default:
-		qdma_log_error("%s: invalid ip type(%d), err:%d\n",
-				__func__, ip_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_type() - Function to get the device type in
- * string format
- *
- * @device_type: Device Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_device_type(enum qdma_device_type device_type)
-{
-	switch (device_type) {
-	case QDMA_DEVICE_SOFT:
-		return "Soft IP";
-	case QDMA_DEVICE_VERSAL_CPM4:
-		return "Versal CPM4 Hard IP";
-	case QDMA_DEVICE_VERSAL_CPM5:
-		return "Versal Hard CPM5";
-	default:
-		qdma_log_error("%s: invalid device type(%d), err:%d\n",
-				__func__, device_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_vivado_release_id() - Function to get the vivado release id in
- * string format
- *
- * @vivado_release_id: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_vivado_release_id(
-				enum qdma_vivado_release_id vivado_release_id)
-{
-	switch (vivado_release_id) {
-	case QDMA_VIVADO_2018_3:
-		return "vivado 2018.3";
-	case QDMA_VIVADO_2019_1:
-		return "vivado 2019.1";
-	case QDMA_VIVADO_2019_2:
-		return "vivado 2019.2";
-	case QDMA_VIVADO_2020_1:
-		return "vivado 2020.1";
-	case QDMA_VIVADO_2020_2:
-		return "vivado 2020.2";
-	case QDMA_VIVADO_2021_1:
-		return "vivado 2021.1";
-	case QDMA_VIVADO_2022_1:
-		return "vivado 2022.1";
-	default:
-		qdma_log_error("%s: invalid vivado_release_id(%d), err:%d\n",
-				__func__,
-				vivado_release_id,
-				-QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	for (index = idx; index < (idx + cnt); index++) {
-		reg_addr = reg_offst + (index * sizeof(uint32_t));
-		qdma_reg_write(dev_hndl, reg_addr, values[index - idx]);
-	}
-}
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	reg_addr = reg_offst + (idx * sizeof(uint32_t));
-	for (index = 0; index < cnt; index++) {
-		values[index] = qdma_reg_read(dev_hndl, reg_addr +
-					      (index * sizeof(uint32_t)));
-	}
-}
-
-void qdma_fetch_version_details(void *dev_hndl, uint8_t is_vf,
-	uint32_t version_reg_val, struct qdma_hw_version_info *version_info)
-{
-	uint32_t rtl_version, vivado_release_id, ip_type, device_type;
-	const char *version_str;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return;
-	}
-
-	if (!is_vf) {
-		rtl_version = FIELD_GET(QDMA_GLBL2_RTL_VERSION_MASK,
-				version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type = FIELD_GET(QDMA_GLBL2_VERSAL_IP_MASK,
-				version_reg_val);
-	} else {
-		rtl_version =
-			FIELD_GET(QDMA_GLBL2_VF_RTL_VERSION_MASK,
-					version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VF_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_VF_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type =
-			FIELD_GET(QDMA_GLBL2_VF_VERSAL_IP_MASK,
-					version_reg_val);
-	}
-
-	switch (rtl_version) {
-	case 0:
-		version_info->rtl_version = QDMA_RTL_BASE;
-		break;
-	case 1:
-		version_info->rtl_version = QDMA_RTL_PATCH;
-		break;
-	default:
-		version_info->rtl_version = QDMA_RTL_NONE;
-		break;
-	}
-
-	version_str = qdma_get_rtl_version(version_info->rtl_version);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_rtl_version_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-	switch (device_type) {
-	case 0:
-		version_info->device_type = QDMA_DEVICE_SOFT;
-		break;
-	case 1:
-		version_info->device_type = QDMA_DEVICE_VERSAL_CPM4;
-		break;
-	case 2:
-		version_info->device_type = QDMA_DEVICE_VERSAL_CPM5;
-		break;
-	default:
-		version_info->device_type = QDMA_DEVICE_NONE;
-		break;
-	}
-
-	version_str = qdma_get_device_type(version_info->device_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_device_type_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-
-	if (version_info->device_type == QDMA_DEVICE_SOFT) {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_SOFT_IP;
-			break;
-		case 1:
-		case 2:
-			/* For QDMA4.0 and QDMA5.0, HW design and
-			 * register map is same except some
-			 * performance optimizations
-			 */
-			version_info->ip_type = EQDMA_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	} else {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_VERSAL_HARD_IP;
-			break;
-		case 1:
-			version_info->ip_type = QDMA_VERSAL_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	}
-
-	version_str = qdma_get_ip_type(dev_hndl, is_vf, version_info->ip_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_ip_type_str,
-			version_str,
-			QDMA_HW_VERSION_STRING_LEN);
-
-	if (version_info->ip_type == QDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2018_3;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2019_1;
-			break;
-		case 2:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else if (version_info->ip_type == EQDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2020_1;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2020_2;
-			break;
-		case 2:
-			version_info->vivado_release = QDMA_VIVADO_2022_1;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else if (version_info->device_type == QDMA_DEVICE_VERSAL_CPM5) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2021_1;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2022_1;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else { /* Versal case */
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	}
-
-	version_str = qdma_get_vivado_release_id(
-			version_info->vivado_release);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_vivado_release_id_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-}
-
-
-/*
- * dump_reg() - Helper function to dump register value into string
- *
- * return len - length of the string copied into buffer
- */
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval)
-{
-	/* length of the line should be minimum 80 chars.
-	 * If below print pattern is changed, check for
-	 * new buffer size requirement
-	 */
-	if (buf_sz < DEBGFS_LINE_SZ) {
-		qdma_log_error("%s: buf_sz(%d) < expected(%d): err: %d\n",
-						__func__,
-						buf_sz, DEBGFS_LINE_SZ,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return QDMA_SNPRINTF_S(buf, buf_sz, DEBGFS_LINE_SZ,
-			"[%#7x] %-47s %#-10x %u\n",
-			raddr, rname, rval, rval);
-
-}
-
-void qdma_memset(void *to, uint8_t val, uint32_t size)
-{
-	uint32_t i;
-	uint8_t *_to = (uint8_t *)to;
-
-	for (i = 0; i < size; i++)
-		_to[i] = val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_read() - function to read the CMPT CIDX register
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	pointer to array to hold the values read
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_queue_cmpt_cidx_read(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-			QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	reg_addr += qid * QDMA_CMPT_CIDX_STEP;
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	reg_info->wrb_cidx =
-		FIELD_GET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK, reg_val);
-	reg_info->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-			reg_val));
-	reg_info->wrb_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-			reg_val));
-	reg_info->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_val));
-	reg_info->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK, reg_val));
-	reg_info->trig_mode =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK, reg_val));
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_initiate_flr() - function to initiate Function Level Reset
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_initiate_flr(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, reg_addr, 1);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_flr_done() - function to check whether the FLR is done or not
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @done:	if FLR process completed ,  done is 1 else 0.
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_flr_done(void *dev_hndl, uint8_t is_vf, uint8_t *done)
-{
-	int rv;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!done) {
-		qdma_log_error("%s: done is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* wait for it to become zero */
-	rv = hw_monitor_reg(dev_hndl, reg_addr, QDMA_FLR_STATUS_MASK,
-			0, 5 * QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US);
-	if (rv < 0)
-		*done = 0;
-	else
-		*done = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_config_bar() - function for the config bar verification
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_config_bar(void *dev_hndl, uint8_t is_vf, enum qdma_ip *ip)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_CONFIG_BLOCK_ID;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	/** TODO: Version register for VFs is 0x5014 for EQDMA and
-	 *  0x1014 for QDMA/Versal. First time reading 0x5014 for
-	 *  all the device and based on the upper 16 bits value
-	 *  (i.e. 0x1fd3), finding out whether its EQDMA or QDMA/Versal
-	 *  for EQDMA VFs.
-	 *  Need to modify this logic once the hardware team
-	 *  comes up with a common register for VFs
-	 */
-	if (is_vf) {
-		if (FIELD_GET(QDMA_GLBL2_VF_UNIQUE_ID_MASK, reg_val)
-				!= QDMA_MAGIC_NUMBER) {
-			/* Its either QDMA or Versal */
-
-#ifdef EQDMA_CPM5_VF_GT_256Q_SUPPORTED
-			*ip = EQDMA_CPM5_IP;
-			reg_addr = EQDMA_CPM5_OFFSET_VF_VERSION;
-#else
-			*ip = EQDMA_IP;
-			reg_addr = EQDMA_OFFSET_VF_VERSION;
-#endif
-			reg_val = qdma_reg_read(dev_hndl, reg_addr);
-		} else {
-			*ip = QDMA_OR_VERSAL_IP;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	if (FIELD_GET(QDMA_CONFIG_BLOCK_ID_MASK, reg_val)
-			!= QDMA_MAGIC_NUMBER) {
-		qdma_log_error("%s: Invalid config bar, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_INV_CONFIG_BAR);
-		return -QDMA_ERR_HWACC_INV_CONFIG_BAR;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = qdma_soft_reg_dump_buf_len();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			len = qdma_cpm4_reg_dump_buf_len();
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			len = eqdma_cpm5_reg_dump_buf_len();
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_reg_info_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen, int *num_regs)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buflen) {
-		qdma_log_error("%s: buflen is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!num_regs) {
-		qdma_log_error("%s: num_regs is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = 0;
-		*num_regs = 0;
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4) {
-			len = qdma_cpm4_reg_dump_buf_len();
-			*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		} else if (device_type == QDMA_DEVICE_VERSAL_CPM5) {
-			len = eqdma_cpm5_reg_dump_buf_len();
-			*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		} else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-				__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_context_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int rv = 0;
-
-	*buflen = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_context_buf_len(st, q_type, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_context_buf_len(st, q_type, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_context_buf_len(st, q_type, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_context_buf_len(st, q_type, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-int qdma_acc_get_num_config_regs(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t *num_regs)
-{
-	int rv = 0;
-
-	*num_regs = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_get_config_num_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_get_config_num_regs();
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_get_config_num_regs();
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_get_config_num_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*num_regs = rv;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_get_config_regs() - Function to get qdma config registers.
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_data:   pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type, enum qdma_device_type device_type,
-		uint32_t *reg_data)
-{
-	struct xreg_info *reg_info;
-	uint32_t count = 0;
-	uint32_t num_regs;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Get Config regs not valid for VF, err:%d\n",
-			__func__,
-			-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (reg_data == NULL) {
-		qdma_log_error("%s: reg_data is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		num_regs = qdma_get_config_num_regs();
-		reg_info = qdma_get_config_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4) {
-			num_regs = qdma_cpm4_get_config_num_regs();
-			reg_info = qdma_cpm4_get_config_regs();
-		} else if (device_type == QDMA_DEVICE_VERSAL_CPM5) {
-			num_regs = eqdma_cpm5_get_config_num_regs();
-			reg_info = eqdma_cpm5_get_config_regs();
-		} else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-				__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-		break;
-	case EQDMA_SOFT_IP:
-		num_regs = eqdma_get_config_num_regs();
-		reg_info = eqdma_get_config_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (count = 0; count < num_regs - 1; count++) {
-		reg_data[count] = qdma_reg_read(dev_hndl,
-				reg_info[count].addr);
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type, enum qdma_device_type device_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv =  qdma_soft_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_config_regs(dev_hndl, is_vf,
-					buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_config_regs(dev_hndl, is_vf,
-					buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to dump fileds in
- * a specified register.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf || !buflen) {
-		qdma_log_error("%s: Invalid input buffer, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		QDMA_SNPRINTF_S(buf, buflen, DEBGFS_LINE_SZ,
-		"QDMA reg field info not supported for QDMA_SOFT_IP\n");
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @st:		Queue Mode (ST or MM)
- * @q_type:	Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP type
- * @device_type:QDMA DEVICE Type
- * @hw_qid:     queue id
- * @st:		Queue Mode(ST or MM)
- * @q_type:	Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				enum qdma_device_type device_type,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_read_dump_queue_context(dev_hndl, func_id,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_read_dump_queue_context(dev_hndl,
-				func_id, qid_hw, st, q_type, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_read_dump_queue_context(dev_hndl,
-				func_id, qid_hw, st, q_type, buf, buflen);
-		else {
-			qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-			return -QDMA_ERR_INV_PARAM;
-		}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_read_dump_queue_context(dev_hndl, func_id,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA ip type
- * @num_regs :		Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		if (device_type == QDMA_DEVICE_VERSAL_CPM4)
-			rv = qdma_cpm4_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		else if (device_type == QDMA_DEVICE_VERSAL_CPM5)
-			rv = eqdma_cpm5_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-	else {
-		qdma_log_error("%s: Invalid device type, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_get_function_number() - Function to get the function number
- *
- * @dev_hndl:	device handle
- * @func_id:	pointer to hold the function id
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_get_function_number(void *dev_hndl, uint16_t *func_id)
-{
-	if (!dev_hndl || !func_id) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*func_id = (uint8_t)qdma_reg_read(dev_hndl,
-			QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_setup() - Function to set up the qdma error
- * interrupt
- *
- * @dev_hndl:	device handle
- * @func_id:	Function id
- * @err_intr_index:	Interrupt vector
- * @rearm:	rearm or not
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_setup(void *dev_hndl, uint16_t func_id,
-		uint8_t err_intr_index)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val =
-		FIELD_SET(QDMA_GLBL_ERR_FUNC_MASK, func_id) |
-		FIELD_SET(QDMA_GLBL_ERR_VEC_MASK, err_intr_index);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_rearm() - Function to re-arm the error interrupt
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_rearm(void *dev_hndl)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT);
-	reg_val |= FIELD_SET(QDMA_GLBL_ERR_ARM_MASK, 1);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code)
-{
-	return qdma_get_err_code(acc_err_code);
-}
-
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access)
-{
-	int rv = QDMA_SUCCESS;
-	enum qdma_ip ip = EQDMA_IP;
-
-	struct qdma_hw_version_info version_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!hw_access) {
-		qdma_log_error("%s: hw_access is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_is_config_bar(dev_hndl, is_vf, &ip);
-	if (rv != QDMA_SUCCESS) {
-		qdma_log_error("%s: config bar passed is INVALID, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	qdma_memset(hw_access, 0, sizeof(struct qdma_hw_access));
-
-	if (ip == EQDMA_IP)
-		hw_access->qdma_get_version = &eqdma_get_version;
-	else if (ip == EQDMA_CPM5_IP)
-		hw_access->qdma_get_version = &eqdma_cpm5_get_version;
-	else
-		hw_access->qdma_get_version = &qdma_get_version;
-
-	hw_access->qdma_init_ctxt_memory = &qdma_init_ctxt_memory;
-	hw_access->qdma_fmap_conf = &qdma_fmap_conf;
-	hw_access->qdma_sw_ctx_conf = &qdma_sw_ctx_conf;
-	hw_access->qdma_pfetch_ctx_conf = &qdma_pfetch_ctx_conf;
-	hw_access->qdma_cmpt_ctx_conf = &qdma_cmpt_ctx_conf;
-	hw_access->qdma_hw_ctx_conf = &qdma_hw_ctx_conf;
-	hw_access->qdma_credit_ctx_conf = &qdma_credit_ctx_conf;
-	hw_access->qdma_indirect_intr_ctx_conf = &qdma_indirect_intr_ctx_conf;
-	hw_access->qdma_set_default_global_csr = &qdma_set_default_global_csr;
-	hw_access->qdma_global_csr_conf = &qdma_global_csr_conf;
-	hw_access->qdma_global_writeback_interval_conf =
-					&qdma_global_writeback_interval_conf;
-	hw_access->qdma_queue_pidx_update = &qdma_queue_pidx_update;
-	hw_access->qdma_queue_cmpt_cidx_read = &qdma_queue_cmpt_cidx_read;
-	hw_access->qdma_queue_cmpt_cidx_update = &qdma_queue_cmpt_cidx_update;
-	hw_access->qdma_queue_intr_cidx_update = &qdma_queue_intr_cidx_update;
-	hw_access->qdma_mm_channel_conf = &qdma_mm_channel_conf;
-	hw_access->qdma_get_user_bar = &qdma_get_user_bar;
-	hw_access->qdma_get_function_number = &qdma_get_function_number;
-	hw_access->qdma_get_device_attributes = &qdma_get_device_attributes;
-	hw_access->qdma_hw_error_intr_setup = &qdma_hw_error_intr_setup;
-	hw_access->qdma_hw_error_intr_rearm = &qdma_hw_error_intr_rearm;
-	hw_access->qdma_hw_error_enable = &qdma_hw_error_enable;
-	hw_access->qdma_hw_get_error_name = &qdma_hw_get_error_name;
-	hw_access->qdma_hw_error_process = &qdma_hw_error_process;
-	hw_access->qdma_dump_config_regs = &qdma_soft_dump_config_regs;
-	hw_access->qdma_dump_queue_context = &qdma_soft_dump_queue_context;
-	hw_access->qdma_read_dump_queue_context =
-					&qdma_soft_read_dump_queue_context;
-	hw_access->qdma_dump_intr_context = &qdma_dump_intr_context;
-	hw_access->qdma_is_legacy_intr_pend = &qdma_is_legacy_intr_pend;
-	hw_access->qdma_clear_pend_legacy_intr = &qdma_clear_pend_legacy_intr;
-	hw_access->qdma_legacy_intr_conf = &qdma_legacy_intr_conf;
-	hw_access->qdma_initiate_flr = &qdma_initiate_flr;
-	hw_access->qdma_is_flr_done = &qdma_is_flr_done;
-	hw_access->qdma_get_error_code = &qdma_get_error_code;
-	hw_access->qdma_read_reg_list = &qdma_read_reg_list;
-	hw_access->qdma_dump_config_reg_list =
-			&qdma_soft_dump_config_reg_list;
-	hw_access->qdma_dump_reg_info = &qdma_dump_reg_info;
-	hw_access->mbox_base_pf = QDMA_OFFSET_MBOX_BASE_PF;
-	hw_access->mbox_base_vf = QDMA_OFFSET_MBOX_BASE_VF;
-	hw_access->qdma_max_errors = QDMA_ERRS_ALL;
-
-	rv = hw_access->qdma_get_version(dev_hndl, is_vf, &version_info);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	qdma_log_info("Device Type: %s\n",
-			qdma_get_device_type(version_info.device_type));
-
-	qdma_log_info("IP Type: %s\n",
-		qdma_get_ip_type(dev_hndl, is_vf, version_info.ip_type));
-
-	qdma_log_info("Vivado Release: %s\n",
-		qdma_get_vivado_release_id(version_info.vivado_release));
-
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP &&
-			version_info.device_type == QDMA_DEVICE_VERSAL_CPM4) {
-		hw_access->qdma_init_ctxt_memory =
-				&qdma_cpm4_init_ctxt_memory;
-		hw_access->qdma_qid2vec_conf = &qdma_cpm4_qid2vec_conf;
-		hw_access->qdma_fmap_conf = &qdma_cpm4_fmap_conf;
-		hw_access->qdma_sw_ctx_conf = &qdma_cpm4_sw_ctx_conf;
-		hw_access->qdma_pfetch_ctx_conf =
-				&qdma_cpm4_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &qdma_cpm4_cmpt_ctx_conf;
-		hw_access->qdma_hw_ctx_conf = &qdma_cpm4_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf =
-				&qdma_cpm4_credit_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&qdma_cpm4_indirect_intr_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-					&qdma_cpm4_set_default_global_csr;
-		hw_access->qdma_queue_pidx_update =
-				&qdma_cpm4_queue_pidx_update;
-		hw_access->qdma_queue_cmpt_cidx_update =
-				&qdma_cpm4_queue_cmpt_cidx_update;
-		hw_access->qdma_queue_intr_cidx_update =
-				&qdma_cpm4_queue_intr_cidx_update;
-		hw_access->qdma_get_user_bar = &qdma_cmp_get_user_bar;
-		hw_access->qdma_get_device_attributes =
-				&qdma_cpm4_get_device_attributes;
-		hw_access->qdma_dump_config_regs =
-				&qdma_cpm4_dump_config_regs;
-		hw_access->qdma_dump_intr_context =
-				&qdma_cpm4_dump_intr_context;
-		hw_access->qdma_hw_error_enable =
-				&qdma_cpm4_hw_error_enable;
-		hw_access->qdma_hw_error_process =
-				&qdma_cpm4_hw_error_process;
-		hw_access->qdma_hw_get_error_name =
-				&qdma_cpm4_hw_get_error_name;
-		hw_access->qdma_legacy_intr_conf = NULL;
-		hw_access->qdma_read_reg_list = &qdma_cpm4_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&qdma_cpm4_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&qdma_cpm4_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&qdma_cpm4_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &qdma_cpm4_dump_reg_info;
-		hw_access->qdma_max_errors = QDMA_CPM4_ERRS_ALL;
-	}
-
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP &&
-			version_info.device_type == QDMA_DEVICE_VERSAL_CPM5) {
-		hw_access->qdma_init_ctxt_memory =
-			&eqdma_cpm5_init_ctxt_memory;
-#ifdef TANDEM_BOOT_SUPPORTED
-		hw_access->qdma_init_st_ctxt =
-			&eqdma_cpm5_init_st_ctxt;
-#endif
-		hw_access->qdma_sw_ctx_conf = &eqdma_cpm5_sw_ctx_conf;
-		hw_access->qdma_fmap_conf = &eqdma_cpm5_fmap_conf;
-		hw_access->qdma_pfetch_ctx_conf =
-			&eqdma_cpm5_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &eqdma_cpm5_cmpt_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&eqdma_cpm5_indirect_intr_ctx_conf;
-		hw_access->qdma_dump_config_regs =
-			&eqdma_cpm5_dump_config_regs;
-		hw_access->qdma_dump_intr_context =
-			&eqdma_cpm5_dump_intr_context;
-		hw_access->qdma_hw_error_enable =
-			&eqdma_cpm5_hw_error_enable;
-		hw_access->qdma_hw_error_process =
-			&eqdma_cpm5_hw_error_process;
-		hw_access->qdma_hw_get_error_name =
-			&eqdma_cpm5_hw_get_error_name;
-		hw_access->qdma_hw_ctx_conf = &eqdma_cpm5_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf =
-			&eqdma_cpm5_credit_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-				&eqdma_cpm5_set_default_global_csr;
-		hw_access->qdma_get_device_attributes =
-				&eqdma_cpm5_get_device_attributes;
-		hw_access->qdma_get_user_bar = &eqdma_cpm5_get_user_bar;
-		hw_access->qdma_read_reg_list = &eqdma_cpm5_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&eqdma_cpm5_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&eqdma_cpm5_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&eqdma_cpm5_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &eqdma_cpm5_dump_reg_info;
-		/* All CSR and Queue space register belongs to Window 0.
-		 * Mailbox and MSIX register belongs to Window 1
-		 * Therefore, Mailbox offsets are different for EQDMA
-		 * Mailbox offset for PF : 128K + original address
-		 * Mailbox offset for VF : 16K + original address
-		 */
-		hw_access->mbox_base_pf = EQDMA_CPM5_OFFSET_MBOX_BASE_PF;
-		hw_access->mbox_base_vf = EQDMA_CPM5_OFFSET_MBOX_BASE_VF;
-		hw_access->qdma_max_errors = EQDMA_CPM5_ERRS_ALL;
-
-}
-
-	if (version_info.ip_type == EQDMA_SOFT_IP) {
-		hw_access->qdma_init_ctxt_memory = &eqdma_init_ctxt_memory;
-		hw_access->qdma_sw_ctx_conf = &eqdma_sw_ctx_conf;
-		hw_access->qdma_fmap_conf = &eqdma_fmap_conf;
-		hw_access->qdma_pfetch_ctx_conf = &eqdma_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &eqdma_cmpt_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&eqdma_indirect_intr_ctx_conf;
-		hw_access->qdma_dump_config_regs = &eqdma_dump_config_regs;
-		hw_access->qdma_dump_intr_context = &eqdma_dump_intr_context;
-		hw_access->qdma_hw_error_enable = &eqdma_hw_error_enable;
-		hw_access->qdma_hw_error_process = &eqdma_hw_error_process;
-		hw_access->qdma_hw_get_error_name = &eqdma_hw_get_error_name;
-		hw_access->qdma_hw_ctx_conf = &eqdma_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf = &eqdma_credit_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-				&eqdma_set_default_global_csr;
-		hw_access->qdma_get_device_attributes =
-				&eqdma_get_device_attributes;
-		hw_access->qdma_get_user_bar = &eqdma_get_user_bar;
-		hw_access->qdma_read_reg_list = &eqdma_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&eqdma_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&eqdma_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&eqdma_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &eqdma_dump_reg_info;
-		/* All CSR and Queue space register belongs to Window 0.
-		 * Mailbox and MSIX register belongs to Window 1
-		 * Therefore, Mailbox offsets are different for EQDMA
-		 * Mailbox offset for PF : 128K + original address
-		 * Mailbox offset for VF : 16K + original address
-		 */
-		hw_access->mbox_base_pf = EQDMA_OFFSET_MBOX_BASE_PF;
-		hw_access->mbox_base_vf = EQDMA_OFFSET_MBOX_BASE_VF;
-		hw_access->qdma_max_errors = EQDMA_ERRS_ALL;
-	}
-
-	return QDMA_SUCCESS;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h
deleted file mode 100755
index f88c015..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_common.h
+++ /dev/null
@@ -1,926 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_ACCESS_COMMON_H_
-#define __QDMA_ACCESS_COMMON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_access_export.h"
-#include "qdma_access_errors.h"
-
-/* QDMA HW version string array length */
-#define QDMA_HW_VERSION_STRING_LEN			32
-
-#define ENABLE_INIT_CTXT_MEMORY			1
-
-#ifdef GCC_COMPILER
-static inline uint32_t get_trailing_zeros(uint64_t x)
-{
-	uint32_t rv =
-		__builtin_ffsll(x) - 1;
-	return rv;
-}
-#else
-static inline uint32_t get_trailing_zeros(uint64_t value)
-{
-	uint32_t pos = 0;
-
-	if ((value & 0xffffffff) == 0) {
-		pos += 32;
-		value >>= 32;
-	}
-	if ((value & 0xffff) == 0) {
-		pos += 16;
-		value >>= 16;
-	}
-	if ((value & 0xff) == 0) {
-		pos += 8;
-		value >>= 8;
-	}
-	if ((value & 0xf) == 0) {
-		pos += 4;
-		value >>= 4;
-	}
-	if ((value & 0x3) == 0) {
-		pos += 2;
-		value >>= 2;
-	}
-	if ((value & 0x1) == 0)
-		pos += 1;
-
-	return pos;
-}
-#endif
-
-#define FIELD_SHIFT(mask)       get_trailing_zeros(mask)
-#define FIELD_SET(mask, val)    ((val << FIELD_SHIFT(mask)) & mask)
-#define FIELD_GET(mask, reg)    ((reg & mask) >> FIELD_SHIFT(mask))
-
-
-/* CSR Default values */
-#define DEFAULT_MAX_DSC_FETCH               6
-#define DEFAULT_WRB_INT                     QDMA_WRB_INTERVAL_128
-
-/* Default values for 0xB08 */
-#define DEFAULT_PFCH_NUM_ENTRIES_PER_Q      8
-#define DEFAULT_PFCH_MAX_Q_CNT              16
-#define DEFAULT_C2H_INTR_TIMER_TICK         25
-#define DEFAULT_CMPT_COAL_TIMER_TICK        25
-#define DEFAULT_CMPT_COAL_MAX_BUF_SZ        32
-
-#ifdef THROUGHPUT_MEASUREMENT
-/* Update WRB coalesce timer count for throughput measurement */
-#define DEFAULT_CMPT_COAL_TIMER_CNT         10
-#else
-/* Update WRB coalesce timer count for low latency measurement */
-#define DEFAULT_CMPT_COAL_TIMER_CNT         5
-#endif
-
-#define QDMA_BAR_NUM                        6
-
-/** Maximum data vectors to be used for each function
- * TODO: Please note that for 2018.2 only one vector would be used
- * per pf and only one ring would be created for this vector
- * It is also assumed that all functions have the same number of data vectors
- * and currently different number of vectors per PF is not supported
- */
-#define QDMA_NUM_DATA_VEC_FOR_INTR_CXT  1
-
-enum ind_ctxt_cmd_op {
-	QDMA_CTXT_CMD_CLR,
-	QDMA_CTXT_CMD_WR,
-	QDMA_CTXT_CMD_RD,
-	QDMA_CTXT_CMD_INV
-};
-
-enum ind_ctxt_cmd_sel {
-	QDMA_CTXT_SEL_SW_C2H,
-	QDMA_CTXT_SEL_SW_H2C,
-	QDMA_CTXT_SEL_HW_C2H,
-	QDMA_CTXT_SEL_HW_H2C,
-	QDMA_CTXT_SEL_CR_C2H,
-	QDMA_CTXT_SEL_CR_H2C,
-	QDMA_CTXT_SEL_CMPT,
-	QDMA_CTXT_SEL_PFTCH,
-	QDMA_CTXT_SEL_INT_COAL,
-	QDMA_CTXT_SEL_PASID_RAM_LOW,
-	QDMA_CTXT_SEL_PASID_RAM_HIGH,
-	QDMA_CTXT_SEL_TIMER,
-	QDMA_CTXT_SEL_FMAP,
-};
-
-/* polling a register */
-#define	QDMA_REG_POLL_DFLT_INTERVAL_US	10		    /* 10us per poll */
-#define	QDMA_REG_POLL_DFLT_TIMEOUT_US	(500*1000)	/* 500ms */
-
-/** Constants */
-#define QDMA_NUM_RING_SIZES                                 16
-#define QDMA_NUM_C2H_TIMERS                                 16
-#define QDMA_NUM_C2H_BUFFER_SIZES                           16
-#define QDMA_NUM_C2H_COUNTERS                               16
-#define QDMA_MM_CONTROL_RUN                                 0x1
-#define QDMA_MM_CONTROL_STEP                                0x100
-#define QDMA_MAGIC_NUMBER                                   0x1fd3
-#define QDMA_PIDX_STEP                                      0x10
-#define QDMA_CMPT_CIDX_STEP                                 0x10
-#define QDMA_INT_CIDX_STEP                                  0x10
-
-
-/** QDMA_IND_REG_SEL_PFTCH */
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK                  GENMASK(15, 3)
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK                  GENMASK(2, 0)
-
-/** QDMA_IND_REG_SEL_CMPT */
-#define QDMA_COMPL_CTXT_BADDR_GET_H_MASK                    GENMASK_ULL(63, 38)
-#define QDMA_COMPL_CTXT_BADDR_GET_L_MASK                    GENMASK_ULL(37, 12)
-#define QDMA_COMPL_CTXT_PIDX_GET_H_MASK                     GENMASK(15, 4)
-#define QDMA_COMPL_CTXT_PIDX_GET_L_MASK                     GENMASK(3, 0)
-
-#define QDMA_INTR_CTXT_BADDR_GET_H_MASK                     GENMASK_ULL(63, 61)
-#define QDMA_INTR_CTXT_BADDR_GET_M_MASK                     GENMASK_ULL(60, 29)
-#define QDMA_INTR_CTXT_BADDR_GET_L_MASK                     GENMASK_ULL(28, 12)
-
-#define     QDMA_GLBL2_MM_CMPT_EN_MASK                      BIT(2)
-#define     QDMA_GLBL2_FLR_PRESENT_MASK                     BIT(1)
-#define     QDMA_GLBL2_MAILBOX_EN_MASK                      BIT(0)
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-
-/* ------------------------ indirect register context fields -----------*/
-union qdma_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:12;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-#define QDMA_IND_CTXT_DATA_NUM_REGS                         8
-
-/**
- * struct qdma_indirect_ctxt_regs - Inirect Context programming registers
- */
-struct qdma_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_IND_CTXT_DATA_NUM_REGS];
-	union qdma_ind_ctxt_cmd cmd;
-};
-
-/**
- * struct qdma_fmap_cfg - fmap config data structure
- */
-struct qdma_fmap_cfg {
-
-	/** @qbase - queue base for the function */
-	uint16_t qbase;
-	/** @qmax - maximum queues in the function */
-	uint16_t qmax;
-};
-
-/**
- * struct qdma_qid2vec - qid to vector mapping data structure
- */
-struct qdma_qid2vec {
-
-	/** @c2h_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t c2h_vector;
-	/** @c2h_en_coal - C2H Interrupt aggregation enable */
-	uint8_t c2h_en_coal;
-	/** @h2c_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t h2c_vector;
-	/** @h2c_en_coal - H2C Interrupt aggregation enable */
-	uint8_t h2c_en_coal;
-};
-
-/**
- * struct qdma_descq_sw_ctxt - descq SW context config data structure
- */
-struct qdma_descq_sw_ctxt {
-
-	/** @ring_bs_addr - ring base address */
-	uint64_t ring_bs_addr;
-	/** @vec - vector number */
-	uint16_t vec;
-	/** @pidx - initial producer index */
-	uint16_t pidx;
-	/** @irq_arm - Interrupt Arm */
-	uint8_t irq_arm;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @qen - Indicates that the queue is enabled */
-	uint8_t qen;
-	/** @frcd_en -Enable fetch credit */
-	uint8_t frcd_en;
-	/** @wbi_chk -Writeback/Interrupt after pending check */
-	uint8_t wbi_chk;
-	/** @wbi_intvl_en -Write back/Interrupt interval */
-	uint8_t wbi_intvl_en;
-	/** @at - Address tanslation */
-	uint8_t at;
-	/** @fetch_max - Maximum number of descriptor fetches outstanding */
-	uint8_t fetch_max;
-	/** @rngsz_idx - Descriptor ring size index */
-	uint8_t rngsz_idx;
-	/** @desc_sz -Descriptor fetch size */
-	uint8_t desc_sz;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @mm_chn - MM channel */
-	uint8_t mm_chn;
-	/** @wbk_en -Writeback enable */
-	uint8_t wbk_en;
-	/** @irq_en -Interrupt enable */
-	uint8_t irq_en;
-	/** @port_id -Port_id */
-	uint8_t port_id;
-	/** @irq_no_last - No interrupt was sent */
-	uint8_t irq_no_last;
-	/** @err - Error status */
-	uint8_t err;
-	/** @err_wb_sent -writeback/interrupt was sent for an error */
-	uint8_t err_wb_sent;
-	/** @irq_req - Interrupt due to error waiting to be sent */
-	uint8_t irq_req;
-	/** @mrkr_dis - Marker disable */
-	uint8_t mrkr_dis;
-	/** @is_mm - MM mode */
-	uint8_t is_mm;
-	/** @intr_aggr - interrupt aggregation enable */
-	uint8_t intr_aggr;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @virtio_en - Queue is in Virtio Mode */
-	uint8_t virtio_en;
-	/** @pack_byp_out - descs on desc output interface can be packed */
-	uint8_t pack_byp_out;
-	/** @irq_byp - IRQ Bypass mode */
-	uint8_t irq_byp;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @virtio_dsc_base - Virtio Desc Base Address */
-	uint64_t virtio_dsc_base;
-};
-
-/**
- * struct qdma_descq_hw_ctxt - descq hw context config data structure
- */
-struct qdma_descq_hw_ctxt {
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @crd_use - credits consumed */
-	uint16_t crd_use;
-	/** @dsc_pend - descriptors pending */
-	uint8_t dsc_pend;
-	/** @idl_stp_b -Queue invalid and no descriptors pending */
-	uint8_t idl_stp_b;
-	/** @evt_pnd - Event pending */
-	uint8_t evt_pnd;
-	/** @fetch_pnd -Descriptor fetch pending */
-	uint8_t fetch_pnd;
-};
-
-/**
- * struct qdma_descq_credit_ctxt - descq credit context config data structure
- */
-struct qdma_descq_credit_ctxt {
-
-	/** @credit -Fetch credits received. */
-	uint32_t credit;
-};
-
-/**
- * struct qdma_descq_prefetch_ctxt - descq pfetch context config data structure
- */
-struct qdma_descq_prefetch_ctxt {
-	/** @sw_crdt -Software credit */
-	uint16_t sw_crdt;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @bufsz_idx - c2h buffer size index */
-	uint8_t bufsz_idx;
-	/** @port_id - port ID */
-	uint8_t port_id;
-	/** @var_desc - Variable Descriptor */
-	uint8_t var_desc;
-	/** @num_pftch - Number of descs prefetched */
-	uint16_t num_pftch;
-	/** @err -Error detected on this queue */
-	uint8_t err;
-	/** @pfch_en - Enable prefetch */
-	uint8_t pfch_en;
-	/** @pfch - Queue is in prefetch */
-	uint8_t pfch;
-	/** @valid - context is valid */
-	uint8_t valid;
-};
-
-/**
- * struct qdma_descq_cmpt_ctxt - descq completion context config data structure
- */
-struct qdma_descq_cmpt_ctxt {
-	/** @bs_addr - completion ring base address */
-	uint64_t bs_addr;
-	/** @vec - Interrupt Vector */
-	uint16_t vec;
-	/** @pidx_l - producer index low */
-	uint16_t pidx;
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @en_stat_desc - Enable Completion Status writes */
-	uint8_t en_stat_desc;
-	/** @en_int - Enable Completion interrupts */
-	uint8_t en_int;
-	/** @trig_mode - Interrupt and Completion Status Write Trigger Mode */
-	uint8_t trig_mode;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @counter_idx - Index to counter register */
-	uint8_t counter_idx;
-	/** @timer_idx - Index to timer register */
-	uint8_t timer_idx;
-	/** @in_st - Interrupt State */
-	uint8_t in_st;
-	/** @color - initial color bit to be used on Completion */
-	uint8_t color;
-	/** @ringsz_idx - Completion ring size index to ring size registers */
-	uint8_t ringsz_idx;
-	/** @desc_sz  -descriptor size */
-	uint8_t desc_sz;
-	/** @valid  - context valid */
-	uint8_t valid;
-	/** @err - error status */
-	uint8_t err;
-	/**
-	 * @user_trig_pend - user logic initiated interrupt is
-	 * pending to be generate
-	 */
-	uint8_t user_trig_pend;
-	/** @timer_running - timer is running on this queue */
-	uint8_t timer_running;
-	/** @full_upd - Full update */
-	uint8_t full_upd;
-	/** @ovf_chk_dis - Completion Ring Overflow Check Disable */
-	uint8_t ovf_chk_dis;
-	/** @at -Address Translation */
-	uint8_t at;
-	/** @int_aggr -Interrupt Aggregation */
-	uint8_t int_aggr;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @vio - queue is in VirtIO mode */
-	uint8_t vio;
-	/** @dir_c2h - DMA direction is C2H */
-	uint8_t dir_c2h;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @vio_eop - Virtio End-of-packet */
-	uint8_t vio_eop;
-	/** @sh_cmpt - Shared Completion Queue */
-	uint8_t sh_cmpt;
-};
-
-/**
- * struct qdma_indirect_intr_ctxt - indirect interrupt context config data
- * structure
- */
-struct qdma_indirect_intr_ctxt {
-	/** @baddr_4k -Base address of Interrupt Aggregation Ring */
-	uint64_t baddr_4k;
-	/** @vec - Interrupt vector index in msix table */
-	uint16_t vec;
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @valid - context valid */
-	uint8_t valid;
-	/** @int_st -Interrupt State */
-	uint8_t int_st;
-	/** @color - Color bit */
-	uint8_t color;
-	/** @page_size - Interrupt Aggregation Ring size */
-	uint8_t page_size;
-	/** @at - Address translation */
-	uint8_t at;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @func_id - Function ID */
-	uint16_t func_id;
-};
-
-struct qdma_hw_version_info {
-	/** @rtl_version - RTL Version */
-	enum qdma_rtl_version rtl_version;
-	/** @vivado_release - Vivado Release id */
-	enum qdma_vivado_release_id vivado_release;
-	/** @versal_ip_state - Versal IP state */
-	enum qdma_ip_type ip_type;
-	/** @device_type - Device Type */
-	enum qdma_device_type device_type;
-	/** @qdma_rtl_version_str - RTL Version string*/
-	char qdma_rtl_version_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_vivado_release_id_str - Vivado Release id string*/
-	char qdma_vivado_release_id_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_device_type_str - Qdma device type string*/
-	char qdma_device_type_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_versal_ip_state_str - Versal IP state string*/
-	char qdma_ip_type_str[QDMA_HW_VERSION_STRING_LEN];
-};
-
-#define CTXT_ENTRY_NAME_SZ        64
-struct qctx_entry {
-	char		name[CTXT_ENTRY_NAME_SZ];
-	uint32_t	value;
-};
-
-/**
- * @struct - qdma_descq_context
- * @brief	queue context information
- */
-struct qdma_descq_context {
-	struct qdma_qid2vec qid2vec;
-	struct qdma_fmap_cfg fmap;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_credit_ctxt cr_ctxt;
-	struct qdma_descq_prefetch_ctxt pfetch_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-};
-
-/**
- * struct qdma_q_pidx_reg_info - Software PIDX register fields
- */
-struct qdma_q_pidx_reg_info {
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @irq_en - Interrupt enable */
-	uint8_t irq_en;
-};
-
-/**
- * struct qdma_q_intr_cidx_reg_info - Interrupt Ring CIDX register fields
- */
-struct qdma_intr_cidx_reg_info {
-	/** @sw_cidx - Software Consumer Index */
-	uint16_t sw_cidx;
-	/** @rng_idx - Ring Index of the Interrupt Aggregation ring */
-	uint8_t rng_idx;
-};
-
-/**
- * struct qdma_q_cmpt_cidx_reg_info - CMPT CIDX register fields
- */
-struct qdma_q_cmpt_cidx_reg_info {
-	/** @wrb_cidx - CMPT Consumer Index */
-	uint16_t wrb_cidx;
-	/** @counter_idx - Counter Threshold Index */
-	uint8_t counter_idx;
-	/** @timer_idx - Timer Count Index */
-	uint8_t timer_idx;
-	/** @trig_mode - Trigger mode */
-	uint8_t trig_mode;
-	/** @wrb_en - Enable status descriptor for CMPT */
-	uint8_t wrb_en;
-	/** @irq_en - Enable Interrupt for CMPT */
-	uint8_t irq_en;
-};
-
-
-/**
- * struct qdma_csr_info - Global CSR info data structure
- */
-struct qdma_csr_info {
-	/** @ringsz: ring size values */
-	uint16_t ringsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @bufsz: buffer size values */
-	uint16_t bufsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @timer_cnt: timer threshold values */
-	uint8_t timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @cnt_thres: counter threshold values */
-	uint8_t cnt_thres[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @wb_intvl: writeback interval */
-	uint8_t wb_intvl;
-};
-
-#define QDMA_MAX_REGISTER_DUMP	14
-
-/**
- * struct qdma_reg_data - Structure to
- * hold address value and pair
- */
-struct qdma_reg_data {
-	/** @reg_addr: register address */
-	uint32_t reg_addr;
-	/** @reg_val: register value */
-	uint32_t reg_val;
-};
-
-/**
- * enum qdma_hw_access_type - To hold hw access type
- */
-enum qdma_hw_access_type {
-	QDMA_HW_ACCESS_READ,
-	QDMA_HW_ACCESS_WRITE,
-	QDMA_HW_ACCESS_CLEAR,
-	QDMA_HW_ACCESS_INVALIDATE,
-	QDMA_HW_ACCESS_MAX
-};
-
-/**
- * enum qdma_global_csr_type - To hold global csr type
- */
-enum qdma_global_csr_type {
-	QDMA_CSR_RING_SZ,
-	QDMA_CSR_TIMER_CNT,
-	QDMA_CSR_CNT_TH,
-	QDMA_CSR_BUF_SZ,
-	QDMA_CSR_MAX
-};
-
-/**
- * enum status_type - To hold enable/disable status type
- */
-enum status_type {
-	DISABLE = 0,
-	ENABLE = 1,
-};
-
-/**
- * enum qdma_reg_read_type - Indicates reg read type
- */
-enum qdma_reg_read_type {
-	/** @QDMA_REG_READ_PF_ONLY: Read the register for PFs only */
-	QDMA_REG_READ_PF_ONLY,
-	/** @QDMA_REG_READ_VF_ONLY: Read the register for VFs only */
-	QDMA_REG_READ_VF_ONLY,
-	/** @QDMA_REG_READ_PF_VF: Read the register for both PF and VF */
-	QDMA_REG_READ_PF_VF,
-	/** @QDMA_REG_READ_MAX: Reg read enum max */
-	QDMA_REG_READ_MAX
-};
-
-/**
- * enum qdma_reg_read_groups - Indicates reg read groups
- */
-enum qdma_reg_read_groups {
-	/** @QDMA_REG_READ_GROUP_1: Read the register from  0x000 to 0x288 */
-	QDMA_REG_READ_GROUP_1,
-	/** @QDMA_REG_READ_GROUP_2: Read the register from 0x400 to 0xAFC */
-	QDMA_REG_READ_GROUP_2,
-	/** @QDMA_REG_READ_GROUP_3: Read the register from 0xB00 to 0xE28 */
-	QDMA_REG_READ_GROUP_3,
-	/** @QDMA_REG_READ_GROUP_4: Read the register Mailbox Registers */
-	QDMA_REG_READ_GROUP_4,
-	/** @QDMA_REG_READ_GROUP_MAX: Reg read max groups */
-	QDMA_REG_READ_GROUP_MAX
-};
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values);
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values);
-
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval);
-
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us,
-		uint32_t timeout_us);
-
-void qdma_memset(void *to, uint8_t val, uint32_t size);
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen);
-
-int qdma_acc_reg_info_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, int *buflen, int *num_regs);
-
-int qdma_acc_context_buf_len(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_acc_get_num_config_regs(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t *num_regs);
-
-/*
- * struct qdma_hw_access - Structure to hold HW access function pointers
- */
-struct qdma_hw_access {
-	int (*qdma_set_default_global_csr)(void *dev_hndl);
-	int (*qdma_global_csr_conf)(void *dev_hndl, uint8_t index,
-					uint8_t count, uint32_t *csr_val,
-					enum qdma_global_csr_type csr_type,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_global_writeback_interval_conf)(void *dev_hndl,
-					enum qdma_wrb_interval *wb_int,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_init_ctxt_memory)(void *dev_hndl);
-	int (*qdma_qid2vec_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				 struct qdma_qid2vec *ctxt,
-				 enum qdma_hw_access_type access_type);
-	int (*qdma_fmap_conf)(void *dev_hndl, uint16_t func_id,
-					struct qdma_fmap_cfg *config,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_sw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_sw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_pfetch_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_prefetch_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_cmpt_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_cmpt_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_hw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_hw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_credit_ctx_conf)(void *dev_hndl, uint8_t c2h,
-					uint16_t hw_qid,
-					struct qdma_descq_credit_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_indirect_intr_ctx_conf)(void *dev_hndl, uint16_t ring_index,
-					struct qdma_indirect_intr_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_queue_pidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				uint8_t is_c2h,
-				const struct qdma_q_pidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_read)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_update)(void *dev_hndl, uint8_t is_vf,
-			uint16_t qid,
-			const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_intr_cidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				const struct qdma_intr_cidx_reg_info *reg_info);
-	int (*qdma_mm_channel_conf)(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h, uint8_t enable);
-	int (*qdma_get_user_bar)(void *dev_hndl, uint8_t is_vf,
-				uint16_t func_id, uint8_t *user_bar);
-	int (*qdma_get_function_number)(void *dev_hndl, uint16_t *func_id);
-	int (*qdma_get_version)(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_version_info *version_info);
-	int (*qdma_get_device_attributes)(void *dev_hndl,
-					struct qdma_dev_attributes *dev_info);
-	int (*qdma_hw_error_intr_setup)(void *dev_hndl, uint16_t func_id,
-					uint8_t err_intr_index);
-	int (*qdma_hw_error_intr_rearm)(void *dev_hndl);
-	int (*qdma_hw_error_enable)(void *dev_hndl,
-			uint32_t err_idx);
-	const char *(*qdma_hw_get_error_name)(uint32_t err_idx);
-	int (*qdma_hw_error_process)(void *dev_hndl);
-	int (*qdma_dump_config_regs)(void *dev_hndl, uint8_t is_vf, char *buf,
-					uint32_t buflen);
-	int (*qdma_dump_reg_info)(void *dev_hndl, uint32_t reg_addr,
-				  uint32_t num_regs,
-				  char *buf,
-				  uint32_t buflen);
-	int (*qdma_dump_queue_context)(void *dev_hndl,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			struct qdma_descq_context *ctxt_data,
-			char *buf, uint32_t buflen);
-	int (*qdma_read_dump_queue_context)(void *dev_hndl,
-			uint16_t func_id,
-			uint16_t qid_hw,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			char *buf, uint32_t buflen);
-	int (*qdma_dump_intr_context)(void *dev_hndl,
-			struct qdma_indirect_intr_ctxt *intr_ctx,
-			int ring_index,
-			char *buf, uint32_t buflen);
-	int (*qdma_is_legacy_intr_pend)(void *dev_hndl);
-	int (*qdma_clear_pend_legacy_intr)(void *dev_hndl);
-	int (*qdma_legacy_intr_conf)(void *dev_hndl, enum status_type enable);
-	int (*qdma_initiate_flr)(void *dev_hndl, uint8_t is_vf);
-	int (*qdma_is_flr_done)(void *dev_hndl, uint8_t is_vf, uint8_t *done);
-	int (*qdma_get_error_code)(int acc_err_code);
-	int (*qdma_read_reg_list)(void *dev_hndl, uint8_t is_vf,
-			uint16_t reg_rd_group,
-			uint16_t *total_regs,
-			struct qdma_reg_data *reg_list);
-	int (*qdma_dump_config_reg_list)(void *dev_hndl,
-			uint32_t num_regs,
-			struct qdma_reg_data *reg_list,
-			char *buf, uint32_t buflen);
-#ifdef TANDEM_BOOT_SUPPORTED
-	int (*qdma_init_st_ctxt)(void *dev_hndl);
-#endif
-	uint32_t mbox_base_pf;
-	uint32_t mbox_base_vf;
-	uint32_t qdma_max_errors;
-};
-
-/*****************************************************************************/
-/**
- * qdma_hw_access_init() - Function to get the QDMA hardware
- *			access function pointers
- *	This function should be called once per device from
- *	device_open()/probe(). Caller shall allocate memory for
- *	qdma_hw_access structure and store pointer to it in their
- *	per device structure. Config BAR validation will be done
- *	inside this function
- *
- * @dev_hndl: device handle
- * @is_vf: Whether PF or VF
- * @hw_access: qdma_hw_access structure pointer.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access);
-
-/*****************************************************************************/
-/**
- * qdma_acc_get_config_regs() - Function to get qdma config registers
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_data:  pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t *reg_data);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to get qdma reg info in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @reg_addr:   Register Address
- * @num_regs:   Number of Registers
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl, enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to dump qdma queue context data in a
- * buffer where context information is already available in 'ctxt_data'
- * structure pointer buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @ctxt_data:	Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @device_type:QDMA DEVICE Type
- * @qid_hw:     queue id
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				enum qdma_device_type device_type,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA IP Type
- * @device_type:	QDMA DEVICE Type
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		enum qdma_device_type device_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code);
-
-/*****************************************************************************/
-/**
- * qdma_fetch_version_details() - Function to fetch the version details from the
- *  version register value
- *
- * @is_vf           :    Whether PF or VF
- * @version_reg_val :    Value of the version register
- * @version_info :       Pointer to store the version details.
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_fetch_version_details(void *dev_hndl, uint8_t is_vf,
-	uint32_t version_reg_val, struct qdma_hw_version_info *version_info);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* QDMA_ACCESS_COMMON_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h
deleted file mode 100755
index c8b28c9..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_errors.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_ACCESS_ERRORS_H_
-#define __QDMA_ACCESS_ERRORS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library error codes definitions
- *
- * Header file *qdma_access_errors.h* defines error codes for common library
- */
-
-struct err_code_map {
-	int acc_err_code;
-	int err_code;
-};
-
-#define QDMA_HW_ERR_NOT_DETECTED		1
-
-enum qdma_access_error_codes {
-	QDMA_SUCCESS = 0,
-	QDMA_ERR_INV_PARAM,
-	QDMA_ERR_NO_MEM,
-	QDMA_ERR_HWACC_BUSY_TIMEOUT,
-	QDMA_ERR_HWACC_INV_CONFIG_BAR,
-	QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,
-	QDMA_ERR_HWACC_BAR_NOT_FOUND,
-	QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,   /* 7 */
-
-	QDMA_ERR_RM_RES_EXISTS,				/* 8 */
-	QDMA_ERR_RM_RES_NOT_EXISTS,
-	QDMA_ERR_RM_DEV_EXISTS,
-	QDMA_ERR_RM_DEV_NOT_EXISTS,
-	QDMA_ERR_RM_NO_QUEUES_LEFT,
-	QDMA_ERR_RM_QMAX_CONF_REJECTED,		/* 13 */
-
-	QDMA_ERR_MBOX_FMAP_WR_FAILED,		/* 14 */
-	QDMA_ERR_MBOX_NUM_QUEUES,
-	QDMA_ERR_MBOX_INV_QID,
-	QDMA_ERR_MBOX_INV_RINGSZ,
-	QDMA_ERR_MBOX_INV_BUFSZ,
-	QDMA_ERR_MBOX_INV_CNTR_TH,
-	QDMA_ERR_MBOX_INV_TMR_TH,
-	QDMA_ERR_MBOX_INV_MSG,
-	QDMA_ERR_MBOX_SEND_BUSY,
-	QDMA_ERR_MBOX_NO_MSG_IN,
-	QDMA_ERR_MBOX_REG_READ_FAILED,
-	QDMA_ERR_MBOX_ALL_ZERO_MSG,			/* 25 */
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_ERRORS_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h
deleted file mode 100755
index 66eaa32..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_export.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_ACCESS_EXPORT_H_
-#define __QDMA_ACCESS_EXPORT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-
-/** QDMA Global CSR array size */
-#define QDMA_GLOBAL_CSR_ARRAY_SZ        16
-
-/**
- * struct qdma_dev_attributes - QDMA device attributes
- */
-struct qdma_dev_attributes {
-	/** @num_pfs - Num of PFs*/
-	uint8_t num_pfs;
-	/** @num_qs - Num of Queues */
-	uint16_t num_qs;
-	/** @flr_present - FLR resent or not? */
-	uint8_t flr_present:1;
-	/** @st_en - ST mode supported or not? */
-	uint8_t st_en:1;
-	/** @mm_en - MM mode supported or not? */
-	uint8_t mm_en:1;
-	/** @mm_cmpt_en - MM with Completions supported or not? */
-	uint8_t mm_cmpt_en:1;
-	/** @mailbox_en - Mailbox supported or not? */
-	uint8_t mailbox_en:1;
-	/** @debug_mode - Debug mode is enabled/disabled for IP */
-	uint8_t debug_mode:1;
-	/** @desc_eng_mode - Descriptor Engine mode:
-	 * Internal only/Bypass only/Internal & Bypass
-	 */
-	uint8_t desc_eng_mode:2;
-	/** @mm_channel_max - Num of MM channels */
-	uint8_t mm_channel_max;
-
-	/** Below are the list of HW features which are populated by qdma_access
-	 * based on RTL version
-	 */
-	/** @qid2vec_ctx - To indicate support of qid2vec context */
-	uint8_t qid2vec_ctx:1;
-	/** @cmpt_ovf_chk_dis - To indicate support of overflow check
-	 * disable in CMPT ring
-	 */
-	uint8_t cmpt_ovf_chk_dis:1;
-	/** @mailbox_intr - To indicate support of mailbox interrupt */
-	uint8_t mailbox_intr:1;
-	/** @sw_desc_64b - To indicate support of 64 bytes C2H/H2C
-	 * descriptor format
-	 */
-	uint8_t sw_desc_64b:1;
-	/** @cmpt_desc_64b - To indicate support of 64 bytes CMPT
-	 * descriptor format
-	 */
-	uint8_t cmpt_desc_64b:1;
-	/** @dynamic_bar - To indicate support of dynamic bar detection */
-	uint8_t dynamic_bar:1;
-	/** @legacy_intr - To indicate support of legacy interrupt */
-	uint8_t legacy_intr:1;
-	/** @cmpt_trig_count_timer - To indicate support of counter + timer
-	 * trigger mode
-	 */
-	uint8_t cmpt_trig_count_timer:1;
-};
-
-/** qdma_dev_attributes structure size */
-#define QDMA_DEV_ATTR_STRUCT_SIZE	(sizeof(struct qdma_dev_attributes))
-
-/** global_csr_conf structure size */
-#define QDMA_DEV_GLOBAL_CSR_STRUCT_SIZE	(sizeof(struct global_csr_conf))
-
-/**
- * enum qdma_dev_type - To hold qdma device type
- */
-enum qdma_dev_type {
-	QDMA_DEV_PF,
-	QDMA_DEV_VF
-};
-
-/**
- * enum qdma_dev_q_type: Q type
- */
-enum qdma_dev_q_type {
-	/** @QDMA_DEV_Q_TYPE_H2C: H2C Q */
-	QDMA_DEV_Q_TYPE_H2C,
-	/** @QDMA_DEV_Q_TYPE_C2H: C2H Q */
-	QDMA_DEV_Q_TYPE_C2H,
-	/** @QDMA_DEV_Q_TYPE_CMPT: CMPT Q */
-	QDMA_DEV_Q_TYPE_CMPT,
-	/** @QDMA_DEV_Q_TYPE_MAX: Total Q types */
-	QDMA_DEV_Q_TYPE_MAX
-};
-
-/**
- * @enum qdma_desc_size - QDMA queue descriptor size
- */
-enum qdma_desc_size {
-	/** @QDMA_DESC_SIZE_8B - 8 byte descriptor */
-	QDMA_DESC_SIZE_8B,
-	/** @QDMA_DESC_SIZE_16B - 16 byte descriptor */
-	QDMA_DESC_SIZE_16B,
-	/** @QDMA_DESC_SIZE_32B - 32 byte descriptor */
-	QDMA_DESC_SIZE_32B,
-	/** @QDMA_DESC_SIZE_64B - 64 byte descriptor */
-	QDMA_DESC_SIZE_64B
-};
-
-/**
- * @enum qdma_cmpt_update_trig_mode - Interrupt and Completion status write
- * trigger mode
- */
-enum qdma_cmpt_update_trig_mode {
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_DIS - disabled */
-	QDMA_CMPT_UPDATE_TRIG_MODE_DIS,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_EVERY - every */
-	QDMA_CMPT_UPDATE_TRIG_MODE_EVERY,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT - user counter */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR - user */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR - user timer */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR - timer + counter combo */
-	QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR
-};
-
-
-/**
- * @enum qdma_indirect_intr_ring_size - Indirect interrupt ring size
- */
-enum qdma_indirect_intr_ring_size {
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_4KB - Accommodates 512 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_4KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_8KB - Accommodates 1024 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_8KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_12KB - Accommodates 1536 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_12KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_16KB - Accommodates 2048 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_16KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_20KB - Accommodates 2560 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_20KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_24KB - Accommodates 3072 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_24KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_28KB - Accommodates 3584 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_28KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_32KB - Accommodates 4096 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_32KB
-};
-
-/**
- * @enum qdma_wrb_interval - writeback update interval
- */
-enum qdma_wrb_interval {
-	/** @QDMA_WRB_INTERVAL_4 - writeback update interval of 4 */
-	QDMA_WRB_INTERVAL_4,
-	/** @QDMA_WRB_INTERVAL_8 - writeback update interval of 8 */
-	QDMA_WRB_INTERVAL_8,
-	/** @QDMA_WRB_INTERVAL_16 - writeback update interval of 16 */
-	QDMA_WRB_INTERVAL_16,
-	/** @QDMA_WRB_INTERVAL_32 - writeback update interval of 32 */
-	QDMA_WRB_INTERVAL_32,
-	/** @QDMA_WRB_INTERVAL_64 - writeback update interval of 64 */
-	QDMA_WRB_INTERVAL_64,
-	/** @QDMA_WRB_INTERVAL_128 - writeback update interval of 128 */
-	QDMA_WRB_INTERVAL_128,
-	/** @QDMA_WRB_INTERVAL_256 - writeback update interval of 256 */
-	QDMA_WRB_INTERVAL_256,
-	/** @QDMA_WRB_INTERVAL_512 - writeback update interval of 512 */
-	QDMA_WRB_INTERVAL_512,
-	/** @QDMA_NUM_WRB_INTERVALS - total number of writeback intervals */
-	QDMA_NUM_WRB_INTERVALS
-};
-
-enum qdma_rtl_version {
-	/** @QDMA_RTL_BASE - RTL Base  */
-	QDMA_RTL_BASE,
-	/** @QDMA_RTL_PATCH - RTL Patch  */
-	QDMA_RTL_PATCH,
-	/** @QDMA_RTL_NONE - Not a valid RTL version */
-	QDMA_RTL_NONE,
-};
-
-enum qdma_vivado_release_id {
-	/** @QDMA_VIVADO_2018_3 - Vivado version 2018.3  */
-	QDMA_VIVADO_2018_3,
-	/** @QDMA_VIVADO_2019_1 - Vivado version 2019.1  */
-	QDMA_VIVADO_2019_1,
-	/** @QDMA_VIVADO_2019_2 - Vivado version 2019.2  */
-	QDMA_VIVADO_2019_2,
-	/** @QDMA_VIVADO_2020_1 - Vivado version 2020.1  */
-	QDMA_VIVADO_2020_1,
-	/** @QDMA_VIVADO_2020_2 - Vivado version 2020.2  */
-	QDMA_VIVADO_2020_2,
-	/** @QDMA_VIVADO_2021_1 - Vivado version 2021.1  */
-	QDMA_VIVADO_2021_1,
-	/** @QDMA_VIVADO_2022_1 - Vivado version 2022.1  */
-	QDMA_VIVADO_2022_1,
-	/** @QDMA_VIVADO_NONE - Not a valid Vivado version*/
-	QDMA_VIVADO_NONE
-};
-
-enum qdma_ip_type {
-	/** @QDMA_VERSAL_HARD_IP - Hard IP  */
-	QDMA_VERSAL_HARD_IP,
-	/** @QDMA_VERSAL_SOFT_IP - Soft IP  */
-	QDMA_VERSAL_SOFT_IP,
-	/** @QDMA_SOFT_IP - Hard IP  */
-	QDMA_SOFT_IP,
-	/** @EQDMA_SOFT_IP - Soft IP  */
-	EQDMA_SOFT_IP,
-	/** @QDMA_VERSAL_NONE - Not versal device  */
-	QDMA_NONE_IP
-};
-
-
-enum qdma_device_type {
-	/** @QDMA_DEVICE_SOFT - UltraScale+ IP's  */
-	QDMA_DEVICE_SOFT,
-	/** @QDMA_DEVICE_VERSAL_CPM4 -VERSAL IP  */
-	QDMA_DEVICE_VERSAL_CPM4,
-	/** @QDMA_DEVICE_VERSAL_CPM5 -VERSAL IP  */
-	QDMA_DEVICE_VERSAL_CPM5,
-	/** @QDMA_DEVICE_NONE - Not a valid device  */
-	QDMA_DEVICE_NONE
-};
-
-enum qdma_desc_eng_mode {
-	/** @QDMA_DESC_ENG_INTERNAL_BYPASS - Internal and Bypass mode */
-	QDMA_DESC_ENG_INTERNAL_BYPASS,
-	/** @QDMA_DESC_ENG_BYPASS_ONLY - Only Bypass mode  */
-	QDMA_DESC_ENG_BYPASS_ONLY,
-	/** @QDMA_DESC_ENG_INTERNAL_ONLY - Only Internal mode  */
-	QDMA_DESC_ENG_INTERNAL_ONLY,
-	/** @QDMA_DESC_ENG_MODE_MAX - Max of desc engine modes  */
-	QDMA_DESC_ENG_MODE_MAX
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_EXPORT_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h
deleted file mode 100755
index f655918..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_access_version.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_ACCESS_VERSION_H_
-#define __QDMA_ACCESS_VERSION_H_
-
-
-#define QDMA_VERSION_MAJOR	2023
-#define QDMA_VERSION_MINOR	2
-#define QDMA_VERSION_PATCH	1
-
-#define QDMA_VERSION_STR	\
-	__stringify(QDMA_VERSION_MAJOR) "." \
-	__stringify(QDMA_VERSION_MINOR) "." \
-	__stringify(QDMA_VERSION_PATCH)
-
-#define QDMA_VERSION  \
-	((QDMA_VERSION_MAJOR)*1000 + \
-	 (QDMA_VERSION_MINOR)*100 + \
-	  QDMA_VERSION_PATCH)
-
-
-#endif /* __QDMA_ACCESS_VERSION_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
deleted file mode 100755
index 33c45ff..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.c
+++ /dev/null
@@ -1,6055 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_cpm4_access.h"
-#include "qdma_cpm4_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_cpm4_access.tmh"
-#endif
-
-/** QDMA CPM4 Hard Context array size */
-#define QDMA_CPM4_SW_CONTEXT_NUM_WORDS              4
-#define QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS            4
-#define QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS         1
-#define QDMA_CPM4_HW_CONTEXT_NUM_WORDS              2
-#define QDMA_CPM4_CR_CONTEXT_NUM_WORDS              1
-#define QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS        3
-#define QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS          2
-
-#define QDMA_CPM4_VF_USER_BAR_ID   2
-
-#define QDMA_CPM4_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_CPM4_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_CPM4_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_CPM4_REG_GROUP_4_START_ADDR	0x1014
-
-#define QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP	4
-
-#define QDMA_CPM4_IND_CTXT_DATA_NUM_REGS	4
-
-#define QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS	7
-#define QDMA_CPM4_GLBL_TRQ_ERR_ALL_MASK			0XB3
-#define QDMA_CPM4_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define QDMA_CPM4_C2H_ERR_ALL_MASK				0X3F6DF
-#define QDMA_CPM4_C2H_FATAL_ERR_ALL_MASK			0X1FDF1B
-#define QDMA_CPM4_H2C_ERR_ALL_MASK				0X3F
-#define QDMA_CPM4_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define QDMA_CPM4_DBE_ERR_ALL_MASK				0XFFFFFFFF
-
-#define QDMA_CPM4_OFFSET_DMAP_SEL_INT_CIDX                  0x6400
-#define QDMA_CPM4_OFFSET_DMAP_SEL_H2C_DSC_PIDX          0x6404
-#define QDMA_CPM4_OFFSET_DMAP_SEL_C2H_DSC_PIDX          0x6408
-#define QDMA_CPM4_OFFSET_DMAP_SEL_CMPT_CIDX               0x640C
-
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_INT_CIDX             0x3000
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX     0x3004
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX     0x3008
-#define QDMA_CPM4_OFFSET_VF_DMAP_SEL_CMPT_CIDX          0x300C
-
-#define QDMA_CPM4_DMA_SEL_INT_SW_CIDX_MASK               GENMASK(15, 0)
-#define QDMA_CPM4_DMA_SEL_INT_RING_IDX_MASK              GENMASK(23, 16)
-#define QDMA_CPM4_DMA_SEL_DESC_PIDX_MASK                   GENMASK(15, 0)
-#define QDMA_CPM4_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define QDMA_CPM4_DMAP_SEL_CMPT_IRQ_EN_MASK             BIT(28)
-#define QDMA_CPM4_DMAP_SEL_CMPT_STS_DESC_EN_MASK    BIT(27)
-#define QDMA_CPM4_DMAP_SEL_CMPT_TRG_MODE_MASK        GENMASK(26, 24)
-#define QDMA_CPM4_DMAP_SEL_CMPT_TMR_CNT_MASK          GENMASK(23, 20)
-#define QDMA_CPM4_DMAP_SEL_CMPT_CNT_THRESH_MASK     GENMASK(19, 16)
-#define QDMA_CPM4_DMAP_SEL_CMPT_WRB_CIDX_MASK        GENMASK(15, 0)
-#define QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK     GENMASK_ULL(63, 35)
-#define QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK     GENMASK_ULL(34, 12)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK    GENMASK_ULL(63, 42)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK    GENMASK_ULL(41, 10)
-#define QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK    GENMASK_ULL(9, 6)
-#define QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK     GENMASK(15, 8)
-#define QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK     GENMASK(7, 0)
-#define QDMA_CPM4_QID2VEC_H2C_VECTOR             GENMASK(16, 9)
-#define QDMA_CPM4_QID2VEC_H2C_COAL_EN            BIT(17)
-
-#define QDMA_CPM4_DEFAULT_PFCH_STOP_THRESH            256
-
-static void qdma_cpm4_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_desc_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_trq_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_cpm4_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct qdma_cpm4_hw_err_info
-		qdma_cpm4_err_info[QDMA_CPM4_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_CPM4_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-	{
-		QDMA_CPM4_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_CPM4_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_cpm4_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_CPM4_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_VF_ACCESS_ERR,
-		"VF attempted to access Global register space or Function map",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-	{
-		QDMA_CPM4_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_cpm4_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass in mismatch error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_WRB_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_CPM4_C2H_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-		"RAM double bit fatal error",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-	{
-		QDMA_CPM4_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_cpm4_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		"Zero length descriptor error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-		"A non-EOP descriptor received",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-	{
-		QDMA_CPM4_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_CPM4_H2C_ERR_MASK_ADDR,
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		QDMA_CPM4_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_cpm4_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PASID_CTXT_RAM,
-		"Pasid ctxt FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_CPM4_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_CPM4_RAM_SBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-		QDMA_CPM4_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_cpm4_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		QDMA_CPM4_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PASID_CTXT_RAM,
-		"PASID CTXT RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"Payload fifo RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_INT_QID2VEC_RAM,
-		"QID2VEC RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_CPM4_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_CPM4_RAM_DBE_MSK_A_ADDR,
-		QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-		QDMA_CPM4_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_cpm4_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_qdma_cpm4_hw_errs[
-		QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_CPM4_DSC_ERR_ALL,
-	QDMA_CPM4_TRQ_ERR_ALL,
-	QDMA_CPM4_ST_C2H_ERR_ALL,
-	QDMA_CPM4_ST_FATAL_ERR_ALL,
-	QDMA_CPM4_ST_H2C_ERR_ALL,
-	QDMA_CPM4_SBE_ERR_ALL,
-	QDMA_CPM4_DBE_ERR_ALL
-};
-
-
-
-union qdma_cpm4_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:11;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-struct qdma_cpm4_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_CPM4_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_CPM4_IND_CTXT_DATA_NUM_REGS];
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-};
-
-static struct qctx_entry qdma_cpm4_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Function Id", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-};
-
-static struct qctx_entry qdma_cpm4_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry qdma_cpm4_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry qdma_cpm4_fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry qdma_cpm4_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-};
-
-static struct qctx_entry qdma_cpm4_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry qdma_cpm4_qid2vec_ctxt_entries[] = {
-	{"c2h_vector", 0},
-	{"c2h_en_coal", 0},
-	{"h2c_vector", 0},
-	{"h2c_en_coal", 0},
-};
-
-static struct qctx_entry qdma_cpm4_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-};
-
-static int qdma_cpm4_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_cpm4_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_cpm4_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_cpm4_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t qdma_cpm4_get_config_num_regs(void)
-{
-	return qdma_cpm4_config_num_regs_get();
-}
-
-struct xreg_info *qdma_cpm4_get_config_regs(void)
-{
-	return qdma_cpm4_config_regs_get();
-}
-
-uint32_t qdma_cpm4_reg_dump_buf_len(void)
-{
-	uint32_t length = (qdma_cpm4_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int qdma_cpm4_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-			sizeof(qdma_cpm4_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(qdma_cpm4_sw_ctxt_entries) /
-				sizeof(qdma_cpm4_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_hw_ctxt_entries) /
-			sizeof(qdma_cpm4_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_credit_ctxt_entries) /
-			sizeof(qdma_cpm4_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_cpm4_fmap_ctxt_entries) /
-			sizeof(qdma_cpm4_fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-			sizeof(qdma_cpm4_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(qdma_cpm4_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_cpm4_c2h_pftch_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*req_buflen = len;
-	return rv;
-}
-
-static uint32_t qdma_cpm4_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(qdma_cpm4_ind_intr_ctxt_entries) /
-			sizeof(qdma_cpm4_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_cpm4_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	qdma_cpm4_sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	qdma_cpm4_sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	qdma_cpm4_sw_ctxt_entries[2].value = sw_ctxt->qen;
-	qdma_cpm4_sw_ctxt_entries[3].value = sw_ctxt->frcd_en;
-	qdma_cpm4_sw_ctxt_entries[4].value = sw_ctxt->wbi_chk;
-	qdma_cpm4_sw_ctxt_entries[5].value = sw_ctxt->wbi_intvl_en;
-	qdma_cpm4_sw_ctxt_entries[6].value = sw_ctxt->fnc_id;
-	qdma_cpm4_sw_ctxt_entries[7].value = sw_ctxt->rngsz_idx;
-	qdma_cpm4_sw_ctxt_entries[8].value = sw_ctxt->desc_sz;
-	qdma_cpm4_sw_ctxt_entries[9].value = sw_ctxt->bypass;
-	qdma_cpm4_sw_ctxt_entries[10].value = sw_ctxt->mm_chn;
-	qdma_cpm4_sw_ctxt_entries[11].value = sw_ctxt->wbk_en;
-	qdma_cpm4_sw_ctxt_entries[12].value = sw_ctxt->irq_en;
-	qdma_cpm4_sw_ctxt_entries[13].value = sw_ctxt->port_id;
-	qdma_cpm4_sw_ctxt_entries[14].value = sw_ctxt->irq_no_last;
-	qdma_cpm4_sw_ctxt_entries[15].value = sw_ctxt->err;
-	qdma_cpm4_sw_ctxt_entries[16].value = sw_ctxt->err_wb_sent;
-	qdma_cpm4_sw_ctxt_entries[17].value = sw_ctxt->irq_req;
-	qdma_cpm4_sw_ctxt_entries[18].value = sw_ctxt->mrkr_dis;
-	qdma_cpm4_sw_ctxt_entries[19].value = sw_ctxt->is_mm;
-	qdma_cpm4_sw_ctxt_entries[20].value =
-			sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	qdma_cpm4_sw_ctxt_entries[21].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_cpm4_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	qdma_cpm4_cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	qdma_cpm4_cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	qdma_cpm4_cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	qdma_cpm4_cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	qdma_cpm4_cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	qdma_cpm4_cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	qdma_cpm4_cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	qdma_cpm4_cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	qdma_cpm4_cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	qdma_cpm4_cmpt_ctxt_entries[9].value =
-			cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	qdma_cpm4_cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	qdma_cpm4_cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	qdma_cpm4_cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	qdma_cpm4_cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	qdma_cpm4_cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	qdma_cpm4_cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	qdma_cpm4_cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	qdma_cpm4_cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	qdma_cpm4_cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_cpm4_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	qdma_cpm4_hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	qdma_cpm4_hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	qdma_cpm4_hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	qdma_cpm4_hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	qdma_cpm4_hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	qdma_cpm4_hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_credit_ctxt(
-		struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	qdma_cpm4_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_pfetch_ctxt(
-		struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	qdma_cpm4_c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	qdma_cpm4_c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	qdma_cpm4_c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	qdma_cpm4_c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	qdma_cpm4_c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	qdma_cpm4_c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	qdma_cpm4_c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	qdma_cpm4_c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-/*
- * qdma_cpm4_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void qdma_cpm4_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	qdma_cpm4_fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	qdma_cpm4_fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-static void qdma_cpm4_fill_qid2vec_ctxt(struct qdma_qid2vec *qid2vec_ctxt)
-{
-	qdma_cpm4_qid2vec_ctxt_entries[0].value = qid2vec_ctxt->c2h_vector;
-	qdma_cpm4_qid2vec_ctxt_entries[1].value = qid2vec_ctxt->c2h_en_coal;
-	qdma_cpm4_qid2vec_ctxt_entries[2].value = qid2vec_ctxt->h2c_vector;
-	qdma_cpm4_qid2vec_ctxt_entries[3].value = qid2vec_ctxt->h2c_en_coal;
-}
-
-static void qdma_cpm4_fill_intr_ctxt(
-		struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	qdma_cpm4_ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	qdma_cpm4_ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	qdma_cpm4_ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	qdma_cpm4_ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	qdma_cpm4_ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	qdma_cpm4_ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	qdma_cpm4_ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	qdma_cpm4_ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-}
-
-/*
- * dump_cpm4_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_cpm4_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Invalid queue type(%d), err:%d\n",
-						__func__,
-						q_type,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_fill_sw_ctxt(&queue_context->sw_ctxt);
-	qdma_cpm4_fill_hw_ctxt(&queue_context->hw_ctxt);
-	qdma_cpm4_fill_credit_ctxt(&queue_context->cr_ctxt);
-	qdma_cpm4_fill_qid2vec_ctxt(&queue_context->qid2vec);
-	if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		qdma_cpm4_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-		qdma_cpm4_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	}
-
-	qdma_cpm4_fill_fmap_ctxt(&queue_context->fmap);
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(qdma_cpm4_sw_ctxt_entries) /
-				sizeof((qdma_cpm4_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_sw_ctxt_entries[i].name,
-				qdma_cpm4_sw_ctxt_entries[i].value,
-				qdma_cpm4_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(qdma_cpm4_hw_ctxt_entries) /
-				sizeof((qdma_cpm4_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_hw_ctxt_entries[i].name,
-				qdma_cpm4_hw_ctxt_entries[i].value,
-				qdma_cpm4_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(qdma_cpm4_credit_ctxt_entries) /
-			sizeof((qdma_cpm4_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_credit_ctxt_entries[i].name,
-				qdma_cpm4_credit_ctxt_entries[i].value,
-				qdma_cpm4_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* SW context dump */
-	n = sizeof(qdma_cpm4_qid2vec_ctxt_entries) /
-			sizeof((qdma_cpm4_qid2vec_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"QID2VEC Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_qid2vec_ctxt_entries[i].name,
-			qdma_cpm4_qid2vec_ctxt_entries[i].value,
-			qdma_cpm4_qid2vec_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(qdma_cpm4_cmpt_ctxt_entries) /
-				sizeof((qdma_cpm4_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_cmpt_ctxt_entries[i].name,
-				qdma_cpm4_cmpt_ctxt_entries[i].value,
-				qdma_cpm4_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(qdma_cpm4_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_cpm4_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].name,
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].value,
-				qdma_cpm4_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(qdma_cpm4_fmap_ctxt_entries) /
-		sizeof(qdma_cpm4_fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_fmap_ctxt_entries[i].name,
-			qdma_cpm4_fmap_ctxt_entries[i].value,
-			qdma_cpm4_fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-static int dump_cpm4_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ] = "";
-
-	qdma_cpm4_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(qdma_cpm4_ind_intr_ctxt_entries) /
-			sizeof((qdma_cpm4_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_cpm4_ind_intr_ctxt_entries[i].name,
-			qdma_cpm4_ind_intr_ctxt_entries[i].value,
-			qdma_cpm4_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial intr context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_cpm4_indirect_reg_invalidate() - helper function to invalidate
- * indirect context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_CPM4_IND_CTXT_DATA_3_ADDR;
-	union qdma_cpm4_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_cpm4_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_cpm4_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_cpm4_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_CPM4_IND_CTXT_DATA_NUM_REGS;
-			index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_CPM4_IND_CTXT_DATA_3_ADDR;
-
-	for (index = 0;
-		index < ((2 * QDMA_CPM4_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_CPM4_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_write() - create qid2vec context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_write(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	uint32_t qid2vec = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-	int rv = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			1, &qid2vec);
-	if (rv < 0)
-		return rv;
-	if (c2h) {
-		qid2vec = qid2vec & (QDMA_CPM4_QID2VEC_H2C_VECTOR |
-					QDMA_CPM4_QID2VEC_H2C_COAL_EN);
-		qid2vec |= FIELD_SET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-				     ctxt->c2h_vector) |
-			FIELD_SET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-				  ctxt->c2h_en_coal);
-	} else {
-		qid2vec = qid2vec & (C2H_QID2VEC_MAP_C2H_VECTOR_MASK |
-					C2H_QID2VEC_MAP_C2H_EN_COAL_MASK);
-		qid2vec |=
-			FIELD_SET(QDMA_CPM4_QID2VEC_H2C_VECTOR,
-				  ctxt->h2c_vector) |
-			FIELD_SET(QDMA_CPM4_QID2VEC_H2C_COAL_EN,
-				  ctxt->h2c_en_coal);
-	}
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			&qid2vec, QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_read() - read qid2vec context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_read(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	int rv = 0;
-	uint32_t qid2vec[QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_QID2VEC_CONTEXT_NUM_WORDS, qid2vec);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->c2h_vector = FIELD_GET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-						qid2vec[0]);
-		ctxt->c2h_en_coal =
-			(uint8_t)(FIELD_GET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-						qid2vec[0]));
-	} else {
-		ctxt->h2c_vector =
-			(uint8_t)(FIELD_GET(QDMA_CPM4_QID2VEC_H2C_VECTOR,
-								qid2vec[0]));
-		ctxt->h2c_en_coal =
-			(uint8_t)(FIELD_GET(QDMA_CPM4_QID2VEC_H2C_COAL_EN,
-								qid2vec[0]));
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_clear() - clear qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_invalidate() - invalidate qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_qid2vec_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_qid2vec_conf() - configure qid2vector context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_qid2vec_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_qid2vec_write(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_qid2vec_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_qid2vec_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle or config is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = FIELD_SET(TRQ_SEL_FMAP_0_QID_BASE_MASK, config->qbase) |
-		FIELD_SET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				config->qmax);
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_read() - read fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = qdma_reg_read(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			     func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP);
-
-	config->qbase = FIELD_GET(TRQ_SEL_FMAP_0_QID_BASE_MASK, fmap);
-	config->qmax =
-		(uint16_t)(FIELD_GET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				fmap));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_clear() - clear fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_CPM4_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_CPM4_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl or ctxt is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_64B) ||
-		(ctxt->rngsz_idx >= QDMA_NUM_RING_SIZES)) {
-		qdma_log_error("%s: Invalid desc_sz(%d)/rngidx(%d), err:%d\n",
-					__func__,
-					ctxt->desc_sz,
-					ctxt->rngsz_idx,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t sw_ctxt[QDMA_CPM4_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-	struct qdma_qid2vec qid2vec_ctxt = {0};
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p sw_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-			sw_ctxt[0]));
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-		sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-			sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-			sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-			sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-			sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-			sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-			sw_ctxt[1]));
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	/** Read the QID2VEC Context Data */
-	rv = qdma_cpm4_qid2vec_read(dev_hndl, c2h, hw_qid, &qid2vec_ctxt);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->vec = qid2vec_ctxt.c2h_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.c2h_en_coal;
-	} else {
-		ctxt->vec = qid2vec_ctxt.h2c_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.h2c_en_coal;
-	}
-
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_sw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_sw_context_write(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_sw_context_invalidate(dev_hndl,
-				c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t pfetch_ctxt[QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK,
-			pfetch_ctxt[0]));
-	ctxt->bufsz_idx =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				pfetch_ctxt[0]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK,
-			pfetch_ctxt[0]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-			pfetch_ctxt[0]));
-	sw_crdt_l =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK,
-			pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK,
-			pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		(uint16_t)(FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK,
-			sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_pfetch_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_pfetch_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_pfetch_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_pfetch_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, baddr_m, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_32B) ||
-		(ctxt->ringsz_idx >= QDMA_NUM_RING_SIZES) ||
-		(ctxt->counter_idx >= QDMA_NUM_C2H_COUNTERS) ||
-		(ctxt->timer_idx >= QDMA_NUM_C2H_TIMERS) ||
-		(ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR)) {
-		qdma_log_error
-		("%s Inv dsz(%d)/ridx(%d)/cntr(%d)/tmr(%d)/tm(%d), err:%d\n",
-				__func__,
-				ctxt->desc_sz,
-				ctxt->ringsz_idx,
-				ctxt->counter_idx,
-				ctxt->timer_idx,
-				ctxt->trig_mode,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_m =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK,
-			ctxt->bs_addr);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK,
-			ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK,
-			ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-				ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-				ctxt->ringsz_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				baddr_m);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				baddr_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-				ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-				pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-				pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-				ctxt->full_upd);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	    pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t cmpt_ctxt[QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, baddr_m,
-			 pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK,
-		cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(
-			CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l =
-		FIELD_GET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				cmpt_ctxt[0]);
-	baddr_m =
-		FIELD_GET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				cmpt_ctxt[1]);
-	baddr_h =
-		FIELD_GET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				cmpt_ctxt[2]);
-
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-			cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-			cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend =
-		(uint8_t)(FIELD_GET(
-		CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-			cmpt_ctxt[3]));
-	ctxt->full_upd =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_L_MASK,
-			(uint64_t)baddr_l) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_M_MASK,
-			(uint64_t)baddr_m) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_BADDR_GET_H_MASK,
-			(uint64_t)baddr_h);
-
-	ctxt->pidx =
-		(uint16_t)(FIELD_SET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_L_MASK,
-			pidx_l) |
-		FIELD_SET(QDMA_CPM4_COMPL_CTXT_PIDX_GET_H_MASK,
-			pidx_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_cmpt_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_cmpt_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_cmpt_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_cmpt_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t hw_ctxt[QDMA_CPM4_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p hw_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-				   QDMA_CPM4_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-				hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-				hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_FETCH_PND_MASK,
-			hw_ctxt[1]));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_hw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_hw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-						__func__, access_type,
-						-QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_write() - create indirect
- * interrupt context and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->page_size > QDMA_INDIRECT_INTR_RING_SIZE_32KB) {
-		qdma_log_error("%s: ctxt->page_size=%u is too big, err:%d\n",
-					   __func__, ctxt->page_size,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-				ctxt->page_size);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx);
-
-	return qdma_cpm4_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t intr_ctxt[QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_CPM4_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK,
-			intr_ctxt[0]);
-	ctxt->int_st = FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]);
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK,
-			intr_ctxt[0]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK,
-			intr_ctxt[1]);
-	ctxt->page_size =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-			intr_ctxt[1]));
-	ctxt->pidx = FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_CPM4_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_CPM4_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_clear() - clear indirect
- * interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_context_invalidate() - invalidate
- * indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_cpm4_indirect_intr_context_read(dev_hndl,
-							      ring_index,
-							      ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_cpm4_indirect_intr_context_write(dev_hndl,
-							       ring_index,
-							       ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_cpm4_indirect_intr_context_clear(dev_hndl,
-							   ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_cpm4_indirect_intr_context_invalidate(
-				dev_hndl, ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_set_default_global_csr() - function to set the global
- *  CSR register to default values. The value can be modified later by using
- *  the set/get csr functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257,
-				385, 513, 769, 1025, 1537, 3073, 4097, 6145,
-				8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-				30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24,
-				32, 48, 64, 80, 96, 112, 128, 144,
-				160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-				2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096,
-				4096, 8192, 9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, 0,
-					QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-				  DEFAULT_MAX_DSC_FETCH) |
-				  FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-				  DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		reg_val =
-			FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-				QDMA_CPM4_DEFAULT_PFCH_STOP_THRESH) |
-				FIELD_SET(C2H_PFCH_CFG_NUM_MASK,
-				DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-				FIELD_SET(C2H_PFCH_CFG_QCNT_MASK,
-				DEFAULT_PFCH_MAX_Q_CNT) |
-				FIELD_SET(C2H_PFCH_CFG_EVT_QCNT_TH_MASK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_C2H_PFCH_CFG_ADDR, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_CPM4_C2H_INT_TIMER_TICK_ADDR,
-						DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-				DEFAULT_CMPT_COAL_TIMER_CNT) |
-				FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-				DEFAULT_CMPT_COAL_TIMER_TICK) |
-				FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK,
-				DEFAULT_CMPT_COAL_MAX_BUF_SZ);
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-#if 0
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-				DEFAULT_H2C_THROT_DATA_THRESH) |
-				FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-				DEFAULT_THROT_EN_DATA);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-#endif
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?
-			QDMA_CPM4_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_CPM4_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?
-			QDMA_CPM4_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_CPM4_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_CPM4_DMA_SEL_DESC_PIDX_MASK,
-					reg_info->pidx) |
-			  FIELD_SET(QDMA_CPM4_DMA_SEL_IRQ_EN_MASK,
-					reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_cmpt_cidx_update() - function to update the CMPT
- * CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_CPM4_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_CPM4_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_CPM4_DMAP_SEL_CMPT_IRQ_EN_MASK,
-				reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_queue_intr_cidx_update() - function to update the
- * CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_CPM4_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_CPM4_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_CPM4_DMA_SEL_INT_SW_CIDX_MASK,
-			reg_info->sw_cidx) |
-		FIELD_SET(QDMA_CPM4_DMA_SEL_INT_RING_IDX_MASK,
-			reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmp_get_user_bar() - Function to get the
- *			AXI Master Lite(user bar) number
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite(user bar) number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr = (is_vf) ? QDMA_CPM4_GLBL2_PF_VF_BARLITE_EXT_ADDR :
-			QDMA_CPM4_GLBL2_PF_BARLITE_EXT_ADDR;
-
-	if (!is_vf) {
-		user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	} else {
-		*user_bar = QDMA_CPM4_VF_USER_BAR_ID;
-		return QDMA_SUCCESS;
-	}
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ram_sbe_err_process() -Function to dump SBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_cpm4_dump_reg_info(dev_hndl, QDMA_CPM4_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_ram_dbe_err_process() -Function to dump DBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_cpm4_dump_reg_info(dev_hndl, QDMA_CPM4_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_desc_err_process() -Function to dump Descriptor Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_LOG0_ADDR,
-		QDMA_CPM4_GLBL_DSC_ERR_LOG1_ADDR,
-		QDMA_CPM4_GLBL_DSC_DBG_DAT0_ADDR,
-		QDMA_CPM4_GLBL_DSC_DBG_DAT1_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_trq_err_process() -Function to dump Target Access Err info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_CPM4_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_st_h2c_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_CPM4_H2C_ERR_STAT_ADDR,
-		QDMA_CPM4_H2C_FIRST_ERR_QID_ADDR,
-		QDMA_CPM4_H2C_DBG_REG0_ADDR,
-		QDMA_CPM4_H2C_DBG_REG1_ADDR,
-		QDMA_CPM4_H2C_DBG_REG2_ADDR,
-		QDMA_CPM4_H2C_DBG_REG3_ADDR,
-		QDMA_CPM4_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_st_c2h_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_cpm4_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_CPM4_C2H_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_CPM4_C2H_FIRST_ERR_QID_ADDR,
-		QDMA_CPM4_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		QDMA_CPM4_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_cpm4_dump_reg_info(dev_hndl,
-					st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_get_error_name() - Function to get the error in str format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_cpm4_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_CPM4_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-			__func__,
-			(enum qdma_cpm4_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_cpm4_err_info[
-			(enum qdma_cpm4_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t i = 0, j = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_CPM4_DSC_ERR_POISON,
-		QDMA_CPM4_TRQ_ERR_UNMAPPED,
-		QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-		QDMA_CPM4_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_STAT_ADDR);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, QDMA_CPM4_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		j = hw_err_position[i];
-
-		if ((!dev_cap.st_en) &&
-			(j == QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH ||
-			j == QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH ||
-			j == QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_cpm4_err_info[j].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-				qdma_cpm4_err_info[j].stat_reg_addr,
-				err_stat);
-
-			qdma_cpm4_err_info[j].qdma_cpm4_hw_err_process(
-				dev_hndl);
-			for (idx = j;
-				idx < all_qdma_cpm4_hw_errs[i];
-				idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				qdma_cpm4_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						qdma_cpm4_hw_get_error_name(
-							idx));
-			}
-			qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[j].stat_reg_addr,
-				err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_CPM4_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum qdma_cpm4_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_CPM4_ERRS_ALL) {
-		for (i = 0;
-				i < QDMA_CPM4_TOTAL_LEAF_ERROR_AGGREGATORS;
-				i++) {
-
-			idx = all_qdma_cpm4_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_CPM4_ST_C2H_ERR_ALL ||
-					idx == QDMA_CPM4_ST_FATAL_ERR_ALL ||
-					idx == QDMA_CPM4_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_cpm4_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[idx].mask_reg_addr,
-					reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_CPM4_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				qdma_cpm4_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl,
-					QDMA_CPM4_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_CPM4_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_cpm4_err_info[err_idx].mask_reg_addr);
-		reg_val |=
-			FIELD_SET(qdma_cpm4_err_info[err_idx].leaf_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-				qdma_cpm4_err_info[err_idx].mask_reg_addr,
-						reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(
-				qdma_cpm4_err_info[err_idx].global_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-			QDMA_CPM4_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_get_device_attributes() - Function to get the qdma
- * device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_CPM4_GLBL2_PF_BARLITE_INT_ADDR);
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_CPM4_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs = (FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK,
-			reg_val));
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_CPM4_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = 0;
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_CPM4_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK,
-		reg_val)) ? 1 : 0;
-
-	/* num of mm channels for Versal Hard is 2 */
-	dev_info->mm_channel_max = 2;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 1;
-	dev_info->cmpt_ovf_chk_dis = 0;
-	dev_info->mailbox_intr = 0;
-	dev_info->sw_desc_64b = 0;
-	dev_info->cmpt_desc_64b = 0;
-	dev_info->dynamic_bar = 0;
-	dev_info->legacy_intr = 0;
-	dev_info->cmpt_trig_count_timer = 0;
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- * @ctxt    :	pointer to the context data
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_CPM4_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CPM4_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK,
-			cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_cpm4_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl    :	device handle
- * @c2h         :	is c2h queue
- * @hw_qid      :	hardware qid of the queue
- * @ctxt        :	pointer to the context data
- * @access_type :	HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_cpm4_credit_context_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_cpm4_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_cpm4_credit_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_dump_config_regs() - Function to get qdma config register
- * dump in a buffer
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @buf :	pointer to buffer to be filled
- * @buflen :	Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_cpm4_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n", __func__,
-					   -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_cpm4_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-					name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm4_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_cpm4_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm4_intr_context() - Function to get qdma interrupt
- * context dump in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	req_buflen = qdma_cpm4_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_cpm4_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @func_id:    function id
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_cpm4_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_cpm4_sw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_hw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_qid2vec_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.qid2vec),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read qid2vec context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_cpm4_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_cpm4_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_cpm4_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = qdma_cpm4_fmap_conf(dev_hndl, func_id,
-			&(context.fmap), QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s: Failed to read fmap context, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_cpm4_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_init_ctxt_memory() - Initialize the context for all queues
- *
- * @dev_hndl    :	device handle
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-
-int qdma_cpm4_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_info);
-	qdma_log_info("%s: clearing the context for all qs",
-			__func__);
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-
-#ifdef TANDEM_BOOT_SUPPORTED
-		for (; sel <=  QDMA_CTXT_SEL_CR_H2C; sel++) {
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#else
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    (sel == QDMA_CTXT_SEL_PFTCH ||
-				sel == QDMA_CTXT_SEL_CMPT)) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug(" sel = %d", sel);
-				continue;
-			}
-
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-#endif
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_cpm4_fmap_clear(dev_hndl, i);
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return 0;
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-/*****************************************************************************/
-/**
- * qdma_cpm4_init_st_ctxt() - Initialize the ST context
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_init_st_ctxt(void *dev_hndl)
-{
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_CMPT;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = qdma_cpm4_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-
-}
-#endif
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-
-	reg_info = qdma_cpm4_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_cpm4_config_regs_get();
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_cpm4_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	uint32_t num_regs = qdma_cpm4_config_num_regs_get();
-	struct xreg_info *reg_info = qdma_cpm4_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_slot) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_CPM4_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_ring_sizes() - set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl,
-			QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_ring_sizes() - function to get the
- *	global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl,
-			QDMA_CPM4_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_TIMER_CNT_1_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_counter_threshold() - get the counter
- *	threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_write_global_buffer_sizes(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_CPM4_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_cpm4_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_cpm4_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_cpm4_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_cpm4_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_cpm4_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_cpm4_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_cpm4_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_cpm4_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_write() -  function to set the
- * writeback interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_read() -  function to get the
- * writeback interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cpm4_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_CPM4_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv =
-		qdma_cpm4_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv =
-		qdma_cpm4_global_writeback_interval_write(dev_hndl,
-								*wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_cpm4_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cpm4_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_CPM4_C2H_CHANNEL_CTL_ADDR :
-			QDMA_CPM4_H2C_CHANNEL_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_cpm4_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_cpm4_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_cpm4_config_num_regs_get();
-	struct xreg_info *config_regs  = qdma_cpm4_config_regs_get();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
deleted file mode 100755
index cecb0d7..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_CPM4_ACCESS_H_
-#define __QDMA_CPM4_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_cpm4_error_idx {
-	/* Descriptor errors */
-	QDMA_CPM4_DSC_ERR_POISON,
-	QDMA_CPM4_DSC_ERR_UR_CA,
-	QDMA_CPM4_DSC_ERR_PARAM,
-	QDMA_CPM4_DSC_ERR_ADDR,
-	QDMA_CPM4_DSC_ERR_TAG,
-	QDMA_CPM4_DSC_ERR_FLR,
-	QDMA_CPM4_DSC_ERR_TIMEOUT,
-	QDMA_CPM4_DSC_ERR_DAT_POISON,
-	QDMA_CPM4_DSC_ERR_FLR_CANCEL,
-	QDMA_CPM4_DSC_ERR_DMA,
-	QDMA_CPM4_DSC_ERR_DSC,
-	QDMA_CPM4_DSC_ERR_RQ_CANCEL,
-	QDMA_CPM4_DSC_ERR_DBE,
-	QDMA_CPM4_DSC_ERR_SBE,
-	QDMA_CPM4_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_CPM4_TRQ_ERR_UNMAPPED,
-	QDMA_CPM4_TRQ_ERR_QID_RANGE,
-	QDMA_CPM4_TRQ_ERR_VF_ACCESS_ERR,
-	QDMA_CPM4_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_CPM4_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_CPM4_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_CPM4_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_CPM4_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_CPM4_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_CPM4_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_CPM4_ST_C2H_ERR_WRB_INV_Q_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_QFULL_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_CIDX_ERR,
-	QDMA_CPM4_ST_C2H_ERR_WRB_PRTY_ERR,
-	QDMA_CPM4_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_CPM4_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_CPM4_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_CPM4_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-	QDMA_CPM4_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_CPM4_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-	QDMA_CPM4_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-	QDMA_CPM4_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_CPM4_ST_H2C_ERR_DBE,
-	QDMA_CPM4_ST_H2C_ERR_SBE,
-	QDMA_CPM4_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_CPM4_SBE_ERR_MI_H2C0_DAT,
-	QDMA_CPM4_SBE_ERR_MI_C2H0_DAT,
-	QDMA_CPM4_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_CPM4_SBE_ERR_FUNC_MAP,
-	QDMA_CPM4_SBE_ERR_DSC_HW_CTXT,
-	QDMA_CPM4_SBE_ERR_DSC_CRD_RCV,
-	QDMA_CPM4_SBE_ERR_DSC_SW_CTXT,
-	QDMA_CPM4_SBE_ERR_DSC_CPLI,
-	QDMA_CPM4_SBE_ERR_DSC_CPLD,
-	QDMA_CPM4_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_QID_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_CPM4_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_CPM4_SBE_ERR_INT_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_CPM4_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_CPM4_SBE_ERR_PFCH_LL_RAM,
-	QDMA_CPM4_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_CPM4_DBE_ERR_MI_H2C0_DAT,
-	QDMA_CPM4_DBE_ERR_MI_C2H0_DAT,
-	QDMA_CPM4_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_CPM4_DBE_ERR_FUNC_MAP,
-	QDMA_CPM4_DBE_ERR_DSC_HW_CTXT,
-	QDMA_CPM4_DBE_ERR_DSC_CRD_RCV,
-	QDMA_CPM4_DBE_ERR_DSC_SW_CTXT,
-	QDMA_CPM4_DBE_ERR_DSC_CPLI,
-	QDMA_CPM4_DBE_ERR_DSC_CPLD,
-	QDMA_CPM4_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_QID_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_CPM4_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_CPM4_DBE_ERR_INT_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_CPM4_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_CPM4_DBE_ERR_PFCH_LL_RAM,
-	QDMA_CPM4_DBE_ERR_ALL,
-
-	QDMA_CPM4_ERRS_ALL
-};
-
-struct qdma_cpm4_hw_err_info {
-	enum qdma_cpm4_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_cpm4_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_cpm4_init_ctxt_memory(void *dev_hndl);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-int qdma_cpm4_init_st_ctxt(void *dev_hndl);
-#endif
-
-int qdma_cpm4_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_set_default_global_csr(void *dev_hndl);
-
-int qdma_cpm4_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_cpm4_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_cpm4_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int qdma_cpm4_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-uint32_t qdma_cpm4_reg_dump_buf_len(void);
-
-int qdma_cpm4_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen);
-
-int qdma_cpm4_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_hw_error_process(void *dev_hndl);
-const char *qdma_cpm4_hw_get_error_name(uint32_t err_idx);
-int qdma_cpm4_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_cpm4_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_read_dump_queue_context(void *dev_hndl,
-		uint16_t func_id,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_cpm4_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_cpm4_global_csr_conf(void *dev_hndl, uint8_t index,
-				uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cpm4_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_cpm4_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-				uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t qdma_cpm4_get_config_num_regs(void);
-
-struct xreg_info *qdma_cpm4_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_CPM4_ACCESS_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
deleted file mode 100755
index dee28b4..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg.h
+++ /dev/null
@@ -1,2046 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_CPM4_REG_H
-#define __QDMA_CPM4_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t qdma_cpm4_config_num_regs_get(void);
-struct xreg_info *qdma_cpm4_config_regs_get(void);
-#define QDMA_CPM4_CFG_BLK_IDENTIFIER_ADDR              0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_CFG_BLK_BUSDEV_ADDR                  0x04
-#define CFG_BLK_BUSDEV_BDF_MASK                            GENMASK(15, 0)
-#define QDMA_CPM4_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR       0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_MASK                    GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR  0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK               GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_SYSTEM_ID_ADDR               0x10
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define QDMA_CPM4_CFG_BLK_MSI_ENABLE_ADDR              0x014
-#define CFG_BLK_MSI_ENABLE_3_MASK                          BIT(17)
-#define CFG_BLK_MSI_ENABLE_MSIX3_MASK                      BIT(16)
-#define CFG_BLK_MSI_ENABLE_2_MASK                          BIT(13)
-#define CFG_BLK_MSI_ENABLE_MSIX2_MASK                      BIT(12)
-#define CFG_BLK_MSI_ENABLE_1_MASK                          BIT(9)
-#define CFG_BLK_MSI_ENABLE_MSIX1_MASK                      BIT(8)
-#define CFG_BLK_MSI_ENABLE_0_MASK                          BIT(1)
-#define CFG_BLK_MSI_ENABLE_MSIX0_MASK                      BIT(0)
-#define QDMA_CPM4_CFG_PCIE_DATA_WIDTH_ADDR             0x18
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define QDMA_CPM4_CFG_PCIE_CTL_ADDR                    0x1C
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define QDMA_CPM4_CFG_AXI_USER_MAX_PLD_SIZE_ADDR       0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define QDMA_CPM4_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR  0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define QDMA_CPM4_CFG_BLK_MISC_CTL_ADDR                0x4C
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_0_ADDR               0x80
-#define CFG_BLK_SCRATCH_0_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_1_ADDR               0x84
-#define CFG_BLK_SCRATCH_1_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_2_ADDR               0x88
-#define CFG_BLK_SCRATCH_2_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_3_ADDR               0x8C
-#define CFG_BLK_SCRATCH_3_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_4_ADDR               0x90
-#define CFG_BLK_SCRATCH_4_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_5_ADDR               0x94
-#define CFG_BLK_SCRATCH_5_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_6_ADDR               0x98
-#define CFG_BLK_SCRATCH_6_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_CFG_BLK_SCRATCH_7_ADDR               0x9C
-#define CFG_BLK_SCRATCH_7_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_SBE_MSK_A_ADDR                   0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_SBE_STS_A_ADDR                   0xF4
-#define RAM_SBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_SBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_SBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_CPM4_RAM_DBE_MSK_A_ADDR                   0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_RAM_DBE_STS_A_ADDR                   0xFC
-#define RAM_DBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_DBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_DBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL2_IDENTIFIER_ADDR                0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define QDMA_CPM4_GLBL2_PF_BARLITE_INT_ADDR            0x104
-#define GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_VF_BARLITE_INT_ADDR         0x108
-#define GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_BARLITE_EXT_ADDR            0x10C
-#define GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_PF_VF_BARLITE_EXT_ADDR         0x110
-#define GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_CHANNEL_INST_ADDR              0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_MDMA_ADDR              0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_STRM_ADDR              0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_CAP_ADDR               0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define QDMA_CPM4_GLBL2_CHANNEL_PASID_CAP_ADDR         0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 16)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK          GENMASK(15, 4)
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK                GENMASK(3, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define QDMA_CPM4_GLBL2_CHANNEL_FUNC_RET_ADDR          0x12C
-#define GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK                 GENMASK(31, 8)
-#define GLBL2_CHANNEL_FUNC_RET_FUNC_MASK                   GENMASK(7, 0)
-#define QDMA_CPM4_GLBL2_SYSTEM_ID_ADDR                 0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define QDMA_CPM4_GLBL2_MISC_CAP_ADDR                  0x134
-#define GLBL2_MISC_CAP_RSVD_1_MASK                         GENMASK(31, 0)
-#define QDMA_CPM4_GLBL2_DBG_PCIE_RQ0_ADDR              0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 10)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(9, 4)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(3, 2)
-#define GLBL2_PCIE_RQ0_TAG_FL_MASK                     GENMASK(1, 0)
-#define QDMA_CPM4_GLBL2_DBG_PCIE_RQ1_ADDR              0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 17)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(16)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(15)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(14)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(13)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(12)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(8, 6)
-#define GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK               BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK               BIT(2)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(1)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_WR0_ADDR             0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_WR1_ADDR             0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_RD0_ADDR             0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(16, 14)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define QDMA_CPM4_GLBL2_DBG_AXIMM_RD1_ADDR             0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_1_ADDR                   0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_2_ADDR                   0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_3_ADDR                   0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_4_ADDR                   0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_5_ADDR                   0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_6_ADDR                   0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_7_ADDR                   0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_8_ADDR                   0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_9_ADDR                   0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_A_ADDR                   0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_B_ADDR                   0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_C_ADDR                   0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_D_ADDR                   0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_E_ADDR                   0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_F_ADDR                   0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_RNG_SZ_10_ADDR                  0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_ERR_STAT_ADDR                   0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 12)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(11)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(10)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                BIT(9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL_ERR_MASK_ADDR                   0x24C
-#define GLBL_ERR_RSVD_1_MASK                          GENMASK(31, 9)
-#define GLBL_ERR_MASK                            GENMASK(8, 0)
-#define QDMA_CPM4_GLBL_DSC_CFG_ADDR                    0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_STS_ADDR                0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(5)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(4)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(1)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(0)
-#define QDMA_CPM4_GLBL_DSC_ERR_MSK_ADDR                0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(8, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_LOG0_ADDR               0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(30, 29)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(28, 17)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(16)
-#define GLBL_DSC_ERR_LOG0_CIDX_MASK                        GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_DSC_ERR_LOG1_ADDR               0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_STS_ADDR                0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 4)
-#define GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK                  BIT(3)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(2)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(1)
-#define GLBL_TRQ_ERR_STS_UNMAPPED_MASK                     BIT(0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_MSK_ADDR                0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define QDMA_CPM4_GLBL_TRQ_ERR_LOG_ADDR                0x26C
-#define GLBL_TRQ_ERR_LOG_RSVD_1_MASK                       GENMASK(31, 28)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(27, 24)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(23, 16)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_GLBL_DSC_DBG_DAT0_ADDR               0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define QDMA_CPM4_GLBL_DSC_DBG_DAT1_ADDR               0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_0_ADDR                  0x400
-#define TRQ_SEL_FMAP_0_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_0_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_0_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1_ADDR                  0x404
-#define TRQ_SEL_FMAP_1_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2_ADDR                  0x408
-#define TRQ_SEL_FMAP_2_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3_ADDR                  0x40C
-#define TRQ_SEL_FMAP_3_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4_ADDR                  0x410
-#define TRQ_SEL_FMAP_4_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5_ADDR                  0x414
-#define TRQ_SEL_FMAP_5_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6_ADDR                  0x418
-#define TRQ_SEL_FMAP_6_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7_ADDR                  0x41C
-#define TRQ_SEL_FMAP_7_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8_ADDR                  0x420
-#define TRQ_SEL_FMAP_8_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9_ADDR                  0x424
-#define TRQ_SEL_FMAP_9_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A_ADDR                  0x428
-#define TRQ_SEL_FMAP_A_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B_ADDR                  0x42C
-#define TRQ_SEL_FMAP_B_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D_ADDR                  0x430
-#define TRQ_SEL_FMAP_D_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E_ADDR                  0x434
-#define TRQ_SEL_FMAP_E_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_F_ADDR                  0x438
-#define TRQ_SEL_FMAP_F_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_10_ADDR                 0x43C
-#define TRQ_SEL_FMAP_10_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_10_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_10_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_11_ADDR                 0x440
-#define TRQ_SEL_FMAP_11_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_11_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_11_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_12_ADDR                 0x444
-#define TRQ_SEL_FMAP_12_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_12_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_12_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_13_ADDR                 0x448
-#define TRQ_SEL_FMAP_13_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_13_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_13_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_14_ADDR                 0x44C
-#define TRQ_SEL_FMAP_14_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_14_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_14_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_15_ADDR                 0x450
-#define TRQ_SEL_FMAP_15_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_15_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_15_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_16_ADDR                 0x454
-#define TRQ_SEL_FMAP_16_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_16_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_16_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_17_ADDR                 0x458
-#define TRQ_SEL_FMAP_17_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_17_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_17_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_18_ADDR                 0x45C
-#define TRQ_SEL_FMAP_18_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_18_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_18_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_19_ADDR                 0x460
-#define TRQ_SEL_FMAP_19_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_19_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_19_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1A_ADDR                 0x464
-#define TRQ_SEL_FMAP_1A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1B_ADDR                 0x468
-#define TRQ_SEL_FMAP_1B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1C_ADDR                 0x46C
-#define TRQ_SEL_FMAP_1C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1D_ADDR                 0x470
-#define TRQ_SEL_FMAP_1D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1E_ADDR                 0x474
-#define TRQ_SEL_FMAP_1E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_1F_ADDR                 0x478
-#define TRQ_SEL_FMAP_1F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_20_ADDR                 0x47C
-#define TRQ_SEL_FMAP_20_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_20_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_20_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_21_ADDR                 0x480
-#define TRQ_SEL_FMAP_21_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_21_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_21_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_22_ADDR                 0x484
-#define TRQ_SEL_FMAP_22_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_22_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_22_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_23_ADDR                 0x488
-#define TRQ_SEL_FMAP_23_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_23_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_23_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_24_ADDR                 0x48C
-#define TRQ_SEL_FMAP_24_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_24_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_24_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_25_ADDR                 0x490
-#define TRQ_SEL_FMAP_25_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_25_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_25_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_26_ADDR                 0x494
-#define TRQ_SEL_FMAP_26_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_26_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_26_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_27_ADDR                 0x498
-#define TRQ_SEL_FMAP_27_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_27_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_27_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_28_ADDR                 0x49C
-#define TRQ_SEL_FMAP_28_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_28_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_28_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_29_ADDR                 0x4A0
-#define TRQ_SEL_FMAP_29_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_29_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_29_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2A_ADDR                 0x4A4
-#define TRQ_SEL_FMAP_2A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2B_ADDR                 0x4A8
-#define TRQ_SEL_FMAP_2B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2C_ADDR                 0x4AC
-#define TRQ_SEL_FMAP_2C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2D_ADDR                 0x4B0
-#define TRQ_SEL_FMAP_2D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2E_ADDR                 0x4B4
-#define TRQ_SEL_FMAP_2E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_2F_ADDR                 0x4B8
-#define TRQ_SEL_FMAP_2F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_30_ADDR                 0x4BC
-#define TRQ_SEL_FMAP_30_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_30_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_30_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_31_ADDR                 0x4D0
-#define TRQ_SEL_FMAP_31_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_31_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_31_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_32_ADDR                 0x4D4
-#define TRQ_SEL_FMAP_32_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_32_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_32_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_33_ADDR                 0x4D8
-#define TRQ_SEL_FMAP_33_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_33_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_33_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_34_ADDR                 0x4DC
-#define TRQ_SEL_FMAP_34_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_34_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_34_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_35_ADDR                 0x4E0
-#define TRQ_SEL_FMAP_35_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_35_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_35_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_36_ADDR                 0x4E4
-#define TRQ_SEL_FMAP_36_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_36_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_36_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_37_ADDR                 0x4E8
-#define TRQ_SEL_FMAP_37_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_37_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_37_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_38_ADDR                 0x4EC
-#define TRQ_SEL_FMAP_38_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_38_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_38_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_39_ADDR                 0x4F0
-#define TRQ_SEL_FMAP_39_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_39_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_39_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3A_ADDR                 0x4F4
-#define TRQ_SEL_FMAP_3A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3B_ADDR                 0x4F8
-#define TRQ_SEL_FMAP_3B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3C_ADDR                 0x4FC
-#define TRQ_SEL_FMAP_3C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3D_ADDR                 0x500
-#define TRQ_SEL_FMAP_3D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3E_ADDR                 0x504
-#define TRQ_SEL_FMAP_3E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_3F_ADDR                 0x508
-#define TRQ_SEL_FMAP_3F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_40_ADDR                 0x50C
-#define TRQ_SEL_FMAP_40_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_40_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_40_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_41_ADDR                 0x510
-#define TRQ_SEL_FMAP_41_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_41_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_41_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_42_ADDR                 0x514
-#define TRQ_SEL_FMAP_42_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_42_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_42_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_43_ADDR                 0x518
-#define TRQ_SEL_FMAP_43_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_43_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_43_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_44_ADDR                 0x51C
-#define TRQ_SEL_FMAP_44_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_44_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_44_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_45_ADDR                 0x520
-#define TRQ_SEL_FMAP_45_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_45_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_45_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_46_ADDR                 0x524
-#define TRQ_SEL_FMAP_46_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_46_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_46_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_47_ADDR                 0x528
-#define TRQ_SEL_FMAP_47_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_47_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_47_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_48_ADDR                 0x52C
-#define TRQ_SEL_FMAP_48_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_48_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_48_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_49_ADDR                 0x530
-#define TRQ_SEL_FMAP_49_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_49_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_49_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4A_ADDR                 0x534
-#define TRQ_SEL_FMAP_4A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4B_ADDR                 0x538
-#define TRQ_SEL_FMAP_4B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4C_ADDR                 0x53C
-#define TRQ_SEL_FMAP_4C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4D_ADDR                 0x540
-#define TRQ_SEL_FMAP_4D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4E_ADDR                 0x544
-#define TRQ_SEL_FMAP_4E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_4F_ADDR                 0x548
-#define TRQ_SEL_FMAP_4F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_50_ADDR                 0x54C
-#define TRQ_SEL_FMAP_50_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_50_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_50_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_51_ADDR                 0x550
-#define TRQ_SEL_FMAP_51_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_51_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_51_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_52_ADDR                 0x554
-#define TRQ_SEL_FMAP_52_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_52_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_52_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_53_ADDR                 0x558
-#define TRQ_SEL_FMAP_53_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_53_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_53_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_54_ADDR                 0x55C
-#define TRQ_SEL_FMAP_54_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_54_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_54_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_55_ADDR                 0x560
-#define TRQ_SEL_FMAP_55_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_55_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_55_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_56_ADDR                 0x564
-#define TRQ_SEL_FMAP_56_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_56_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_56_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_57_ADDR                 0x568
-#define TRQ_SEL_FMAP_57_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_57_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_57_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_58_ADDR                 0x56C
-#define TRQ_SEL_FMAP_58_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_58_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_58_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_59_ADDR                 0x570
-#define TRQ_SEL_FMAP_59_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_59_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_59_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5A_ADDR                 0x574
-#define TRQ_SEL_FMAP_5A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5B_ADDR                 0x578
-#define TRQ_SEL_FMAP_5B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5C_ADDR                 0x57C
-#define TRQ_SEL_FMAP_5C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5D_ADDR                 0x580
-#define TRQ_SEL_FMAP_5D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5E_ADDR                 0x584
-#define TRQ_SEL_FMAP_5E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_5F_ADDR                 0x588
-#define TRQ_SEL_FMAP_5F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_60_ADDR                 0x58C
-#define TRQ_SEL_FMAP_60_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_60_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_60_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_61_ADDR                 0x590
-#define TRQ_SEL_FMAP_61_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_61_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_61_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_62_ADDR                 0x594
-#define TRQ_SEL_FMAP_62_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_62_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_62_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_63_ADDR                 0x598
-#define TRQ_SEL_FMAP_63_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_63_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_63_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_64_ADDR                 0x59C
-#define TRQ_SEL_FMAP_64_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_64_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_64_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_65_ADDR                 0x5A0
-#define TRQ_SEL_FMAP_65_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_65_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_65_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_66_ADDR                 0x5A4
-#define TRQ_SEL_FMAP_66_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_66_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_66_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_67_ADDR                 0x5A8
-#define TRQ_SEL_FMAP_67_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_67_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_67_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_68_ADDR                 0x5AC
-#define TRQ_SEL_FMAP_68_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_68_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_68_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_69_ADDR                 0x5B0
-#define TRQ_SEL_FMAP_69_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_69_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_69_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6A_ADDR                 0x5B4
-#define TRQ_SEL_FMAP_6A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6B_ADDR                 0x5B8
-#define TRQ_SEL_FMAP_6B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6C_ADDR                 0x5BC
-#define TRQ_SEL_FMAP_6C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6D_ADDR                 0x5C0
-#define TRQ_SEL_FMAP_6D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6E_ADDR                 0x5C4
-#define TRQ_SEL_FMAP_6E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_6F_ADDR                 0x5C8
-#define TRQ_SEL_FMAP_6F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_70_ADDR                 0x5CC
-#define TRQ_SEL_FMAP_70_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_70_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_70_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_71_ADDR                 0x5D0
-#define TRQ_SEL_FMAP_71_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_71_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_71_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_72_ADDR                 0x5D4
-#define TRQ_SEL_FMAP_72_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_72_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_72_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_73_ADDR                 0x5D8
-#define TRQ_SEL_FMAP_73_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_73_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_73_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_74_ADDR                 0x5DC
-#define TRQ_SEL_FMAP_74_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_74_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_74_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_75_ADDR                 0x5E0
-#define TRQ_SEL_FMAP_75_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_75_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_75_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_76_ADDR                 0x5E4
-#define TRQ_SEL_FMAP_76_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_76_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_76_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_77_ADDR                 0x5E8
-#define TRQ_SEL_FMAP_77_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_77_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_77_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_78_ADDR                 0x5EC
-#define TRQ_SEL_FMAP_78_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_78_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_78_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_79_ADDR                 0x5F0
-#define TRQ_SEL_FMAP_79_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_79_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_79_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7A_ADDR                 0x5F4
-#define TRQ_SEL_FMAP_7A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7B_ADDR                 0x5F8
-#define TRQ_SEL_FMAP_7B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7C_ADDR                 0x5FC
-#define TRQ_SEL_FMAP_7C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7D_ADDR                 0x600
-#define TRQ_SEL_FMAP_7D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7E_ADDR                 0x604
-#define TRQ_SEL_FMAP_7E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_7F_ADDR                 0x608
-#define TRQ_SEL_FMAP_7F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_80_ADDR                 0x60C
-#define TRQ_SEL_FMAP_80_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_80_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_80_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_81_ADDR                 0x610
-#define TRQ_SEL_FMAP_81_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_81_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_81_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_82_ADDR                 0x614
-#define TRQ_SEL_FMAP_82_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_82_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_82_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_83_ADDR                 0x618
-#define TRQ_SEL_FMAP_83_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_83_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_83_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_84_ADDR                 0x61C
-#define TRQ_SEL_FMAP_84_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_84_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_84_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_85_ADDR                 0x620
-#define TRQ_SEL_FMAP_85_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_85_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_85_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_86_ADDR                 0x624
-#define TRQ_SEL_FMAP_86_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_86_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_86_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_87_ADDR                 0x628
-#define TRQ_SEL_FMAP_87_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_87_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_87_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_88_ADDR                 0x62C
-#define TRQ_SEL_FMAP_88_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_88_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_88_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_89_ADDR                 0x630
-#define TRQ_SEL_FMAP_89_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_89_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_89_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8A_ADDR                 0x634
-#define TRQ_SEL_FMAP_8A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8B_ADDR                 0x638
-#define TRQ_SEL_FMAP_8B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8C_ADDR                 0x63C
-#define TRQ_SEL_FMAP_8C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8D_ADDR                 0x640
-#define TRQ_SEL_FMAP_8D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8E_ADDR                 0x644
-#define TRQ_SEL_FMAP_8E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_8F_ADDR                 0x648
-#define TRQ_SEL_FMAP_8F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_90_ADDR                 0x64C
-#define TRQ_SEL_FMAP_90_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_90_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_90_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_91_ADDR                 0x650
-#define TRQ_SEL_FMAP_91_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_91_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_91_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_92_ADDR                 0x654
-#define TRQ_SEL_FMAP_92_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_92_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_92_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_93_ADDR                 0x658
-#define TRQ_SEL_FMAP_93_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_93_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_93_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_94_ADDR                 0x65C
-#define TRQ_SEL_FMAP_94_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_94_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_94_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_95_ADDR                 0x660
-#define TRQ_SEL_FMAP_95_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_95_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_95_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_96_ADDR                 0x664
-#define TRQ_SEL_FMAP_96_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_96_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_96_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_97_ADDR                 0x668
-#define TRQ_SEL_FMAP_97_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_97_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_97_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_98_ADDR                 0x66C
-#define TRQ_SEL_FMAP_98_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_98_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_98_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_99_ADDR                 0x670
-#define TRQ_SEL_FMAP_99_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_99_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_99_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9A_ADDR                 0x674
-#define TRQ_SEL_FMAP_9A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9B_ADDR                 0x678
-#define TRQ_SEL_FMAP_9B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9C_ADDR                 0x67C
-#define TRQ_SEL_FMAP_9C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9D_ADDR                 0x680
-#define TRQ_SEL_FMAP_9D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9E_ADDR                 0x684
-#define TRQ_SEL_FMAP_9E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_9F_ADDR                 0x688
-#define TRQ_SEL_FMAP_9F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A0_ADDR                 0x68C
-#define TRQ_SEL_FMAP_A0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A1_ADDR                 0x690
-#define TRQ_SEL_FMAP_A1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A2_ADDR                 0x694
-#define TRQ_SEL_FMAP_A2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A3_ADDR                 0x698
-#define TRQ_SEL_FMAP_A3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A4_ADDR                 0x69C
-#define TRQ_SEL_FMAP_A4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A5_ADDR                 0x6A0
-#define TRQ_SEL_FMAP_A5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A6_ADDR                 0x6A4
-#define TRQ_SEL_FMAP_A6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A7_ADDR                 0x6A8
-#define TRQ_SEL_FMAP_A7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A8_ADDR                 0x6AC
-#define TRQ_SEL_FMAP_A8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_A9_ADDR                 0x6B0
-#define TRQ_SEL_FMAP_A9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AA_ADDR                 0x6B4
-#define TRQ_SEL_FMAP_AA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AB_ADDR                 0x6B8
-#define TRQ_SEL_FMAP_AB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AC_ADDR                 0x6BC
-#define TRQ_SEL_FMAP_AC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AD_ADDR                 0x6D0
-#define TRQ_SEL_FMAP_AD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AE_ADDR                 0x6D4
-#define TRQ_SEL_FMAP_AE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_AF_ADDR                 0x6D8
-#define TRQ_SEL_FMAP_AF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B0_ADDR                 0x6DC
-#define TRQ_SEL_FMAP_B0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B1_ADDR                 0x6E0
-#define TRQ_SEL_FMAP_B1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B2_ADDR                 0x6E4
-#define TRQ_SEL_FMAP_B2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B3_ADDR                 0x6E8
-#define TRQ_SEL_FMAP_B3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B4_ADDR                 0x6EC
-#define TRQ_SEL_FMAP_B4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B5_ADDR                 0x6F0
-#define TRQ_SEL_FMAP_B5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B6_ADDR                 0x6F4
-#define TRQ_SEL_FMAP_B6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B7_ADDR                 0x6F8
-#define TRQ_SEL_FMAP_B7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B8_ADDR                 0x6FC
-#define TRQ_SEL_FMAP_B8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_B9_ADDR                 0x700
-#define TRQ_SEL_FMAP_B9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BA_ADDR                 0x704
-#define TRQ_SEL_FMAP_BA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BB_ADDR                 0x708
-#define TRQ_SEL_FMAP_BB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BC_ADDR                 0x70C
-#define TRQ_SEL_FMAP_BC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BD_ADDR                 0x710
-#define TRQ_SEL_FMAP_BD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BE_ADDR                 0x714
-#define TRQ_SEL_FMAP_BE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_BF_ADDR                 0x718
-#define TRQ_SEL_FMAP_BF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C0_ADDR                 0x71C
-#define TRQ_SEL_FMAP_C0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C1_ADDR                 0x720
-#define TRQ_SEL_FMAP_C1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C2_ADDR                 0x734
-#define TRQ_SEL_FMAP_C2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C3_ADDR                 0x748
-#define TRQ_SEL_FMAP_C3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C4_ADDR                 0x74C
-#define TRQ_SEL_FMAP_C4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C5_ADDR                 0x750
-#define TRQ_SEL_FMAP_C5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C6_ADDR                 0x754
-#define TRQ_SEL_FMAP_C6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C7_ADDR                 0x758
-#define TRQ_SEL_FMAP_C7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C8_ADDR                 0x75C
-#define TRQ_SEL_FMAP_C8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_C9_ADDR                 0x760
-#define TRQ_SEL_FMAP_C9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CA_ADDR                 0x764
-#define TRQ_SEL_FMAP_CA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CB_ADDR                 0x768
-#define TRQ_SEL_FMAP_CB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CC_ADDR                 0x76C
-#define TRQ_SEL_FMAP_CC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CD_ADDR                 0x770
-#define TRQ_SEL_FMAP_CD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CE_ADDR                 0x774
-#define TRQ_SEL_FMAP_CE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_CF_ADDR                 0x778
-#define TRQ_SEL_FMAP_CF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D0_ADDR                 0x77C
-#define TRQ_SEL_FMAP_D0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D1_ADDR                 0x780
-#define TRQ_SEL_FMAP_D1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D2_ADDR                 0x784
-#define TRQ_SEL_FMAP_D2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D3_ADDR                 0x788
-#define TRQ_SEL_FMAP_D3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D4_ADDR                 0x78C
-#define TRQ_SEL_FMAP_D4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D5_ADDR                 0x790
-#define TRQ_SEL_FMAP_D5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D6_ADDR                 0x794
-#define TRQ_SEL_FMAP_D6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D7_ADDR                 0x798
-#define TRQ_SEL_FMAP_D7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D8_ADDR                 0x79C
-#define TRQ_SEL_FMAP_D8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_D9_ADDR                 0x7A0
-#define TRQ_SEL_FMAP_D9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DA_ADDR                 0x7A4
-#define TRQ_SEL_FMAP_DA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DB_ADDR                 0x7A8
-#define TRQ_SEL_FMAP_DB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DC_ADDR                 0x7AC
-#define TRQ_SEL_FMAP_DC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DD_ADDR                 0x7B0
-#define TRQ_SEL_FMAP_DD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DE_ADDR                 0x7B4
-#define TRQ_SEL_FMAP_DE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_DF_ADDR                 0x7B8
-#define TRQ_SEL_FMAP_DF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E0_ADDR                 0x7BC
-#define TRQ_SEL_FMAP_E0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E1_ADDR                 0x7C0
-#define TRQ_SEL_FMAP_E1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E2_ADDR                 0x7C4
-#define TRQ_SEL_FMAP_E2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E3_ADDR                 0x7C8
-#define TRQ_SEL_FMAP_E3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E4_ADDR                 0x7CC
-#define TRQ_SEL_FMAP_E4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E5_ADDR                 0x7D0
-#define TRQ_SEL_FMAP_E5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E6_ADDR                 0x7D4
-#define TRQ_SEL_FMAP_E6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E7_ADDR                 0x7D8
-#define TRQ_SEL_FMAP_E7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E8_ADDR                 0x7DC
-#define TRQ_SEL_FMAP_E8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_E9_ADDR                 0x7E0
-#define TRQ_SEL_FMAP_E9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EA_ADDR                 0x7E4
-#define TRQ_SEL_FMAP_EA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EB_ADDR                 0x7E8
-#define TRQ_SEL_FMAP_EB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EC_ADDR                 0x7EC
-#define TRQ_SEL_FMAP_EC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_ED_ADDR                 0x7F0
-#define TRQ_SEL_FMAP_ED_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_ED_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_ED_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EE_ADDR                 0x7F4
-#define TRQ_SEL_FMAP_EE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_EF_ADDR                 0x7F8
-#define TRQ_SEL_FMAP_EF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_TRQ_SEL_FMAP_F0_ADDR                 0x7FC
-#define TRQ_SEL_FMAP_F0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_3_ADDR                 0x804
-#define IND_CTXT_DATA_3_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_2_ADDR                 0x808
-#define IND_CTXT_DATA_2_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_1_ADDR                 0x80C
-#define IND_CTXT_DATA_1_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_DATA_0_ADDR                 0x810
-#define IND_CTXT_DATA_0_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT3_ADDR                       0x814
-#define IND_CTXT3_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT2_ADDR                       0x818
-#define IND_CTXT2_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT1_ADDR                       0x81C
-#define IND_CTXT1_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT0_ADDR                       0x820
-#define IND_CTXT0_MASK                                GENMASK(31, 0)
-#define QDMA_CPM4_IND_CTXT_CMD_ADDR                    0x824
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 18)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(17, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SET_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define QDMA_CPM4_C2H_TIMER_CNT_1_ADDR                 0xA00
-#define C2H_TIMER_CNT_1_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_1_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_2_ADDR                 0xA04
-#define C2H_TIMER_CNT_2_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_2_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_3_ADDR                 0xA08
-#define C2H_TIMER_CNT_3_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_3_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_4_ADDR                 0xA0C
-#define C2H_TIMER_CNT_4_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_4_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_5_ADDR                 0xA10
-#define C2H_TIMER_CNT_5_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_5_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_6_ADDR                 0xA14
-#define C2H_TIMER_CNT_6_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_6_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_7_ADDR                 0xA18
-#define C2H_TIMER_CNT_7_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_7_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_8_ADDR                 0xA1C
-#define C2H_TIMER_CNT_8_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_8_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_9_ADDR                 0xA20
-#define C2H_TIMER_CNT_9_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_9_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_A_ADDR                 0xA24
-#define C2H_TIMER_CNT_A_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_A_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_B_ADDR                 0xA28
-#define C2H_TIMER_CNT_B_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_B_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_C_ADDR                 0xA2C
-#define C2H_TIMER_CNT_C_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_C_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_D_ADDR                 0xA30
-#define C2H_TIMER_CNT_D_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_D_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_E_ADDR                 0xA34
-#define C2H_TIMER_CNT_E_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_E_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_F_ADDR                 0xA38
-#define C2H_TIMER_CNT_F_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_F_MASK                              GENMASK(7, 0)
-#define QDMA_CPM4_C2H_TIMER_CNT_10_ADDR                0xA3C
-#define C2H_TIMER_CNT_10_RSVD_1_MASK                       GENMASK(31, 8)
-#define C2H_TIMER_CNT_10_MASK                             GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_1_ADDR                    0xA40
-#define C2H_CNT_TH_1_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_1_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_2_ADDR                    0xA44
-#define C2H_CNT_TH_2_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_2_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_3_ADDR                    0xA48
-#define C2H_CNT_TH_3_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_3_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_4_ADDR                    0xA4C
-#define C2H_CNT_TH_4_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_4_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_5_ADDR                    0xA50
-#define C2H_CNT_TH_5_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_5_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_6_ADDR                    0xA54
-#define C2H_CNT_TH_6_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_6_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_7_ADDR                    0xA58
-#define C2H_CNT_TH_7_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_7_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_8_ADDR                    0xA5C
-#define C2H_CNT_TH_8_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_8_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_9_ADDR                    0xA60
-#define C2H_CNT_TH_9_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_9_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_A_ADDR                    0xA64
-#define C2H_CNT_TH_A_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_A_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_B_ADDR                    0xA68
-#define C2H_CNT_TH_B_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_B_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_C_ADDR                    0xA6C
-#define C2H_CNT_TH_C_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_C_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_D_ADDR                    0xA70
-#define C2H_CNT_TH_D_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_D_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_E_ADDR                    0xA74
-#define C2H_CNT_TH_E_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_E_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_F_ADDR                    0xA78
-#define C2H_CNT_TH_F_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_F_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_CPM4_C2H_CNT_TH_10_ADDR                   0xA7C
-#define C2H_CNT_TH_10_RSVD_1_MASK                          GENMASK(31, 8)
-#define C2H_CNT_TH_10_THESHOLD_CNT_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_C2H_QID2VEC_MAP_QID_ADDR             0xA80
-#define C2H_QID2VEC_MAP_QID_RSVD_1_MASK                    GENMASK(31, 11)
-#define C2H_QID2VEC_MAP_QID_QID_MASK                       GENMASK(10, 0)
-#define QDMA_CPM4_C2H_QID2VEC_MAP_ADDR                 0xA84
-#define C2H_QID2VEC_MAP_RSVD_1_MASK                        GENMASK(31, 19)
-#define C2H_QID2VEC_MAP_H2C_EN_COAL_MASK                   BIT(18)
-#define C2H_QID2VEC_MAP_H2C_VECTOR_MASK                    GENMASK(17, 9)
-#define C2H_QID2VEC_MAP_C2H_EN_COAL_MASK                   BIT(8)
-#define C2H_QID2VEC_MAP_C2H_VECTOR_MASK                    GENMASK(7, 0)
-#define QDMA_CPM4_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR    0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR    0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR  0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_AXIS_PKG_CMP_ADDR           0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_ACCEPTED_ADDR      0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_CMP_ADDR           0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_WRQ_OUT_ADDR                0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_WPL_REN_ACCEPTED_ADDR       0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_TOTAL_WRQ_LEN_ADDR          0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_TOTAL_WPL_LEN_ADDR          0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_0_ADDR                    0xAB0
-#define C2H_BUF_SZ_0_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_1_ADDR                    0xAB4
-#define C2H_BUF_SZ_1_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_2_ADDR                    0xAB8
-#define C2H_BUF_SZ_2_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_3_ADDR                    0xABC
-#define C2H_BUF_SZ_3_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_4_ADDR                    0xAC0
-#define C2H_BUF_SZ_4_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_5_ADDR                    0xAC4
-#define C2H_BUF_SZ_5_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_7_ADDR                    0XAC8
-#define C2H_BUF_SZ_7_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_8_ADDR                    0XACC
-#define C2H_BUF_SZ_8_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_9_ADDR                    0xAD0
-#define C2H_BUF_SZ_9_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_10_ADDR                   0xAD4
-#define C2H_BUF_SZ_10_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_11_ADDR                   0xAD8
-#define C2H_BUF_SZ_11_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_12_ADDR                   0xAE0
-#define C2H_BUF_SZ_12_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_13_ADDR                   0xAE4
-#define C2H_BUF_SZ_13_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_14_ADDR                   0xAE8
-#define C2H_BUF_SZ_14_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_BUF_SZ_15_ADDR                   0XAEC
-#define C2H_BUF_SZ_15_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_ERR_STAT_ADDR                    0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK          BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define QDMA_CPM4_C2H_ERR_MASK_ADDR                    0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_C2H_FATAL_ERR_STAT_ADDR              0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK        BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK       BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RSVD_2_MASK                     BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define QDMA_CPM4_C2H_FATAL_ERR_MASK_ADDR              0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define QDMA_CPM4_C2H_FATAL_ERR_ENABLE_ADDR            0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define QDMA_CPM4_GLBL_ERR_INT_ADDR                    0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 18)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(17)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(16)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(15, 8)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(7, 0)
-#define QDMA_CPM4_C2H_PFCH_CFG_ADDR                    0xB08
-#define C2H_PFCH_CFG_EVT_QCNT_TH_MASK                      GENMASK(31, 25)
-#define C2H_PFCH_CFG_QCNT_MASK                             GENMASK(24, 16)
-#define C2H_PFCH_CFG_NUM_MASK                              GENMASK(15, 8)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(7, 0)
-#define QDMA_CPM4_C2H_INT_TIMER_TICK_ADDR              0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR 0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR  0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DESC_REQ_ADDR               0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_0_ADDR          0xB1C
-#define C2H_STAT_DMA_ENG_0_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(30, 28)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK       GENMASK(27, 18)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 8)
-#define C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_1_ADDR          0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK          BIT(30)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK        GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_2_ADDR          0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_3_ADDR          0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK        GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_ERR_CTXT_ADDR           0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define QDMA_CPM4_C2H_FIRST_ERR_QID_ADDR               0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_STAT_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_CMD_WR_MASK                      GENMASK(15, 12)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_IN_ADDR                 0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_OUT_ADDR                0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_WRB_DRP_ADDR                0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_STAT_DESC_OUT_ADDR          0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_DSC_CRDT_SENT_ADDR          0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_FCH_DSC_RCVD_ADDR           0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define QDMA_CPM4_STAT_NUM_BYP_DSC_RCVD_ADDR           0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define QDMA_CPM4_C2H_WRB_COAL_CFG_ADDR                0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define QDMA_CPM4_C2H_INTR_H2C_REQ_ADDR                0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_MM_REQ_ADDR             0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_ERR_INT_REQ_ADDR            0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_REQ_ADDR             0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR 0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR 0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR 0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR 0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_MSIX_ACK_ADDR        0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR       0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_NO_MSIX_ADDR         0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define QDMA_CPM4_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR      0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_WR_CMP_ADDR                 0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_4_ADDR          0xB88
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK     BIT(31)
-#define C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK        BIT(30)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK  GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK     GENMASK(9, 0)
-#define QDMA_CPM4_C2H_STAT_DBG_DMA_ENG_5_ADDR          0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 25)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK     BIT(24)
-#define C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK      BIT(23)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK      GENMASK(22, 13)
-#define C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK   GENMASK(12, 3)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK         GENMASK(2, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_QID_ADDR                0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 15)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(14)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(13, 11)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(10, 0)
-#define QDMA_CPM4_C2H_DBG_PFCH_ADDR                    0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define QDMA_CPM4_C2H_INT_DBG_ADDR                     0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define QDMA_CPM4_C2H_STAT_IMM_ACCEPTED_ADDR           0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_MARKER_ACCEPTED_ADDR        0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_CPM4_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR   0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define QDMA_CPM4_C2H_PLD_FIFO_CRDT_CNT_ADDR           0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_CPM4_H2C_ERR_STAT_ADDR                    0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define QDMA_CPM4_H2C_ERR_MASK_ADDR                    0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_CPM4_H2C_FIRST_ERR_QID_ADDR               0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 12)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_CPM4_H2C_DBG_REG0_ADDR                    0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG1_ADDR                    0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG2_ADDR                    0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define QDMA_CPM4_H2C_DBG_REG3_ADDR                    0xE18
-#define H2C_REG3_MASK                              BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define QDMA_CPM4_H2C_DBG_REG4_ADDR                    0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define QDMA_CPM4_H2C_FATAL_ERR_EN_ADDR                0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CTL_ADDR                 0x1004
-#define C2H_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CTL_1_ADDR               0x1008
-#define C2H_CHANNEL_CTL_1_RUN_MASK                         GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_1_RUN_1_MASK                       BIT(0)
-#define QDMA_CPM4_C2H_MM_STATUS_ADDR                   0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_CPM4_C2H_CHANNEL_CMPL_DESC_CNT_ADDR       0x1048
-#define C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK            BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define QDMA_CPM4_C2H_MM_ERR_CODE_ADDR                 0x1058
-#define C2H_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define C2H_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_CPM4_C2H_MM_ERR_INFO_ADDR                 0x105C
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define C2H_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define C2H_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CTL_ADDR             0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR      0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR      0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_DATA_CNT0_ADDR       0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_CPM4_C2H_MM_PERF_MON_DATA_CNT1_ADDR       0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_CPM4_C2H_MM_DBG_ADDR                      0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_ADDR                 0x1204
-#define H2C_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define H2C_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_1_ADDR               0x1208
-#define H2C_CHANNEL_CTL_1_RUN_MASK                         BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CTL_2_ADDR               0x120C
-#define H2C_CHANNEL_CTL_2_RUN_MASK                         BIT(0)
-#define QDMA_CPM4_H2C_MM_STATUS_ADDR                   0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_CPM4_H2C_CHANNEL_CMPL_DESC_CNT_ADDR       0x1248
-#define H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK              GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK            GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK            GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK            GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK            GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK            BIT(0)
-#define QDMA_CPM4_H2C_MM_ERR_CODE_ADDR                 0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define H2C_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define H2C_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_CPM4_H2C_MM_ERR_INFO_ADDR                 0x125C
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define H2C_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define H2C_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CTL_ADDR             0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR      0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR      0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_DATA_CNT0_ADDR       0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_CPM4_H2C_MM_PERF_MON_DATA_CNT1_ADDR       0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_CPM4_H2C_MM_DBG_ADDR                      0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_CPM4_FUNC_STATUS_REG_ADDR                 0x2400
-#define FUNC_STATUS_REG_RSVD_1_MASK                        GENMASK(31, 12)
-#define FUNC_STATUS_REG_CUR_SRC_FN_MASK                    GENMASK(11, 4)
-#define FUNC_STATUS_REG_ACK_MASK                           BIT(2)
-#define FUNC_STATUS_REG_O_MSG_MASK                         BIT(1)
-#define FUNC_STATUS_REG_I_MSG_MASK                         BIT(0)
-#define QDMA_CPM4_FUNC_CMD_REG_ADDR                    0x2404
-#define FUNC_CMD_REG_RSVD_1_MASK                           GENMASK(31, 3)
-#define FUNC_CMD_REG_RSVD_2_MASK                           BIT(2)
-#define FUNC_CMD_REG_MSG_RCV_MASK                          BIT(1)
-#define FUNC_CMD_REG_MSG_SENT_MASK                         BIT(0)
-#define QDMA_CPM4_FUNC_INTERRUPT_VECTOR_REG_ADDR       0x2408
-#define FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK              GENMASK(31, 5)
-#define FUNC_INTERRUPT_VECTOR_REG_IN_MASK                  GENMASK(4, 0)
-#define QDMA_CPM4_TARGET_FUNC_REG_ADDR                 0x240C
-#define TARGET_FUNC_REG_RSVD_1_MASK                        GENMASK(31, 8)
-#define TARGET_FUNC_REG_N_ID_MASK                          GENMASK(7, 0)
-#define QDMA_CPM4_FUNC_INTERRUPT_CTL_REG_ADDR          0x2410
-#define FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK                 GENMASK(31, 1)
-#define FUNC_INTERRUPT_CTL_REG_INT_EN_MASK                 BIT(0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_FNC_ID_MASK                   GENMASK(11, 4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_MASK                     GENMASK(15, 11)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK           GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W3_RSVD_MASK                       GENMASK(31, 30)
-#define CMPL_CTXT_DATA_W3_FULL_UPD_MASK                   BIT(29)
-#define CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK              BIT(28)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(27)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(24)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(23, 8)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 24)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(23, 22)
-#define CMPL_CTXT_DATA_W2_BADDR_64_H_MASK                 GENMASK(21, 0)
-#define CMPL_CTXT_DATA_W1_BADDR_64_M_MASK                 GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_BADDR_64_L_MASK                 GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK                  GENMASK(27, 24)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(23)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(22, 21)
-#define CMPL_CTXT_DATA_W0_TIMER_IDX_MASK                  GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_CNTER_IDX_MASK                  GENMASK(16, 13)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(12, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(11, 0)
-#define INTR_CTXT_DATA_W1_PAGE_SIZE_MASK                  GENMASK(31, 29)
-#define INTR_CTXT_DATA_W1_BADDR_4K_H_MASK                 GENMASK(28, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 9)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(8)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(7)
-#define INTR_CTXT_DATA_W0_RSVD_MASK                       BIT(6)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(5, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
deleted file mode 100755
index dcfb94f..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.c
+++ /dev/null
@@ -1,8013 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_cpm4_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_cpm4_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_busdev_field_info[] = {
-	{"CFG_BLK_BUSDEV_BDF",
-		CFG_BLK_BUSDEV_BDF_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE_3",
-		CFG_BLK_MSI_ENABLE_3_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX3",
-		CFG_BLK_MSI_ENABLE_MSIX3_MASK},
-	{"CFG_BLK_MSI_ENABLE_2",
-		CFG_BLK_MSI_ENABLE_2_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX2",
-		CFG_BLK_MSI_ENABLE_MSIX2_MASK},
-	{"CFG_BLK_MSI_ENABLE_1",
-		CFG_BLK_MSI_ENABLE_1_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX1",
-		CFG_BLK_MSI_ENABLE_MSIX1_MASK},
-	{"CFG_BLK_MSI_ENABLE_0",
-		CFG_BLK_MSI_ENABLE_0_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX0",
-		CFG_BLK_MSI_ENABLE_MSIX0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_0_field_info[] = {
-	{"CFG_BLK_SCRATCH_0",
-		CFG_BLK_SCRATCH_0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_1_field_info[] = {
-	{"CFG_BLK_SCRATCH_1",
-		CFG_BLK_SCRATCH_1_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_2_field_info[] = {
-	{"CFG_BLK_SCRATCH_2",
-		CFG_BLK_SCRATCH_2_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_3_field_info[] = {
-	{"CFG_BLK_SCRATCH_3",
-		CFG_BLK_SCRATCH_3_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_4_field_info[] = {
-	{"CFG_BLK_SCRATCH_4",
-		CFG_BLK_SCRATCH_4_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_5_field_info[] = {
-	{"CFG_BLK_SCRATCH_5",
-		CFG_BLK_SCRATCH_5_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_6_field_info[] = {
-	{"CFG_BLK_SCRATCH_6",
-		CFG_BLK_SCRATCH_6_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_7_field_info[] = {
-	{"CFG_BLK_SCRATCH_7",
-		CFG_BLK_SCRATCH_7_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RSVD_1",
-		RAM_SBE_STS_A_RSVD_1_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_QID2VEC_RAM",
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_TUSER_FIFO_RAM",
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PLD_FIFO_RAM",
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PASID_CTXT_RAM",
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_2",
-		RAM_SBE_STS_A_RSVD_2_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_3",
-		RAM_SBE_STS_A_RSVD_3_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RSVD_1",
-		RAM_DBE_STS_A_RSVD_1_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_QID2VEC_RAM",
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_TUSER_FIFO_RAM",
-		RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PLD_FIFO_RAM",
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PASID_CTXT_RAM",
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_2",
-		RAM_DBE_STS_A_RSVD_2_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_3",
-		RAM_DBE_STS_A_RSVD_3_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_int_field_info[] = {
-	{"GLBL2_PF_BARLITE_INT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_int_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_INT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_EXT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_2",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_func_ret_field_info[] = {
-	{"GLBL2_CHANNEL_FUNC_RET_RSVD_1",
-		GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_FUNC_RET_FUNC",
-		GLBL2_CHANNEL_FUNC_RET_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP_RSVD_1",
-		GLBL2_MISC_CAP_RSVD_1_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_FL",
-		GLBL2_PCIE_RQ0_TAG_FL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR_RSVD_1",
-		GLBL_ERR_RSVD_1_MASK},
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_CIDX",
-		GLBL_DSC_ERR_LOG0_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_UNMAPPED",
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_RSVD_1",
-		GLBL_TRQ_ERR_LOG_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_0_field_info[] = {
-	{"TRQ_SEL_FMAP_0_RSVD_1",
-		TRQ_SEL_FMAP_0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_0_QID_MAX",
-		TRQ_SEL_FMAP_0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_0_QID_BASE",
-		TRQ_SEL_FMAP_0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1_field_info[] = {
-	{"TRQ_SEL_FMAP_1_RSVD_1",
-		TRQ_SEL_FMAP_1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1_QID_MAX",
-		TRQ_SEL_FMAP_1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1_QID_BASE",
-		TRQ_SEL_FMAP_1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2_field_info[] = {
-	{"TRQ_SEL_FMAP_2_RSVD_1",
-		TRQ_SEL_FMAP_2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2_QID_MAX",
-		TRQ_SEL_FMAP_2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2_QID_BASE",
-		TRQ_SEL_FMAP_2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3_field_info[] = {
-	{"TRQ_SEL_FMAP_3_RSVD_1",
-		TRQ_SEL_FMAP_3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3_QID_MAX",
-		TRQ_SEL_FMAP_3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3_QID_BASE",
-		TRQ_SEL_FMAP_3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4_field_info[] = {
-	{"TRQ_SEL_FMAP_4_RSVD_1",
-		TRQ_SEL_FMAP_4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4_QID_MAX",
-		TRQ_SEL_FMAP_4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4_QID_BASE",
-		TRQ_SEL_FMAP_4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5_field_info[] = {
-	{"TRQ_SEL_FMAP_5_RSVD_1",
-		TRQ_SEL_FMAP_5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5_QID_MAX",
-		TRQ_SEL_FMAP_5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5_QID_BASE",
-		TRQ_SEL_FMAP_5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6_field_info[] = {
-	{"TRQ_SEL_FMAP_6_RSVD_1",
-		TRQ_SEL_FMAP_6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6_QID_MAX",
-		TRQ_SEL_FMAP_6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6_QID_BASE",
-		TRQ_SEL_FMAP_6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7_field_info[] = {
-	{"TRQ_SEL_FMAP_7_RSVD_1",
-		TRQ_SEL_FMAP_7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7_QID_MAX",
-		TRQ_SEL_FMAP_7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7_QID_BASE",
-		TRQ_SEL_FMAP_7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8_field_info[] = {
-	{"TRQ_SEL_FMAP_8_RSVD_1",
-		TRQ_SEL_FMAP_8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8_QID_MAX",
-		TRQ_SEL_FMAP_8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8_QID_BASE",
-		TRQ_SEL_FMAP_8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9_field_info[] = {
-	{"TRQ_SEL_FMAP_9_RSVD_1",
-		TRQ_SEL_FMAP_9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9_QID_MAX",
-		TRQ_SEL_FMAP_9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9_QID_BASE",
-		TRQ_SEL_FMAP_9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a_field_info[] = {
-	{"TRQ_SEL_FMAP_A_RSVD_1",
-		TRQ_SEL_FMAP_A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A_QID_MAX",
-		TRQ_SEL_FMAP_A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A_QID_BASE",
-		TRQ_SEL_FMAP_A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b_field_info[] = {
-	{"TRQ_SEL_FMAP_B_RSVD_1",
-		TRQ_SEL_FMAP_B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B_QID_MAX",
-		TRQ_SEL_FMAP_B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B_QID_BASE",
-		TRQ_SEL_FMAP_B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d_field_info[] = {
-	{"TRQ_SEL_FMAP_D_RSVD_1",
-		TRQ_SEL_FMAP_D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D_QID_MAX",
-		TRQ_SEL_FMAP_D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D_QID_BASE",
-		TRQ_SEL_FMAP_D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e_field_info[] = {
-	{"TRQ_SEL_FMAP_E_RSVD_1",
-		TRQ_SEL_FMAP_E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E_QID_MAX",
-		TRQ_SEL_FMAP_E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E_QID_BASE",
-		TRQ_SEL_FMAP_E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f_field_info[] = {
-	{"TRQ_SEL_FMAP_F_RSVD_1",
-		TRQ_SEL_FMAP_F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F_QID_MAX",
-		TRQ_SEL_FMAP_F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F_QID_BASE",
-		TRQ_SEL_FMAP_F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_10_field_info[] = {
-	{"TRQ_SEL_FMAP_10_RSVD_1",
-		TRQ_SEL_FMAP_10_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_10_QID_MAX",
-		TRQ_SEL_FMAP_10_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_10_QID_BASE",
-		TRQ_SEL_FMAP_10_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_11_field_info[] = {
-	{"TRQ_SEL_FMAP_11_RSVD_1",
-		TRQ_SEL_FMAP_11_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_11_QID_MAX",
-		TRQ_SEL_FMAP_11_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_11_QID_BASE",
-		TRQ_SEL_FMAP_11_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_12_field_info[] = {
-	{"TRQ_SEL_FMAP_12_RSVD_1",
-		TRQ_SEL_FMAP_12_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_12_QID_MAX",
-		TRQ_SEL_FMAP_12_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_12_QID_BASE",
-		TRQ_SEL_FMAP_12_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_13_field_info[] = {
-	{"TRQ_SEL_FMAP_13_RSVD_1",
-		TRQ_SEL_FMAP_13_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_13_QID_MAX",
-		TRQ_SEL_FMAP_13_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_13_QID_BASE",
-		TRQ_SEL_FMAP_13_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_14_field_info[] = {
-	{"TRQ_SEL_FMAP_14_RSVD_1",
-		TRQ_SEL_FMAP_14_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_14_QID_MAX",
-		TRQ_SEL_FMAP_14_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_14_QID_BASE",
-		TRQ_SEL_FMAP_14_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_15_field_info[] = {
-	{"TRQ_SEL_FMAP_15_RSVD_1",
-		TRQ_SEL_FMAP_15_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_15_QID_MAX",
-		TRQ_SEL_FMAP_15_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_15_QID_BASE",
-		TRQ_SEL_FMAP_15_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_16_field_info[] = {
-	{"TRQ_SEL_FMAP_16_RSVD_1",
-		TRQ_SEL_FMAP_16_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_16_QID_MAX",
-		TRQ_SEL_FMAP_16_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_16_QID_BASE",
-		TRQ_SEL_FMAP_16_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_17_field_info[] = {
-	{"TRQ_SEL_FMAP_17_RSVD_1",
-		TRQ_SEL_FMAP_17_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_17_QID_MAX",
-		TRQ_SEL_FMAP_17_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_17_QID_BASE",
-		TRQ_SEL_FMAP_17_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_18_field_info[] = {
-	{"TRQ_SEL_FMAP_18_RSVD_1",
-		TRQ_SEL_FMAP_18_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_18_QID_MAX",
-		TRQ_SEL_FMAP_18_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_18_QID_BASE",
-		TRQ_SEL_FMAP_18_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_19_field_info[] = {
-	{"TRQ_SEL_FMAP_19_RSVD_1",
-		TRQ_SEL_FMAP_19_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_19_QID_MAX",
-		TRQ_SEL_FMAP_19_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_19_QID_BASE",
-		TRQ_SEL_FMAP_19_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1a_field_info[] = {
-	{"TRQ_SEL_FMAP_1A_RSVD_1",
-		TRQ_SEL_FMAP_1A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_MAX",
-		TRQ_SEL_FMAP_1A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_BASE",
-		TRQ_SEL_FMAP_1A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1b_field_info[] = {
-	{"TRQ_SEL_FMAP_1B_RSVD_1",
-		TRQ_SEL_FMAP_1B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_MAX",
-		TRQ_SEL_FMAP_1B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_BASE",
-		TRQ_SEL_FMAP_1B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1c_field_info[] = {
-	{"TRQ_SEL_FMAP_1C_RSVD_1",
-		TRQ_SEL_FMAP_1C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_MAX",
-		TRQ_SEL_FMAP_1C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_BASE",
-		TRQ_SEL_FMAP_1C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1d_field_info[] = {
-	{"TRQ_SEL_FMAP_1D_RSVD_1",
-		TRQ_SEL_FMAP_1D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_MAX",
-		TRQ_SEL_FMAP_1D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_BASE",
-		TRQ_SEL_FMAP_1D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1e_field_info[] = {
-	{"TRQ_SEL_FMAP_1E_RSVD_1",
-		TRQ_SEL_FMAP_1E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_MAX",
-		TRQ_SEL_FMAP_1E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_BASE",
-		TRQ_SEL_FMAP_1E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1f_field_info[] = {
-	{"TRQ_SEL_FMAP_1F_RSVD_1",
-		TRQ_SEL_FMAP_1F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_MAX",
-		TRQ_SEL_FMAP_1F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_BASE",
-		TRQ_SEL_FMAP_1F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_20_field_info[] = {
-	{"TRQ_SEL_FMAP_20_RSVD_1",
-		TRQ_SEL_FMAP_20_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_20_QID_MAX",
-		TRQ_SEL_FMAP_20_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_20_QID_BASE",
-		TRQ_SEL_FMAP_20_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_21_field_info[] = {
-	{"TRQ_SEL_FMAP_21_RSVD_1",
-		TRQ_SEL_FMAP_21_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_21_QID_MAX",
-		TRQ_SEL_FMAP_21_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_21_QID_BASE",
-		TRQ_SEL_FMAP_21_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_22_field_info[] = {
-	{"TRQ_SEL_FMAP_22_RSVD_1",
-		TRQ_SEL_FMAP_22_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_22_QID_MAX",
-		TRQ_SEL_FMAP_22_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_22_QID_BASE",
-		TRQ_SEL_FMAP_22_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_23_field_info[] = {
-	{"TRQ_SEL_FMAP_23_RSVD_1",
-		TRQ_SEL_FMAP_23_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_23_QID_MAX",
-		TRQ_SEL_FMAP_23_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_23_QID_BASE",
-		TRQ_SEL_FMAP_23_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_24_field_info[] = {
-	{"TRQ_SEL_FMAP_24_RSVD_1",
-		TRQ_SEL_FMAP_24_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_24_QID_MAX",
-		TRQ_SEL_FMAP_24_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_24_QID_BASE",
-		TRQ_SEL_FMAP_24_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_25_field_info[] = {
-	{"TRQ_SEL_FMAP_25_RSVD_1",
-		TRQ_SEL_FMAP_25_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_25_QID_MAX",
-		TRQ_SEL_FMAP_25_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_25_QID_BASE",
-		TRQ_SEL_FMAP_25_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_26_field_info[] = {
-	{"TRQ_SEL_FMAP_26_RSVD_1",
-		TRQ_SEL_FMAP_26_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_26_QID_MAX",
-		TRQ_SEL_FMAP_26_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_26_QID_BASE",
-		TRQ_SEL_FMAP_26_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_27_field_info[] = {
-	{"TRQ_SEL_FMAP_27_RSVD_1",
-		TRQ_SEL_FMAP_27_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_27_QID_MAX",
-		TRQ_SEL_FMAP_27_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_27_QID_BASE",
-		TRQ_SEL_FMAP_27_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_28_field_info[] = {
-	{"TRQ_SEL_FMAP_28_RSVD_1",
-		TRQ_SEL_FMAP_28_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_28_QID_MAX",
-		TRQ_SEL_FMAP_28_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_28_QID_BASE",
-		TRQ_SEL_FMAP_28_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_29_field_info[] = {
-	{"TRQ_SEL_FMAP_29_RSVD_1",
-		TRQ_SEL_FMAP_29_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_29_QID_MAX",
-		TRQ_SEL_FMAP_29_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_29_QID_BASE",
-		TRQ_SEL_FMAP_29_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2a_field_info[] = {
-	{"TRQ_SEL_FMAP_2A_RSVD_1",
-		TRQ_SEL_FMAP_2A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_MAX",
-		TRQ_SEL_FMAP_2A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_BASE",
-		TRQ_SEL_FMAP_2A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2b_field_info[] = {
-	{"TRQ_SEL_FMAP_2B_RSVD_1",
-		TRQ_SEL_FMAP_2B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_MAX",
-		TRQ_SEL_FMAP_2B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_BASE",
-		TRQ_SEL_FMAP_2B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2c_field_info[] = {
-	{"TRQ_SEL_FMAP_2C_RSVD_1",
-		TRQ_SEL_FMAP_2C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_MAX",
-		TRQ_SEL_FMAP_2C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_BASE",
-		TRQ_SEL_FMAP_2C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2d_field_info[] = {
-	{"TRQ_SEL_FMAP_2D_RSVD_1",
-		TRQ_SEL_FMAP_2D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_MAX",
-		TRQ_SEL_FMAP_2D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_BASE",
-		TRQ_SEL_FMAP_2D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2e_field_info[] = {
-	{"TRQ_SEL_FMAP_2E_RSVD_1",
-		TRQ_SEL_FMAP_2E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_MAX",
-		TRQ_SEL_FMAP_2E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_BASE",
-		TRQ_SEL_FMAP_2E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2f_field_info[] = {
-	{"TRQ_SEL_FMAP_2F_RSVD_1",
-		TRQ_SEL_FMAP_2F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_MAX",
-		TRQ_SEL_FMAP_2F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_BASE",
-		TRQ_SEL_FMAP_2F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_30_field_info[] = {
-	{"TRQ_SEL_FMAP_30_RSVD_1",
-		TRQ_SEL_FMAP_30_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_30_QID_MAX",
-		TRQ_SEL_FMAP_30_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_30_QID_BASE",
-		TRQ_SEL_FMAP_30_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_31_field_info[] = {
-	{"TRQ_SEL_FMAP_31_RSVD_1",
-		TRQ_SEL_FMAP_31_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_31_QID_MAX",
-		TRQ_SEL_FMAP_31_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_31_QID_BASE",
-		TRQ_SEL_FMAP_31_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_32_field_info[] = {
-	{"TRQ_SEL_FMAP_32_RSVD_1",
-		TRQ_SEL_FMAP_32_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_32_QID_MAX",
-		TRQ_SEL_FMAP_32_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_32_QID_BASE",
-		TRQ_SEL_FMAP_32_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_33_field_info[] = {
-	{"TRQ_SEL_FMAP_33_RSVD_1",
-		TRQ_SEL_FMAP_33_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_33_QID_MAX",
-		TRQ_SEL_FMAP_33_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_33_QID_BASE",
-		TRQ_SEL_FMAP_33_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_34_field_info[] = {
-	{"TRQ_SEL_FMAP_34_RSVD_1",
-		TRQ_SEL_FMAP_34_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_34_QID_MAX",
-		TRQ_SEL_FMAP_34_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_34_QID_BASE",
-		TRQ_SEL_FMAP_34_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_35_field_info[] = {
-	{"TRQ_SEL_FMAP_35_RSVD_1",
-		TRQ_SEL_FMAP_35_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_35_QID_MAX",
-		TRQ_SEL_FMAP_35_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_35_QID_BASE",
-		TRQ_SEL_FMAP_35_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_36_field_info[] = {
-	{"TRQ_SEL_FMAP_36_RSVD_1",
-		TRQ_SEL_FMAP_36_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_36_QID_MAX",
-		TRQ_SEL_FMAP_36_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_36_QID_BASE",
-		TRQ_SEL_FMAP_36_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_37_field_info[] = {
-	{"TRQ_SEL_FMAP_37_RSVD_1",
-		TRQ_SEL_FMAP_37_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_37_QID_MAX",
-		TRQ_SEL_FMAP_37_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_37_QID_BASE",
-		TRQ_SEL_FMAP_37_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_38_field_info[] = {
-	{"TRQ_SEL_FMAP_38_RSVD_1",
-		TRQ_SEL_FMAP_38_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_38_QID_MAX",
-		TRQ_SEL_FMAP_38_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_38_QID_BASE",
-		TRQ_SEL_FMAP_38_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_39_field_info[] = {
-	{"TRQ_SEL_FMAP_39_RSVD_1",
-		TRQ_SEL_FMAP_39_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_39_QID_MAX",
-		TRQ_SEL_FMAP_39_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_39_QID_BASE",
-		TRQ_SEL_FMAP_39_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3a_field_info[] = {
-	{"TRQ_SEL_FMAP_3A_RSVD_1",
-		TRQ_SEL_FMAP_3A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_MAX",
-		TRQ_SEL_FMAP_3A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_BASE",
-		TRQ_SEL_FMAP_3A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3b_field_info[] = {
-	{"TRQ_SEL_FMAP_3B_RSVD_1",
-		TRQ_SEL_FMAP_3B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_MAX",
-		TRQ_SEL_FMAP_3B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_BASE",
-		TRQ_SEL_FMAP_3B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3c_field_info[] = {
-	{"TRQ_SEL_FMAP_3C_RSVD_1",
-		TRQ_SEL_FMAP_3C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_MAX",
-		TRQ_SEL_FMAP_3C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_BASE",
-		TRQ_SEL_FMAP_3C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3d_field_info[] = {
-	{"TRQ_SEL_FMAP_3D_RSVD_1",
-		TRQ_SEL_FMAP_3D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_MAX",
-		TRQ_SEL_FMAP_3D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_BASE",
-		TRQ_SEL_FMAP_3D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3e_field_info[] = {
-	{"TRQ_SEL_FMAP_3E_RSVD_1",
-		TRQ_SEL_FMAP_3E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_MAX",
-		TRQ_SEL_FMAP_3E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_BASE",
-		TRQ_SEL_FMAP_3E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3f_field_info[] = {
-	{"TRQ_SEL_FMAP_3F_RSVD_1",
-		TRQ_SEL_FMAP_3F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_MAX",
-		TRQ_SEL_FMAP_3F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_BASE",
-		TRQ_SEL_FMAP_3F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_40_field_info[] = {
-	{"TRQ_SEL_FMAP_40_RSVD_1",
-		TRQ_SEL_FMAP_40_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_40_QID_MAX",
-		TRQ_SEL_FMAP_40_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_40_QID_BASE",
-		TRQ_SEL_FMAP_40_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_41_field_info[] = {
-	{"TRQ_SEL_FMAP_41_RSVD_1",
-		TRQ_SEL_FMAP_41_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_41_QID_MAX",
-		TRQ_SEL_FMAP_41_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_41_QID_BASE",
-		TRQ_SEL_FMAP_41_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_42_field_info[] = {
-	{"TRQ_SEL_FMAP_42_RSVD_1",
-		TRQ_SEL_FMAP_42_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_42_QID_MAX",
-		TRQ_SEL_FMAP_42_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_42_QID_BASE",
-		TRQ_SEL_FMAP_42_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_43_field_info[] = {
-	{"TRQ_SEL_FMAP_43_RSVD_1",
-		TRQ_SEL_FMAP_43_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_43_QID_MAX",
-		TRQ_SEL_FMAP_43_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_43_QID_BASE",
-		TRQ_SEL_FMAP_43_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_44_field_info[] = {
-	{"TRQ_SEL_FMAP_44_RSVD_1",
-		TRQ_SEL_FMAP_44_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_44_QID_MAX",
-		TRQ_SEL_FMAP_44_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_44_QID_BASE",
-		TRQ_SEL_FMAP_44_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_45_field_info[] = {
-	{"TRQ_SEL_FMAP_45_RSVD_1",
-		TRQ_SEL_FMAP_45_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_45_QID_MAX",
-		TRQ_SEL_FMAP_45_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_45_QID_BASE",
-		TRQ_SEL_FMAP_45_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_46_field_info[] = {
-	{"TRQ_SEL_FMAP_46_RSVD_1",
-		TRQ_SEL_FMAP_46_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_46_QID_MAX",
-		TRQ_SEL_FMAP_46_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_46_QID_BASE",
-		TRQ_SEL_FMAP_46_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_47_field_info[] = {
-	{"TRQ_SEL_FMAP_47_RSVD_1",
-		TRQ_SEL_FMAP_47_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_47_QID_MAX",
-		TRQ_SEL_FMAP_47_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_47_QID_BASE",
-		TRQ_SEL_FMAP_47_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_48_field_info[] = {
-	{"TRQ_SEL_FMAP_48_RSVD_1",
-		TRQ_SEL_FMAP_48_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_48_QID_MAX",
-		TRQ_SEL_FMAP_48_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_48_QID_BASE",
-		TRQ_SEL_FMAP_48_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_49_field_info[] = {
-	{"TRQ_SEL_FMAP_49_RSVD_1",
-		TRQ_SEL_FMAP_49_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_49_QID_MAX",
-		TRQ_SEL_FMAP_49_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_49_QID_BASE",
-		TRQ_SEL_FMAP_49_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4a_field_info[] = {
-	{"TRQ_SEL_FMAP_4A_RSVD_1",
-		TRQ_SEL_FMAP_4A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_MAX",
-		TRQ_SEL_FMAP_4A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_BASE",
-		TRQ_SEL_FMAP_4A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4b_field_info[] = {
-	{"TRQ_SEL_FMAP_4B_RSVD_1",
-		TRQ_SEL_FMAP_4B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_MAX",
-		TRQ_SEL_FMAP_4B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_BASE",
-		TRQ_SEL_FMAP_4B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4c_field_info[] = {
-	{"TRQ_SEL_FMAP_4C_RSVD_1",
-		TRQ_SEL_FMAP_4C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_MAX",
-		TRQ_SEL_FMAP_4C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_BASE",
-		TRQ_SEL_FMAP_4C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4d_field_info[] = {
-	{"TRQ_SEL_FMAP_4D_RSVD_1",
-		TRQ_SEL_FMAP_4D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_MAX",
-		TRQ_SEL_FMAP_4D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_BASE",
-		TRQ_SEL_FMAP_4D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4e_field_info[] = {
-	{"TRQ_SEL_FMAP_4E_RSVD_1",
-		TRQ_SEL_FMAP_4E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_MAX",
-		TRQ_SEL_FMAP_4E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_BASE",
-		TRQ_SEL_FMAP_4E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4f_field_info[] = {
-	{"TRQ_SEL_FMAP_4F_RSVD_1",
-		TRQ_SEL_FMAP_4F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_MAX",
-		TRQ_SEL_FMAP_4F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_BASE",
-		TRQ_SEL_FMAP_4F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_50_field_info[] = {
-	{"TRQ_SEL_FMAP_50_RSVD_1",
-		TRQ_SEL_FMAP_50_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_50_QID_MAX",
-		TRQ_SEL_FMAP_50_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_50_QID_BASE",
-		TRQ_SEL_FMAP_50_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_51_field_info[] = {
-	{"TRQ_SEL_FMAP_51_RSVD_1",
-		TRQ_SEL_FMAP_51_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_51_QID_MAX",
-		TRQ_SEL_FMAP_51_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_51_QID_BASE",
-		TRQ_SEL_FMAP_51_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_52_field_info[] = {
-	{"TRQ_SEL_FMAP_52_RSVD_1",
-		TRQ_SEL_FMAP_52_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_52_QID_MAX",
-		TRQ_SEL_FMAP_52_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_52_QID_BASE",
-		TRQ_SEL_FMAP_52_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_53_field_info[] = {
-	{"TRQ_SEL_FMAP_53_RSVD_1",
-		TRQ_SEL_FMAP_53_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_53_QID_MAX",
-		TRQ_SEL_FMAP_53_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_53_QID_BASE",
-		TRQ_SEL_FMAP_53_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_54_field_info[] = {
-	{"TRQ_SEL_FMAP_54_RSVD_1",
-		TRQ_SEL_FMAP_54_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_54_QID_MAX",
-		TRQ_SEL_FMAP_54_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_54_QID_BASE",
-		TRQ_SEL_FMAP_54_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_55_field_info[] = {
-	{"TRQ_SEL_FMAP_55_RSVD_1",
-		TRQ_SEL_FMAP_55_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_55_QID_MAX",
-		TRQ_SEL_FMAP_55_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_55_QID_BASE",
-		TRQ_SEL_FMAP_55_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_56_field_info[] = {
-	{"TRQ_SEL_FMAP_56_RSVD_1",
-		TRQ_SEL_FMAP_56_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_56_QID_MAX",
-		TRQ_SEL_FMAP_56_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_56_QID_BASE",
-		TRQ_SEL_FMAP_56_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_57_field_info[] = {
-	{"TRQ_SEL_FMAP_57_RSVD_1",
-		TRQ_SEL_FMAP_57_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_57_QID_MAX",
-		TRQ_SEL_FMAP_57_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_57_QID_BASE",
-		TRQ_SEL_FMAP_57_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_58_field_info[] = {
-	{"TRQ_SEL_FMAP_58_RSVD_1",
-		TRQ_SEL_FMAP_58_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_58_QID_MAX",
-		TRQ_SEL_FMAP_58_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_58_QID_BASE",
-		TRQ_SEL_FMAP_58_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_59_field_info[] = {
-	{"TRQ_SEL_FMAP_59_RSVD_1",
-		TRQ_SEL_FMAP_59_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_59_QID_MAX",
-		TRQ_SEL_FMAP_59_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_59_QID_BASE",
-		TRQ_SEL_FMAP_59_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5a_field_info[] = {
-	{"TRQ_SEL_FMAP_5A_RSVD_1",
-		TRQ_SEL_FMAP_5A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_MAX",
-		TRQ_SEL_FMAP_5A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_BASE",
-		TRQ_SEL_FMAP_5A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5b_field_info[] = {
-	{"TRQ_SEL_FMAP_5B_RSVD_1",
-		TRQ_SEL_FMAP_5B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_MAX",
-		TRQ_SEL_FMAP_5B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_BASE",
-		TRQ_SEL_FMAP_5B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5c_field_info[] = {
-	{"TRQ_SEL_FMAP_5C_RSVD_1",
-		TRQ_SEL_FMAP_5C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_MAX",
-		TRQ_SEL_FMAP_5C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_BASE",
-		TRQ_SEL_FMAP_5C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5d_field_info[] = {
-	{"TRQ_SEL_FMAP_5D_RSVD_1",
-		TRQ_SEL_FMAP_5D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_MAX",
-		TRQ_SEL_FMAP_5D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_BASE",
-		TRQ_SEL_FMAP_5D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5e_field_info[] = {
-	{"TRQ_SEL_FMAP_5E_RSVD_1",
-		TRQ_SEL_FMAP_5E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_MAX",
-		TRQ_SEL_FMAP_5E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_BASE",
-		TRQ_SEL_FMAP_5E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5f_field_info[] = {
-	{"TRQ_SEL_FMAP_5F_RSVD_1",
-		TRQ_SEL_FMAP_5F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_MAX",
-		TRQ_SEL_FMAP_5F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_BASE",
-		TRQ_SEL_FMAP_5F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_60_field_info[] = {
-	{"TRQ_SEL_FMAP_60_RSVD_1",
-		TRQ_SEL_FMAP_60_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_60_QID_MAX",
-		TRQ_SEL_FMAP_60_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_60_QID_BASE",
-		TRQ_SEL_FMAP_60_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_61_field_info[] = {
-	{"TRQ_SEL_FMAP_61_RSVD_1",
-		TRQ_SEL_FMAP_61_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_61_QID_MAX",
-		TRQ_SEL_FMAP_61_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_61_QID_BASE",
-		TRQ_SEL_FMAP_61_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_62_field_info[] = {
-	{"TRQ_SEL_FMAP_62_RSVD_1",
-		TRQ_SEL_FMAP_62_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_62_QID_MAX",
-		TRQ_SEL_FMAP_62_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_62_QID_BASE",
-		TRQ_SEL_FMAP_62_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_63_field_info[] = {
-	{"TRQ_SEL_FMAP_63_RSVD_1",
-		TRQ_SEL_FMAP_63_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_63_QID_MAX",
-		TRQ_SEL_FMAP_63_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_63_QID_BASE",
-		TRQ_SEL_FMAP_63_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_64_field_info[] = {
-	{"TRQ_SEL_FMAP_64_RSVD_1",
-		TRQ_SEL_FMAP_64_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_64_QID_MAX",
-		TRQ_SEL_FMAP_64_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_64_QID_BASE",
-		TRQ_SEL_FMAP_64_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_65_field_info[] = {
-	{"TRQ_SEL_FMAP_65_RSVD_1",
-		TRQ_SEL_FMAP_65_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_65_QID_MAX",
-		TRQ_SEL_FMAP_65_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_65_QID_BASE",
-		TRQ_SEL_FMAP_65_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_66_field_info[] = {
-	{"TRQ_SEL_FMAP_66_RSVD_1",
-		TRQ_SEL_FMAP_66_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_66_QID_MAX",
-		TRQ_SEL_FMAP_66_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_66_QID_BASE",
-		TRQ_SEL_FMAP_66_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_67_field_info[] = {
-	{"TRQ_SEL_FMAP_67_RSVD_1",
-		TRQ_SEL_FMAP_67_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_67_QID_MAX",
-		TRQ_SEL_FMAP_67_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_67_QID_BASE",
-		TRQ_SEL_FMAP_67_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_68_field_info[] = {
-	{"TRQ_SEL_FMAP_68_RSVD_1",
-		TRQ_SEL_FMAP_68_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_68_QID_MAX",
-		TRQ_SEL_FMAP_68_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_68_QID_BASE",
-		TRQ_SEL_FMAP_68_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_69_field_info[] = {
-	{"TRQ_SEL_FMAP_69_RSVD_1",
-		TRQ_SEL_FMAP_69_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_69_QID_MAX",
-		TRQ_SEL_FMAP_69_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_69_QID_BASE",
-		TRQ_SEL_FMAP_69_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6a_field_info[] = {
-	{"TRQ_SEL_FMAP_6A_RSVD_1",
-		TRQ_SEL_FMAP_6A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_MAX",
-		TRQ_SEL_FMAP_6A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_BASE",
-		TRQ_SEL_FMAP_6A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6b_field_info[] = {
-	{"TRQ_SEL_FMAP_6B_RSVD_1",
-		TRQ_SEL_FMAP_6B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_MAX",
-		TRQ_SEL_FMAP_6B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_BASE",
-		TRQ_SEL_FMAP_6B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6c_field_info[] = {
-	{"TRQ_SEL_FMAP_6C_RSVD_1",
-		TRQ_SEL_FMAP_6C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_MAX",
-		TRQ_SEL_FMAP_6C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_BASE",
-		TRQ_SEL_FMAP_6C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6d_field_info[] = {
-	{"TRQ_SEL_FMAP_6D_RSVD_1",
-		TRQ_SEL_FMAP_6D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_MAX",
-		TRQ_SEL_FMAP_6D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_BASE",
-		TRQ_SEL_FMAP_6D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6e_field_info[] = {
-	{"TRQ_SEL_FMAP_6E_RSVD_1",
-		TRQ_SEL_FMAP_6E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_MAX",
-		TRQ_SEL_FMAP_6E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_BASE",
-		TRQ_SEL_FMAP_6E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6f_field_info[] = {
-	{"TRQ_SEL_FMAP_6F_RSVD_1",
-		TRQ_SEL_FMAP_6F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_MAX",
-		TRQ_SEL_FMAP_6F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_BASE",
-		TRQ_SEL_FMAP_6F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_70_field_info[] = {
-	{"TRQ_SEL_FMAP_70_RSVD_1",
-		TRQ_SEL_FMAP_70_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_70_QID_MAX",
-		TRQ_SEL_FMAP_70_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_70_QID_BASE",
-		TRQ_SEL_FMAP_70_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_71_field_info[] = {
-	{"TRQ_SEL_FMAP_71_RSVD_1",
-		TRQ_SEL_FMAP_71_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_71_QID_MAX",
-		TRQ_SEL_FMAP_71_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_71_QID_BASE",
-		TRQ_SEL_FMAP_71_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_72_field_info[] = {
-	{"TRQ_SEL_FMAP_72_RSVD_1",
-		TRQ_SEL_FMAP_72_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_72_QID_MAX",
-		TRQ_SEL_FMAP_72_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_72_QID_BASE",
-		TRQ_SEL_FMAP_72_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_73_field_info[] = {
-	{"TRQ_SEL_FMAP_73_RSVD_1",
-		TRQ_SEL_FMAP_73_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_73_QID_MAX",
-		TRQ_SEL_FMAP_73_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_73_QID_BASE",
-		TRQ_SEL_FMAP_73_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_74_field_info[] = {
-	{"TRQ_SEL_FMAP_74_RSVD_1",
-		TRQ_SEL_FMAP_74_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_74_QID_MAX",
-		TRQ_SEL_FMAP_74_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_74_QID_BASE",
-		TRQ_SEL_FMAP_74_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_75_field_info[] = {
-	{"TRQ_SEL_FMAP_75_RSVD_1",
-		TRQ_SEL_FMAP_75_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_75_QID_MAX",
-		TRQ_SEL_FMAP_75_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_75_QID_BASE",
-		TRQ_SEL_FMAP_75_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_76_field_info[] = {
-	{"TRQ_SEL_FMAP_76_RSVD_1",
-		TRQ_SEL_FMAP_76_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_76_QID_MAX",
-		TRQ_SEL_FMAP_76_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_76_QID_BASE",
-		TRQ_SEL_FMAP_76_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_77_field_info[] = {
-	{"TRQ_SEL_FMAP_77_RSVD_1",
-		TRQ_SEL_FMAP_77_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_77_QID_MAX",
-		TRQ_SEL_FMAP_77_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_77_QID_BASE",
-		TRQ_SEL_FMAP_77_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_78_field_info[] = {
-	{"TRQ_SEL_FMAP_78_RSVD_1",
-		TRQ_SEL_FMAP_78_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_78_QID_MAX",
-		TRQ_SEL_FMAP_78_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_78_QID_BASE",
-		TRQ_SEL_FMAP_78_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_79_field_info[] = {
-	{"TRQ_SEL_FMAP_79_RSVD_1",
-		TRQ_SEL_FMAP_79_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_79_QID_MAX",
-		TRQ_SEL_FMAP_79_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_79_QID_BASE",
-		TRQ_SEL_FMAP_79_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7a_field_info[] = {
-	{"TRQ_SEL_FMAP_7A_RSVD_1",
-		TRQ_SEL_FMAP_7A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_MAX",
-		TRQ_SEL_FMAP_7A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_BASE",
-		TRQ_SEL_FMAP_7A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7b_field_info[] = {
-	{"TRQ_SEL_FMAP_7B_RSVD_1",
-		TRQ_SEL_FMAP_7B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_MAX",
-		TRQ_SEL_FMAP_7B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_BASE",
-		TRQ_SEL_FMAP_7B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7c_field_info[] = {
-	{"TRQ_SEL_FMAP_7C_RSVD_1",
-		TRQ_SEL_FMAP_7C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_MAX",
-		TRQ_SEL_FMAP_7C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_BASE",
-		TRQ_SEL_FMAP_7C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7d_field_info[] = {
-	{"TRQ_SEL_FMAP_7D_RSVD_1",
-		TRQ_SEL_FMAP_7D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_MAX",
-		TRQ_SEL_FMAP_7D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_BASE",
-		TRQ_SEL_FMAP_7D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7e_field_info[] = {
-	{"TRQ_SEL_FMAP_7E_RSVD_1",
-		TRQ_SEL_FMAP_7E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_MAX",
-		TRQ_SEL_FMAP_7E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_BASE",
-		TRQ_SEL_FMAP_7E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7f_field_info[] = {
-	{"TRQ_SEL_FMAP_7F_RSVD_1",
-		TRQ_SEL_FMAP_7F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_MAX",
-		TRQ_SEL_FMAP_7F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_BASE",
-		TRQ_SEL_FMAP_7F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_80_field_info[] = {
-	{"TRQ_SEL_FMAP_80_RSVD_1",
-		TRQ_SEL_FMAP_80_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_80_QID_MAX",
-		TRQ_SEL_FMAP_80_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_80_QID_BASE",
-		TRQ_SEL_FMAP_80_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_81_field_info[] = {
-	{"TRQ_SEL_FMAP_81_RSVD_1",
-		TRQ_SEL_FMAP_81_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_81_QID_MAX",
-		TRQ_SEL_FMAP_81_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_81_QID_BASE",
-		TRQ_SEL_FMAP_81_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_82_field_info[] = {
-	{"TRQ_SEL_FMAP_82_RSVD_1",
-		TRQ_SEL_FMAP_82_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_82_QID_MAX",
-		TRQ_SEL_FMAP_82_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_82_QID_BASE",
-		TRQ_SEL_FMAP_82_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_83_field_info[] = {
-	{"TRQ_SEL_FMAP_83_RSVD_1",
-		TRQ_SEL_FMAP_83_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_83_QID_MAX",
-		TRQ_SEL_FMAP_83_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_83_QID_BASE",
-		TRQ_SEL_FMAP_83_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_84_field_info[] = {
-	{"TRQ_SEL_FMAP_84_RSVD_1",
-		TRQ_SEL_FMAP_84_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_84_QID_MAX",
-		TRQ_SEL_FMAP_84_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_84_QID_BASE",
-		TRQ_SEL_FMAP_84_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_85_field_info[] = {
-	{"TRQ_SEL_FMAP_85_RSVD_1",
-		TRQ_SEL_FMAP_85_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_85_QID_MAX",
-		TRQ_SEL_FMAP_85_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_85_QID_BASE",
-		TRQ_SEL_FMAP_85_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_86_field_info[] = {
-	{"TRQ_SEL_FMAP_86_RSVD_1",
-		TRQ_SEL_FMAP_86_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_86_QID_MAX",
-		TRQ_SEL_FMAP_86_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_86_QID_BASE",
-		TRQ_SEL_FMAP_86_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_87_field_info[] = {
-	{"TRQ_SEL_FMAP_87_RSVD_1",
-		TRQ_SEL_FMAP_87_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_87_QID_MAX",
-		TRQ_SEL_FMAP_87_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_87_QID_BASE",
-		TRQ_SEL_FMAP_87_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_88_field_info[] = {
-	{"TRQ_SEL_FMAP_88_RSVD_1",
-		TRQ_SEL_FMAP_88_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_88_QID_MAX",
-		TRQ_SEL_FMAP_88_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_88_QID_BASE",
-		TRQ_SEL_FMAP_88_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_89_field_info[] = {
-	{"TRQ_SEL_FMAP_89_RSVD_1",
-		TRQ_SEL_FMAP_89_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_89_QID_MAX",
-		TRQ_SEL_FMAP_89_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_89_QID_BASE",
-		TRQ_SEL_FMAP_89_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8a_field_info[] = {
-	{"TRQ_SEL_FMAP_8A_RSVD_1",
-		TRQ_SEL_FMAP_8A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_MAX",
-		TRQ_SEL_FMAP_8A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_BASE",
-		TRQ_SEL_FMAP_8A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8b_field_info[] = {
-	{"TRQ_SEL_FMAP_8B_RSVD_1",
-		TRQ_SEL_FMAP_8B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_MAX",
-		TRQ_SEL_FMAP_8B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_BASE",
-		TRQ_SEL_FMAP_8B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8c_field_info[] = {
-	{"TRQ_SEL_FMAP_8C_RSVD_1",
-		TRQ_SEL_FMAP_8C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_MAX",
-		TRQ_SEL_FMAP_8C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_BASE",
-		TRQ_SEL_FMAP_8C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8d_field_info[] = {
-	{"TRQ_SEL_FMAP_8D_RSVD_1",
-		TRQ_SEL_FMAP_8D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_MAX",
-		TRQ_SEL_FMAP_8D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_BASE",
-		TRQ_SEL_FMAP_8D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8e_field_info[] = {
-	{"TRQ_SEL_FMAP_8E_RSVD_1",
-		TRQ_SEL_FMAP_8E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_MAX",
-		TRQ_SEL_FMAP_8E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_BASE",
-		TRQ_SEL_FMAP_8E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8f_field_info[] = {
-	{"TRQ_SEL_FMAP_8F_RSVD_1",
-		TRQ_SEL_FMAP_8F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_MAX",
-		TRQ_SEL_FMAP_8F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_BASE",
-		TRQ_SEL_FMAP_8F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_90_field_info[] = {
-	{"TRQ_SEL_FMAP_90_RSVD_1",
-		TRQ_SEL_FMAP_90_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_90_QID_MAX",
-		TRQ_SEL_FMAP_90_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_90_QID_BASE",
-		TRQ_SEL_FMAP_90_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_91_field_info[] = {
-	{"TRQ_SEL_FMAP_91_RSVD_1",
-		TRQ_SEL_FMAP_91_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_91_QID_MAX",
-		TRQ_SEL_FMAP_91_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_91_QID_BASE",
-		TRQ_SEL_FMAP_91_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_92_field_info[] = {
-	{"TRQ_SEL_FMAP_92_RSVD_1",
-		TRQ_SEL_FMAP_92_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_92_QID_MAX",
-		TRQ_SEL_FMAP_92_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_92_QID_BASE",
-		TRQ_SEL_FMAP_92_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_93_field_info[] = {
-	{"TRQ_SEL_FMAP_93_RSVD_1",
-		TRQ_SEL_FMAP_93_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_93_QID_MAX",
-		TRQ_SEL_FMAP_93_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_93_QID_BASE",
-		TRQ_SEL_FMAP_93_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_94_field_info[] = {
-	{"TRQ_SEL_FMAP_94_RSVD_1",
-		TRQ_SEL_FMAP_94_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_94_QID_MAX",
-		TRQ_SEL_FMAP_94_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_94_QID_BASE",
-		TRQ_SEL_FMAP_94_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_95_field_info[] = {
-	{"TRQ_SEL_FMAP_95_RSVD_1",
-		TRQ_SEL_FMAP_95_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_95_QID_MAX",
-		TRQ_SEL_FMAP_95_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_95_QID_BASE",
-		TRQ_SEL_FMAP_95_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_96_field_info[] = {
-	{"TRQ_SEL_FMAP_96_RSVD_1",
-		TRQ_SEL_FMAP_96_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_96_QID_MAX",
-		TRQ_SEL_FMAP_96_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_96_QID_BASE",
-		TRQ_SEL_FMAP_96_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_97_field_info[] = {
-	{"TRQ_SEL_FMAP_97_RSVD_1",
-		TRQ_SEL_FMAP_97_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_97_QID_MAX",
-		TRQ_SEL_FMAP_97_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_97_QID_BASE",
-		TRQ_SEL_FMAP_97_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_98_field_info[] = {
-	{"TRQ_SEL_FMAP_98_RSVD_1",
-		TRQ_SEL_FMAP_98_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_98_QID_MAX",
-		TRQ_SEL_FMAP_98_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_98_QID_BASE",
-		TRQ_SEL_FMAP_98_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_99_field_info[] = {
-	{"TRQ_SEL_FMAP_99_RSVD_1",
-		TRQ_SEL_FMAP_99_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_99_QID_MAX",
-		TRQ_SEL_FMAP_99_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_99_QID_BASE",
-		TRQ_SEL_FMAP_99_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9a_field_info[] = {
-	{"TRQ_SEL_FMAP_9A_RSVD_1",
-		TRQ_SEL_FMAP_9A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_MAX",
-		TRQ_SEL_FMAP_9A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_BASE",
-		TRQ_SEL_FMAP_9A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9b_field_info[] = {
-	{"TRQ_SEL_FMAP_9B_RSVD_1",
-		TRQ_SEL_FMAP_9B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_MAX",
-		TRQ_SEL_FMAP_9B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_BASE",
-		TRQ_SEL_FMAP_9B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9c_field_info[] = {
-	{"TRQ_SEL_FMAP_9C_RSVD_1",
-		TRQ_SEL_FMAP_9C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_MAX",
-		TRQ_SEL_FMAP_9C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_BASE",
-		TRQ_SEL_FMAP_9C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9d_field_info[] = {
-	{"TRQ_SEL_FMAP_9D_RSVD_1",
-		TRQ_SEL_FMAP_9D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_MAX",
-		TRQ_SEL_FMAP_9D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_BASE",
-		TRQ_SEL_FMAP_9D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9e_field_info[] = {
-	{"TRQ_SEL_FMAP_9E_RSVD_1",
-		TRQ_SEL_FMAP_9E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_MAX",
-		TRQ_SEL_FMAP_9E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_BASE",
-		TRQ_SEL_FMAP_9E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9f_field_info[] = {
-	{"TRQ_SEL_FMAP_9F_RSVD_1",
-		TRQ_SEL_FMAP_9F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_MAX",
-		TRQ_SEL_FMAP_9F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_BASE",
-		TRQ_SEL_FMAP_9F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a0_field_info[] = {
-	{"TRQ_SEL_FMAP_A0_RSVD_1",
-		TRQ_SEL_FMAP_A0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_MAX",
-		TRQ_SEL_FMAP_A0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_BASE",
-		TRQ_SEL_FMAP_A0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a1_field_info[] = {
-	{"TRQ_SEL_FMAP_A1_RSVD_1",
-		TRQ_SEL_FMAP_A1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_MAX",
-		TRQ_SEL_FMAP_A1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_BASE",
-		TRQ_SEL_FMAP_A1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a2_field_info[] = {
-	{"TRQ_SEL_FMAP_A2_RSVD_1",
-		TRQ_SEL_FMAP_A2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_MAX",
-		TRQ_SEL_FMAP_A2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_BASE",
-		TRQ_SEL_FMAP_A2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a3_field_info[] = {
-	{"TRQ_SEL_FMAP_A3_RSVD_1",
-		TRQ_SEL_FMAP_A3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_MAX",
-		TRQ_SEL_FMAP_A3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_BASE",
-		TRQ_SEL_FMAP_A3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a4_field_info[] = {
-	{"TRQ_SEL_FMAP_A4_RSVD_1",
-		TRQ_SEL_FMAP_A4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_MAX",
-		TRQ_SEL_FMAP_A4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_BASE",
-		TRQ_SEL_FMAP_A4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a5_field_info[] = {
-	{"TRQ_SEL_FMAP_A5_RSVD_1",
-		TRQ_SEL_FMAP_A5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_MAX",
-		TRQ_SEL_FMAP_A5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_BASE",
-		TRQ_SEL_FMAP_A5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a6_field_info[] = {
-	{"TRQ_SEL_FMAP_A6_RSVD_1",
-		TRQ_SEL_FMAP_A6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_MAX",
-		TRQ_SEL_FMAP_A6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_BASE",
-		TRQ_SEL_FMAP_A6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a7_field_info[] = {
-	{"TRQ_SEL_FMAP_A7_RSVD_1",
-		TRQ_SEL_FMAP_A7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_MAX",
-		TRQ_SEL_FMAP_A7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_BASE",
-		TRQ_SEL_FMAP_A7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a8_field_info[] = {
-	{"TRQ_SEL_FMAP_A8_RSVD_1",
-		TRQ_SEL_FMAP_A8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_MAX",
-		TRQ_SEL_FMAP_A8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_BASE",
-		TRQ_SEL_FMAP_A8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a9_field_info[] = {
-	{"TRQ_SEL_FMAP_A9_RSVD_1",
-		TRQ_SEL_FMAP_A9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_MAX",
-		TRQ_SEL_FMAP_A9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_BASE",
-		TRQ_SEL_FMAP_A9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_aa_field_info[] = {
-	{"TRQ_SEL_FMAP_AA_RSVD_1",
-		TRQ_SEL_FMAP_AA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_MAX",
-		TRQ_SEL_FMAP_AA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_BASE",
-		TRQ_SEL_FMAP_AA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ab_field_info[] = {
-	{"TRQ_SEL_FMAP_AB_RSVD_1",
-		TRQ_SEL_FMAP_AB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_MAX",
-		TRQ_SEL_FMAP_AB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_BASE",
-		TRQ_SEL_FMAP_AB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ac_field_info[] = {
-	{"TRQ_SEL_FMAP_AC_RSVD_1",
-		TRQ_SEL_FMAP_AC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_MAX",
-		TRQ_SEL_FMAP_AC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_BASE",
-		TRQ_SEL_FMAP_AC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ad_field_info[] = {
-	{"TRQ_SEL_FMAP_AD_RSVD_1",
-		TRQ_SEL_FMAP_AD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_MAX",
-		TRQ_SEL_FMAP_AD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_BASE",
-		TRQ_SEL_FMAP_AD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ae_field_info[] = {
-	{"TRQ_SEL_FMAP_AE_RSVD_1",
-		TRQ_SEL_FMAP_AE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_MAX",
-		TRQ_SEL_FMAP_AE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_BASE",
-		TRQ_SEL_FMAP_AE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_af_field_info[] = {
-	{"TRQ_SEL_FMAP_AF_RSVD_1",
-		TRQ_SEL_FMAP_AF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_MAX",
-		TRQ_SEL_FMAP_AF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_BASE",
-		TRQ_SEL_FMAP_AF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b0_field_info[] = {
-	{"TRQ_SEL_FMAP_B0_RSVD_1",
-		TRQ_SEL_FMAP_B0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_MAX",
-		TRQ_SEL_FMAP_B0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_BASE",
-		TRQ_SEL_FMAP_B0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b1_field_info[] = {
-	{"TRQ_SEL_FMAP_B1_RSVD_1",
-		TRQ_SEL_FMAP_B1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_MAX",
-		TRQ_SEL_FMAP_B1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_BASE",
-		TRQ_SEL_FMAP_B1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b2_field_info[] = {
-	{"TRQ_SEL_FMAP_B2_RSVD_1",
-		TRQ_SEL_FMAP_B2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_MAX",
-		TRQ_SEL_FMAP_B2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_BASE",
-		TRQ_SEL_FMAP_B2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b3_field_info[] = {
-	{"TRQ_SEL_FMAP_B3_RSVD_1",
-		TRQ_SEL_FMAP_B3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_MAX",
-		TRQ_SEL_FMAP_B3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_BASE",
-		TRQ_SEL_FMAP_B3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b4_field_info[] = {
-	{"TRQ_SEL_FMAP_B4_RSVD_1",
-		TRQ_SEL_FMAP_B4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_MAX",
-		TRQ_SEL_FMAP_B4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_BASE",
-		TRQ_SEL_FMAP_B4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b5_field_info[] = {
-	{"TRQ_SEL_FMAP_B5_RSVD_1",
-		TRQ_SEL_FMAP_B5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_MAX",
-		TRQ_SEL_FMAP_B5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_BASE",
-		TRQ_SEL_FMAP_B5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b6_field_info[] = {
-	{"TRQ_SEL_FMAP_B6_RSVD_1",
-		TRQ_SEL_FMAP_B6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_MAX",
-		TRQ_SEL_FMAP_B6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_BASE",
-		TRQ_SEL_FMAP_B6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b7_field_info[] = {
-	{"TRQ_SEL_FMAP_B7_RSVD_1",
-		TRQ_SEL_FMAP_B7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_MAX",
-		TRQ_SEL_FMAP_B7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_BASE",
-		TRQ_SEL_FMAP_B7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b8_field_info[] = {
-	{"TRQ_SEL_FMAP_B8_RSVD_1",
-		TRQ_SEL_FMAP_B8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_MAX",
-		TRQ_SEL_FMAP_B8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_BASE",
-		TRQ_SEL_FMAP_B8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b9_field_info[] = {
-	{"TRQ_SEL_FMAP_B9_RSVD_1",
-		TRQ_SEL_FMAP_B9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_MAX",
-		TRQ_SEL_FMAP_B9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_BASE",
-		TRQ_SEL_FMAP_B9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ba_field_info[] = {
-	{"TRQ_SEL_FMAP_BA_RSVD_1",
-		TRQ_SEL_FMAP_BA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_MAX",
-		TRQ_SEL_FMAP_BA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_BASE",
-		TRQ_SEL_FMAP_BA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bb_field_info[] = {
-	{"TRQ_SEL_FMAP_BB_RSVD_1",
-		TRQ_SEL_FMAP_BB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_MAX",
-		TRQ_SEL_FMAP_BB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_BASE",
-		TRQ_SEL_FMAP_BB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bc_field_info[] = {
-	{"TRQ_SEL_FMAP_BC_RSVD_1",
-		TRQ_SEL_FMAP_BC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_MAX",
-		TRQ_SEL_FMAP_BC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_BASE",
-		TRQ_SEL_FMAP_BC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bd_field_info[] = {
-	{"TRQ_SEL_FMAP_BD_RSVD_1",
-		TRQ_SEL_FMAP_BD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_MAX",
-		TRQ_SEL_FMAP_BD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_BASE",
-		TRQ_SEL_FMAP_BD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_be_field_info[] = {
-	{"TRQ_SEL_FMAP_BE_RSVD_1",
-		TRQ_SEL_FMAP_BE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_MAX",
-		TRQ_SEL_FMAP_BE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_BASE",
-		TRQ_SEL_FMAP_BE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bf_field_info[] = {
-	{"TRQ_SEL_FMAP_BF_RSVD_1",
-		TRQ_SEL_FMAP_BF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_MAX",
-		TRQ_SEL_FMAP_BF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_BASE",
-		TRQ_SEL_FMAP_BF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c0_field_info[] = {
-	{"TRQ_SEL_FMAP_C0_RSVD_1",
-		TRQ_SEL_FMAP_C0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_MAX",
-		TRQ_SEL_FMAP_C0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_BASE",
-		TRQ_SEL_FMAP_C0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c1_field_info[] = {
-	{"TRQ_SEL_FMAP_C1_RSVD_1",
-		TRQ_SEL_FMAP_C1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_MAX",
-		TRQ_SEL_FMAP_C1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_BASE",
-		TRQ_SEL_FMAP_C1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c2_field_info[] = {
-	{"TRQ_SEL_FMAP_C2_RSVD_1",
-		TRQ_SEL_FMAP_C2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_MAX",
-		TRQ_SEL_FMAP_C2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_BASE",
-		TRQ_SEL_FMAP_C2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c3_field_info[] = {
-	{"TRQ_SEL_FMAP_C3_RSVD_1",
-		TRQ_SEL_FMAP_C3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_MAX",
-		TRQ_SEL_FMAP_C3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_BASE",
-		TRQ_SEL_FMAP_C3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c4_field_info[] = {
-	{"TRQ_SEL_FMAP_C4_RSVD_1",
-		TRQ_SEL_FMAP_C4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_MAX",
-		TRQ_SEL_FMAP_C4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_BASE",
-		TRQ_SEL_FMAP_C4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c5_field_info[] = {
-	{"TRQ_SEL_FMAP_C5_RSVD_1",
-		TRQ_SEL_FMAP_C5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_MAX",
-		TRQ_SEL_FMAP_C5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_BASE",
-		TRQ_SEL_FMAP_C5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c6_field_info[] = {
-	{"TRQ_SEL_FMAP_C6_RSVD_1",
-		TRQ_SEL_FMAP_C6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_MAX",
-		TRQ_SEL_FMAP_C6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_BASE",
-		TRQ_SEL_FMAP_C6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c7_field_info[] = {
-	{"TRQ_SEL_FMAP_C7_RSVD_1",
-		TRQ_SEL_FMAP_C7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_MAX",
-		TRQ_SEL_FMAP_C7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_BASE",
-		TRQ_SEL_FMAP_C7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c8_field_info[] = {
-	{"TRQ_SEL_FMAP_C8_RSVD_1",
-		TRQ_SEL_FMAP_C8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_MAX",
-		TRQ_SEL_FMAP_C8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_BASE",
-		TRQ_SEL_FMAP_C8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c9_field_info[] = {
-	{"TRQ_SEL_FMAP_C9_RSVD_1",
-		TRQ_SEL_FMAP_C9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_MAX",
-		TRQ_SEL_FMAP_C9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_BASE",
-		TRQ_SEL_FMAP_C9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ca_field_info[] = {
-	{"TRQ_SEL_FMAP_CA_RSVD_1",
-		TRQ_SEL_FMAP_CA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_MAX",
-		TRQ_SEL_FMAP_CA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_BASE",
-		TRQ_SEL_FMAP_CA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cb_field_info[] = {
-	{"TRQ_SEL_FMAP_CB_RSVD_1",
-		TRQ_SEL_FMAP_CB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_MAX",
-		TRQ_SEL_FMAP_CB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_BASE",
-		TRQ_SEL_FMAP_CB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cc_field_info[] = {
-	{"TRQ_SEL_FMAP_CC_RSVD_1",
-		TRQ_SEL_FMAP_CC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_MAX",
-		TRQ_SEL_FMAP_CC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_BASE",
-		TRQ_SEL_FMAP_CC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cd_field_info[] = {
-	{"TRQ_SEL_FMAP_CD_RSVD_1",
-		TRQ_SEL_FMAP_CD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_MAX",
-		TRQ_SEL_FMAP_CD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_BASE",
-		TRQ_SEL_FMAP_CD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ce_field_info[] = {
-	{"TRQ_SEL_FMAP_CE_RSVD_1",
-		TRQ_SEL_FMAP_CE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_MAX",
-		TRQ_SEL_FMAP_CE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_BASE",
-		TRQ_SEL_FMAP_CE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cf_field_info[] = {
-	{"TRQ_SEL_FMAP_CF_RSVD_1",
-		TRQ_SEL_FMAP_CF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_MAX",
-		TRQ_SEL_FMAP_CF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_BASE",
-		TRQ_SEL_FMAP_CF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d0_field_info[] = {
-	{"TRQ_SEL_FMAP_D0_RSVD_1",
-		TRQ_SEL_FMAP_D0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_MAX",
-		TRQ_SEL_FMAP_D0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_BASE",
-		TRQ_SEL_FMAP_D0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d1_field_info[] = {
-	{"TRQ_SEL_FMAP_D1_RSVD_1",
-		TRQ_SEL_FMAP_D1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_MAX",
-		TRQ_SEL_FMAP_D1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_BASE",
-		TRQ_SEL_FMAP_D1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d2_field_info[] = {
-	{"TRQ_SEL_FMAP_D2_RSVD_1",
-		TRQ_SEL_FMAP_D2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_MAX",
-		TRQ_SEL_FMAP_D2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_BASE",
-		TRQ_SEL_FMAP_D2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d3_field_info[] = {
-	{"TRQ_SEL_FMAP_D3_RSVD_1",
-		TRQ_SEL_FMAP_D3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_MAX",
-		TRQ_SEL_FMAP_D3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_BASE",
-		TRQ_SEL_FMAP_D3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d4_field_info[] = {
-	{"TRQ_SEL_FMAP_D4_RSVD_1",
-		TRQ_SEL_FMAP_D4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_MAX",
-		TRQ_SEL_FMAP_D4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_BASE",
-		TRQ_SEL_FMAP_D4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d5_field_info[] = {
-	{"TRQ_SEL_FMAP_D5_RSVD_1",
-		TRQ_SEL_FMAP_D5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_MAX",
-		TRQ_SEL_FMAP_D5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_BASE",
-		TRQ_SEL_FMAP_D5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d6_field_info[] = {
-	{"TRQ_SEL_FMAP_D6_RSVD_1",
-		TRQ_SEL_FMAP_D6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_MAX",
-		TRQ_SEL_FMAP_D6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_BASE",
-		TRQ_SEL_FMAP_D6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d7_field_info[] = {
-	{"TRQ_SEL_FMAP_D7_RSVD_1",
-		TRQ_SEL_FMAP_D7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_MAX",
-		TRQ_SEL_FMAP_D7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_BASE",
-		TRQ_SEL_FMAP_D7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d8_field_info[] = {
-	{"TRQ_SEL_FMAP_D8_RSVD_1",
-		TRQ_SEL_FMAP_D8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_MAX",
-		TRQ_SEL_FMAP_D8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_BASE",
-		TRQ_SEL_FMAP_D8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d9_field_info[] = {
-	{"TRQ_SEL_FMAP_D9_RSVD_1",
-		TRQ_SEL_FMAP_D9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_MAX",
-		TRQ_SEL_FMAP_D9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_BASE",
-		TRQ_SEL_FMAP_D9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_da_field_info[] = {
-	{"TRQ_SEL_FMAP_DA_RSVD_1",
-		TRQ_SEL_FMAP_DA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_MAX",
-		TRQ_SEL_FMAP_DA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_BASE",
-		TRQ_SEL_FMAP_DA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_db_field_info[] = {
-	{"TRQ_SEL_FMAP_DB_RSVD_1",
-		TRQ_SEL_FMAP_DB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_MAX",
-		TRQ_SEL_FMAP_DB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_BASE",
-		TRQ_SEL_FMAP_DB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dc_field_info[] = {
-	{"TRQ_SEL_FMAP_DC_RSVD_1",
-		TRQ_SEL_FMAP_DC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_MAX",
-		TRQ_SEL_FMAP_DC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_BASE",
-		TRQ_SEL_FMAP_DC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dd_field_info[] = {
-	{"TRQ_SEL_FMAP_DD_RSVD_1",
-		TRQ_SEL_FMAP_DD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_MAX",
-		TRQ_SEL_FMAP_DD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_BASE",
-		TRQ_SEL_FMAP_DD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_de_field_info[] = {
-	{"TRQ_SEL_FMAP_DE_RSVD_1",
-		TRQ_SEL_FMAP_DE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_MAX",
-		TRQ_SEL_FMAP_DE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_BASE",
-		TRQ_SEL_FMAP_DE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_df_field_info[] = {
-	{"TRQ_SEL_FMAP_DF_RSVD_1",
-		TRQ_SEL_FMAP_DF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_MAX",
-		TRQ_SEL_FMAP_DF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_BASE",
-		TRQ_SEL_FMAP_DF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e0_field_info[] = {
-	{"TRQ_SEL_FMAP_E0_RSVD_1",
-		TRQ_SEL_FMAP_E0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_MAX",
-		TRQ_SEL_FMAP_E0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_BASE",
-		TRQ_SEL_FMAP_E0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e1_field_info[] = {
-	{"TRQ_SEL_FMAP_E1_RSVD_1",
-		TRQ_SEL_FMAP_E1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_MAX",
-		TRQ_SEL_FMAP_E1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_BASE",
-		TRQ_SEL_FMAP_E1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e2_field_info[] = {
-	{"TRQ_SEL_FMAP_E2_RSVD_1",
-		TRQ_SEL_FMAP_E2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_MAX",
-		TRQ_SEL_FMAP_E2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_BASE",
-		TRQ_SEL_FMAP_E2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e3_field_info[] = {
-	{"TRQ_SEL_FMAP_E3_RSVD_1",
-		TRQ_SEL_FMAP_E3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_MAX",
-		TRQ_SEL_FMAP_E3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_BASE",
-		TRQ_SEL_FMAP_E3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e4_field_info[] = {
-	{"TRQ_SEL_FMAP_E4_RSVD_1",
-		TRQ_SEL_FMAP_E4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_MAX",
-		TRQ_SEL_FMAP_E4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_BASE",
-		TRQ_SEL_FMAP_E4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e5_field_info[] = {
-	{"TRQ_SEL_FMAP_E5_RSVD_1",
-		TRQ_SEL_FMAP_E5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_MAX",
-		TRQ_SEL_FMAP_E5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_BASE",
-		TRQ_SEL_FMAP_E5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e6_field_info[] = {
-	{"TRQ_SEL_FMAP_E6_RSVD_1",
-		TRQ_SEL_FMAP_E6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_MAX",
-		TRQ_SEL_FMAP_E6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_BASE",
-		TRQ_SEL_FMAP_E6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e7_field_info[] = {
-	{"TRQ_SEL_FMAP_E7_RSVD_1",
-		TRQ_SEL_FMAP_E7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_MAX",
-		TRQ_SEL_FMAP_E7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_BASE",
-		TRQ_SEL_FMAP_E7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e8_field_info[] = {
-	{"TRQ_SEL_FMAP_E8_RSVD_1",
-		TRQ_SEL_FMAP_E8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_MAX",
-		TRQ_SEL_FMAP_E8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_BASE",
-		TRQ_SEL_FMAP_E8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e9_field_info[] = {
-	{"TRQ_SEL_FMAP_E9_RSVD_1",
-		TRQ_SEL_FMAP_E9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_MAX",
-		TRQ_SEL_FMAP_E9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_BASE",
-		TRQ_SEL_FMAP_E9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ea_field_info[] = {
-	{"TRQ_SEL_FMAP_EA_RSVD_1",
-		TRQ_SEL_FMAP_EA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_MAX",
-		TRQ_SEL_FMAP_EA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_BASE",
-		TRQ_SEL_FMAP_EA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_eb_field_info[] = {
-	{"TRQ_SEL_FMAP_EB_RSVD_1",
-		TRQ_SEL_FMAP_EB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_MAX",
-		TRQ_SEL_FMAP_EB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_BASE",
-		TRQ_SEL_FMAP_EB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ec_field_info[] = {
-	{"TRQ_SEL_FMAP_EC_RSVD_1",
-		TRQ_SEL_FMAP_EC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_MAX",
-		TRQ_SEL_FMAP_EC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_BASE",
-		TRQ_SEL_FMAP_EC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ed_field_info[] = {
-	{"TRQ_SEL_FMAP_ED_RSVD_1",
-		TRQ_SEL_FMAP_ED_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_MAX",
-		TRQ_SEL_FMAP_ED_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_BASE",
-		TRQ_SEL_FMAP_ED_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ee_field_info[] = {
-	{"TRQ_SEL_FMAP_EE_RSVD_1",
-		TRQ_SEL_FMAP_EE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_MAX",
-		TRQ_SEL_FMAP_EE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_BASE",
-		TRQ_SEL_FMAP_EE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ef_field_info[] = {
-	{"TRQ_SEL_FMAP_EF_RSVD_1",
-		TRQ_SEL_FMAP_EF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_MAX",
-		TRQ_SEL_FMAP_EF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_BASE",
-		TRQ_SEL_FMAP_EF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f0_field_info[] = {
-	{"TRQ_SEL_FMAP_F0_RSVD_1",
-		TRQ_SEL_FMAP_F0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_MAX",
-		TRQ_SEL_FMAP_F0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_BASE",
-		TRQ_SEL_FMAP_F0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_3_field_info[] = {
-	{"IND_CTXT_DATA_3_DATA",
-		IND_CTXT_DATA_3_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_2_field_info[] = {
-	{"IND_CTXT_DATA_2_DATA",
-		IND_CTXT_DATA_2_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_1_field_info[] = {
-	{"IND_CTXT_DATA_1_DATA",
-		IND_CTXT_DATA_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_0_field_info[] = {
-	{"IND_CTXT_DATA_0_DATA",
-		IND_CTXT_DATA_0_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt3_field_info[] = {
-	{"IND_CTXT3",
-		IND_CTXT3_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt2_field_info[] = {
-	{"IND_CTXT2",
-		IND_CTXT2_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt1_field_info[] = {
-	{"IND_CTXT1",
-		IND_CTXT1_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt0_field_info[] = {
-	{"IND_CTXT0",
-		IND_CTXT0_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SET",
-		IND_CTXT_CMD_SET_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_1_field_info[] = {
-	{"C2H_TIMER_CNT_1_RSVD_1",
-		C2H_TIMER_CNT_1_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_1",
-		C2H_TIMER_CNT_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_2_field_info[] = {
-	{"C2H_TIMER_CNT_2_RSVD_1",
-		C2H_TIMER_CNT_2_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_2",
-		C2H_TIMER_CNT_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_3_field_info[] = {
-	{"C2H_TIMER_CNT_3_RSVD_1",
-		C2H_TIMER_CNT_3_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_3",
-		C2H_TIMER_CNT_3_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_4_field_info[] = {
-	{"C2H_TIMER_CNT_4_RSVD_1",
-		C2H_TIMER_CNT_4_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_4",
-		C2H_TIMER_CNT_4_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_5_field_info[] = {
-	{"C2H_TIMER_CNT_5_RSVD_1",
-		C2H_TIMER_CNT_5_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_5",
-		C2H_TIMER_CNT_5_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_6_field_info[] = {
-	{"C2H_TIMER_CNT_6_RSVD_1",
-		C2H_TIMER_CNT_6_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_6",
-		C2H_TIMER_CNT_6_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_7_field_info[] = {
-	{"C2H_TIMER_CNT_7_RSVD_1",
-		C2H_TIMER_CNT_7_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_7",
-		C2H_TIMER_CNT_7_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_8_field_info[] = {
-	{"C2H_TIMER_CNT_8_RSVD_1",
-		C2H_TIMER_CNT_8_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_8",
-		C2H_TIMER_CNT_8_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_9_field_info[] = {
-	{"C2H_TIMER_CNT_9_RSVD_1",
-		C2H_TIMER_CNT_9_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_9",
-		C2H_TIMER_CNT_9_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_a_field_info[] = {
-	{"C2H_TIMER_CNT_A_RSVD_1",
-		C2H_TIMER_CNT_A_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_A",
-		C2H_TIMER_CNT_A_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_b_field_info[] = {
-	{"C2H_TIMER_CNT_B_RSVD_1",
-		C2H_TIMER_CNT_B_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_B",
-		C2H_TIMER_CNT_B_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_c_field_info[] = {
-	{"C2H_TIMER_CNT_C_RSVD_1",
-		C2H_TIMER_CNT_C_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_C",
-		C2H_TIMER_CNT_C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_d_field_info[] = {
-	{"C2H_TIMER_CNT_D_RSVD_1",
-		C2H_TIMER_CNT_D_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_D",
-		C2H_TIMER_CNT_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_e_field_info[] = {
-	{"C2H_TIMER_CNT_E_RSVD_1",
-		C2H_TIMER_CNT_E_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_E",
-		C2H_TIMER_CNT_E_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_f_field_info[] = {
-	{"C2H_TIMER_CNT_F_RSVD_1",
-		C2H_TIMER_CNT_F_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_F",
-		C2H_TIMER_CNT_F_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_10_field_info[] = {
-	{"C2H_TIMER_CNT_10_RSVD_1",
-		C2H_TIMER_CNT_10_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_10",
-		C2H_TIMER_CNT_10_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_1_field_info[] = {
-	{"C2H_CNT_TH_1_RSVD_1",
-		C2H_CNT_TH_1_RSVD_1_MASK},
-	{"C2H_CNT_TH_1_THESHOLD_CNT",
-		C2H_CNT_TH_1_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_2_field_info[] = {
-	{"C2H_CNT_TH_2_RSVD_1",
-		C2H_CNT_TH_2_RSVD_1_MASK},
-	{"C2H_CNT_TH_2_THESHOLD_CNT",
-		C2H_CNT_TH_2_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_3_field_info[] = {
-	{"C2H_CNT_TH_3_RSVD_1",
-		C2H_CNT_TH_3_RSVD_1_MASK},
-	{"C2H_CNT_TH_3_THESHOLD_CNT",
-		C2H_CNT_TH_3_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_4_field_info[] = {
-	{"C2H_CNT_TH_4_RSVD_1",
-		C2H_CNT_TH_4_RSVD_1_MASK},
-	{"C2H_CNT_TH_4_THESHOLD_CNT",
-		C2H_CNT_TH_4_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_5_field_info[] = {
-	{"C2H_CNT_TH_5_RSVD_1",
-		C2H_CNT_TH_5_RSVD_1_MASK},
-	{"C2H_CNT_TH_5_THESHOLD_CNT",
-		C2H_CNT_TH_5_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_6_field_info[] = {
-	{"C2H_CNT_TH_6_RSVD_1",
-		C2H_CNT_TH_6_RSVD_1_MASK},
-	{"C2H_CNT_TH_6_THESHOLD_CNT",
-		C2H_CNT_TH_6_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_7_field_info[] = {
-	{"C2H_CNT_TH_7_RSVD_1",
-		C2H_CNT_TH_7_RSVD_1_MASK},
-	{"C2H_CNT_TH_7_THESHOLD_CNT",
-		C2H_CNT_TH_7_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_8_field_info[] = {
-	{"C2H_CNT_TH_8_RSVD_1",
-		C2H_CNT_TH_8_RSVD_1_MASK},
-	{"C2H_CNT_TH_8_THESHOLD_CNT",
-		C2H_CNT_TH_8_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_9_field_info[] = {
-	{"C2H_CNT_TH_9_RSVD_1",
-		C2H_CNT_TH_9_RSVD_1_MASK},
-	{"C2H_CNT_TH_9_THESHOLD_CNT",
-		C2H_CNT_TH_9_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_a_field_info[] = {
-	{"C2H_CNT_TH_A_RSVD_1",
-		C2H_CNT_TH_A_RSVD_1_MASK},
-	{"C2H_CNT_TH_A_THESHOLD_CNT",
-		C2H_CNT_TH_A_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_b_field_info[] = {
-	{"C2H_CNT_TH_B_RSVD_1",
-		C2H_CNT_TH_B_RSVD_1_MASK},
-	{"C2H_CNT_TH_B_THESHOLD_CNT",
-		C2H_CNT_TH_B_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_c_field_info[] = {
-	{"C2H_CNT_TH_C_RSVD_1",
-		C2H_CNT_TH_C_RSVD_1_MASK},
-	{"C2H_CNT_TH_C_THESHOLD_CNT",
-		C2H_CNT_TH_C_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_d_field_info[] = {
-	{"C2H_CNT_TH_D_RSVD_1",
-		C2H_CNT_TH_D_RSVD_1_MASK},
-	{"C2H_CNT_TH_D_THESHOLD_CNT",
-		C2H_CNT_TH_D_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_e_field_info[] = {
-	{"C2H_CNT_TH_E_RSVD_1",
-		C2H_CNT_TH_E_RSVD_1_MASK},
-	{"C2H_CNT_TH_E_THESHOLD_CNT",
-		C2H_CNT_TH_E_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_f_field_info[] = {
-	{"C2H_CNT_TH_F_RSVD_1",
-		C2H_CNT_TH_F_RSVD_1_MASK},
-	{"C2H_CNT_TH_F_THESHOLD_CNT",
-		C2H_CNT_TH_F_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_10_field_info[] = {
-	{"C2H_CNT_TH_10_RSVD_1",
-		C2H_CNT_TH_10_RSVD_1_MASK},
-	{"C2H_CNT_TH_10_THESHOLD_CNT",
-		C2H_CNT_TH_10_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_qid_field_info[] = {
-	{"C2H_QID2VEC_MAP_QID_RSVD_1",
-		C2H_QID2VEC_MAP_QID_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_QID_QID",
-		C2H_QID2VEC_MAP_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_field_info[] = {
-	{"C2H_QID2VEC_MAP_RSVD_1",
-		C2H_QID2VEC_MAP_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_H2C_EN_COAL",
-		C2H_QID2VEC_MAP_H2C_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_H2C_VECTOR",
-		C2H_QID2VEC_MAP_H2C_VECTOR_MASK},
-	{"C2H_QID2VEC_MAP_C2H_EN_COAL",
-		C2H_QID2VEC_MAP_C2H_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_C2H_VECTOR",
-		C2H_QID2VEC_MAP_C2H_VECTOR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_0_field_info[] = {
-	{"C2H_BUF_SZ_0_SIZE",
-		C2H_BUF_SZ_0_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_1_field_info[] = {
-	{"C2H_BUF_SZ_1_SIZE",
-		C2H_BUF_SZ_1_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_2_field_info[] = {
-	{"C2H_BUF_SZ_2_SIZE",
-		C2H_BUF_SZ_2_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_3_field_info[] = {
-	{"C2H_BUF_SZ_3_SIZE",
-		C2H_BUF_SZ_3_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_4_field_info[] = {
-	{"C2H_BUF_SZ_4_SIZE",
-		C2H_BUF_SZ_4_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_5_field_info[] = {
-	{"C2H_BUF_SZ_5_SIZE",
-		C2H_BUF_SZ_5_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_7_field_info[] = {
-	{"C2H_BUF_SZ_7_SIZE",
-		C2H_BUF_SZ_7_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_8_field_info[] = {
-	{"C2H_BUF_SZ_8_SIZE",
-		C2H_BUF_SZ_8_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_9_field_info[] = {
-	{"C2H_BUF_SZ_9_SIZE",
-		C2H_BUF_SZ_9_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_10_field_info[] = {
-	{"C2H_BUF_SZ_10_SIZE",
-		C2H_BUF_SZ_10_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_11_field_info[] = {
-	{"C2H_BUF_SZ_11_SIZE",
-		C2H_BUF_SZ_11_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_12_field_info[] = {
-	{"C2H_BUF_SZ_12_SIZE",
-		C2H_BUF_SZ_12_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_13_field_info[] = {
-	{"C2H_BUF_SZ_13_SIZE",
-		C2H_BUF_SZ_13_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_14_field_info[] = {
-	{"C2H_BUF_SZ_14_SIZE",
-		C2H_BUF_SZ_14_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_15_field_info[] = {
-	{"C2H_BUF_SZ_15_SIZE",
-		C2H_BUF_SZ_15_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RSVD_2",
-		C2H_FATAL_ERR_STAT_RSVD_2_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVT_QCNT_TH",
-		C2H_PFCH_CFG_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_QCNT",
-		C2H_PFCH_CFG_QCNT_MASK},
-	{"C2H_PFCH_CFG_NUM",
-		C2H_PFCH_CFG_NUM_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_RSVD_1",
-		C2H_STAT_DMA_ENG_0_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_DESC_RSP_LAST",
-		C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT",
-		C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_STAT",
-		C2H_FIRST_ERR_QID_ERR_STAT_MASK},
-	{"C2H_FIRST_ERR_QID_CMD_WR",
-		C2H_FIRST_ERR_QID_CMD_WR_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3",
-		H2C_REG3_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_field_info[] = {
-	{"C2H_CHANNEL_CTL_RSVD_1",
-		C2H_CHANNEL_CTL_RSVD_1_MASK},
-	{"C2H_CHANNEL_CTL_RUN",
-		C2H_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_1_field_info[] = {
-	{"C2H_CHANNEL_CTL_1_RUN",
-		C2H_CHANNEL_CTL_1_RUN_MASK},
-	{"C2H_CHANNEL_CTL_1_RUN_1",
-		C2H_CHANNEL_CTL_1_RUN_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_cmpl_desc_cnt_field_info[] = {
-	{"C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO",
-		C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_1",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_2",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RSVD_1",
-		C2H_MM_ERR_CODE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_VALID",
-		C2H_MM_ERR_CODE_VALID_MASK},
-	{"C2H_MM_ERR_CODE_RDWR",
-		C2H_MM_ERR_CODE_RDWR_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-	{"C2H_MM_ERR_INFO_DIR",
-		C2H_MM_ERR_INFO_DIR_MASK},
-	{"C2H_MM_ERR_INFO_CIDX",
-		C2H_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_field_info[] = {
-	{"H2C_CHANNEL_CTL_RSVD_1",
-		H2C_CHANNEL_CTL_RSVD_1_MASK},
-	{"H2C_CHANNEL_CTL_RUN",
-		H2C_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_1_field_info[] = {
-	{"H2C_CHANNEL_CTL_1_RUN",
-		H2C_CHANNEL_CTL_1_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_2_field_info[] = {
-	{"H2C_CHANNEL_CTL_2_RUN",
-		H2C_CHANNEL_CTL_2_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_cmpl_desc_cnt_field_info[] = {
-	{"H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO",
-		H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_1",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_2",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_3",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_4",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_5",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_6",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_VALID",
-		H2C_MM_ERR_CODE_VALID_MASK},
-	{"H2C_MM_ERR_CODE_RDWR",
-		H2C_MM_ERR_CODE_RDWR_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-	{"H2C_MM_ERR_INFO_DIR",
-		H2C_MM_ERR_INFO_DIR_MASK},
-	{"H2C_MM_ERR_INFO_CIDX",
-		H2C_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	func_status_reg_field_info[] = {
-	{"FUNC_STATUS_REG_RSVD_1",
-		FUNC_STATUS_REG_RSVD_1_MASK},
-	{"FUNC_STATUS_REG_CUR_SRC_FN",
-		FUNC_STATUS_REG_CUR_SRC_FN_MASK},
-	{"FUNC_STATUS_REG_ACK",
-		FUNC_STATUS_REG_ACK_MASK},
-	{"FUNC_STATUS_REG_O_MSG",
-		FUNC_STATUS_REG_O_MSG_MASK},
-	{"FUNC_STATUS_REG_I_MSG",
-		FUNC_STATUS_REG_I_MSG_MASK},
-};
-
-
-static struct regfield_info
-	func_cmd_reg_field_info[] = {
-	{"FUNC_CMD_REG_RSVD_1",
-		FUNC_CMD_REG_RSVD_1_MASK},
-	{"FUNC_CMD_REG_RSVD_2",
-		FUNC_CMD_REG_RSVD_2_MASK},
-	{"FUNC_CMD_REG_MSG_RCV",
-		FUNC_CMD_REG_MSG_RCV_MASK},
-	{"FUNC_CMD_REG_MSG_SENT",
-		FUNC_CMD_REG_MSG_SENT_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_vector_reg_field_info[] = {
-	{"FUNC_INTERRUPT_VECTOR_REG_RSVD_1",
-		FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_VECTOR_REG_IN",
-		FUNC_INTERRUPT_VECTOR_REG_IN_MASK},
-};
-
-
-static struct regfield_info
-	target_func_reg_field_info[] = {
-	{"TARGET_FUNC_REG_RSVD_1",
-		TARGET_FUNC_REG_RSVD_1_MASK},
-	{"TARGET_FUNC_REG_N_ID",
-		TARGET_FUNC_REG_N_ID_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_ctl_reg_field_info[] = {
-	{"FUNC_INTERRUPT_CTL_REG_RSVD_1",
-		FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_CTL_REG_INT_EN",
-		FUNC_INTERRUPT_CTL_REG_INT_EN_MASK},
-};
-
-static struct xreg_info qdma_cpm4_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_BUSDEV", 0x04,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_busdev_field_info),
-	cfg_blk_busdev_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_BLK_SCRATCH_0", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_0_field_info),
-	cfg_blk_scratch_0_field_info
-},
-{"CFG_BLK_SCRATCH_1", 0x84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_1_field_info),
-	cfg_blk_scratch_1_field_info
-},
-{"CFG_BLK_SCRATCH_2", 0x88,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_2_field_info),
-	cfg_blk_scratch_2_field_info
-},
-{"CFG_BLK_SCRATCH_3", 0x8c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_3_field_info),
-	cfg_blk_scratch_3_field_info
-},
-{"CFG_BLK_SCRATCH_4", 0x90,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_4_field_info),
-	cfg_blk_scratch_4_field_info
-},
-{"CFG_BLK_SCRATCH_5", 0x94,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_5_field_info),
-	cfg_blk_scratch_5_field_info
-},
-{"CFG_BLK_SCRATCH_6", 0x98,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_6_field_info),
-	cfg_blk_scratch_6_field_info
-},
-{"CFG_BLK_SCRATCH_7", 0x9c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_7_field_info),
-	cfg_blk_scratch_7_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_PF_BARLITE_INT", 0x104,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_int_field_info),
-	glbl2_pf_barlite_int_field_info
-},
-{"GLBL2_PF_VF_BARLITE_INT", 0x108,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_int_field_info),
-	glbl2_pf_vf_barlite_int_field_info
-},
-{"GLBL2_PF_BARLITE_EXT", 0x10c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_ext_field_info),
-	glbl2_pf_barlite_ext_field_info
-},
-{"GLBL2_PF_VF_BARLITE_EXT", 0x110,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_ext_field_info),
-	glbl2_pf_vf_barlite_ext_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_CHANNEL_FUNC_RET", 0x12c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_func_ret_field_info),
-	glbl2_channel_func_ret_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"TRQ_SEL_FMAP_0", 0x400,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_0_field_info),
-	trq_sel_fmap_0_field_info
-},
-{"TRQ_SEL_FMAP_1", 0x404,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1_field_info),
-	trq_sel_fmap_1_field_info
-},
-{"TRQ_SEL_FMAP_2", 0x408,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2_field_info),
-	trq_sel_fmap_2_field_info
-},
-{"TRQ_SEL_FMAP_3", 0x40c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3_field_info),
-	trq_sel_fmap_3_field_info
-},
-{"TRQ_SEL_FMAP_4", 0x410,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4_field_info),
-	trq_sel_fmap_4_field_info
-},
-{"TRQ_SEL_FMAP_5", 0x414,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5_field_info),
-	trq_sel_fmap_5_field_info
-},
-{"TRQ_SEL_FMAP_6", 0x418,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6_field_info),
-	trq_sel_fmap_6_field_info
-},
-{"TRQ_SEL_FMAP_7", 0x41c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7_field_info),
-	trq_sel_fmap_7_field_info
-},
-{"TRQ_SEL_FMAP_8", 0x420,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8_field_info),
-	trq_sel_fmap_8_field_info
-},
-{"TRQ_SEL_FMAP_9", 0x424,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9_field_info),
-	trq_sel_fmap_9_field_info
-},
-{"TRQ_SEL_FMAP_A", 0x428,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a_field_info),
-	trq_sel_fmap_a_field_info
-},
-{"TRQ_SEL_FMAP_B", 0x42c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b_field_info),
-	trq_sel_fmap_b_field_info
-},
-{"TRQ_SEL_FMAP_D", 0x430,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d_field_info),
-	trq_sel_fmap_d_field_info
-},
-{"TRQ_SEL_FMAP_E", 0x434,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e_field_info),
-	trq_sel_fmap_e_field_info
-},
-{"TRQ_SEL_FMAP_F", 0x438,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f_field_info),
-	trq_sel_fmap_f_field_info
-},
-{"TRQ_SEL_FMAP_10", 0x43c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_10_field_info),
-	trq_sel_fmap_10_field_info
-},
-{"TRQ_SEL_FMAP_11", 0x440,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_11_field_info),
-	trq_sel_fmap_11_field_info
-},
-{"TRQ_SEL_FMAP_12", 0x444,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_12_field_info),
-	trq_sel_fmap_12_field_info
-},
-{"TRQ_SEL_FMAP_13", 0x448,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_13_field_info),
-	trq_sel_fmap_13_field_info
-},
-{"TRQ_SEL_FMAP_14", 0x44c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_14_field_info),
-	trq_sel_fmap_14_field_info
-},
-{"TRQ_SEL_FMAP_15", 0x450,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_15_field_info),
-	trq_sel_fmap_15_field_info
-},
-{"TRQ_SEL_FMAP_16", 0x454,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_16_field_info),
-	trq_sel_fmap_16_field_info
-},
-{"TRQ_SEL_FMAP_17", 0x458,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_17_field_info),
-	trq_sel_fmap_17_field_info
-},
-{"TRQ_SEL_FMAP_18", 0x45c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_18_field_info),
-	trq_sel_fmap_18_field_info
-},
-{"TRQ_SEL_FMAP_19", 0x460,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_19_field_info),
-	trq_sel_fmap_19_field_info
-},
-{"TRQ_SEL_FMAP_1A", 0x464,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1a_field_info),
-	trq_sel_fmap_1a_field_info
-},
-{"TRQ_SEL_FMAP_1B", 0x468,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1b_field_info),
-	trq_sel_fmap_1b_field_info
-},
-{"TRQ_SEL_FMAP_1C", 0x46c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1c_field_info),
-	trq_sel_fmap_1c_field_info
-},
-{"TRQ_SEL_FMAP_1D", 0x470,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1d_field_info),
-	trq_sel_fmap_1d_field_info
-},
-{"TRQ_SEL_FMAP_1E", 0x474,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1e_field_info),
-	trq_sel_fmap_1e_field_info
-},
-{"TRQ_SEL_FMAP_1F", 0x478,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1f_field_info),
-	trq_sel_fmap_1f_field_info
-},
-{"TRQ_SEL_FMAP_20", 0x47c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_20_field_info),
-	trq_sel_fmap_20_field_info
-},
-{"TRQ_SEL_FMAP_21", 0x480,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_21_field_info),
-	trq_sel_fmap_21_field_info
-},
-{"TRQ_SEL_FMAP_22", 0x484,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_22_field_info),
-	trq_sel_fmap_22_field_info
-},
-{"TRQ_SEL_FMAP_23", 0x488,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_23_field_info),
-	trq_sel_fmap_23_field_info
-},
-{"TRQ_SEL_FMAP_24", 0x48c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_24_field_info),
-	trq_sel_fmap_24_field_info
-},
-{"TRQ_SEL_FMAP_25", 0x490,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_25_field_info),
-	trq_sel_fmap_25_field_info
-},
-{"TRQ_SEL_FMAP_26", 0x494,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_26_field_info),
-	trq_sel_fmap_26_field_info
-},
-{"TRQ_SEL_FMAP_27", 0x498,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_27_field_info),
-	trq_sel_fmap_27_field_info
-},
-{"TRQ_SEL_FMAP_28", 0x49c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_28_field_info),
-	trq_sel_fmap_28_field_info
-},
-{"TRQ_SEL_FMAP_29", 0x4a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_29_field_info),
-	trq_sel_fmap_29_field_info
-},
-{"TRQ_SEL_FMAP_2A", 0x4a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2a_field_info),
-	trq_sel_fmap_2a_field_info
-},
-{"TRQ_SEL_FMAP_2B", 0x4a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2b_field_info),
-	trq_sel_fmap_2b_field_info
-},
-{"TRQ_SEL_FMAP_2C", 0x4ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2c_field_info),
-	trq_sel_fmap_2c_field_info
-},
-{"TRQ_SEL_FMAP_2D", 0x4b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2d_field_info),
-	trq_sel_fmap_2d_field_info
-},
-{"TRQ_SEL_FMAP_2E", 0x4b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2e_field_info),
-	trq_sel_fmap_2e_field_info
-},
-{"TRQ_SEL_FMAP_2F", 0x4b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2f_field_info),
-	trq_sel_fmap_2f_field_info
-},
-{"TRQ_SEL_FMAP_30", 0x4bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_30_field_info),
-	trq_sel_fmap_30_field_info
-},
-{"TRQ_SEL_FMAP_31", 0x4d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_31_field_info),
-	trq_sel_fmap_31_field_info
-},
-{"TRQ_SEL_FMAP_32", 0x4d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_32_field_info),
-	trq_sel_fmap_32_field_info
-},
-{"TRQ_SEL_FMAP_33", 0x4d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_33_field_info),
-	trq_sel_fmap_33_field_info
-},
-{"TRQ_SEL_FMAP_34", 0x4dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_34_field_info),
-	trq_sel_fmap_34_field_info
-},
-{"TRQ_SEL_FMAP_35", 0x4e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_35_field_info),
-	trq_sel_fmap_35_field_info
-},
-{"TRQ_SEL_FMAP_36", 0x4e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_36_field_info),
-	trq_sel_fmap_36_field_info
-},
-{"TRQ_SEL_FMAP_37", 0x4e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_37_field_info),
-	trq_sel_fmap_37_field_info
-},
-{"TRQ_SEL_FMAP_38", 0x4ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_38_field_info),
-	trq_sel_fmap_38_field_info
-},
-{"TRQ_SEL_FMAP_39", 0x4f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_39_field_info),
-	trq_sel_fmap_39_field_info
-},
-{"TRQ_SEL_FMAP_3A", 0x4f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3a_field_info),
-	trq_sel_fmap_3a_field_info
-},
-{"TRQ_SEL_FMAP_3B", 0x4f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3b_field_info),
-	trq_sel_fmap_3b_field_info
-},
-{"TRQ_SEL_FMAP_3C", 0x4fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3c_field_info),
-	trq_sel_fmap_3c_field_info
-},
-{"TRQ_SEL_FMAP_3D", 0x500,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3d_field_info),
-	trq_sel_fmap_3d_field_info
-},
-{"TRQ_SEL_FMAP_3E", 0x504,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3e_field_info),
-	trq_sel_fmap_3e_field_info
-},
-{"TRQ_SEL_FMAP_3F", 0x508,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3f_field_info),
-	trq_sel_fmap_3f_field_info
-},
-{"TRQ_SEL_FMAP_40", 0x50c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_40_field_info),
-	trq_sel_fmap_40_field_info
-},
-{"TRQ_SEL_FMAP_41", 0x510,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_41_field_info),
-	trq_sel_fmap_41_field_info
-},
-{"TRQ_SEL_FMAP_42", 0x514,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_42_field_info),
-	trq_sel_fmap_42_field_info
-},
-{"TRQ_SEL_FMAP_43", 0x518,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_43_field_info),
-	trq_sel_fmap_43_field_info
-},
-{"TRQ_SEL_FMAP_44", 0x51c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_44_field_info),
-	trq_sel_fmap_44_field_info
-},
-{"TRQ_SEL_FMAP_45", 0x520,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_45_field_info),
-	trq_sel_fmap_45_field_info
-},
-{"TRQ_SEL_FMAP_46", 0x524,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_46_field_info),
-	trq_sel_fmap_46_field_info
-},
-{"TRQ_SEL_FMAP_47", 0x528,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_47_field_info),
-	trq_sel_fmap_47_field_info
-},
-{"TRQ_SEL_FMAP_48", 0x52c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_48_field_info),
-	trq_sel_fmap_48_field_info
-},
-{"TRQ_SEL_FMAP_49", 0x530,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_49_field_info),
-	trq_sel_fmap_49_field_info
-},
-{"TRQ_SEL_FMAP_4A", 0x534,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4a_field_info),
-	trq_sel_fmap_4a_field_info
-},
-{"TRQ_SEL_FMAP_4B", 0x538,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4b_field_info),
-	trq_sel_fmap_4b_field_info
-},
-{"TRQ_SEL_FMAP_4C", 0x53c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4c_field_info),
-	trq_sel_fmap_4c_field_info
-},
-{"TRQ_SEL_FMAP_4D", 0x540,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4d_field_info),
-	trq_sel_fmap_4d_field_info
-},
-{"TRQ_SEL_FMAP_4E", 0x544,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4e_field_info),
-	trq_sel_fmap_4e_field_info
-},
-{"TRQ_SEL_FMAP_4F", 0x548,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4f_field_info),
-	trq_sel_fmap_4f_field_info
-},
-{"TRQ_SEL_FMAP_50", 0x54c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_50_field_info),
-	trq_sel_fmap_50_field_info
-},
-{"TRQ_SEL_FMAP_51", 0x550,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_51_field_info),
-	trq_sel_fmap_51_field_info
-},
-{"TRQ_SEL_FMAP_52", 0x554,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_52_field_info),
-	trq_sel_fmap_52_field_info
-},
-{"TRQ_SEL_FMAP_53", 0x558,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_53_field_info),
-	trq_sel_fmap_53_field_info
-},
-{"TRQ_SEL_FMAP_54", 0x55c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_54_field_info),
-	trq_sel_fmap_54_field_info
-},
-{"TRQ_SEL_FMAP_55", 0x560,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_55_field_info),
-	trq_sel_fmap_55_field_info
-},
-{"TRQ_SEL_FMAP_56", 0x564,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_56_field_info),
-	trq_sel_fmap_56_field_info
-},
-{"TRQ_SEL_FMAP_57", 0x568,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_57_field_info),
-	trq_sel_fmap_57_field_info
-},
-{"TRQ_SEL_FMAP_58", 0x56c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_58_field_info),
-	trq_sel_fmap_58_field_info
-},
-{"TRQ_SEL_FMAP_59", 0x570,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_59_field_info),
-	trq_sel_fmap_59_field_info
-},
-{"TRQ_SEL_FMAP_5A", 0x574,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5a_field_info),
-	trq_sel_fmap_5a_field_info
-},
-{"TRQ_SEL_FMAP_5B", 0x578,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5b_field_info),
-	trq_sel_fmap_5b_field_info
-},
-{"TRQ_SEL_FMAP_5C", 0x57c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5c_field_info),
-	trq_sel_fmap_5c_field_info
-},
-{"TRQ_SEL_FMAP_5D", 0x580,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5d_field_info),
-	trq_sel_fmap_5d_field_info
-},
-{"TRQ_SEL_FMAP_5E", 0x584,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5e_field_info),
-	trq_sel_fmap_5e_field_info
-},
-{"TRQ_SEL_FMAP_5F", 0x588,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5f_field_info),
-	trq_sel_fmap_5f_field_info
-},
-{"TRQ_SEL_FMAP_60", 0x58c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_60_field_info),
-	trq_sel_fmap_60_field_info
-},
-{"TRQ_SEL_FMAP_61", 0x590,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_61_field_info),
-	trq_sel_fmap_61_field_info
-},
-{"TRQ_SEL_FMAP_62", 0x594,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_62_field_info),
-	trq_sel_fmap_62_field_info
-},
-{"TRQ_SEL_FMAP_63", 0x598,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_63_field_info),
-	trq_sel_fmap_63_field_info
-},
-{"TRQ_SEL_FMAP_64", 0x59c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_64_field_info),
-	trq_sel_fmap_64_field_info
-},
-{"TRQ_SEL_FMAP_65", 0x5a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_65_field_info),
-	trq_sel_fmap_65_field_info
-},
-{"TRQ_SEL_FMAP_66", 0x5a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_66_field_info),
-	trq_sel_fmap_66_field_info
-},
-{"TRQ_SEL_FMAP_67", 0x5a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_67_field_info),
-	trq_sel_fmap_67_field_info
-},
-{"TRQ_SEL_FMAP_68", 0x5ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_68_field_info),
-	trq_sel_fmap_68_field_info
-},
-{"TRQ_SEL_FMAP_69", 0x5b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_69_field_info),
-	trq_sel_fmap_69_field_info
-},
-{"TRQ_SEL_FMAP_6A", 0x5b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6a_field_info),
-	trq_sel_fmap_6a_field_info
-},
-{"TRQ_SEL_FMAP_6B", 0x5b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6b_field_info),
-	trq_sel_fmap_6b_field_info
-},
-{"TRQ_SEL_FMAP_6C", 0x5bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6c_field_info),
-	trq_sel_fmap_6c_field_info
-},
-{"TRQ_SEL_FMAP_6D", 0x5c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6d_field_info),
-	trq_sel_fmap_6d_field_info
-},
-{"TRQ_SEL_FMAP_6E", 0x5c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6e_field_info),
-	trq_sel_fmap_6e_field_info
-},
-{"TRQ_SEL_FMAP_6F", 0x5c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6f_field_info),
-	trq_sel_fmap_6f_field_info
-},
-{"TRQ_SEL_FMAP_70", 0x5cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_70_field_info),
-	trq_sel_fmap_70_field_info
-},
-{"TRQ_SEL_FMAP_71", 0x5d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_71_field_info),
-	trq_sel_fmap_71_field_info
-},
-{"TRQ_SEL_FMAP_72", 0x5d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_72_field_info),
-	trq_sel_fmap_72_field_info
-},
-{"TRQ_SEL_FMAP_73", 0x5d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_73_field_info),
-	trq_sel_fmap_73_field_info
-},
-{"TRQ_SEL_FMAP_74", 0x5dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_74_field_info),
-	trq_sel_fmap_74_field_info
-},
-{"TRQ_SEL_FMAP_75", 0x5e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_75_field_info),
-	trq_sel_fmap_75_field_info
-},
-{"TRQ_SEL_FMAP_76", 0x5e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_76_field_info),
-	trq_sel_fmap_76_field_info
-},
-{"TRQ_SEL_FMAP_77", 0x5e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_77_field_info),
-	trq_sel_fmap_77_field_info
-},
-{"TRQ_SEL_FMAP_78", 0x5ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_78_field_info),
-	trq_sel_fmap_78_field_info
-},
-{"TRQ_SEL_FMAP_79", 0x5f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_79_field_info),
-	trq_sel_fmap_79_field_info
-},
-{"TRQ_SEL_FMAP_7A", 0x5f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7a_field_info),
-	trq_sel_fmap_7a_field_info
-},
-{"TRQ_SEL_FMAP_7B", 0x5f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7b_field_info),
-	trq_sel_fmap_7b_field_info
-},
-{"TRQ_SEL_FMAP_7C", 0x5fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7c_field_info),
-	trq_sel_fmap_7c_field_info
-},
-{"TRQ_SEL_FMAP_7D", 0x600,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7d_field_info),
-	trq_sel_fmap_7d_field_info
-},
-{"TRQ_SEL_FMAP_7E", 0x604,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7e_field_info),
-	trq_sel_fmap_7e_field_info
-},
-{"TRQ_SEL_FMAP_7F", 0x608,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7f_field_info),
-	trq_sel_fmap_7f_field_info
-},
-{"TRQ_SEL_FMAP_80", 0x60c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_80_field_info),
-	trq_sel_fmap_80_field_info
-},
-{"TRQ_SEL_FMAP_81", 0x610,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_81_field_info),
-	trq_sel_fmap_81_field_info
-},
-{"TRQ_SEL_FMAP_82", 0x614,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_82_field_info),
-	trq_sel_fmap_82_field_info
-},
-{"TRQ_SEL_FMAP_83", 0x618,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_83_field_info),
-	trq_sel_fmap_83_field_info
-},
-{"TRQ_SEL_FMAP_84", 0x61c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_84_field_info),
-	trq_sel_fmap_84_field_info
-},
-{"TRQ_SEL_FMAP_85", 0x620,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_85_field_info),
-	trq_sel_fmap_85_field_info
-},
-{"TRQ_SEL_FMAP_86", 0x624,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_86_field_info),
-	trq_sel_fmap_86_field_info
-},
-{"TRQ_SEL_FMAP_87", 0x628,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_87_field_info),
-	trq_sel_fmap_87_field_info
-},
-{"TRQ_SEL_FMAP_88", 0x62c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_88_field_info),
-	trq_sel_fmap_88_field_info
-},
-{"TRQ_SEL_FMAP_89", 0x630,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_89_field_info),
-	trq_sel_fmap_89_field_info
-},
-{"TRQ_SEL_FMAP_8A", 0x634,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8a_field_info),
-	trq_sel_fmap_8a_field_info
-},
-{"TRQ_SEL_FMAP_8B", 0x638,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8b_field_info),
-	trq_sel_fmap_8b_field_info
-},
-{"TRQ_SEL_FMAP_8C", 0x63c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8c_field_info),
-	trq_sel_fmap_8c_field_info
-},
-{"TRQ_SEL_FMAP_8D", 0x640,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8d_field_info),
-	trq_sel_fmap_8d_field_info
-},
-{"TRQ_SEL_FMAP_8E", 0x644,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8e_field_info),
-	trq_sel_fmap_8e_field_info
-},
-{"TRQ_SEL_FMAP_8F", 0x648,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8f_field_info),
-	trq_sel_fmap_8f_field_info
-},
-{"TRQ_SEL_FMAP_90", 0x64c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_90_field_info),
-	trq_sel_fmap_90_field_info
-},
-{"TRQ_SEL_FMAP_91", 0x650,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_91_field_info),
-	trq_sel_fmap_91_field_info
-},
-{"TRQ_SEL_FMAP_92", 0x654,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_92_field_info),
-	trq_sel_fmap_92_field_info
-},
-{"TRQ_SEL_FMAP_93", 0x658,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_93_field_info),
-	trq_sel_fmap_93_field_info
-},
-{"TRQ_SEL_FMAP_94", 0x65c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_94_field_info),
-	trq_sel_fmap_94_field_info
-},
-{"TRQ_SEL_FMAP_95", 0x660,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_95_field_info),
-	trq_sel_fmap_95_field_info
-},
-{"TRQ_SEL_FMAP_96", 0x664,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_96_field_info),
-	trq_sel_fmap_96_field_info
-},
-{"TRQ_SEL_FMAP_97", 0x668,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_97_field_info),
-	trq_sel_fmap_97_field_info
-},
-{"TRQ_SEL_FMAP_98", 0x66c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_98_field_info),
-	trq_sel_fmap_98_field_info
-},
-{"TRQ_SEL_FMAP_99", 0x670,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_99_field_info),
-	trq_sel_fmap_99_field_info
-},
-{"TRQ_SEL_FMAP_9A", 0x674,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9a_field_info),
-	trq_sel_fmap_9a_field_info
-},
-{"TRQ_SEL_FMAP_9B", 0x678,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9b_field_info),
-	trq_sel_fmap_9b_field_info
-},
-{"TRQ_SEL_FMAP_9C", 0x67c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9c_field_info),
-	trq_sel_fmap_9c_field_info
-},
-{"TRQ_SEL_FMAP_9D", 0x680,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9d_field_info),
-	trq_sel_fmap_9d_field_info
-},
-{"TRQ_SEL_FMAP_9E", 0x684,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9e_field_info),
-	trq_sel_fmap_9e_field_info
-},
-{"TRQ_SEL_FMAP_9F", 0x688,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9f_field_info),
-	trq_sel_fmap_9f_field_info
-},
-{"TRQ_SEL_FMAP_A0", 0x68c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a0_field_info),
-	trq_sel_fmap_a0_field_info
-},
-{"TRQ_SEL_FMAP_A1", 0x690,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a1_field_info),
-	trq_sel_fmap_a1_field_info
-},
-{"TRQ_SEL_FMAP_A2", 0x694,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a2_field_info),
-	trq_sel_fmap_a2_field_info
-},
-{"TRQ_SEL_FMAP_A3", 0x698,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a3_field_info),
-	trq_sel_fmap_a3_field_info
-},
-{"TRQ_SEL_FMAP_A4", 0x69c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a4_field_info),
-	trq_sel_fmap_a4_field_info
-},
-{"TRQ_SEL_FMAP_A5", 0x6a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a5_field_info),
-	trq_sel_fmap_a5_field_info
-},
-{"TRQ_SEL_FMAP_A6", 0x6a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a6_field_info),
-	trq_sel_fmap_a6_field_info
-},
-{"TRQ_SEL_FMAP_A7", 0x6a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a7_field_info),
-	trq_sel_fmap_a7_field_info
-},
-{"TRQ_SEL_FMAP_A8", 0x6ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a8_field_info),
-	trq_sel_fmap_a8_field_info
-},
-{"TRQ_SEL_FMAP_A9", 0x6b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a9_field_info),
-	trq_sel_fmap_a9_field_info
-},
-{"TRQ_SEL_FMAP_AA", 0x6b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_aa_field_info),
-	trq_sel_fmap_aa_field_info
-},
-{"TRQ_SEL_FMAP_AB", 0x6b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ab_field_info),
-	trq_sel_fmap_ab_field_info
-},
-{"TRQ_SEL_FMAP_AC", 0x6bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ac_field_info),
-	trq_sel_fmap_ac_field_info
-},
-{"TRQ_SEL_FMAP_AD", 0x6d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ad_field_info),
-	trq_sel_fmap_ad_field_info
-},
-{"TRQ_SEL_FMAP_AE", 0x6d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ae_field_info),
-	trq_sel_fmap_ae_field_info
-},
-{"TRQ_SEL_FMAP_AF", 0x6d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_af_field_info),
-	trq_sel_fmap_af_field_info
-},
-{"TRQ_SEL_FMAP_B0", 0x6dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b0_field_info),
-	trq_sel_fmap_b0_field_info
-},
-{"TRQ_SEL_FMAP_B1", 0x6e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b1_field_info),
-	trq_sel_fmap_b1_field_info
-},
-{"TRQ_SEL_FMAP_B2", 0x6e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b2_field_info),
-	trq_sel_fmap_b2_field_info
-},
-{"TRQ_SEL_FMAP_B3", 0x6e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b3_field_info),
-	trq_sel_fmap_b3_field_info
-},
-{"TRQ_SEL_FMAP_B4", 0x6ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b4_field_info),
-	trq_sel_fmap_b4_field_info
-},
-{"TRQ_SEL_FMAP_B5", 0x6f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b5_field_info),
-	trq_sel_fmap_b5_field_info
-},
-{"TRQ_SEL_FMAP_B6", 0x6f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b6_field_info),
-	trq_sel_fmap_b6_field_info
-},
-{"TRQ_SEL_FMAP_B7", 0x6f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b7_field_info),
-	trq_sel_fmap_b7_field_info
-},
-{"TRQ_SEL_FMAP_B8", 0x6fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b8_field_info),
-	trq_sel_fmap_b8_field_info
-},
-{"TRQ_SEL_FMAP_B9", 0x700,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b9_field_info),
-	trq_sel_fmap_b9_field_info
-},
-{"TRQ_SEL_FMAP_BA", 0x704,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ba_field_info),
-	trq_sel_fmap_ba_field_info
-},
-{"TRQ_SEL_FMAP_BB", 0x708,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bb_field_info),
-	trq_sel_fmap_bb_field_info
-},
-{"TRQ_SEL_FMAP_BC", 0x70c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bc_field_info),
-	trq_sel_fmap_bc_field_info
-},
-{"TRQ_SEL_FMAP_BD", 0x710,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bd_field_info),
-	trq_sel_fmap_bd_field_info
-},
-{"TRQ_SEL_FMAP_BE", 0x714,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_be_field_info),
-	trq_sel_fmap_be_field_info
-},
-{"TRQ_SEL_FMAP_BF", 0x718,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bf_field_info),
-	trq_sel_fmap_bf_field_info
-},
-{"TRQ_SEL_FMAP_C0", 0x71c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c0_field_info),
-	trq_sel_fmap_c0_field_info
-},
-{"TRQ_SEL_FMAP_C1", 0x720,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c1_field_info),
-	trq_sel_fmap_c1_field_info
-},
-{"TRQ_SEL_FMAP_C2", 0x734,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c2_field_info),
-	trq_sel_fmap_c2_field_info
-},
-{"TRQ_SEL_FMAP_C3", 0x748,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c3_field_info),
-	trq_sel_fmap_c3_field_info
-},
-{"TRQ_SEL_FMAP_C4", 0x74c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c4_field_info),
-	trq_sel_fmap_c4_field_info
-},
-{"TRQ_SEL_FMAP_C5", 0x750,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c5_field_info),
-	trq_sel_fmap_c5_field_info
-},
-{"TRQ_SEL_FMAP_C6", 0x754,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c6_field_info),
-	trq_sel_fmap_c6_field_info
-},
-{"TRQ_SEL_FMAP_C7", 0x758,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c7_field_info),
-	trq_sel_fmap_c7_field_info
-},
-{"TRQ_SEL_FMAP_C8", 0x75c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c8_field_info),
-	trq_sel_fmap_c8_field_info
-},
-{"TRQ_SEL_FMAP_C9", 0x760,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c9_field_info),
-	trq_sel_fmap_c9_field_info
-},
-{"TRQ_SEL_FMAP_CA", 0x764,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ca_field_info),
-	trq_sel_fmap_ca_field_info
-},
-{"TRQ_SEL_FMAP_CB", 0x768,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cb_field_info),
-	trq_sel_fmap_cb_field_info
-},
-{"TRQ_SEL_FMAP_CC", 0x76c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cc_field_info),
-	trq_sel_fmap_cc_field_info
-},
-{"TRQ_SEL_FMAP_CD", 0x770,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cd_field_info),
-	trq_sel_fmap_cd_field_info
-},
-{"TRQ_SEL_FMAP_CE", 0x774,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ce_field_info),
-	trq_sel_fmap_ce_field_info
-},
-{"TRQ_SEL_FMAP_CF", 0x778,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cf_field_info),
-	trq_sel_fmap_cf_field_info
-},
-{"TRQ_SEL_FMAP_D0", 0x77c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d0_field_info),
-	trq_sel_fmap_d0_field_info
-},
-{"TRQ_SEL_FMAP_D1", 0x780,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d1_field_info),
-	trq_sel_fmap_d1_field_info
-},
-{"TRQ_SEL_FMAP_D2", 0x784,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d2_field_info),
-	trq_sel_fmap_d2_field_info
-},
-{"TRQ_SEL_FMAP_D3", 0x788,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d3_field_info),
-	trq_sel_fmap_d3_field_info
-},
-{"TRQ_SEL_FMAP_D4", 0x78c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d4_field_info),
-	trq_sel_fmap_d4_field_info
-},
-{"TRQ_SEL_FMAP_D5", 0x790,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d5_field_info),
-	trq_sel_fmap_d5_field_info
-},
-{"TRQ_SEL_FMAP_D6", 0x794,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d6_field_info),
-	trq_sel_fmap_d6_field_info
-},
-{"TRQ_SEL_FMAP_D7", 0x798,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d7_field_info),
-	trq_sel_fmap_d7_field_info
-},
-{"TRQ_SEL_FMAP_D8", 0x79c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d8_field_info),
-	trq_sel_fmap_d8_field_info
-},
-{"TRQ_SEL_FMAP_D9", 0x7a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d9_field_info),
-	trq_sel_fmap_d9_field_info
-},
-{"TRQ_SEL_FMAP_DA", 0x7a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_da_field_info),
-	trq_sel_fmap_da_field_info
-},
-{"TRQ_SEL_FMAP_DB", 0x7a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_db_field_info),
-	trq_sel_fmap_db_field_info
-},
-{"TRQ_SEL_FMAP_DC", 0x7ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dc_field_info),
-	trq_sel_fmap_dc_field_info
-},
-{"TRQ_SEL_FMAP_DD", 0x7b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dd_field_info),
-	trq_sel_fmap_dd_field_info
-},
-{"TRQ_SEL_FMAP_DE", 0x7b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_de_field_info),
-	trq_sel_fmap_de_field_info
-},
-{"TRQ_SEL_FMAP_DF", 0x7b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_df_field_info),
-	trq_sel_fmap_df_field_info
-},
-{"TRQ_SEL_FMAP_E0", 0x7bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e0_field_info),
-	trq_sel_fmap_e0_field_info
-},
-{"TRQ_SEL_FMAP_E1", 0x7c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e1_field_info),
-	trq_sel_fmap_e1_field_info
-},
-{"TRQ_SEL_FMAP_E2", 0x7c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e2_field_info),
-	trq_sel_fmap_e2_field_info
-},
-{"TRQ_SEL_FMAP_E3", 0x7c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e3_field_info),
-	trq_sel_fmap_e3_field_info
-},
-{"TRQ_SEL_FMAP_E4", 0x7cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e4_field_info),
-	trq_sel_fmap_e4_field_info
-},
-{"TRQ_SEL_FMAP_E5", 0x7d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e5_field_info),
-	trq_sel_fmap_e5_field_info
-},
-{"TRQ_SEL_FMAP_E6", 0x7d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e6_field_info),
-	trq_sel_fmap_e6_field_info
-},
-{"TRQ_SEL_FMAP_E7", 0x7d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e7_field_info),
-	trq_sel_fmap_e7_field_info
-},
-{"TRQ_SEL_FMAP_E8", 0x7dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e8_field_info),
-	trq_sel_fmap_e8_field_info
-},
-{"TRQ_SEL_FMAP_E9", 0x7e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e9_field_info),
-	trq_sel_fmap_e9_field_info
-},
-{"TRQ_SEL_FMAP_EA", 0x7e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ea_field_info),
-	trq_sel_fmap_ea_field_info
-},
-{"TRQ_SEL_FMAP_EB", 0x7e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_eb_field_info),
-	trq_sel_fmap_eb_field_info
-},
-{"TRQ_SEL_FMAP_EC", 0x7ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ec_field_info),
-	trq_sel_fmap_ec_field_info
-},
-{"TRQ_SEL_FMAP_ED", 0x7f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ed_field_info),
-	trq_sel_fmap_ed_field_info
-},
-{"TRQ_SEL_FMAP_EE", 0x7f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ee_field_info),
-	trq_sel_fmap_ee_field_info
-},
-{"TRQ_SEL_FMAP_EF", 0x7f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ef_field_info),
-	trq_sel_fmap_ef_field_info
-},
-{"TRQ_SEL_FMAP_F0", 0x7fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f0_field_info),
-	trq_sel_fmap_f0_field_info
-},
-{"IND_CTXT_DATA_3", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_3_field_info),
-	ind_ctxt_data_3_field_info
-},
-{"IND_CTXT_DATA_2", 0x808,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_2_field_info),
-	ind_ctxt_data_2_field_info
-},
-{"IND_CTXT_DATA_1", 0x80c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_1_field_info),
-	ind_ctxt_data_1_field_info
-},
-{"IND_CTXT_DATA_0", 0x810,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_0_field_info),
-	ind_ctxt_data_0_field_info
-},
-{"IND_CTXT3", 0x814,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt3_field_info),
-	ind_ctxt3_field_info
-},
-{"IND_CTXT2", 0x818,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt2_field_info),
-	ind_ctxt2_field_info
-},
-{"IND_CTXT1", 0x81c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt1_field_info),
-	ind_ctxt1_field_info
-},
-{"IND_CTXT0", 0x820,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt0_field_info),
-	ind_ctxt0_field_info
-},
-{"IND_CTXT_CMD", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT_1", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_1_field_info),
-	c2h_timer_cnt_1_field_info
-},
-{"C2H_TIMER_CNT_2", 0xa04,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_2_field_info),
-	c2h_timer_cnt_2_field_info
-},
-{"C2H_TIMER_CNT_3", 0xa08,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_3_field_info),
-	c2h_timer_cnt_3_field_info
-},
-{"C2H_TIMER_CNT_4", 0xa0c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_4_field_info),
-	c2h_timer_cnt_4_field_info
-},
-{"C2H_TIMER_CNT_5", 0xa10,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_5_field_info),
-	c2h_timer_cnt_5_field_info
-},
-{"C2H_TIMER_CNT_6", 0xa14,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_6_field_info),
-	c2h_timer_cnt_6_field_info
-},
-{"C2H_TIMER_CNT_7", 0xa18,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_7_field_info),
-	c2h_timer_cnt_7_field_info
-},
-{"C2H_TIMER_CNT_8", 0xa1c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_8_field_info),
-	c2h_timer_cnt_8_field_info
-},
-{"C2H_TIMER_CNT_9", 0xa20,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_9_field_info),
-	c2h_timer_cnt_9_field_info
-},
-{"C2H_TIMER_CNT_A", 0xa24,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_a_field_info),
-	c2h_timer_cnt_a_field_info
-},
-{"C2H_TIMER_CNT_B", 0xa28,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_b_field_info),
-	c2h_timer_cnt_b_field_info
-},
-{"C2H_TIMER_CNT_C", 0xa2c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_c_field_info),
-	c2h_timer_cnt_c_field_info
-},
-{"C2H_TIMER_CNT_D", 0xa30,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_d_field_info),
-	c2h_timer_cnt_d_field_info
-},
-{"C2H_TIMER_CNT_E", 0xa34,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_e_field_info),
-	c2h_timer_cnt_e_field_info
-},
-{"C2H_TIMER_CNT_F", 0xa38,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_f_field_info),
-	c2h_timer_cnt_f_field_info
-},
-{"C2H_TIMER_CNT_10", 0xa3c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_10_field_info),
-	c2h_timer_cnt_10_field_info
-},
-{"C2H_CNT_TH_1", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_1_field_info),
-	c2h_cnt_th_1_field_info
-},
-{"C2H_CNT_TH_2", 0xa44,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_2_field_info),
-	c2h_cnt_th_2_field_info
-},
-{"C2H_CNT_TH_3", 0xa48,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_3_field_info),
-	c2h_cnt_th_3_field_info
-},
-{"C2H_CNT_TH_4", 0xa4c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_4_field_info),
-	c2h_cnt_th_4_field_info
-},
-{"C2H_CNT_TH_5", 0xa50,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_5_field_info),
-	c2h_cnt_th_5_field_info
-},
-{"C2H_CNT_TH_6", 0xa54,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_6_field_info),
-	c2h_cnt_th_6_field_info
-},
-{"C2H_CNT_TH_7", 0xa58,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_7_field_info),
-	c2h_cnt_th_7_field_info
-},
-{"C2H_CNT_TH_8", 0xa5c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_8_field_info),
-	c2h_cnt_th_8_field_info
-},
-{"C2H_CNT_TH_9", 0xa60,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_9_field_info),
-	c2h_cnt_th_9_field_info
-},
-{"C2H_CNT_TH_A", 0xa64,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_a_field_info),
-	c2h_cnt_th_a_field_info
-},
-{"C2H_CNT_TH_B", 0xa68,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_b_field_info),
-	c2h_cnt_th_b_field_info
-},
-{"C2H_CNT_TH_C", 0xa6c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_c_field_info),
-	c2h_cnt_th_c_field_info
-},
-{"C2H_CNT_TH_D", 0xa70,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_d_field_info),
-	c2h_cnt_th_d_field_info
-},
-{"C2H_CNT_TH_E", 0xa74,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_e_field_info),
-	c2h_cnt_th_e_field_info
-},
-{"C2H_CNT_TH_F", 0xa78,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_f_field_info),
-	c2h_cnt_th_f_field_info
-},
-{"C2H_CNT_TH_10", 0xa7c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_10_field_info),
-	c2h_cnt_th_10_field_info
-},
-{"C2H_QID2VEC_MAP_QID", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_qid_field_info),
-	c2h_qid2vec_map_qid_field_info
-},
-{"C2H_QID2VEC_MAP", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_field_info),
-	c2h_qid2vec_map_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ_0", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_0_field_info),
-	c2h_buf_sz_0_field_info
-},
-{"C2H_BUF_SZ_1", 0xab4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_1_field_info),
-	c2h_buf_sz_1_field_info
-},
-{"C2H_BUF_SZ_2", 0xab8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_2_field_info),
-	c2h_buf_sz_2_field_info
-},
-{"C2H_BUF_SZ_3", 0xabc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_3_field_info),
-	c2h_buf_sz_3_field_info
-},
-{"C2H_BUF_SZ_4", 0xac0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_4_field_info),
-	c2h_buf_sz_4_field_info
-},
-{"C2H_BUF_SZ_5", 0xac4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_5_field_info),
-	c2h_buf_sz_5_field_info
-},
-{"C2H_BUF_SZ_7", 0xac8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_7_field_info),
-	c2h_buf_sz_7_field_info
-},
-{"C2H_BUF_SZ_8", 0xacc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_8_field_info),
-	c2h_buf_sz_8_field_info
-},
-{"C2H_BUF_SZ_9", 0xad0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_9_field_info),
-	c2h_buf_sz_9_field_info
-},
-{"C2H_BUF_SZ_10", 0xad4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_10_field_info),
-	c2h_buf_sz_10_field_info
-},
-{"C2H_BUF_SZ_11", 0xad8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_11_field_info),
-	c2h_buf_sz_11_field_info
-},
-{"C2H_BUF_SZ_12", 0xae0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_12_field_info),
-	c2h_buf_sz_12_field_info
-},
-{"C2H_BUF_SZ_13", 0xae4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_13_field_info),
-	c2h_buf_sz_13_field_info
-},
-{"C2H_BUF_SZ_14", 0xae8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_14_field_info),
-	c2h_buf_sz_14_field_info
-},
-{"C2H_BUF_SZ_15", 0xaec,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_15_field_info),
-	c2h_buf_sz_15_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"C2H_CHANNEL_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_field_info),
-	c2h_channel_ctl_field_info
-},
-{"C2H_CHANNEL_CTL_1", 0x1008,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_1_field_info),
-	c2h_channel_ctl_1_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_CHANNEL_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_cmpl_desc_cnt_field_info),
-	c2h_channel_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_CHANNEL_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_field_info),
-	h2c_channel_ctl_field_info
-},
-{"H2C_CHANNEL_CTL_1", 0x1208,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_1_field_info),
-	h2c_channel_ctl_1_field_info
-},
-{"H2C_CHANNEL_CTL_2", 0x120c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_2_field_info),
-	h2c_channel_ctl_2_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_CHANNEL_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_cmpl_desc_cnt_field_info),
-	h2c_channel_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"FUNC_STATUS_REG", 0x2400,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_status_reg_field_info),
-	func_status_reg_field_info
-},
-{"FUNC_CMD_REG", 0x2404,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_cmd_reg_field_info),
-	func_cmd_reg_field_info
-},
-{"FUNC_INTERRUPT_VECTOR_REG", 0x2408,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_vector_reg_field_info),
-	func_interrupt_vector_reg_field_info
-},
-{"TARGET_FUNC_REG", 0x240c,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(target_func_reg_field_info),
-	target_func_reg_field_info
-},
-{"FUNC_INTERRUPT_CTL_REG", 0x2410,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_ctl_reg_field_info),
-	func_interrupt_ctl_reg_field_info
-},
-
-};
-
-uint32_t qdma_cpm4_config_num_regs_get(void)
-{
-	return (sizeof(qdma_cpm4_config_regs)/
-		sizeof(qdma_cpm4_config_regs[0]));
-}
-
-struct xreg_info *qdma_cpm4_config_regs_get(void)
-{
-	return qdma_cpm4_config_regs;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c
deleted file mode 100755
index b7fabf7..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_list.h"
-
-void qdma_list_init_head(struct qdma_list_head *head)
-{
-	if (head)
-		head->prev = head->next = head;
-}
-
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head)
-{
-	head->prev->next = node;
-	node->next = head;
-	node->prev = head->prev;
-	head->prev = node;
-}
-
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node)
-{
-	node->prev->next = new_node;
-	new_node->prev = node->prev;
-	new_node->next = node;
-	node->prev = new_node;
-}
-
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node)
-{
-	new_node->prev = node;
-	new_node->next = node->next;
-	node->next->prev = new_node;
-	node->next = new_node;
-}
-
-
-void qdma_list_del(struct qdma_list_head *node)
-{
-	if (node) {
-		if (node->prev)
-			node->prev->next = node->next;
-		if (node->next)
-			node->next->prev = node->prev;
-	}
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h
deleted file mode 100755
index dd5f7d4..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_list.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_LIST_H_
-#define __QDMA_LIST_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library provided list implementation definitions
- *
- * Header file *qdma_list.h* defines APIs for creating and managing list.
- */
-
-/**
- * struct qdma_list_head - data type for creating a list node
- */
-struct qdma_list_head {
-	struct qdma_list_head *prev;
-	struct qdma_list_head *next;
-	void *priv;
-};
-
-#define QDMA_LIST_HEAD_INIT(name) { &(name), &(name), NULL }
-
-#define QDMA_LIST_HEAD(name) \
-	struct qdma_list_head name = QDMA_LIST_HEAD_INIT(name)
-
-#define QDMA_LIST_GET_DATA(node) (node->priv)
-#define QDMA_LIST_SET_DATA(node, data) ((node)->priv = data)
-
-
-#define qdma_list_for_each_safe(pos, n, head) \
-	for (pos = (head)->next, n = pos->next; pos != (head); \
-		pos = n, n = pos->next)
-
-
-#define qdma_list_is_last_entry(entry, head) ((entry)->next == (head))
-
-#define qdma_list_is_empty(head) ((head)->next == (head))
-
-/*****************************************************************************/
-/**
- * qdma_list_init_head(): Init the list head
- *
- * @head:     head of the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_init_head(struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_add_tail(): add the given @node at the end of the list with @head
- *
- * @node:     new entry which has to be added at the end of the list with @head
- * @head:     head of the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_before(): add the given @node at the before a @node
- *
- * @new_node:     new entry which has to be added before @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_after(): add the given @node at the after a @node
- *
- * @new_node:     new entry which has to be added after @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_del(): delete an node from the list
- *
- * @node:     node in a list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_del(struct qdma_list_head *node);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_LIST_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c
deleted file mode 100755
index 67e7268..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.c
+++ /dev/null
@@ -1,2140 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_mbox_protocol.h"
-
-/** mailbox function status */
-#define MBOX_FN_STATUS			0x0
-/** shift value for mailbox function status in msg */
-#define		S_MBOX_FN_STATUS_IN_MSG	0
-/** mask value for mailbox function status in msg*/
-#define		M_MBOX_FN_STATUS_IN_MSG	0x1
-/** face value for mailbox function status in msg */
-#define		F_MBOX_FN_STATUS_IN_MSG	0x1
-
-/** shift value for out msg */
-#define		S_MBOX_FN_STATUS_OUT_MSG	1
-/** mask value for out msg */
-#define		M_MBOX_FN_STATUS_OUT_MSG	0x1
-/** face value for out msg */
-#define		F_MBOX_FN_STATUS_OUT_MSG	(1 << S_MBOX_FN_STATUS_OUT_MSG)
-/** shift value for status ack */
-#define		S_MBOX_FN_STATUS_ACK	2	/* PF only, ack status */
-/** mask value for status ack */
-#define		M_MBOX_FN_STATUS_ACK	0x1
-/** face value for status ack */
-#define		F_MBOX_FN_STATUS_ACK	(1 << S_MBOX_FN_STATUS_ACK)
-/** shift value for status src */
-#define		S_MBOX_FN_STATUS_SRC	4	/* PF only, source func.*/
-/** mask value for status src */
-#define		M_MBOX_FN_STATUS_SRC	0xFFF
-/** face value for status src */
-#define		G_MBOX_FN_STATUS_SRC(x)	\
-		(((x) >> S_MBOX_FN_STATUS_SRC) & M_MBOX_FN_STATUS_SRC)
-/** face value for mailbox function status */
-#define MBOX_FN_STATUS_MASK \
-		(F_MBOX_FN_STATUS_IN_MSG | \
-		 F_MBOX_FN_STATUS_OUT_MSG | \
-		 F_MBOX_FN_STATUS_ACK)
-
-/** mailbox function commands register */
-#define MBOX_FN_CMD			0x4
-/** shift value for send command */
-#define		S_MBOX_FN_CMD_SND	0
-/** mask value for send command */
-#define		M_MBOX_FN_CMD_SND	0x1
-/** face value for send command */
-#define		F_MBOX_FN_CMD_SND	(1 << S_MBOX_FN_CMD_SND)
-/** shift value for receive command */
-#define		S_MBOX_FN_CMD_RCV	1
-/** mask value for receive command */
-#define		M_MBOX_FN_CMD_RCV	0x1
-/** face value for receive command */
-#define		F_MBOX_FN_CMD_RCV	(1 << S_MBOX_FN_CMD_RCV)
-/** shift value for vf reset */
-#define		S_MBOX_FN_CMD_VF_RESET	3	/* TBD PF only: reset VF */
-/** mask value for vf reset */
-#define		M_MBOX_FN_CMD_VF_RESET	0x1
-/** mailbox isr vector register */
-#define MBOX_ISR_VEC			0x8
-/** shift value for isr vector */
-#define		S_MBOX_ISR_VEC		0
-/** mask value for isr vector */
-#define		M_MBOX_ISR_VEC		0x1F
-/** face value for isr vector */
-#define		V_MBOX_ISR_VEC(x)	((x) & M_MBOX_ISR_VEC)
-/** mailbox FN target register */
-#define MBOX_FN_TARGET			0xC
-/** shift value for FN target id */
-#define		S_MBOX_FN_TARGET_ID	0
-/** mask value for FN target id */
-#define		M_MBOX_FN_TARGET_ID	0xFFF
-/** face value for FN target id */
-#define		V_MBOX_FN_TARGET_ID(x)	((x) & M_MBOX_FN_TARGET_ID)
-/** mailbox isr enable register */
-#define MBOX_ISR_EN			0x10
-/** shift value for isr enable */
-#define		S_MBOX_ISR_EN		0
-/** mask value for isr enable */
-#define		M_MBOX_ISR_EN		0x1
-/** face value for isr enable */
-#define		F_MBOX_ISR_EN		0x1
-/** pf acknowledge base */
-#define MBOX_PF_ACK_BASE		0x20
-/** pf acknowledge step */
-#define MBOX_PF_ACK_STEP		4
-/** pf acknowledge count */
-#define MBOX_PF_ACK_COUNT		8
-/** mailbox incoming msg base */
-#define MBOX_IN_MSG_BASE		0x800
-/** mailbox outgoing msg base */
-#define MBOX_OUT_MSG_BASE		0xc00
-/** mailbox msg step */
-#define MBOX_MSG_STEP			4
-/** mailbox register max */
-#define MBOX_MSG_REG_MAX		32
-
-/**
- * enum mbox_msg_op - mailbox messages opcode
- */
-#define MBOX_MSG_OP_RSP_OFFSET	0x80
-enum mbox_msg_op {
-	/** @MBOX_OP_BYE: vf offline, response not required*/
-	MBOX_OP_VF_BYE,
-	/** @MBOX_OP_HELLO: vf online */
-	MBOX_OP_HELLO,
-	/** @: FMAP programming request */
-	MBOX_OP_FMAP,
-	/** @MBOX_OP_CSR: global CSR registers request */
-	MBOX_OP_CSR,
-	/** @MBOX_OP_QREQ: request queues */
-	MBOX_OP_QREQ,
-	/** @MBOX_OP_QADD: notify of queue addition */
-	MBOX_OP_QNOTIFY_ADD,
-	/** @MBOX_OP_QNOTIFY_DEL: notify of queue deletion */
-	MBOX_OP_QNOTIFY_DEL,
-	/** @MBOX_OP_QACTIVE_CNT: get active q count */
-	MBOX_OP_GET_QACTIVE_CNT,
-	/** @MBOX_OP_QCTXT_WRT: queue context write */
-	MBOX_OP_QCTXT_WRT,
-	/** @MBOX_OP_QCTXT_RD: queue context read */
-	MBOX_OP_QCTXT_RD,
-	/** @MBOX_OP_QCTXT_CLR: queue context clear */
-	MBOX_OP_QCTXT_CLR,
-	/** @MBOX_OP_QCTXT_INV: queue context invalidate */
-	MBOX_OP_QCTXT_INV,
-	/** @MBOX_OP_INTR_CTXT_WRT: interrupt context write */
-	MBOX_OP_INTR_CTXT_WRT,
-	/** @MBOX_OP_INTR_CTXT_RD: interrupt context read */
-	MBOX_OP_INTR_CTXT_RD,
-	/** @MBOX_OP_INTR_CTXT_CLR: interrupt context clear */
-	MBOX_OP_INTR_CTXT_CLR,
-	/** @MBOX_OP_INTR_CTXT_INV: interrupt context invalidate */
-	MBOX_OP_INTR_CTXT_INV,
-	/** @MBOX_OP_RESET_PREPARE: PF to VF message for VF reset*/
-	MBOX_OP_RESET_PREPARE,
-	/** @MBOX_OP_RESET_DONE: PF reset done */
-	MBOX_OP_RESET_DONE,
-	/** @MBOX_OP_REG_LIST_READ: Read the register list */
-	MBOX_OP_REG_LIST_READ,
-	/** @MBOX_OP_PF_BYE: pf offline, response required */
-	MBOX_OP_PF_BYE,
-	/** @MBOX_OP_PF_RESET_VF_BYE: VF reset BYE, response required*/
-	MBOX_OP_PF_RESET_VF_BYE,
-
-	/** @MBOX_OP_HELLO_RESP: response to @MBOX_OP_HELLO */
-	MBOX_OP_HELLO_RESP = 0x81,
-	/** @MBOX_OP_FMAP_RESP: response to @MBOX_OP_FMAP */
-	MBOX_OP_FMAP_RESP,
-	/** @MBOX_OP_CSR_RESP: response to @MBOX_OP_CSR */
-	MBOX_OP_CSR_RESP,
-	/** @MBOX_OP_QREQ_RESP: response to @MBOX_OP_QREQ */
-	MBOX_OP_QREQ_RESP,
-	/** @MBOX_OP_QADD: notify of queue addition */
-	MBOX_OP_QNOTIFY_ADD_RESP,
-	/** @MBOX_OP_QNOTIFY_DEL: notify of queue deletion */
-	MBOX_OP_QNOTIFY_DEL_RESP,
-	/** @MBOX_OP_QACTIVE_CNT_RESP: get active q count */
-	MBOX_OP_GET_QACTIVE_CNT_RESP,
-	/** @MBOX_OP_QCTXT_WRT_RESP: response to @MBOX_OP_QCTXT_WRT */
-	MBOX_OP_QCTXT_WRT_RESP,
-	/** @MBOX_OP_QCTXT_RD_RESP: response to @MBOX_OP_QCTXT_RD */
-	MBOX_OP_QCTXT_RD_RESP,
-	/** @MBOX_OP_QCTXT_CLR_RESP: response to @MBOX_OP_QCTXT_CLR */
-	MBOX_OP_QCTXT_CLR_RESP,
-	/** @MBOX_OP_QCTXT_INV_RESP: response to @MBOX_OP_QCTXT_INV */
-	MBOX_OP_QCTXT_INV_RESP,
-	/** @MBOX_OP_INTR_CTXT_WRT_RESP: response to @MBOX_OP_INTR_CTXT_WRT */
-	MBOX_OP_INTR_CTXT_WRT_RESP,
-	/** @MBOX_OP_INTR_CTXT_RD_RESP: response to @MBOX_OP_INTR_CTXT_RD */
-	MBOX_OP_INTR_CTXT_RD_RESP,
-	/** @MBOX_OP_INTR_CTXT_CLR_RESP: response to @MBOX_OP_INTR_CTXT_CLR */
-	MBOX_OP_INTR_CTXT_CLR_RESP,
-	/** @MBOX_OP_INTR_CTXT_INV_RESP: response to @MBOX_OP_INTR_CTXT_INV */
-	MBOX_OP_INTR_CTXT_INV_RESP,
-	/** @MBOX_OP_RESET_PREPARE_RESP: response to @MBOX_OP_RESET_PREPARE */
-	MBOX_OP_RESET_PREPARE_RESP,
-	/** @MBOX_OP_RESET_DONE_RESP: response to @MBOX_OP_PF_VF_RESET */
-	MBOX_OP_RESET_DONE_RESP,
-	/** @MBOX_OP_REG_LIST_READ_RESP: response to @MBOX_OP_REG_LIST_READ */
-	MBOX_OP_REG_LIST_READ_RESP,
-	/** @MBOX_OP_PF_BYE_RESP: response to @MBOX_OP_PF_BYE */
-	MBOX_OP_PF_BYE_RESP,
-	/** @MBOX_OP_PF_RESET_VF_BYE_RESP:
-	 * response to @MBOX_OP_PF_RESET_VF_BYE
-	 */
-	MBOX_OP_PF_RESET_VF_BYE_RESP,
-	/** @MBOX_OP_MAX: total mbox opcodes*/
-	MBOX_OP_MAX
-};
-
-/**
- * struct mbox_msg_hdr - mailbox message header
- */
-struct mbox_msg_hdr {
-	/** @op: opcode */
-	uint8_t op;
-	/** @status: execution status */
-	char status;
-	/** @src_func_id: src function */
-	uint16_t src_func_id;
-	/** @dst_func_id: dst function */
-	uint16_t dst_func_id;
-};
-
-/**
- * struct mbox_msg_fmap - FMAP programming command
- */
-struct mbox_msg_hello {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qbase: start queue number in the queue range */
-	uint32_t qbase;
-	/** @qmax: max queue number in the queue range(0-2k) */
-	uint32_t qmax;
-	/** @dev_cap: device capability */
-	struct qdma_dev_attributes dev_cap;
-	/** @dma_device_index: dma_device_index */
-	uint32_t dma_device_index;
-};
-
-/**
- * struct mbox_msg_active_qcnt - get active queue count command
- */
-struct mbox_msg_active_qcnt {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @h2c_queues: number of h2c queues */
-	uint32_t h2c_queues;
-	/** @c2h_queues: number of c2h queues */
-	uint32_t c2h_queues;
-	/** @cmpt_queues: number of cmpt queues */
-	uint32_t cmpt_queues;
-};
-
-/**
- * struct mbox_msg_fmap - FMAP programming command
- */
-struct mbox_msg_fmap {
-	/** @hdr: mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qbase: start queue number in the queue range */
-	int qbase;
-	/** @qmax: max queue number in the queue range(0-2k) */
-	uint32_t qmax;
-};
-
-/**
- * struct mbox_msg_csr - mailbox csr reading message
- */
-struct mbox_msg_csr {
-	/** @hdr - mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @csr_info: csr info data strucutre */
-	struct qdma_csr_info csr_info;
-};
-
-/**
- * struct mbox_msg_q_nitfy - queue add/del notify message
- */
-struct mbox_msg_q_nitfy {
-	/** @hdr - mailbox message header */
-	struct mbox_msg_hdr hdr;
-	/** @qid_hw: queue ID */
-	uint16_t qid_hw;
-	/** @q_type: type of q */
-	enum qdma_dev_q_type q_type;
-};
-
-/**
- * @struct - mbox_msg_qctxt
- * @brief queue context mailbox message header
- */
-struct mbox_msg_qctxt {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** @qid_hw: queue ID */
-	uint16_t qid_hw;
-	/** @st: streaming mode */
-	uint8_t st:1;
-	/** @c2h: c2h direction */
-	uint8_t c2h:1;
-	/** @cmpt_ctxt_type: completion context type */
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type:2;
-	/** @rsvd: reserved */
-	uint8_t rsvd:4;
-	/** union compiled_message - complete hw configuration */
-	union {
-		/** @descq_conf: mailbox message for queue context write*/
-		struct mbox_descq_conf descq_conf;
-		/** @descq_ctxt: mailbox message for queue context read*/
-		struct qdma_descq_context descq_ctxt;
-	};
-};
-
-/**
- * @struct - mbox_intr_ctxt
- * @brief queue context mailbox message header
- */
-struct mbox_intr_ctxt {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** interrupt context mailbox message */
-	struct mbox_msg_intr_ctxt ctxt;
-};
-
-/**
- * @struct - mbox_read_reg_list
- * @brief read register mailbox message header
- */
-struct mbox_read_reg_list {
-	/** @hdr: mailbox message header*/
-	struct mbox_msg_hdr hdr;
-	/** @group_num: reg group to read */
-	uint16_t group_num;
-	/** @num_regs: number of registers to read */
-	uint16_t num_regs;
-	/** @reg_list: register list */
-	struct qdma_reg_data reg_list[QDMA_MAX_REGISTER_DUMP];
-};
-
-union qdma_mbox_txrx {
-		/** mailbox message header*/
-		struct mbox_msg_hdr hdr;
-		/** hello mailbox message */
-		struct mbox_msg_hello hello;
-		/** fmap mailbox message */
-		struct mbox_msg_fmap fmap;
-		/** interrupt context mailbox message */
-		struct mbox_intr_ctxt intr_ctxt;
-		/** queue context mailbox message*/
-		struct mbox_msg_qctxt qctxt;
-		/** global csr mailbox message */
-		struct mbox_msg_csr csr;
-		/** acive q count */
-		struct mbox_msg_active_qcnt qcnt;
-		/** q add/del notify message */
-		struct mbox_msg_q_nitfy q_notify;
-		/** reg list mailbox message */
-		struct mbox_read_reg_list reg_read_list;
-		/** buffer to hold raw data between pf and vf */
-		uint32_t raw[MBOX_MSG_REG_MAX];
-};
-
-
-static inline uint32_t get_mbox_offset(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t mbox_base;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-	mbox_base = (is_vf) ?
-		hw->mbox_base_vf : hw->mbox_base_pf;
-
-	return mbox_base;
-}
-
-static inline void mbox_pf_hw_clear_func_ack(void *dev_hndl, uint16_t func_id)
-{
-	int idx = func_id / 32; /* bitmask, uint32_t reg */
-	int bit = func_id % 32;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, 0);
-
-	/* clear the function's ack status */
-	qdma_reg_write(dev_hndl,
-			mbox_base + MBOX_PF_ACK_BASE + idx * MBOX_PF_ACK_STEP,
-			(1 << bit));
-}
-
-static void qdma_mbox_memcpy(void *to, void *from, uint8_t size)
-{
-	uint8_t i;
-	uint8_t *_to = (uint8_t *)to;
-	uint8_t *_from = (uint8_t *)from;
-
-	for (i = 0; i < size; i++)
-		_to[i] = _from[i];
-}
-
-static void qdma_mbox_memset(void *to, uint8_t val, uint8_t size)
-{
-	uint8_t i;
-	uint8_t *_to = (uint8_t *)to;
-
-	for (i = 0; i < size; i++)
-		_to[i] = val;
-}
-
-static int get_ring_idx(void *dev_hndl, uint16_t ring_sz, uint16_t *rng_idx)
-{
-	uint32_t rng_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, rng_sz,
-			QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (ring_sz == (rng_sz[i] - 1)) {
-			*rng_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Ring size not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_RINGSZ);
-	return -QDMA_ERR_MBOX_INV_RINGSZ;
-}
-
-static int get_buf_idx(void *dev_hndl,  uint16_t buf_sz, uint16_t *buf_idx)
-{
-	uint32_t c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, c2h_buf_sz,
-			QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (c2h_buf_sz[i] == buf_sz) {
-			*buf_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Buf index not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_BUFSZ);
-	return -QDMA_ERR_MBOX_INV_BUFSZ;
-}
-
-static int get_cntr_idx(void *dev_hndl, uint8_t cntr_val, uint8_t *cntr_idx)
-{
-	uint32_t cntr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, cntr_th,
-			QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (cntr_th[i] == cntr_val) {
-			*cntr_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Counter val not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_CNTR_TH);
-	return -QDMA_ERR_MBOX_INV_CNTR_TH;
-}
-
-static int get_tmr_idx(void *dev_hndl, uint8_t tmr_val, uint8_t *tmr_idx)
-{
-	uint32_t tmr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = { 0 };
-	int i, rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-			QDMA_GLOBAL_CSR_ARRAY_SZ, tmr_th,
-			QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-	if (rv)
-		return rv;
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (tmr_th[i] == tmr_val) {
-			*tmr_idx = i;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	qdma_log_error("%s: Timer val not found, err:%d\n",
-				   __func__, -QDMA_ERR_MBOX_INV_TMR_TH);
-	return -QDMA_ERR_MBOX_INV_TMR_TH;
-}
-
-static int mbox_compose_sw_context(void *dev_hndl,
-				   struct mbox_msg_qctxt *qctxt,
-				   struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	uint16_t rng_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !sw_ctxt) {
-		qdma_log_error("%s: qctxt=%p sw_ctxt=%p, err:%d\n",
-						__func__,
-						qctxt, sw_ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_ring_idx(dev_hndl, qctxt->descq_conf.ringsz, &rng_idx);
-	if (rv < 0) {
-		qdma_log_error("%s: failed to get ring index, err:%d\n",
-						__func__, rv);
-		return rv;
-	}
-	/* compose sw context */
-	sw_ctxt->vec = qctxt->descq_conf.intr_id;
-	sw_ctxt->intr_aggr = qctxt->descq_conf.intr_aggr;
-
-	sw_ctxt->ring_bs_addr = qctxt->descq_conf.ring_bs_addr;
-	sw_ctxt->wbi_chk = qctxt->descq_conf.wbi_chk;
-	sw_ctxt->wbi_intvl_en = qctxt->descq_conf.wbi_intvl_en;
-	sw_ctxt->rngsz_idx = rng_idx;
-	sw_ctxt->bypass = qctxt->descq_conf.en_bypass;
-	sw_ctxt->wbk_en = qctxt->descq_conf.wbk_en;
-	sw_ctxt->irq_en = qctxt->descq_conf.irq_en;
-	sw_ctxt->is_mm = ~qctxt->st;
-	sw_ctxt->mm_chn = 0;
-	sw_ctxt->qen = 1;
-	sw_ctxt->frcd_en = qctxt->descq_conf.forced_en;
-
-	sw_ctxt->desc_sz = qctxt->descq_conf.desc_sz;
-
-	/* pidx = 0; irq_ack = 0 */
-	sw_ctxt->fnc_id = qctxt->descq_conf.func_id;
-	sw_ctxt->irq_arm =  qctxt->descq_conf.irq_arm;
-
-	if (qctxt->st && qctxt->c2h) {
-		sw_ctxt->irq_en = 0;
-		sw_ctxt->irq_arm = 0;
-		sw_ctxt->wbk_en = 0;
-		sw_ctxt->wbi_chk = 0;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_compose_prefetch_context(void *dev_hndl,
-					 struct mbox_msg_qctxt *qctxt,
-				 struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	uint16_t buf_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !pfetch_ctxt) {
-		qdma_log_error("%s: qctxt=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__,
-					   qctxt,
-					   pfetch_ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	rv = get_buf_idx(dev_hndl, qctxt->descq_conf.bufsz, &buf_idx);
-	if (rv < 0) {
-		qdma_log_error("%s: failed to get buf index, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	/* prefetch context */
-	pfetch_ctxt->valid = 1;
-	pfetch_ctxt->bypass = qctxt->descq_conf.en_bypass_prefetch;
-	pfetch_ctxt->bufsz_idx = buf_idx;
-	pfetch_ctxt->pfch_en = qctxt->descq_conf.pfch_en;
-
-	return QDMA_SUCCESS;
-}
-
-
-static int mbox_compose_cmpt_context(void *dev_hndl,
-				     struct mbox_msg_qctxt *qctxt,
-				     struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	uint16_t rng_idx = 0;
-	uint8_t cntr_idx = 0, tmr_idx = 0;
-	int rv = QDMA_SUCCESS;
-
-	if (!qctxt || !cmpt_ctxt) {
-		qdma_log_error("%s: qctxt=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, qctxt, cmpt_ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	rv = get_cntr_idx(dev_hndl, qctxt->descq_conf.cnt_thres, &cntr_idx);
-	if (rv < 0)
-		return rv;
-	rv = get_tmr_idx(dev_hndl, qctxt->descq_conf.timer_thres, &tmr_idx);
-	if (rv < 0)
-		return rv;
-	rv = get_ring_idx(dev_hndl, qctxt->descq_conf.cmpt_ringsz, &rng_idx);
-	if (rv < 0)
-		return rv;
-	/* writeback context */
-
-	cmpt_ctxt->bs_addr = qctxt->descq_conf.cmpt_ring_bs_addr;
-	cmpt_ctxt->en_stat_desc = qctxt->descq_conf.cmpl_stat_en;
-	cmpt_ctxt->en_int = qctxt->descq_conf.cmpt_int_en;
-	cmpt_ctxt->trig_mode = qctxt->descq_conf.triggermode;
-	cmpt_ctxt->fnc_id = qctxt->descq_conf.func_id;
-	cmpt_ctxt->timer_idx = tmr_idx;
-	cmpt_ctxt->counter_idx = cntr_idx;
-	cmpt_ctxt->color = 1;
-	cmpt_ctxt->ringsz_idx = rng_idx;
-
-	cmpt_ctxt->desc_sz = qctxt->descq_conf.cmpt_desc_sz;
-
-	cmpt_ctxt->valid = 1;
-
-	cmpt_ctxt->ovf_chk_dis = qctxt->descq_conf.dis_overflow_check;
-	cmpt_ctxt->vec = qctxt->descq_conf.intr_id;
-	cmpt_ctxt->int_aggr = qctxt->descq_conf.intr_aggr;
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_clear_queue_contexts(void *dev_hndl, uint8_t dma_device_index,
-			      uint16_t func_id, uint16_t qid_hw, uint8_t st,
-			      uint8_t c2h,
-			      enum mbox_cmpt_ctxt_type cmpt_ctxt_type)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	if (cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					    NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	} else {
-		rv = qdma_dev_qinfo_get(dma_device_index,
-				func_id, &qbase, &qmax);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to get qinfo, err:%d\n",
-					__func__, rv);
-			return rv;
-		}
-
-		q_range = qdma_dev_is_queue_in_range(dma_device_index,
-						func_id, qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE) {
-			qdma_log_error("%s: q_range invalid, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw,
-					  NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear sw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-					       QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear hw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-					       QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cr_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (st && c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						       NULL,
-						       QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				qdma_log_error("%s:clear pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						     NULL,
-						     QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-							__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_invalidate_queue_contexts(void *dev_hndl,
-		uint8_t dma_device_index, uint16_t func_id,
-		uint16_t qid_hw, uint8_t st,
-		uint8_t c2h, enum mbox_cmpt_ctxt_type cmpt_ctxt_type)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	if (cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw, NULL,
-					    QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: inv cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	} else {
-		rv = qdma_dev_qinfo_get(dma_device_index, func_id,
-				&qbase, &qmax);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to get qinfo, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		q_range = qdma_dev_is_queue_in_range(dma_device_index,
-						func_id, qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE) {
-			qdma_log_error("%s: Invalid qrange, err:%d\n",
-							__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw,
-					  NULL, QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: inv sw ctxt, err:%d\n",
-							__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-				QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: clear hw_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, NULL,
-				QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cr_ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (st && c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						NULL,
-						QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				qdma_log_error("%s: inv pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						NULL,
-						QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				qdma_log_error("%s: inv cmpt ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-static int mbox_write_queue_contexts(void *dev_hndl, uint8_t dma_device_index,
-				     struct mbox_msg_qctxt *qctxt)
-{
-	int rv;
-	int qbase;
-	uint32_t qmax;
-	enum qdma_dev_q_range q_range;
-	struct qdma_descq_context descq_ctxt;
-	uint16_t qid_hw = qctxt->qid_hw;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = qdma_dev_qinfo_get(dma_device_index, qctxt->descq_conf.func_id,
-				&qbase, &qmax);
-	if (rv < 0)
-		return rv;
-
-	q_range = qdma_dev_is_queue_in_range(dma_device_index,
-					     qctxt->descq_conf.func_id,
-					     qctxt->qid_hw);
-	if (q_range != QDMA_DEV_Q_IN_RANGE) {
-		qdma_log_error("%s: Invalid qrange, err:%d\n",
-							__func__, rv);
-		return rv;
-	}
-
-	qdma_mbox_memset(&descq_ctxt, 0, sizeof(struct qdma_descq_context));
-
-	if (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_CTXT_ONLY) {
-		rv = mbox_compose_cmpt_context(dev_hndl, qctxt,
-			       &descq_ctxt.cmpt_ctxt);
-		if (rv < 0)
-			return rv;
-
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					    NULL, QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			qdma_log_error("%s: clear cmpt ctxt, err:%d\n",
-								__func__, rv);
-			return rv;
-		}
-
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-			     &descq_ctxt.cmpt_ctxt, QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: write cmpt ctxt, err:%d\n",
-								__func__, rv);
-			return rv;
-		}
-
-	} else {
-		rv = mbox_compose_sw_context(dev_hndl, qctxt,
-				&descq_ctxt.sw_ctxt);
-		if (rv < 0)
-			return rv;
-
-		if (qctxt->st && qctxt->c2h) {
-			rv = mbox_compose_prefetch_context(dev_hndl, qctxt,
-						&descq_ctxt.pfetch_ctxt);
-			if (rv < 0)
-				return rv;
-		}
-
-		if ((qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = mbox_compose_cmpt_context(dev_hndl, qctxt,
-							&descq_ctxt.cmpt_ctxt);
-			if (rv < 0)
-				return rv;
-		}
-
-		rv = mbox_clear_queue_contexts(dev_hndl, dma_device_index,
-					qctxt->descq_conf.func_id,
-					qctxt->qid_hw,
-					qctxt->st,
-					qctxt->c2h,
-					qctxt->cmpt_ctxt_type);
-		if (rv < 0)
-			return rv;
-		rv = hw->qdma_sw_ctx_conf(dev_hndl, qctxt->c2h, qid_hw,
-					   &descq_ctxt.sw_ctxt,
-					   QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: write sw ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-
-		if (qctxt->st && qctxt->c2h) {
-			rv = hw->qdma_pfetch_ctx_conf(dev_hndl, qid_hw,
-						       &descq_ctxt.pfetch_ctxt,
-						       QDMA_HW_ACCESS_WRITE);
-			if (rv < 0) {
-				qdma_log_error("%s:write pfetch ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-
-		if ((qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-		    (qctxt->cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-			rv = hw->qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						     &descq_ctxt.cmpt_ctxt,
-						     QDMA_HW_ACCESS_WRITE);
-			if (rv < 0) {
-				qdma_log_error("%s: write cmpt ctxt, err:%d\n",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-	return QDMA_SUCCESS;
-}
-
-static int mbox_read_queue_contexts(void *dev_hndl, uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct qdma_descq_context *ctxt)
-{
-	int rv;
-	struct qdma_hw_access *hw = NULL;
-
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	rv = hw->qdma_sw_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->sw_ctxt,
-				  QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read sw ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_hw_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->hw_ctxt,
-				  QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read hw ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_credit_ctx_conf(dev_hndl, c2h, qid_hw, &ctxt->cr_ctxt,
-				      QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read credit ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	rv = hw->qdma_fmap_conf(dev_hndl, func_id, &ctxt->fmap,
-				      QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error("%s: read fmap ctxt, err:%d\n",
-					__func__, rv);
-		return rv;
-	}
-
-	if (st && c2h) {
-		rv = hw->qdma_pfetch_ctx_conf(dev_hndl,
-					qid_hw, &ctxt->pfetch_ctxt,
-					QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s: read pfetch ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-
-	if ((cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_MM) ||
-	    (cmpt_ctxt_type == QDMA_MBOX_CMPT_WITH_ST)) {
-		rv = hw->qdma_cmpt_ctx_conf(dev_hndl,
-					qid_hw, &ctxt->cmpt_ctxt,
-					QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s: read cmpt ctxt, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_pf_rcv_msg_handler(void *dev_hndl, uint8_t dma_device_index,
-				 uint16_t func_id, uint32_t *rcv_msg,
-				 uint32_t *resp_msg)
-{
-	union qdma_mbox_txrx *rcv =  (union qdma_mbox_txrx *)rcv_msg;
-	union qdma_mbox_txrx *resp =  (union qdma_mbox_txrx *)resp_msg;
-	struct mbox_msg_hdr *hdr = &rcv->hdr;
-	struct qdma_hw_access *hw = NULL;
-	int rv = QDMA_SUCCESS;
-	int ret = 0;
-
-	if (!rcv) {
-		qdma_log_error("%s: rcv_msg=%p failure:%d\n",
-						__func__, rcv,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	qdma_get_hw_access(dev_hndl, &hw);
-
-	switch (rcv->hdr.op) {
-	case MBOX_OP_VF_BYE:
-	{
-		struct qdma_fmap_cfg fmap;
-
-		fmap.qbase = 0;
-		fmap.qmax = 0;
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap,
-					QDMA_HW_ACCESS_WRITE);
-
-		qdma_dev_entry_destroy(dma_device_index, hdr->src_func_id);
-
-		ret = QDMA_MBOX_VF_OFFLINE;
-	}
-	break;
-	case MBOX_OP_PF_RESET_VF_BYE:
-	{
-		struct qdma_fmap_cfg fmap;
-
-		fmap.qbase = 0;
-		fmap.qmax = 0;
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap,
-					QDMA_HW_ACCESS_WRITE);
-
-		qdma_dev_entry_destroy(dma_device_index, hdr->src_func_id);
-
-		ret = QDMA_MBOX_VF_RESET_BYE;
-	}
-	break;
-	case MBOX_OP_HELLO:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-		struct qdma_fmap_cfg fmap_cfg;
-		struct mbox_msg_hello *rsp_hello = &resp->hello;
-
-		rv = qdma_dev_qinfo_get(dma_device_index, hdr->src_func_id,
-				&fmap->qbase, &fmap->qmax);
-		if (rv < 0)
-			rv = qdma_dev_entry_create(dma_device_index,
-					hdr->src_func_id);
-
-		if (!rv) {
-			rsp_hello->qbase = fmap->qbase;
-			rsp_hello->qmax = fmap->qmax;
-			rsp_hello->dma_device_index = dma_device_index;
-			hw->qdma_get_device_attributes(dev_hndl,
-						       &rsp_hello->dev_cap);
-		}
-		qdma_mbox_memset(&fmap_cfg, 0,
-				 sizeof(struct qdma_fmap_cfg));
-		hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id, &fmap_cfg,
-				   QDMA_HW_ACCESS_WRITE);
-
-		ret = QDMA_MBOX_VF_ONLINE;
-	}
-	break;
-	case MBOX_OP_FMAP:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-		struct qdma_fmap_cfg fmap_cfg;
-
-		fmap_cfg.qbase = fmap->qbase;
-		fmap_cfg.qmax = fmap->qmax;
-
-		rv = hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id,
-				     &fmap_cfg, QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			qdma_log_error("%s: failed to write fmap, err:%d\n",
-						__func__, rv);
-			return rv;
-		}
-	}
-	break;
-	case MBOX_OP_CSR:
-	{
-		struct mbox_msg_csr *rsp_csr = &resp->csr;
-		struct qdma_dev_attributes dev_cap;
-
-		uint32_t ringsz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t bufsz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t tmr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		uint32_t cntr_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-		int i;
-
-		rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, ringsz,
-				QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-		if (rv < 0)
-			goto exit_func;
-
-		hw->qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-		if (dev_cap.st_en) {
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, bufsz,
-				QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-		}
-
-		if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, tmr_th,
-				QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-
-			rv = hw->qdma_global_csr_conf(dev_hndl, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, cntr_th,
-				QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-			if (rv < 0 &&
-				(rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED))
-				goto exit_func;
-		}
-
-		for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-			rsp_csr->csr_info.ringsz[i] = ringsz[i] &
-					0xFFFF;
-			if (!rv) {
-				rsp_csr->csr_info.bufsz[i] = bufsz[i] & 0xFFFF;
-				rsp_csr->csr_info.timer_cnt[i] = tmr_th[i] &
-						0xFF;
-				rsp_csr->csr_info.cnt_thres[i] = cntr_th[i] &
-						0xFF;
-			}
-		}
-
-		if (rv == -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)
-			rv = QDMA_SUCCESS;
-	}
-	break;
-	case MBOX_OP_QREQ:
-	{
-		struct mbox_msg_fmap *fmap = &rcv->fmap;
-
-		rv = qdma_dev_update(dma_device_index,
-					  hdr->src_func_id,
-					  fmap->qmax, &fmap->qbase);
-		if (rv == 0)
-			rv = qdma_dev_qinfo_get(dma_device_index,
-						hdr->src_func_id,
-						&resp->fmap.qbase,
-						&resp->fmap.qmax);
-		if (rv < 0)
-			rv = -QDMA_ERR_MBOX_NUM_QUEUES;
-		else {
-			struct qdma_fmap_cfg fmap_cfg;
-
-			qdma_mbox_memset(&fmap_cfg, 0,
-					 sizeof(struct qdma_fmap_cfg));
-			hw->qdma_fmap_conf(dev_hndl, hdr->src_func_id,
-					&fmap_cfg, QDMA_HW_ACCESS_WRITE);
-		}
-	}
-	break;
-	case MBOX_OP_QNOTIFY_ADD:
-	{
-		struct mbox_msg_q_nitfy *q_notify = &rcv->q_notify;
-		enum qdma_dev_q_range q_range;
-
-		q_range = qdma_dev_is_queue_in_range(
-				dma_device_index,
-				q_notify->hdr.src_func_id,
-				q_notify->qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE)
-			rv = -QDMA_ERR_MBOX_INV_QID;
-		else
-			rv = qdma_dev_increment_active_queue(
-					dma_device_index,
-					q_notify->hdr.src_func_id,
-					q_notify->q_type);
-	}
-	break;
-	case MBOX_OP_QNOTIFY_DEL:
-	{
-		struct mbox_msg_q_nitfy *q_notify = &rcv->q_notify;
-		enum qdma_dev_q_range q_range;
-
-		q_range = qdma_dev_is_queue_in_range(
-				dma_device_index,
-				q_notify->hdr.src_func_id,
-				q_notify->qid_hw);
-		if (q_range != QDMA_DEV_Q_IN_RANGE)
-			rv = -QDMA_ERR_MBOX_INV_QID;
-		else
-			rv = qdma_dev_decrement_active_queue(
-					dma_device_index,
-					q_notify->hdr.src_func_id,
-					q_notify->q_type);
-	}
-	break;
-	case MBOX_OP_GET_QACTIVE_CNT:
-	{
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_H2C);
-
-		resp->qcnt.h2c_queues = rv;
-
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_C2H);
-
-		resp->qcnt.c2h_queues = rv;
-
-		rv = qdma_get_device_active_queue_count(
-				dma_device_index,
-				rcv->hdr.src_func_id,
-				QDMA_DEV_Q_TYPE_CMPT);
-
-		resp->qcnt.cmpt_queues = rv;
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_WRT:
-	{
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-		struct qdma_indirect_intr_ctxt *ctxt;
-		uint8_t i;
-		uint32_t ring_index;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			ring_index = ictxt->ring_index_list[i];
-
-			ctxt = &ictxt->ictxt[i];
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index,
-						      NULL,
-						      QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0)
-				resp->hdr.status = rv;
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index, ctxt,
-						      QDMA_HW_ACCESS_WRITE);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_RD:
-	{
-		struct mbox_msg_intr_ctxt *rcv_ictxt = &rcv->intr_ctxt.ctxt;
-		struct mbox_msg_intr_ctxt *rsp_ictxt = &resp->intr_ctxt.ctxt;
-		uint8_t i;
-		uint32_t ring_index;
-
-		for (i = 0; i < rcv_ictxt->num_rings; i++) {
-			ring_index = rcv_ictxt->ring_index_list[i];
-
-			rv = hw->qdma_indirect_intr_ctx_conf(dev_hndl,
-						      ring_index,
-						      &rsp_ictxt->ictxt[i],
-						      QDMA_HW_ACCESS_READ);
-			if (rv < 0)
-				resp->hdr.status = rv;
-
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_CLR:
-	{
-		int i;
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			rv = hw->qdma_indirect_intr_ctx_conf(
-					dev_hndl,
-					ictxt->ring_index_list[i],
-					NULL, QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_INTR_CTXT_INV:
-	{
-		struct mbox_msg_intr_ctxt *ictxt = &rcv->intr_ctxt.ctxt;
-		int i;
-
-		for (i = 0; i < ictxt->num_rings; i++) {
-			rv = hw->qdma_indirect_intr_ctx_conf(
-					dev_hndl,
-					ictxt->ring_index_list[i],
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0)
-				resp->hdr.status = rv;
-		}
-	}
-	break;
-	case MBOX_OP_QCTXT_INV:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_invalidate_queue_contexts(dev_hndl,
-							dma_device_index,
-							hdr->src_func_id,
-							qctxt->qid_hw,
-							qctxt->st,
-							qctxt->c2h,
-							qctxt->cmpt_ctxt_type);
-	}
-	break;
-	case MBOX_OP_QCTXT_CLR:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_clear_queue_contexts(dev_hndl,
-						dma_device_index,
-						hdr->src_func_id,
-						qctxt->qid_hw,
-						qctxt->st,
-						qctxt->c2h,
-						qctxt->cmpt_ctxt_type);
-	}
-	break;
-	case MBOX_OP_QCTXT_RD:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		rv = mbox_read_queue_contexts(dev_hndl, hdr->src_func_id,
-						qctxt->qid_hw,
-						qctxt->st,
-						qctxt->c2h,
-						qctxt->cmpt_ctxt_type,
-						&resp->qctxt.descq_ctxt);
-	}
-	break;
-	case MBOX_OP_QCTXT_WRT:
-	{
-		struct mbox_msg_qctxt *qctxt = &rcv->qctxt;
-
-		qctxt->descq_conf.func_id = hdr->src_func_id;
-		rv = mbox_write_queue_contexts(dev_hndl,
-				dma_device_index, qctxt);
-	}
-	break;
-	case MBOX_OP_RESET_PREPARE_RESP:
-		return QDMA_MBOX_VF_RESET;
-	case MBOX_OP_RESET_DONE_RESP:
-		return QDMA_MBOX_PF_RESET_DONE;
-	case MBOX_OP_REG_LIST_READ:
-	{
-		struct mbox_read_reg_list *rcv_read_reg_list =
-						&rcv->reg_read_list;
-		struct mbox_read_reg_list *rsp_read_reg_list =
-						&resp->reg_read_list;
-
-		rv = hw->qdma_read_reg_list((void *)dev_hndl, 1,
-				 rcv_read_reg_list->group_num,
-				&rsp_read_reg_list->num_regs,
-				rsp_read_reg_list->reg_list);
-
-		if (rv < 0 || rsp_read_reg_list->num_regs == 0) {
-			rv = -QDMA_ERR_MBOX_REG_READ_FAILED;
-			goto exit_func;
-		}
-
-	}
-	break;
-	case MBOX_OP_PF_BYE_RESP:
-		return QDMA_MBOX_PF_BYE;
-	default:
-		qdma_log_error("%s: op=%d invalid, err:%d\n",
-						__func__,
-						rcv->hdr.op,
-						-QDMA_ERR_MBOX_INV_MSG);
-		return -QDMA_ERR_MBOX_INV_MSG;
-	break;
-	}
-
-exit_func:
-	resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-	resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-	resp->hdr.src_func_id = func_id;
-
-	resp->hdr.status = rv;
-
-	return ret;
-}
-
-int qmda_mbox_compose_vf_online(uint16_t func_id,
-				uint16_t qmax, int *qbase, uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_HELLO;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = (uint32_t)*qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_offline(uint16_t func_id,
-				 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_VF_BYE;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_reset_offline(uint16_t func_id,
-				 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_PF_RESET_VF_BYE;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-
-
-int qdma_mbox_compose_vf_qreq(uint16_t func_id,
-			      uint16_t qmax, int qbase, uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QREQ;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_notify_qadd(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QNOTIFY_ADD;
-	msg->hdr.src_func_id = func_id;
-	msg->q_notify.qid_hw = qid_hw;
-	msg->q_notify.q_type = q_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_get_device_active_qcnt(uint16_t func_id,
-		uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_GET_QACTIVE_CNT;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_notify_qdel(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				    uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QNOTIFY_DEL;
-	msg->hdr.src_func_id = func_id;
-	msg->q_notify.qid_hw = qid_hw;
-	msg->q_notify.q_type = q_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_fmap_prog(uint16_t func_id,
-				   uint16_t qmax, int qbase,
-				   uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-					__func__, raw_data,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_FMAP;
-	msg->hdr.src_func_id = func_id;
-	msg->fmap.qbase = (uint32_t)qbase;
-	msg->fmap.qmax = qmax;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_write(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct mbox_descq_conf *descq_conf,
-			uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_WRT;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	qdma_mbox_memcpy(&msg->qctxt.descq_conf, descq_conf,
-	       sizeof(struct mbox_descq_conf));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_read(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_RD;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_invalidate(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_INV;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_qctxt_clear(uint16_t func_id,
-				uint16_t qid_hw, uint8_t st, uint8_t c2h,
-				enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-				uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_QCTXT_CLR;
-	msg->hdr.src_func_id = func_id;
-	msg->qctxt.qid_hw = qid_hw;
-	msg->qctxt.c2h = c2h;
-	msg->qctxt.st = st;
-	msg->qctxt.cmpt_ctxt_type = cmpt_ctxt_type;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_csr_read(uint16_t func_id,
-			       uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_CSR;
-	msg->hdr.src_func_id = func_id;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_reg_read(uint16_t func_id,
-					uint16_t group_num,
-					uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_REG_LIST_READ;
-	msg->hdr.src_func_id = func_id;
-	msg->reg_read_list.group_num = group_num;
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_write(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_WRT;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_read(uint16_t func_id,
-					struct mbox_msg_intr_ctxt *intr_ctxt,
-					uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_RD;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_clear(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_CLR;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_compose_vf_intr_ctxt_invalidate(uint16_t func_id,
-				      struct mbox_msg_intr_ctxt *intr_ctxt,
-				      uint32_t *raw_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data) {
-		qdma_log_error("%s: raw_data=%p, err:%d\n",
-						__func__, raw_data,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_INTR_CTXT_INV;
-	msg->hdr.src_func_id = func_id;
-	qdma_mbox_memcpy(&msg->intr_ctxt.ctxt, intr_ctxt,
-	       sizeof(struct mbox_msg_intr_ctxt));
-
-	return QDMA_SUCCESS;
-}
-
-uint8_t qdma_mbox_is_msg_response(uint32_t *send_data, uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *tx_msg = (union qdma_mbox_txrx *)send_data;
-	union qdma_mbox_txrx *rx_msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return ((tx_msg->hdr.op + MBOX_MSG_OP_RSP_OFFSET) == rx_msg->hdr.op) ?
-			1 : 0;
-}
-
-int qdma_mbox_vf_response_status(uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return msg->hdr.status;
-}
-
-uint8_t qdma_mbox_vf_func_id_get(uint32_t *rcv_data, uint8_t is_vf)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-	uint16_t func_id;
-
-	if (is_vf)
-		func_id = msg->hdr.dst_func_id;
-	else
-		func_id = msg->hdr.src_func_id;
-
-	return func_id;
-}
-
-int qdma_mbox_vf_active_queues_get(uint32_t *rcv_data,
-		enum qdma_dev_q_type q_type)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-	int queues = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_H2C)
-		queues = msg->qcnt.h2c_queues;
-
-	if (q_type == QDMA_DEV_Q_TYPE_C2H)
-		queues = msg->qcnt.c2h_queues;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT)
-		queues = msg->qcnt.cmpt_queues;
-
-	return queues;
-}
-
-
-uint8_t qdma_mbox_vf_parent_func_id_get(uint32_t *rcv_data)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	return msg->hdr.src_func_id;
-}
-
-int qdma_mbox_vf_dev_info_get(uint32_t *rcv_data,
-	struct qdma_dev_attributes *dev_cap, uint32_t *dma_device_index)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*dev_cap = msg->hello.dev_cap;
-	*dma_device_index = msg->hello.dma_device_index;
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_qinfo_get(uint32_t *rcv_data, int *qbase, uint16_t *qmax)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*qbase = msg->fmap.qbase;
-	*qmax = msg->fmap.qmax;
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_csr_get(uint32_t *rcv_data, struct qdma_csr_info *csr)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(csr, &msg->csr.csr_info, sizeof(struct qdma_csr_info));
-
-	return msg->hdr.status;
-
-}
-
-int qdma_mbox_vf_reg_list_get(uint32_t *rcv_data,
-		uint16_t *num_regs, struct qdma_reg_data *reg_list)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	*num_regs = msg->reg_read_list.num_regs;
-	qdma_mbox_memcpy(reg_list, &(msg->reg_read_list.reg_list),
-			(*num_regs * sizeof(struct qdma_reg_data)));
-
-	return msg->hdr.status;
-
-}
-
-int qdma_mbox_vf_context_get(uint32_t *rcv_data,
-			     struct qdma_descq_context *ctxt)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(ctxt, &msg->qctxt.descq_ctxt,
-			 sizeof(struct qdma_descq_context));
-
-	return msg->hdr.status;
-}
-
-int qdma_mbox_vf_intr_context_get(uint32_t *rcv_data,
-				  struct mbox_msg_intr_ctxt *ictxt)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)rcv_data;
-
-	qdma_mbox_memcpy(ictxt, &msg->intr_ctxt.ctxt,
-			 sizeof(struct mbox_msg_intr_ctxt));
-
-	return msg->hdr.status;
-}
-
-void qdma_mbox_pf_hw_clear_ack(void *dev_hndl)
-{
-	uint32_t v;
-	uint32_t reg;
-	int i;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, 0);
-
-	reg = mbox_base + MBOX_PF_ACK_BASE;
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if ((v & F_MBOX_FN_STATUS_ACK) == 0)
-		return;
-
-	for (i = 0; i < MBOX_PF_ACK_COUNT; i++, reg += MBOX_PF_ACK_STEP) {
-		v = qdma_reg_read(dev_hndl, reg);
-
-		if (!v)
-			continue;
-
-		/* clear the ack status */
-		qdma_reg_write(dev_hndl, reg, v);
-	}
-}
-
-int qdma_mbox_send(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data)
-{
-	int i;
-	uint32_t reg = MBOX_OUT_MSG_BASE;
-	uint32_t v;
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-	uint16_t dst_func_id = msg->hdr.dst_func_id;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if (v & F_MBOX_FN_STATUS_OUT_MSG)
-		return -QDMA_ERR_MBOX_SEND_BUSY;
-
-	if (!is_vf)
-		qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_TARGET,
-				V_MBOX_FN_TARGET_ID(dst_func_id));
-
-	for (i = 0; i < MBOX_MSG_REG_MAX; i++, reg += MBOX_MSG_STEP)
-		qdma_reg_write(dev_hndl, mbox_base + reg, raw_data[i]);
-
-	/* clear the outgoing ack */
-	if (!is_vf)
-		mbox_pf_hw_clear_func_ack(dev_hndl, dst_func_id);
-
-
-	qdma_log_debug("%s %s tx from_id=%d, to_id=%d, opcode=0x%x\n", __func__,
-			is_vf?"VF":"PF", msg->hdr.src_func_id,
-			msg->hdr.dst_func_id, msg->hdr.op);
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD, F_MBOX_FN_CMD_SND);
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_mbox_rcv(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data)
-{
-	uint32_t reg = MBOX_IN_MSG_BASE;
-	uint32_t v = 0;
-	int all_zero_msg = 1;
-	int i;
-	uint32_t from_id = 0;
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-
-	if (!(v & M_MBOX_FN_STATUS_IN_MSG))
-		return -QDMA_ERR_MBOX_NO_MSG_IN;
-
-	if (!is_vf) {
-		from_id = G_MBOX_FN_STATUS_SRC(v);
-		qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_TARGET, from_id);
-	}
-
-	for (i = 0; i < MBOX_MSG_REG_MAX; i++, reg += MBOX_MSG_STEP) {
-		raw_data[i] = qdma_reg_read(dev_hndl, mbox_base + reg);
-		/* if rcv'ed message is all zero, stop and disable the mbox,
-		 * the h/w mbox is not working properly
-		 */
-		if (raw_data[i])
-			all_zero_msg = 0;
-	}
-
-	/* ack'ed the sender */
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD, F_MBOX_FN_CMD_RCV);
-	if (all_zero_msg) {
-		qdma_log_error("%s: Message recv'd is all zeros. failure:%d\n",
-					__func__,
-					-QDMA_ERR_MBOX_ALL_ZERO_MSG);
-		return -QDMA_ERR_MBOX_ALL_ZERO_MSG;
-	}
-
-
-	qdma_log_debug("%s %s fid=%d, opcode=0x%x\n", __func__,
-				   is_vf?"VF":"PF", msg->hdr.dst_func_id,
-				   msg->hdr.op);
-	if (!is_vf && (from_id != msg->hdr.src_func_id))
-		msg->hdr.src_func_id = from_id;
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_mbox_hw_init(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t v;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	if (is_vf) {
-		v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-		if (v & M_MBOX_FN_STATUS_IN_MSG)
-			qdma_reg_write(dev_hndl, mbox_base + MBOX_FN_CMD,
-				    F_MBOX_FN_CMD_RCV);
-	} else
-		qdma_mbox_pf_hw_clear_ack(dev_hndl);
-}
-
-void qdma_mbox_enable_interrupts(void *dev_hndl, uint8_t is_vf)
-{
-	int vector = 0x0;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_VEC, vector);
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_EN, 0x1);
-}
-
-void qdma_mbox_disable_interrupts(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	qdma_reg_write(dev_hndl, mbox_base + MBOX_ISR_EN, 0x0);
-}
-
-
-int qdma_mbox_compose_vf_reset_message(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_RESET_PREPARE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_compose_pf_reset_done_message(uint32_t *raw_data,
-					uint8_t src_funcid, uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_RESET_DONE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_compose_pf_offline(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid)
-{
-	union qdma_mbox_txrx *msg = (union qdma_mbox_txrx *)raw_data;
-
-	if (!raw_data)
-		return -QDMA_ERR_INV_PARAM;
-
-	qdma_mbox_memset(raw_data, 0, sizeof(union qdma_mbox_txrx));
-	msg->hdr.op = MBOX_OP_PF_BYE;
-	msg->hdr.src_func_id = src_funcid;
-	msg->hdr.dst_func_id = dest_funcid;
-	return 0;
-}
-
-int qdma_mbox_vf_rcv_msg_handler(uint32_t *rcv_msg, uint32_t *resp_msg)
-{
-	union qdma_mbox_txrx *rcv =  (union qdma_mbox_txrx *)rcv_msg;
-	union qdma_mbox_txrx *resp =  (union qdma_mbox_txrx *)resp_msg;
-	int rv = 0;
-
-	switch (rcv->hdr.op) {
-	case MBOX_OP_RESET_PREPARE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_VF_RESET;
-		break;
-	case MBOX_OP_RESET_DONE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_PF_RESET_DONE;
-		break;
-	case MBOX_OP_PF_BYE:
-		resp->hdr.op = rcv->hdr.op + MBOX_MSG_OP_RSP_OFFSET;
-		resp->hdr.dst_func_id = rcv->hdr.src_func_id;
-		resp->hdr.src_func_id = rcv->hdr.dst_func_id;
-		rv = QDMA_MBOX_PF_BYE;
-		break;
-	default:
-		break;
-	}
-	return rv;
-}
-
-uint8_t qdma_mbox_out_status(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t v;
-	uint32_t mbox_base = get_mbox_offset(dev_hndl, is_vf);
-
-	v = qdma_reg_read(dev_hndl, mbox_base + MBOX_FN_STATUS);
-	if (v & F_MBOX_FN_STATUS_OUT_MSG)
-		return 1;
-	else
-		return 0;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h
deleted file mode 100755
index b29a8c0..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_mbox_protocol.h
+++ /dev/null
@@ -1,695 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_MBOX_PROTOCOL_H_
-#define __QDMA_MBOX_PROTOCOL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA message box handling interface definitions
- *
- * Header file *qdma_mbox_protocol.h* defines data structures and function
- * signatures exported for QDMA Mbox message handling.
- */
-
-#include "qdma_platform.h"
-#include "qdma_resource_mgmt.h"
-
-
-#define QDMA_MBOX_VF_ONLINE			(1)
-#define QDMA_MBOX_VF_OFFLINE		(-1)
-#define QDMA_MBOX_VF_RESET			(2)
-#define QDMA_MBOX_PF_RESET_DONE		(3)
-#define QDMA_MBOX_PF_BYE			(4)
-#define QDMA_MBOX_VF_RESET_BYE            (5)
-
-/** mailbox register max */
-#define MBOX_MSG_REG_MAX		32
-
-#define mbox_invalidate_msg(m)	{ (m)->hdr.op = MBOX_OP_NOOP; }
-
-/**
- * struct mbox_descq_conf - collective bit-fields of all contexts
- */
-struct mbox_descq_conf {
-
-	/** @ring_bs_addr: ring base address */
-	uint64_t ring_bs_addr;
-	/** @cmpt_ring_bs_addr: completion ring base address */
-	uint64_t cmpt_ring_bs_addr;
-	/** @forced_en: enable fetch credit */
-	uint32_t forced_en:1;
-	/** @en_bypass: bypass enable */
-	uint32_t en_bypass:1;
-	/** @irq_arm: arm irq */
-	uint32_t irq_arm:1;
-	/** @wbi_intvl_en: writeback interval enable */
-	uint32_t wbi_intvl_en:1;
-	/** @wbi_chk: writeback pending check */
-	uint32_t wbi_chk:1;
-	/** @at: address translation */
-	uint32_t at:1;
-	/** @wbk_en: writeback enable */
-	uint32_t wbk_en:1;
-	/** @irq_en: irq enable */
-	uint32_t irq_en:1;
-	/** @pfch_en: prefetch enable */
-	uint32_t pfch_en:1;
-	/** @en_bypass_prefetch: prefetch bypass enable */
-	uint32_t en_bypass_prefetch:1;
-	/** @dis_overflow_check: disable overflow check */
-	uint32_t dis_overflow_check:1;
-	/** @cmpt_int_en: completion interrupt enable */
-	uint32_t cmpt_int_en:1;
-	/** @cmpt_at: completion address translation */
-	uint32_t cmpt_at:1;
-	/** @cmpt_color: completion ring initial color bit */
-	uint32_t cmpt_color:1;
-	/** @cmpt_full_upd: completion full update */
-	uint32_t cmpt_full_upd:1;
-	/** @cmpl_stat_en: completion status enable */
-	uint32_t cmpl_stat_en:1;
-	/** @desc_sz: descriptor size */
-	uint32_t desc_sz:2;
-	/** @cmpt_desc_sz: completion ring descriptor size */
-	uint32_t cmpt_desc_sz:2;
-	/** @triggermode: trigger mode */
-	uint32_t triggermode:3;
-	/** @rsvd: reserved */
-	uint32_t rsvd:9;
-	/** @func_id: function ID */
-	uint32_t func_id:16;
-	/** @cnt_thres: counter threshold */
-	uint32_t cnt_thres:8;
-	/** @timer_thres: timer threshold */
-	uint32_t timer_thres:8;
-	/** @intr_id: interrupt id */
-	uint16_t intr_id:11;
-	/** @intr_aggr: interrupt aggregation */
-	uint16_t intr_aggr:1;
-	/** @filler: filler bits */
-	uint16_t filler:4;
-	/** @ringsz: ring size */
-	uint16_t ringsz;
-	/** @bufsz: c2h buffer size */
-	uint16_t bufsz;
-	/** @cmpt_ringsz: completion ring size */
-	uint16_t cmpt_ringsz;
-};
-
-/**
- * @enum - mbox_cmpt_ctxt_type
- * @brief  specifies whether cmpt is enabled with MM/ST
- */
-enum mbox_cmpt_ctxt_type {
-	/** @QDMA_MBOX_CMPT_CTXT_ONLY: only cmpt context programming required */
-	QDMA_MBOX_CMPT_CTXT_ONLY,
-	/** @QDMA_MBOX_CMPT_WITH_MM: completion context with MM */
-	QDMA_MBOX_CMPT_WITH_MM,
-	/** @QDMA_MBOX_CMPT_WITH_ST: complete context with ST */
-	QDMA_MBOX_CMPT_WITH_ST,
-	/** @QDMA_MBOX_CMPT_CTXT_NONE: No completion context */
-	QDMA_MBOX_CMPT_CTXT_NONE
-};
-
-/**
- * @struct - mbox_msg_intr_ctxt
- * @brief	interrupt context mailbox message
- */
-struct mbox_msg_intr_ctxt {
-	/** @num_rings: number of intr context rings be assigned
-	 * for virtual function
-	 */
-	uint8_t num_rings;	/* 1 ~ 8 */
-	/** @ring_index_list: ring index associated for each vector */
-	uint32_t ring_index_list[QDMA_NUM_DATA_VEC_FOR_INTR_CXT];
-	/** @w: interrupt context data for all rings*/
-	struct qdma_indirect_intr_ctxt ictxt[QDMA_NUM_DATA_VEC_FOR_INTR_CXT];
-};
-
-/*****************************************************************************/
-/**
- * qdma_mbox_hw_init(): Initialize the mobx HW
- *
- * @dev_hndl:  device handle
- * @is_vf:  is VF mbox
- *
- * Return:	None
- *****************************************************************************/
-void qdma_mbox_hw_init(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_pf_rcv_msg_handler(): handles the raw message received in pf
- *
- * @dma_device_index:  pci bus number
- * @dev_hndl:  device handle
- * @func_id:   own function id
- * @rcv_msg:   received raw message
- * @resp_msg:  raw response message
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_pf_rcv_msg_handler(void *dev_hndl, uint8_t dma_device_index,
-				 uint16_t func_id, uint32_t *rcv_msg,
-				 uint32_t *resp_msg);
-
-/*****************************************************************************/
-/**
- * qmda_mbox_compose_vf_online(): compose VF online message
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qmda_mbox_compose_vf_online(uint16_t func_id,
-				uint16_t qmax, int *qbase, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_offline(): compose VF offline message
- *
- * @func_id:   destination function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_offline(uint16_t func_id,
-				 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_reset_message(): compose VF reset message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_reset_message(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_reset_offline(): compose VF BYE for PF initiated RESET
- *
- * @func_id: own function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_reset_offline(uint16_t func_id,
-				uint32_t *raw_data);
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_pf_reset_done_message(): compose PF reset done message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_pf_reset_done_message(uint32_t *raw_data,
-				uint8_t src_funcid, uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_pf_offline(): compose PF offline message
- *
- * @raw_data:   output raw message to be sent
- * @src_funcid: own function id
- * @dest_funcid: destination function id
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_pf_offline(uint32_t *raw_data, uint8_t src_funcid,
-				uint8_t dest_funcid);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qreq(): compose message to request queues
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qreq(uint16_t func_id,
-			      uint16_t qmax, int qbase, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qadd(): compose message to notify queue add
- *
- * @func_id:	destination function id
- * @qid_hw:	number of queues being requested
- * @q_type:	direction of the of queue
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_notify_qadd(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qdel(): compose message to notify queue delete
- *
- * @func_id:	destination function id
- * @qid_hw:	number of queues being requested
- * @q_type:	direction of the of queue
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_notify_qdel(uint16_t func_id,
-				     uint16_t qid_hw,
-				     enum qdma_dev_q_type q_type,
-				     uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_notify_qdel(): compose message to get the active
- * queue count
- *
- * @func_id:	destination function id
- * @raw_data:	output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_get_device_active_qcnt(uint16_t func_id,
-		uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_fmap_prog(): handles the raw message received
- *
- * @func_id:   destination function id
- * @qmax: number of queues being requested
- * @qbase: q base at which queues are allocated
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_fmap_prog(uint16_t func_id,
-				   uint16_t qmax, int qbase,
-				   uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_write(): compose queue configuration data for
- * compose and program
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be read
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @descq_conf:   pointer to queue config data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_write(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			struct mbox_descq_conf *descq_conf,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_read(): compose message to read context data of a
- * queue
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be read
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_read(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_invalidate(): compose queue context invalidate
- * message
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be invalidated
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_invalidate(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_clear(): compose queue context clear message
- *
- * @func_id:   destination function id
- * @qid_hw:   HW queue for which the context has to be cleared
- * @st:   is st mode
- * @c2h:   is c2h direction
- * @cmpt_ctxt_type:   completion context type
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_qctxt_clear(uint16_t func_id,
-			uint16_t qid_hw, uint8_t st, uint8_t c2h,
-			enum mbox_cmpt_ctxt_type cmpt_ctxt_type,
-			uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_csr_read(): compose message to read csr info
- *
- * @func_id:   destination function id
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_csr_read(uint16_t func_id,
-			       uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_reg_read(): compose message to read the register values
- *
- * @func_id:   destination function id
- * @group_num:  group number for the registers to read
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_reg_read(uint16_t func_id, uint16_t group_num,
-			       uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_write(): compose interrupt ring context
- * programming message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_write(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_read(): handles the raw message received
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_read(uint16_t func_id,
-					struct mbox_msg_intr_ctxt *intr_ctxt,
-					uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_intr_ctxt_clear(): compose interrupt ring context
- * clear message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_clear(uint16_t func_id,
-					 struct mbox_msg_intr_ctxt *intr_ctxt,
-					 uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_compose_vf_qctxt_invalidate(): compose interrupt ring context
- * invalidate message
- *
- * @func_id:   destination function id
- * @intr_ctxt:   pointer to interrupt context data structure
- * @raw_data: output raw message to be sent
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_compose_vf_intr_ctxt_invalidate(uint16_t func_id,
-				      struct mbox_msg_intr_ctxt *intr_ctxt,
-				      uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_is_msg_response(): check if the received msg opcode is response
- *                              sent message opcode
- *
- * @send_data: mbox message sent
- * @rcv_data: mbox message recieved
- *
- * Return:	1  : match and  0: does not match
- *****************************************************************************/
-uint8_t qdma_mbox_is_msg_response(uint32_t *send_data, uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_response_status(): return the response received for the sent msg
- *
- * @rcv_data: mbox message recieved
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_response_status(uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_func_id_get(): return the vf function id
- *
- * @rcv_data: mbox message recieved
- * @is_vf:  is VF mbox
- *
- * Return:	vf function id
- *****************************************************************************/
-uint8_t qdma_mbox_vf_func_id_get(uint32_t *rcv_data, uint8_t is_vf);
-
-int qdma_mbox_vf_active_queues_get(uint32_t *rcv_data,
-		enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_parent_func_id_get(): return the vf parent function id
- *
- * @rcv_data: mbox message recieved
- *
- * Return:	vf function id
- *****************************************************************************/
-uint8_t qdma_mbox_vf_parent_func_id_get(uint32_t *rcv_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_dev_info_get(): get dev info from received message
- *
- * @rcv_data: mbox message recieved
- * @dev_cap: device capability information
- * @dma_device_index: DMA Identifier to be read using the mbox.
- *
- * Return:	response status with dev info received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_dev_info_get(uint32_t *rcv_data,
-		struct qdma_dev_attributes *dev_cap,
-		uint32_t *dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_qinfo_get(): get qinfo from received message
- *
- * @rcv_data: mbox message recieved
- * @qmax: number of queues
- * @qbase: q base at which queues are allocated
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_qinfo_get(uint32_t *rcv_data, int *qbase, uint16_t *qmax);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_csr_get(): get csr info from received message
- *
- * @rcv_data: mbox message recieved
- * @csr: pointer to the csr info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_csr_get(uint32_t *rcv_data, struct qdma_csr_info *csr);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_reg_list_get(): get reg info from received message
- *
- * @rcv_data: mbox message recieved
- * @num_regs: number of register read
- * @reg_list: pointer to the register info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_reg_list_get(uint32_t *rcv_data,
-		uint16_t *num_regs, struct qdma_reg_data *reg_list);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_context_get(): get queue context info from received message
- *
- * @rcv_data: mbox message recieved
- * @ctxt: pointer to the queue context info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_context_get(uint32_t *rcv_data,
-			     struct qdma_descq_context *ctxt);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_context_get(): get intr context info from received message
- *
- * @rcv_data: mbox message recieved
- * @ctxt: pointer to the intr context info
- *
- * Return:	response status received to the sent message
- *****************************************************************************/
-int qdma_mbox_vf_intr_context_get(uint32_t *rcv_data,
-				  struct mbox_msg_intr_ctxt *ictxt);
-
-
-/*****************************************************************************/
-/**
- * qdma_mbox_pf_hw_clear_ack() - clear the HW ack
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_mbox_pf_hw_clear_ack(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_send() - function to send raw data via qdma mailbox
- *
- * @dev_hndl:   device handle
- * @is_vf:	     Whether PF or VF
- * @raw_data:   pointer to message being sent
- *
- * The function sends the raw_data to the outgoing mailbox memory and if PF,
- * then assert the acknowledge status register bit.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mbox_send(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_rcv() - function to receive raw data via qdma mailbox
- *
- * @dev_hndl: device handle
- * @is_vf: Whether PF or VF
- * @raw_data:  pointer to the message being received
- *
- * The function receives the raw_data from the incoming mailbox memory and
- * then acknowledge the sender by setting msg_rcv field in the command
- * register.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mbox_rcv(void *dev_hndl, uint8_t is_vf, uint32_t *raw_data);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_enable_interrupts() - Enable the QDMA mailbox interrupt
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * @return	none
- *****************************************************************************/
-void qdma_mbox_enable_interrupts(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_disable_interrupts() - Disable the QDMA mailbox interrupt
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * @return	none
- *****************************************************************************/
-void qdma_mbox_disable_interrupts(void *dev_hndl, uint8_t is_vf);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_vf_rcv_msg_handler(): handles the raw message received in VF
- *
- * @rcv_msg:   received raw message
- * @resp_msg:  raw response message
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_mbox_vf_rcv_msg_handler(uint32_t *rcv_msg, uint32_t *resp_msg);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_out_status():
- *
- * @dev_hndl: pointer to xlnx_dma_dev
- * @is_vf: Whether PF or VF
- *
- * Return:	0 if MBOX outbox is empty, 1 if MBOX is not empty
- *****************************************************************************/
-uint8_t qdma_mbox_out_status(void *dev_hndl, uint8_t is_vf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_MBOX_PROTOCOL_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h
deleted file mode 100755
index 996b891..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_platform.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_PLATFORM_H_
-#define __QDMA_PLATFORM_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA platform specific interface definitions
- *
- * Header file *qdma_platform_env.h* defines function signatures that are
- * required to be implemented by platform specific drivers.
- */
-
-#include "qdma_access_common.h"
-
-/*****************************************************************************/
-/**
- * qdma_calloc(): allocate memory and initialize with 0
- *
- * @num_blocks:  number of blocks of contiguous memory of @size
- * @size:    size of each chunk of memory
- *
- * Return: pointer to the memory block created on success and NULL on failure
- *****************************************************************************/
-void *qdma_calloc(uint32_t num_blocks, uint32_t size);
-
-/*****************************************************************************/
-/**
- * qdma_memfree(): free the memory
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_memfree(void *memptr);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_init() - Init lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-int qdma_resource_lock_init(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_take() - take lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_take(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_give() - release lock after accessing resource management
- * APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_give(void);
-
-/*****************************************************************************/
-/**
- * qdma_reg_write() - Register write API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to write
- * @val:	value to be written
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_reg_write(void *dev_hndl, uint32_t reg_offst, uint32_t val);
-
-/*****************************************************************************/
-/**
- * qdma_reg_read() - Register read API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to be read
- *
- * Return: Value read
- *****************************************************************************/
-uint32_t qdma_reg_read(void *dev_hndl, uint32_t reg_offst);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_lock() - Lock function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_lock(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_release() - Release function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_release(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_udelay() - delay function to be used in the common library
- *
- * @delay_usec:   delay in microseconds
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_udelay(uint32_t delay_usec);
-
-/*****************************************************************************/
-/**
- * qdma_get_hw_access() - function to get the qdma_hw_access
- *
- * @dev_hndl:   device handle
- * @dev_cap: pointer to hold qdma_hw_access structure
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_get_hw_access(void *dev_hndl, struct qdma_hw_access **hw);
-
-/*****************************************************************************/
-/**
- * qdma_strncpy(): copy n size string from source to destination buffer
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_strncpy(char *dest, const char *src, size_t n);
-
-
-/*****************************************************************************/
-/**
- * qdma_get_err_code() - function to get the qdma access mapped error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_err_code(int acc_err_code);
-
-/*****************************************************************************/
-/**
- * qdma_io_wmb() - Write memory barrier for IO device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_io_wmb(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_PLATFORM_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h
deleted file mode 100755
index f774bf6..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_reg_dump.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_REG_DUMP_H__
-#define __QDMA_REG_DUMP_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-#include "qdma_access_common.h"
-
-#define DEBUGFS_DEV_INFO_SZ		(300)
-
-#define QDMA_REG_NAME_LENGTH	64
-#define DEBUGFS_INTR_CNTX_SZ	(2048 * 2)
-#define DBGFS_ERR_BUFLEN		(64)
-#define DEBGFS_LINE_SZ			(81)
-#define DEBGFS_GEN_NAME_SZ		(40)
-#define REG_DUMP_SIZE_PER_LINE	(256)
-
-#define MAX_QDMA_CFG_REGS			(200)
-
-#define QDMA_MM_EN_SHIFT          0
-#define QDMA_CMPT_EN_SHIFT        1
-#define QDMA_ST_EN_SHIFT          2
-#define QDMA_MAILBOX_EN_SHIFT     3
-
-#define QDMA_MM_MODE              (1 << QDMA_MM_EN_SHIFT)
-#define QDMA_COMPLETION_MODE      (1 << QDMA_CMPT_EN_SHIFT)
-#define QDMA_ST_MODE              (1 << QDMA_ST_EN_SHIFT)
-#define QDMA_MAILBOX              (1 << QDMA_MAILBOX_EN_SHIFT)
-
-
-#define QDMA_MM_ST_MODE \
-	(QDMA_MM_MODE | QDMA_COMPLETION_MODE | QDMA_ST_MODE)
-
-#define GET_CAPABILITY_MASK(mm_en, st_en, mm_cmpt_en, mailbox_en)  \
-	((mm_en << QDMA_MM_EN_SHIFT) | \
-			((mm_cmpt_en | st_en) << QDMA_CMPT_EN_SHIFT) | \
-			(st_en << QDMA_ST_EN_SHIFT) | \
-			(mailbox_en << QDMA_MAILBOX_EN_SHIFT))
-
-
-struct regfield_info {
-		const char *field_name;
-		uint32_t field_mask;
-};
-
-struct xreg_info {
-	const char *name;
-	uint32_t addr;
-	uint32_t repeat;
-	uint32_t step;
-	uint8_t shift;
-	uint8_t len;
-	uint8_t is_debug_reg;
-	uint8_t mode;
-	uint8_t read_type;
-	uint8_t num_bitfields;
-	struct regfield_info *bitfields;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c
deleted file mode 100755
index 1875ac4..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.c
+++ /dev/null
@@ -1,795 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_resource_mgmt.h"
-#include "qdma_platform.h"
-#include "qdma_list.h"
-#include "qdma_access_errors.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_resource_mgmt.tmh"
-#endif
-
-struct qdma_resource_entry {
-	int qbase;
-	uint32_t total_q;
-	struct qdma_list_head node;
-};
-
-/** per function entry */
-struct qdma_dev_entry {
-	uint16_t func_id;
-	uint32_t active_h2c_qcnt;
-	uint32_t active_c2h_qcnt;
-	uint32_t active_cmpt_qcnt;
-	struct qdma_resource_entry entry;
-};
-
-/** for hodling the qconf_entry structure */
-struct qdma_resource_master {
-	/** DMA device index this resource belongs to */
-	uint32_t dma_device_index;
-	/** starting pci bus number this resource belongs to */
-	uint32_t pci_bus_start;
-	/** ending pci bus number this resource belongs to */
-	uint32_t pci_bus_end;
-	/** total queue this resource manager handles */
-	uint32_t total_q;
-	/** queue base from which this resource manger handles */
-	int qbase;
-	/** for attaching to master resource list */
-	struct qdma_list_head node;
-	/** for holding device entries */
-	struct qdma_list_head dev_list;
-	/** for holding free resource list */
-	struct qdma_list_head free_list;
-	/** active queue count per resource*/
-	uint32_t active_qcnt;
-};
-
-static QDMA_LIST_HEAD(master_resource_list);
-
-static struct qdma_resource_master *qdma_find_master_resource_entry(
-		uint32_t bus_start, uint32_t bus_end)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->pci_bus_start == bus_start &&
-			q_resource->pci_bus_end == bus_end) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_master *qdma_get_master_resource_entry(
-		uint32_t dma_device_index)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-				QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->dma_device_index == dma_device_index) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_dev_entry *qdma_get_dev_entry(uint32_t dma_device_index,
-						uint16_t func_id)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-
-	if (!q_resource)
-		return NULL;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &q_resource->dev_list) {
-		struct qdma_dev_entry *dev_entry = (struct qdma_dev_entry *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (dev_entry->func_id == func_id) {
-			qdma_resource_lock_give();
-			return dev_entry;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_entry *qdma_free_entry_create(int q_base,
-							  uint32_t total_q)
-{
-	struct qdma_resource_entry *entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_master));
-	if (entry == NULL)
-		return NULL;
-
-	entry->total_q = total_q;
-	entry->qbase = q_base;
-
-	return entry;
-}
-
-static void qdma_submit_to_free_list(struct qdma_dev_entry *dev_entry,
-				     struct qdma_list_head *head)
-{
-	struct qdma_resource_entry *streach_node = NULL;
-	struct qdma_list_head *entry, *tmp;
-	/* create a new node to be added to empty free list */
-	struct qdma_resource_entry *new_node = NULL;
-
-	if (!dev_entry->entry.total_q)
-		return;
-
-	if (qdma_list_is_empty(head)) {
-		new_node = qdma_free_entry_create(dev_entry->entry.qbase,
-				dev_entry->entry.total_q);
-		if (new_node == NULL)
-			return;
-		QDMA_LIST_SET_DATA(&new_node->node, new_node);
-		qdma_list_add_tail(&new_node->node, head);
-		/* reset device entry q resource params */
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-	} else {
-		qdma_list_for_each_safe(entry, tmp, head) {
-			struct qdma_resource_entry *node =
-				(struct qdma_resource_entry *)
-					QDMA_LIST_GET_DATA(entry);
-
-			/* insert the free slot at appropriate place */
-			if ((node->qbase > dev_entry->entry.qbase) ||
-				qdma_list_is_last_entry(entry, head)) {
-				new_node = qdma_free_entry_create(
-						dev_entry->entry.qbase,
-						dev_entry->entry.total_q);
-				if (new_node == NULL)
-					return;
-				QDMA_LIST_SET_DATA(&new_node->node, new_node);
-				if (node->qbase > dev_entry->entry.qbase)
-					qdma_list_insert_before(&new_node->node,
-								&node->node);
-				else
-					qdma_list_add_tail(&new_node->node,
-							   head);
-				/* reset device entry q resource params */
-				dev_entry->entry.qbase = -1;
-				dev_entry->entry.total_q = 0;
-				break;
-			}
-		}
-	}
-
-	/* de-fragment (merge contiguous resource chunks) if possible */
-	qdma_list_for_each_safe(entry, tmp, head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (!streach_node)
-			streach_node = node;
-		else {
-			if ((streach_node->qbase + streach_node->total_q) ==
-					(uint32_t)node->qbase) {
-				streach_node->total_q += node->total_q;
-				qdma_list_del(&node->node);
-				qdma_memfree(node);
-			} else
-				streach_node = node;
-		}
-	}
-}
-
-/**
- * qdma_resource_entry() - return the best free list entry node that can
- *                         accommodate the new request
- */
-static struct qdma_resource_entry *qdma_get_resource_node(uint32_t qmax,
-							  int qbase,
-				   struct qdma_list_head *free_list_head)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_entry *best_fit_node = NULL;
-
-	/* try to honor requested qbase */
-	if (qbase >= 0) {
-		qdma_list_for_each_safe(entry, tmp, free_list_head) {
-			struct qdma_resource_entry *node =
-			(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-			if ((qbase >= node->qbase) &&
-					(node->qbase + node->total_q) >=
-					(qbase + qmax)) {
-				best_fit_node = node;
-				goto fragment_free_list;
-			}
-		}
-	}
-	best_fit_node = NULL;
-
-	/* find a best node to accommodate q resource request */
-	qdma_list_for_each_safe(entry, tmp, free_list_head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (node->total_q >= qmax) {
-			if (!best_fit_node || (best_fit_node->total_q >=
-					node->total_q)) {
-				best_fit_node = node;
-				qbase = best_fit_node->qbase;
-			}
-		}
-	}
-
-fragment_free_list:
-	if (!best_fit_node)
-		return NULL;
-
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax == best_fit_node->total_q))
-		return best_fit_node;
-
-	/* split free resource node accordingly */
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax != best_fit_node->total_q)) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase + qmax;
-		uint32_t lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q -= lqmax;
-	} else if ((qbase > best_fit_node->qbase) &&
-			((qbase + qmax) == (best_fit_node->qbase +
-					best_fit_node->total_q))) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-		best_fit_node->total_q = qmax;
-		best_fit_node->qbase = qbase;
-	} else {
-		/*
-		 * create two extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-
-		best_fit_node->qbase = qbase;
-		best_fit_node->total_q -= lqmax;
-
-		lqbase = best_fit_node->qbase + qmax;
-		lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q = qmax;
-	}
-
-	return best_fit_node;
-}
-
-static int qdma_request_q_resource(struct qdma_dev_entry *dev_entry,
-				    uint32_t new_qmax, int new_qbase,
-				    struct qdma_list_head *free_list_head)
-{
-	uint32_t qmax = dev_entry->entry.total_q;
-	int qbase = dev_entry->entry.qbase;
-	struct qdma_resource_entry *free_entry_node = NULL;
-	int rv = QDMA_SUCCESS;
-
-	/* submit already allocated queues back to free list before requesting
-	 * new resource
-	 */
-	qdma_submit_to_free_list(dev_entry, free_list_head);
-
-	if (!new_qmax)
-		return 0;
-	/* check if the request can be accomodated */
-	free_entry_node = qdma_get_resource_node(new_qmax, new_qbase,
-						 free_list_head);
-	if (free_entry_node == NULL) {
-		/* request cannot be accommodated. Restore the dev_entry */
-		free_entry_node = qdma_get_resource_node(qmax, qbase,
-							 free_list_head);
-		rv = -QDMA_ERR_RM_NO_QUEUES_LEFT;
-		qdma_log_error("%s: Not enough queues, err:%d\n", __func__,
-					   -QDMA_ERR_RM_NO_QUEUES_LEFT);
-		if (free_entry_node == NULL) {
-			dev_entry->entry.qbase = -1;
-			dev_entry->entry.total_q = 0;
-
-			return rv;
-		}
-	}
-
-	dev_entry->entry.qbase = free_entry_node->qbase;
-	dev_entry->entry.total_q = free_entry_node->total_q;
-
-	qdma_list_del(&free_entry_node->node);
-	qdma_memfree(free_entry_node);
-
-	return rv;
-}
-
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index)
-{
-	struct qdma_resource_master *q_resource;
-	struct qdma_resource_entry *free_entry;
-	static int index;
-
-	q_resource = qdma_find_master_resource_entry(bus_start, bus_end);
-	if (q_resource) {
-		*dma_device_index = q_resource->dma_device_index;
-		qdma_log_debug("%s: Resource already created", __func__);
-		qdma_log_debug("for this device(%d)\n",
-				q_resource->dma_device_index);
-		return -QDMA_ERR_RM_RES_EXISTS;
-	}
-
-	*dma_device_index = index;
-
-	q_resource = (struct qdma_resource_master *)qdma_calloc(1,
-		sizeof(struct qdma_resource_master));
-	if (!q_resource) {
-		qdma_log_error("%s: no memory for q_resource, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	free_entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_entry));
-	if (!free_entry) {
-		qdma_memfree(q_resource);
-		qdma_log_error("%s: no memory for free_entry, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_resource_lock_take();
-	q_resource->dma_device_index = index;
-	q_resource->pci_bus_start = bus_start;
-	q_resource->pci_bus_end = bus_end;
-	q_resource->total_q = total_q;
-	q_resource->qbase = q_base;
-	qdma_list_init_head(&q_resource->dev_list);
-	qdma_list_init_head(&q_resource->free_list);
-	QDMA_LIST_SET_DATA(&q_resource->node, q_resource);
-	QDMA_LIST_SET_DATA(&q_resource->free_list, q_resource);
-	qdma_list_add_tail(&q_resource->node, &master_resource_list);
-
-
-	free_entry->total_q = total_q;
-	free_entry->qbase = q_base;
-	QDMA_LIST_SET_DATA(&free_entry->node, free_entry);
-	qdma_list_add_tail(&free_entry->node, &q_resource->free_list);
-	qdma_resource_lock_give();
-
-	qdma_log_debug("%s: New master resource created at %d",
-		__func__, index);
-	++index;
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_master_resource_destroy(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_list_head *entry, *tmp;
-
-	if (!q_resource)
-		return;
-	qdma_resource_lock_take();
-	if (!qdma_list_is_empty(&q_resource->dev_list)) {
-		qdma_resource_lock_give();
-		return;
-	}
-	qdma_list_for_each_safe(entry, tmp, &q_resource->free_list) {
-		struct qdma_resource_entry *free_entry =
-			(struct qdma_resource_entry *)
-				QDMA_LIST_GET_DATA(entry);
-
-		qdma_list_del(&free_entry->node);
-		qdma_memfree(free_entry);
-	}
-	qdma_list_del(&q_resource->node);
-	qdma_memfree(q_resource);
-	qdma_resource_lock_give();
-}
-
-
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_resource_lock_take();
-		dev_entry = (struct qdma_dev_entry *)
-			qdma_calloc(1, sizeof(struct qdma_dev_entry));
-		if (dev_entry == NULL) {
-			qdma_resource_lock_give();
-			qdma_log_error("%s: Insufficient memory, err:%d\n",
-						__func__,
-						-QDMA_ERR_NO_MEM);
-			return -QDMA_ERR_NO_MEM;
-		}
-		dev_entry->func_id = func_id;
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-		QDMA_LIST_SET_DATA(&dev_entry->entry.node, dev_entry);
-		qdma_list_add_tail(&dev_entry->entry.node,
-				   &q_resource->dev_list);
-		qdma_resource_lock_give();
-		qdma_log_info("%s: Created the dev entry successfully\n",
-						__func__);
-	} else {
-		qdma_log_error("%s: Dev entry already created, err = %d\n",
-						__func__,
-						-QDMA_ERR_RM_DEV_EXISTS);
-		return -QDMA_ERR_RM_DEV_EXISTS;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found.\n", __func__);
-		return;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found\n", __func__);
-		return;
-	}
-	qdma_resource_lock_take();
-	qdma_submit_to_free_list(dev_entry, &q_resource->free_list);
-
-	qdma_list_del(&dev_entry->entry.node);
-	qdma_memfree(dev_entry);
-	qdma_resource_lock_give();
-}
-
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-
-	/* if any active queue on device, no more new qmax
-	 * configuration allowed
-	 */
-	if (dev_entry->active_h2c_qcnt ||
-			dev_entry->active_c2h_qcnt ||
-			dev_entry->active_cmpt_qcnt) {
-		qdma_resource_lock_give();
-		qdma_log_error("%s: Qs active. Config blocked, err: %d\n",
-				__func__, -QDMA_ERR_RM_QMAX_CONF_REJECTED);
-		return -QDMA_ERR_RM_QMAX_CONF_REJECTED;
-	}
-
-	rv = qdma_request_q_resource(dev_entry, qmax, *qbase,
-				&q_resource->free_list);
-
-	*qbase = dev_entry->entry.qbase;
-	qdma_resource_lock_give();
-
-
-	return rv;
-}
-
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_debug("%s: Dev Entry not created yet\n", __func__);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	*qbase = dev_entry->entry.qbase;
-	*qmax = dev_entry->entry.total_q;
-	qdma_resource_lock_give();
-
-	return QDMA_SUCCESS;
-}
-
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t qmax;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	qdma_resource_lock_take();
-	qmax = dev_entry->entry.qbase + dev_entry->entry.total_q;
-	if (dev_entry->entry.total_q && (qid_hw < qmax) &&
-			((int)qid_hw >= dev_entry->entry.qbase)) {
-		qdma_resource_lock_give();
-		return QDMA_DEV_Q_IN_RANGE;
-	}
-	qdma_resource_lock_give();
-
-	return QDMA_DEV_Q_OUT_OF_RANGE;
-}
-
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-	uint32_t *active_qcnt = NULL;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		active_qcnt = &dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		active_qcnt = &dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		active_qcnt = &dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	if (active_qcnt && (dev_entry->entry.total_q < ((*active_qcnt) + 1))) {
-		qdma_resource_lock_give();
-		return -QDMA_ERR_RM_NO_QUEUES_LEFT;
-	}
-
-	if (active_qcnt) {
-		*active_qcnt = (*active_qcnt) + 1;
-		q_resource->active_qcnt++;
-	}
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__,
-			   -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		if (dev_entry->active_h2c_qcnt)
-			dev_entry->active_h2c_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		if (dev_entry->active_c2h_qcnt)
-			dev_entry->active_c2h_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		if (dev_entry->active_cmpt_qcnt)
-			dev_entry->active_cmpt_qcnt--;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-	q_resource->active_qcnt--;
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	uint32_t q_cnt;
-
-	if (!q_resource)
-		return QDMA_SUCCESS;
-
-	qdma_resource_lock_take();
-	q_cnt = q_resource->active_qcnt;
-	qdma_resource_lock_give();
-
-	return q_cnt;
-}
-
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t dev_active_qcnt = 0;
-
-	if (!q_resource)
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry)
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		dev_active_qcnt = dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		dev_active_qcnt = dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		dev_active_qcnt = dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		dev_active_qcnt = 0;
-	}
-	qdma_resource_lock_give();
-
-	return dev_active_qcnt;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h
deleted file mode 100755
index 5c53c47..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_resource_mgmt.h
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_RESOURCE_MGMT_H_
-#define __QDMA_RESOURCE_MGMT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA resource management interface definitions
- *
- * Header file *qdma_resource_mgmt.h* defines data structures and function
- * signatures exported for QDMA queue management.
- */
-
-#include "qdma_platform_env.h"
-#include "qdma_access_export.h"
-
-/**
- * enum qdma_dev_q_range: Q ranage check
- */
-enum qdma_dev_q_range {
-	/** @QDMA_DEV_Q_IN_RANGE: Q belongs to dev */
-	QDMA_DEV_Q_IN_RANGE,
-	/** @QDMA_DEV_Q_OUT_OF_RANGE: Q does not belong to dev */
-	QDMA_DEV_Q_OUT_OF_RANGE,
-	/** @QDMA_DEV_Q_RANGE_MAX: total Q validity states */
-	QDMA_DEV_Q_RANGE_MAX
-};
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_create(): create the master q resource
- *
- * @bus_start:  Bus number of the device i.e. pdev->bus->number
- * @bus_end:    Ending bus number i.e. the subordinate bus number of the
- *              parent bridge
- * @q_base:     base from which this master resource needs to be created
- * @total_q:     total queues in this master resource
- * @dma_device_index: DMA device identifier assigned by resource manager to
- *                    track the number of devices
- *
- * A master resource per driver per board is created to manage the queues
- * allocated to this driver.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_destroy(): destroy the master q resource
- *
- * @dma_device_index:  DMA device identifier this master resource belongs to
- *
- * Return:	None
- *****************************************************************************/
-void qdma_master_resource_destroy(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_create(): create a device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * A device entry is to be created on every function probe.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_destroy(): destroy device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * Return:	None
- *****************************************************************************/
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_update(): update qmax for the device
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API is to be called for update request of qmax of any function.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase);
-
-/*****************************************************************************/
-/**
- * qdma_dev_qinfo_get(): get device info
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        output qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API can be used get the qbase and qmax for any function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax);
-
-/*****************************************************************************/
-/**
- * qdma_dev_is_queue_in_range(): check if queue belongs to this device
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @qid_hw:      hardware queue id
- *
- * This API checks if the queue ID is in valid range for function specified
- *
- * Return:	@QDMA_DEV_Q_IN_RANGE  : valid and
- * @QDMA_DEV_Q_OUT_OF_RANGE: invalid
- *****************************************************************************/
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw);
-
-/*****************************************************************************/
-/**
- * qdma_dev_increment_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_dev_decrement_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_is_active_queue(): check if any queue is active
- *
- * @dma_device_index:  DMA device identifier that this resource belongs to
- *
- * This API is used to check if any active queue is present.
- *
- * Return:	active queue count
- *****************************************************************************/
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_get_device_active_queue_count(): get device active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to get the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_RESOURCE_MGMT_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.c b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.c
deleted file mode 100755
index b23a4df..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.c
+++ /dev/null
@@ -1,6239 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include "qdma_soft_access.h"
-#include "qdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_soft_access.tmh"
-#endif
-
-/** QDMA Context array size */
-#define QDMA_FMAP_NUM_WORDS				2
-#define QDMA_SW_CONTEXT_NUM_WORDS			5
-#define QDMA_PFETCH_CONTEXT_NUM_WORDS			2
-#define QDMA_CMPT_CONTEXT_NUM_WORDS			5
-#define QDMA_HW_CONTEXT_NUM_WORDS			2
-#define QDMA_CR_CONTEXT_NUM_WORDS			1
-#define QDMA_IND_INTR_CONTEXT_NUM_WORDS			3
-#define QDMA_REG_IND_CTXT_REG_COUNT			8
-
-
-#define QDMA_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_REG_GROUP_4_START_ADDR	0x1014
-
-#define QDMA_DEFAULT_PFCH_STOP_THRESH            256
-
-static void qdma_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_hw_desc_err_process(void *dev_hndl);
-static void qdma_hw_trq_err_process(void *dev_hndl);
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct xreg_info qdma_config_regs[] = {
-
-	/* QDMA_TRQ_SEL_GLBL1 (0x00000) */
-	{"CFG_BLOCK_ID",
-		0x00, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_BUSDEV",
-		0x04, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_PL_SZ",
-		0x08, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_RDRQ_SZ",
-		0x0C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SYS_ID",
-		0x10, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MSI_EN",
-		0x14, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_DATA_WIDTH",
-		0x18, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_CTRL",
-		0x1C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_PL_SZ",
-		0x40, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_RDRQ_SZ",
-		0x44, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MISC_CTRL",
-		0x4C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SCRATCH_REG",
-		0x80, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_MSK_A",
-		0xF0, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_STS_A",
-		0xF4, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_MSK_A",
-		0xF8, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_STS_A",
-		0xFC, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL2 (0x00100) */
-	{"GLBL2_ID",
-		0x100, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_INT",
-		0x104, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_INT",
-		0x108, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_EXT",
-		0x10C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_EXT",
-		0x110, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_INST",
-		0x114, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_QDMA",
-		0x118, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_STRM",
-		0x11C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_QDMA_CAP",
-		0x120, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PASID_CAP",
-		0x128, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_FUNC_RET",
-		0x12C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_SYS_ID",
-		0x130, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_MISC_CAP",
-		0x134, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_PCIE_RQ",
-		0x1B8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_WR",
-		0x1C0, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_RD",
-		0x1C8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL (0x00200) */
-	{"GLBL_RNGSZ",
-		0x204, 16, 1, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL_ERR_STAT",
-		0x248, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_MASK",
-		0x24C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_CFG",
-		0x250, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_STS",
-		0x254, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_MSK",
-		0x258, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG",
-		0x25C, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_STS",
-		0x264, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_MSK",
-		0x268, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_LOG",
-		0x26C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_DBG_DAT",
-		0x270, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG2",
-		0x27C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_INTERRUPT_CFG",
-		0x288, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-
-	/* QDMA_TRQ_SEL_FMAP (0x00400 - 0x7FC) */
-	/* TODO: max 256, display 4 for now */
-	{"TRQ_SEL_FMAP",
-		0x400, 4, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_IND (0x00800) */
-	{"IND_CTXT_DATA",
-		0x804, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_MASK",
-		0x824, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_CMD",
-		0x844, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H (0x00A00) */
-	{"C2H_TIMER_CNT",
-	0xA00, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CNT_THRESH",
-	0xA40, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		0xA88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_S_AXIS_CMPT_ACCEPTED",
-		0xA8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED",
-		0xA90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_AXIS_PKG_CMP",
-		0xA94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ACCEPTED",
-		0xA98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_CMP",
-		0xA9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WRQ_OUT",
-		0xAA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		0xAA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		0xAA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		0xAAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_BUF_SZ",
-		0xAB0, 16, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_ERR_STAT",
-		0xAF0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_ERR_MASK",
-		0xAF4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_STAT",
-		0xAF8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_MASK",
-		0xAFC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_ENABLE",
-		0xB00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_INT",
-		0xB04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_PFCH_CFG",
-		0xB08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_TIMER_TICK",
-		0xB0C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED",
-		0xB10, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED",
-		0xB14, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_REQ",
-		0xB18, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG",
-		0xB1C, 4, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_ERR_CTXT",
-		0xB2C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_FIRST_ERR_QID",
-		0xB30, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"STAT_NUM_CMPT_IN",
-		0xB34, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_OUT",
-		0xB38, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_DRP",
-		0xB3C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_STAT_DESC_OUT",
-		0xB40, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_DSC_CRDT_SENT",
-		0xB44, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_FCH_DSC_RCVD",
-		0xB48, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_BYP_DSC_RCVD",
-		0xB4C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_CFG",
-		0xB50, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_REQ",
-		0xB54, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_MM_REQ",
-		0xB58, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_ERR_INT_REQ",
-		0xB5C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_REQ",
-		0xB60, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_ACK",
-		0xB64, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_FAIL",
-		0xB68, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_NO_MSIX",
-		0xB6C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_CTXT_INVAL",
-		0xB70, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_ACK",
-		0xB74, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL",
-		0xB78, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_NO_MSIX",
-		0xB7C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL",
-		0xB80, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WR_CMP",
-		0xB84, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_4",
-		0xB88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_5",
-		0xB8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_QID",
-		0xB90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH",
-		0xB94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_DEBUG",
-		0xB98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_IMM_ACCEPTED",
-		0xB9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_MARKER_ACCEPTED",
-		0xBA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED",
-		0xBA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_C2H_PAYLOAD_FIFO_CRDT_CNT",
-		0xBA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_REQ",
-		0xBAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_MSIX",
-		0xBB0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_LEN_MISMATCH",
-		0xBB4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_DESC_RSP_LEN",
-		0xBB8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_QID_FIFO_LEN",
-		0xBBC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_PAYLOAD_CNT",
-		0xBC0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_C2H_CMPT_FORMAT",
-		0xBC4, 7, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CACHE_DEPTH",
-		0xBE0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_BUF_DEPTH",
-		0xBE4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CRDT",
-		0xBE8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C(0x00E00) Register Space*/
-	{"H2C_ERR_STAT",
-		0xE00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_ERR_MASK",
-		0xE04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_FIRST_ERR_QID",
-		0xE08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_DBG_REG",
-		0xE0C, 5, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_FATAL_ERR_EN",
-		0xE20, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_REQ_THROT",
-		0xE24, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_ALN_DBG_REG0",
-		0xE28, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H_MM (0x1000) */
-	{"C2H_MM_CONTROL",
-		0x1004, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_STATUS",
-		0x1040, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_CMPL_DSC_CNT",
-		0x1048, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE_EN_MASK",
-		0x1054, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE",
-		0x1058, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_INFO",
-		0x105C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CTRL",
-		0x10C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CY_CNT",
-		0x10C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_DATA_CNT",
-		0x10CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_DBG_INFO",
-		0x10E8, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C_MM (0x1200)*/
-	{"H2C_MM_CONTROL",
-		0x1204, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_STATUS",
-		0x1240, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_CMPL_DSC_CNT",
-		0x1248, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE_EN_MASK",
-		0x1254, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE",
-		0x1258, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_INFO",
-		0x125C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CTRL",
-		0x12C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CY_CNT",
-		0x12C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_DATA_CNT",
-		0x12CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_DBG_INFO",
-		0x12E8, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_REQ_THROT",
-		0x12EC, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_PF_MAILBOX (0x2400) */
-	{"FUNC_STATUS",
-		0x2400, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_CMD",
-		 0x2404, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_INTR_VEC",
-		 0x2408, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"TARGET_FUNC",
-		 0x240C, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"INTR_CTRL",
-		 0x2410, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"PF_ACK",
-		 0x2420, 8, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FLR_CTRL_STATUS",
-		 0x2500, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_IN",
-		 0x2800, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_OUT",
-		0x2C00, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	{"", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }
-};
-
-
-static struct qdma_hw_err_info qdma_err_info[QDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_UR_CA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_PARAM_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ADDR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TAG_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DAT_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DMA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DSC_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_VF_ACCESS,
-		"Invalid VF access error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_DESC_RSP_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MSI_INT_FAIL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ERR_DESC_CNT_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass interface mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ZERO_LEN_DESC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_CSI_MOP,
-		"Non EOP descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_CSI_MOP_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_NO_DMA_DSC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_PEND_FIFO,
-		"H2C ST pending fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE Errors */
-	{
-		QDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_PEND_FIFO,
-		"H2C pending fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_hw_errs[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_DSC_ERR_ALL,
-	QDMA_TRQ_ERR_ALL,
-	QDMA_ST_C2H_ERR_ALL,
-	QDMA_ST_FATAL_ERR_ALL,
-	QDMA_ST_H2C_ERR_ALL,
-	QDMA_SBE_ERR_ALL,
-	QDMA_DBE_ERR_ALL
-};
-
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-
-static struct qctx_entry sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry fmap_ctxt_entries[] = {
-	{"Queue Base", 0},
-	{"Queue Max", 0},
-};
-
-static struct qctx_entry ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-};
-
-uint32_t qdma_soft_reg_dump_buf_len(void)
-{
-	uint32_t length = ((sizeof(qdma_config_regs) /
-			sizeof(qdma_config_regs[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-uint32_t qdma_get_config_num_regs(void)
-{
-	return (sizeof(qdma_config_regs)/
-		sizeof(qdma_config_regs[0]));
-}
-
-struct xreg_info *qdma_get_config_regs(void)
-{
-	return qdma_config_regs;
-}
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(cmpt_ctxt_entries) /
-			sizeof(cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(sw_ctxt_entries) /
-				sizeof(sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(hw_ctxt_entries) /
-			sizeof(hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(credit_ctxt_entries) /
-			sizeof(credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(fmap_ctxt_entries) /
-			sizeof(fmap_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(cmpt_ctxt_entries) /
-				sizeof(cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(c2h_pftch_ctxt_entries) /
-				sizeof(c2h_pftch_ctxt_entries[0]))
-				+ 1) * REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return rv;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	sw_ctxt_entries[2].value = sw_ctxt->fnc_id;
-	sw_ctxt_entries[3].value = sw_ctxt->qen;
-	sw_ctxt_entries[4].value = sw_ctxt->frcd_en;
-	sw_ctxt_entries[5].value = sw_ctxt->wbi_chk;
-	sw_ctxt_entries[6].value = sw_ctxt->wbi_intvl_en;
-	sw_ctxt_entries[7].value = sw_ctxt->at;
-	sw_ctxt_entries[8].value = sw_ctxt->fetch_max;
-	sw_ctxt_entries[9].value = sw_ctxt->rngsz_idx;
-	sw_ctxt_entries[10].value = sw_ctxt->desc_sz;
-	sw_ctxt_entries[11].value = sw_ctxt->bypass;
-	sw_ctxt_entries[12].value = sw_ctxt->mm_chn;
-	sw_ctxt_entries[13].value = sw_ctxt->wbk_en;
-	sw_ctxt_entries[14].value = sw_ctxt->irq_en;
-	sw_ctxt_entries[15].value = sw_ctxt->port_id;
-	sw_ctxt_entries[16].value = sw_ctxt->irq_no_last;
-	sw_ctxt_entries[17].value = sw_ctxt->err;
-	sw_ctxt_entries[18].value = sw_ctxt->err_wb_sent;
-	sw_ctxt_entries[19].value = sw_ctxt->irq_req;
-	sw_ctxt_entries[20].value = sw_ctxt->mrkr_dis;
-	sw_ctxt_entries[21].value = sw_ctxt->is_mm;
-	sw_ctxt_entries[22].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	sw_ctxt_entries[23].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	sw_ctxt_entries[24].value = sw_ctxt->vec;
-	sw_ctxt_entries[25].value = sw_ctxt->intr_aggr;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	cmpt_ctxt_entries[9].value = cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-	cmpt_ctxt_entries[19].value = cmpt_ctxt->ovf_chk_dis;
-	cmpt_ctxt_entries[20].value = cmpt_ctxt->at;
-	cmpt_ctxt_entries[21].value = cmpt_ctxt->vec;
-	cmpt_ctxt_entries[22].value = cmpt_ctxt->int_aggr;
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-/*
- * qdma_acc_fill_fmap_ctxt() - Helper function to fill fmap context
- *                           into structure
- *
- */
-static void qdma_fill_fmap_ctxt(struct qdma_fmap_cfg *fmap_ctxt)
-{
-	fmap_ctxt_entries[0].value = fmap_ctxt->qbase;
-	fmap_ctxt_entries[1].value = fmap_ctxt->qmax;
-}
-
-/*
- * dump_soft_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_soft_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			qdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	qdma_fill_fmap_ctxt(&queue_context->fmap);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		/* SW context dump */
-		n = sizeof(sw_ctxt_entries) / sizeof((sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				sw_ctxt_entries[i].name,
-				sw_ctxt_entries[i].value,
-				sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(hw_ctxt_entries) / sizeof((hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				hw_ctxt_entries[i].name,
-				hw_ctxt_entries[i].value,
-				hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(credit_ctxt_entries) /
-			sizeof((credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				credit_ctxt_entries[i].name,
-				credit_ctxt_entries[i].value,
-				credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(cmpt_ctxt_entries) / sizeof((cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				cmpt_ctxt_entries[i].name,
-				cmpt_ctxt_entries[i].value,
-				cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(c2h_pftch_ctxt_entries) /
-			sizeof(c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				c2h_pftch_ctxt_entries[i].name,
-				c2h_pftch_ctxt_entries[i].value,
-				c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* Fmap context dump */
-	n = sizeof(fmap_ctxt_entries) /
-		sizeof(fmap_ctxt_entries[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"Fmap Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len,
-			(buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			fmap_ctxt_entries[i].name,
-			fmap_ctxt_entries[i].value,
-			fmap_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-			"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_version() - Function to get the qdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_GLBL2_MISC_CAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(dev_hndl, is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, config->qmax);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, func_id,
-			QDMA_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(QDMA_FMAP_CTXT_W0_QID_MASK, fmap[0]);
-	config->qmax = FIELD_GET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return qdma_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W0_PIDX, ctxt->pidx) |
-		FIELD_SET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, ctxt->wbi_intvl_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_SW_CTXT_W1_BYP_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK, ctxt->irq_no_last) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK, ctxt->err_wb_sent) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK, ctxt->intr_aggr);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(QDMA_SW_CTXT_W0_PIDX, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(QDMA_SW_CTXT_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(QDMA_SW_CTXT_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		FIELD_GET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_BYP_MASK, sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MM_CHN_MASK, sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_WBK_EN_MASK, sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_PORT_ID_MASK, sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IS_MM_MASK, sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(QDMA_SW_CTXT_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK,
-			sw_ctxt[4]));
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK, ctxt->pfch) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK, ctxt->timer_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, baddr_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, pidx_l);
-
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, ctxt->full_upd) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, ctxt->int_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, cmpt_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_ERR_MASK, cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(QDMA_COMPL_CTXT_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, cmpt_ctxt[4]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK, (uint64_t)baddr_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK, (uint64_t)baddr_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[QDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(QDMA_HW_CTXT_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(QDMA_HW_CTXT_W0_CRD_USE_MASK, hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_DSC_PND_MASK, hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_EVENT_PEND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(QDMA_HW_CTXT_W1_FETCH_PEND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(QDMA_CR_CTXT_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_write(void *dev_hndl, uint16_t ring_index,
-		const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, baddr_h) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_AT_MASK, ctxt->at);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_read(void *dev_hndl, uint16_t ring_index,
-				   struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(QDMA_INTR_CTXT_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_COLOR_MASK,
-			intr_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(QDMA_INTR_CTXT_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W2_AT_MASK, intr_ctxt[2]));
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_clear(void *dev_hndl, uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_PFCH_FL_TH_MASK,
-					QDMA_DEFAULT_PFCH_STOP_THRESH) |
-			FIELD_SET(QDMA_C2H_NUM_PFCH_MASK,
-					DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-			FIELD_SET(QDMA_C2H_PFCH_QCNT_MASK, (cfg_val >> 1)) |
-			FIELD_SET(QDMA_C2H_EVT_QCNT_TH_MASK,
-					((cfg_val >> 1) - 2));
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_PFETCH_CFG, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_INT_TIMER_TICK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(QDMA_C2H_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(QDMA_C2H_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_WRB_COAL_CFG, reg_val);
-
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-					QDMA_H2C_THROT_DATA_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-					QDMA_THROT_EN_DATA) |
-			FIELD_SET(QDMA_H2C_REQ_THRESH_MASK,
-					QDMA_H2C_THROT_REQ_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_REQ_MASK,
-					QDMA_THROT_EN_REQ);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_hndl:(%p), reg_info:(%p), err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_DMA_SEL_DESC_PIDX_MASK, reg_info->pidx) |
-			  FIELD_SET(QDMA_DMA_SEL_IRQ_EN_MASK,
-			  reg_info->irq_en);
-
-	/* Make sure writes to the H2C/C2H descriptors are synchronized
-	 * before updating PIDX
-	 */
-	qdma_io_wmb();
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_handle (%p) reg_info (%p) , err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_info->irq_en);
-
-	/* Make sure writes to the CMPT ring are synchronized
-	 * before updating CIDX
-	 */
-	qdma_io_wmb();
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_intr_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl || !reg_info) {
-		qdma_log_error("%s: dev_handle (%p) reg_info (%p), err:%d\n",
-			__func__, dev_hndl, reg_info, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_DMA_SEL_INT_SW_CIDX_MASK, reg_info->sw_cidx) |
-		FIELD_SET(QDMA_DMA_SEL_INT_RING_IDX_MASK, reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_user_bar() - Function to get the
- *						AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_USER_BAR_ID :
-			QDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-
-	if (!is_vf)
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	else
-		user_bar_id = user_bar_id & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, vf:%d, usrbar:%d, err:%d\n",
-					   __func__,
-					   is_vf,
-					   *user_bar,
-					   -QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_attributes() - Function to get the qdma device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP);
-	dev_info->num_qs = FIELD_GET(QDMA_GLBL2_MULTQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_MISC_CAP);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = FIELD_GET(QDMA_GLBL2_MM_CMPT_EN_MASK, reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_MDMA);
-	dev_info->mm_en = (FIELD_GET(QDMA_GLBL2_MM_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_MM_H2C_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(QDMA_GLBL2_ST_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_ST_H2C_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_SBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_DBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_DSC_ERR_STS,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG0,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG1,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT0,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT1,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG2
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_TRQ_ERR_STS,
-		QDMA_OFFSET_GLBL_TRQ_ERR_LOG
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_OFFSET_H2C_FIRST_ERR_QID,
-		QDMA_OFFSET_H2C_DBG_REG0,
-		QDMA_OFFSET_H2C_DBG_REG1,
-		QDMA_OFFSET_H2C_DBG_REG2,
-		QDMA_OFFSET_H2C_DBG_REG3,
-		QDMA_OFFSET_H2C_DBG_REG4
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_OFFSET_C2H_FIRST_ERR_QID,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum qdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_err_info[(enum qdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_DSC_ERR_POISON,
-		QDMA_TRQ_ERR_UNMAPPED,
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("addr = 0x%08x val = 0x%08x",
-			QDMA_OFFSET_GLBL_ERR_STAT,
-			glbl_err_stat);
-	for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == QDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr);
-
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					qdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			qdma_err_info[bit].qdma_hw_err_process(
-						dev_hndl);
-
-			for (idx = bit; idx < all_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat & qdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s",
-						__func__,
-						qdma_hw_get_error_name(idx));
-			}
-
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr,
-				err_stat);
-
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-					   __func__, err_idx,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_ERRS_ALL) {
-		for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_ST_C2H_ERR_ALL ||
-					idx == QDMA_ST_FATAL_ERR_ALL ||
-					idx == QDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_OFFSET_GLBL_ERR_MASK);
-			reg_val |= FIELD_SET(
-				qdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs) / sizeof((qdma_config_regs)[0]);
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_soft_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_config_regs;
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*
- * qdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void qdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-	ind_intr_ctxt_entries[8].value = intr_ctxt->at;
-}
-
-
-static uint32_t qdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(ind_intr_ctxt_entries) /
-			sizeof(ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * dump_intr_context() - Helper function to dump interrupt context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	qdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(ind_intr_ctxt_entries) /
-			sizeof((ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			ind_intr_ctxt_entries[i].name,
-			ind_intr_ctxt_entries[i].value,
-			ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_dump_intr_context() - Function to get qdma interrupt context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = qdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode (ST or MM)
- * @q_type:		Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_soft_context(ctxt_data, st, q_type, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @is_vf:		VF or PF
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:sw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:hw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw,
-				&(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:cr ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_pfetch_ctx_conf(dev_hndl,
-				qid_hw, &(context.pfetch_ctxt),
-				QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s:pftch ctxt read fail, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-		(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					 &(context.cmpt_ctxt),
-					 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s:cmpt ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = qdma_fmap_conf(dev_hndl, func_id,
-				 &(context.fmap),
-				 QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		qdma_log_error(
-		"%s:fmap ctxt read fail, err = %d",
-				__func__, rv);
-		return rv;
-	}
-
-	rv = dump_soft_context(&context, st, q_type, buf, buflen);
-
-	return rv;
-}
-/*****************************************************************************/
-/**
- * qdma_is_legacy_intr_pend() - function to get legacy_intr_pending status bit
- *
- * @dev_hndl: device handle
- *
- * Return: legacy interrupt pending status bit value
- *****************************************************************************/
-int qdma_is_legacy_intr_pend(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	if (FIELD_GET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, reg_val))
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: no pending legacy intr, err:%d\n",
-				   __func__, -QDMA_ERR_INV_PARAM);
-	return -QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR;
-}
-
-/*****************************************************************************/
-/**
- * qdma_clear_pend_legacy_intr() - function to clear legacy_intr_pending bit
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-int qdma_clear_pend_legacy_intr(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, 1);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_legacy_intr_conf() - function to disable/enable legacy interrupt
- *
- * @dev_hndl: device handle
- * @enable: enable/disable flag. 1 - enable, 0 - disable
- *
- * Return: void
- *****************************************************************************/
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK, enable);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    ((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = qdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-
-	reg_info = qdma_config_regs;
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_soft_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_config_regs;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid group received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &qdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_OFFSET_C2H_TIMER_CNT, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		reg_val |= FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_OFFSET_C2H_MM_CONTROL :
-			QDMA_OFFSET_H2C_MM_CONTROL;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_get_config_num_regs();
-	struct xreg_info *config_regs  = qdma_get_config_regs();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.h
deleted file mode 100755
index 9cb5247..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_access.h
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_SOFT_ACCESS_H_
-#define __QDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library interface definitions
- *
- * Header file *qdma_access.h* defines data structures and function signatures
- * exported by QDMA common library.
- */
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_error_idx {
-	/* Descriptor errors */
-	QDMA_DSC_ERR_POISON,
-	QDMA_DSC_ERR_UR_CA,
-	QDMA_DSC_ERR_PARAM,
-	QDMA_DSC_ERR_ADDR,
-	QDMA_DSC_ERR_TAG,
-	QDMA_DSC_ERR_FLR,
-	QDMA_DSC_ERR_TIMEOUT,
-	QDMA_DSC_ERR_DAT_POISON,
-	QDMA_DSC_ERR_FLR_CANCEL,
-	QDMA_DSC_ERR_DMA,
-	QDMA_DSC_ERR_DSC,
-	QDMA_DSC_ERR_RQ_CANCEL,
-	QDMA_DSC_ERR_DBE,
-	QDMA_DSC_ERR_SBE,
-	QDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_TRQ_ERR_UNMAPPED,
-	QDMA_TRQ_ERR_QID_RANGE,
-	QDMA_TRQ_ERR_VF_ACCESS,
-	QDMA_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	QDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	QDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	QDMA_ST_H2C_ERR_CSI_MOP,
-	QDMA_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_ST_H2C_ERR_SBE,
-	QDMA_ST_H2C_ERR_DBE,
-	QDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_SBE_ERR_MI_H2C0_DAT,
-	QDMA_SBE_ERR_MI_C2H0_DAT,
-	QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_SBE_ERR_FUNC_MAP,
-	QDMA_SBE_ERR_DSC_HW_CTXT,
-	QDMA_SBE_ERR_DSC_CRD_RCV,
-	QDMA_SBE_ERR_DSC_SW_CTXT,
-	QDMA_SBE_ERR_DSC_CPLI,
-	QDMA_SBE_ERR_DSC_CPLD,
-	QDMA_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_SBE_ERR_QID_FIFO_RAM,
-	QDMA_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_SBE_ERR_INT_CTXT_RAM,
-	QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_SBE_ERR_PFCH_LL_RAM,
-	QDMA_SBE_ERR_H2C_PEND_FIFO,
-	QDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_DBE_ERR_MI_H2C0_DAT,
-	QDMA_DBE_ERR_MI_C2H0_DAT,
-	QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_DBE_ERR_FUNC_MAP,
-	QDMA_DBE_ERR_DSC_HW_CTXT,
-	QDMA_DBE_ERR_DSC_CRD_RCV,
-	QDMA_DBE_ERR_DSC_SW_CTXT,
-	QDMA_DBE_ERR_DSC_CPLI,
-	QDMA_DBE_ERR_DSC_CPLD,
-	QDMA_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_DBE_ERR_QID_FIFO_RAM,
-	QDMA_DBE_ERR_TUSER_FIFO_RAM,
-	QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_DBE_ERR_INT_CTXT_RAM,
-	QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_DBE_ERR_PFCH_LL_RAM,
-	QDMA_DBE_ERR_H2C_PEND_FIFO,
-	QDMA_DBE_ERR_ALL,
-
-	QDMA_ERRS_ALL
-};
-
-struct qdma_hw_err_info {
-	enum qdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_set_default_global_csr(void *dev_hndl);
-
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_init_ctxt_memory(void *dev_hndl);
-
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable);
-
-int qdma_clear_pend_legacy_intr(void *dev_hndl);
-
-int qdma_is_legacy_intr_pend(void *dev_hndl);
-
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-uint32_t qdma_soft_reg_dump_buf_len(void);
-
-uint32_t qdma_get_config_num_regs(void);
-
-struct xreg_info *qdma_get_config_regs(void);
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t func_id,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-int qdma_hw_error_process(void *dev_hndl);
-
-const char *qdma_hw_get_error_name(uint32_t err_idx);
-
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint16_t func_id, uint8_t *user_bar);
-
-int qdma_soft_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_reg.h b/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
deleted file mode 100755
index d3876c0..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_access/qdma_soft_access/qdma_soft_reg.h
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_SOFT_REG_H__
-#define __QDMA_SOFT_REG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * User defined helper macros for masks and shifts. If the same macros are
- * defined in linux kernel code , then undefined them and used the user
- * defined macros
- */
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-
-#define DEBGFS_LINE_SZ			(81)
-
-
-#define QDMA_H2C_THROT_DATA_THRESH       0x4000
-#define QDMA_THROT_EN_DATA               1
-#define QDMA_THROT_EN_REQ                0
-#define QDMA_H2C_THROT_REQ_THRESH        0x60
-
-/*
- * Q Context programming (indirect)
- */
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-#define QDMA_REG_IND_CTXT_WCNT_1                            1
-#define QDMA_REG_IND_CTXT_WCNT_2                            2
-#define QDMA_REG_IND_CTXT_WCNT_3                            3
-#define QDMA_REG_IND_CTXT_WCNT_4                            4
-#define QDMA_REG_IND_CTXT_WCNT_5                            5
-#define QDMA_REG_IND_CTXT_WCNT_6                            6
-#define QDMA_REG_IND_CTXT_WCNT_7                            7
-#define QDMA_REG_IND_CTXT_WCNT_8                            8
-
-/* ------------------------- QDMA_TRQ_SEL_IND (0x00800) ----------------*/
-#define QDMA_OFFSET_IND_CTXT_DATA                           0x804
-#define QDMA_OFFSET_IND_CTXT_MASK                           0x824
-#define QDMA_OFFSET_IND_CTXT_CMD                            0x844
-#define     QDMA_IND_CTXT_CMD_BUSY_MASK                     0x1
-
-/** QDMA_IND_REG_SEL_FMAP */
-#define QDMA_FMAP_CTXT_W1_QID_MAX_MASK                      GENMASK(11, 0)
-#define QDMA_FMAP_CTXT_W0_QID_MASK                          GENMASK(10, 0)
-
-/** QDMA_IND_REG_SEL_SW_C2H */
-/** QDMA_IND_REG_SEL_SW_H2C */
-#define QDMA_SW_CTXT_W4_INTR_AGGR_MASK                      BIT(11)
-#define QDMA_SW_CTXT_W4_VEC_MASK                            GENMASK(10, 0)
-#define QDMA_SW_CTXT_W3_DSC_H_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W2_DSC_L_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W1_IS_MM_MASK                          BIT(31)
-#define QDMA_SW_CTXT_W1_MRKR_DIS_MASK                       BIT(30)
-#define QDMA_SW_CTXT_W1_IRQ_REQ_MASK                        BIT(29)
-#define QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK                    BIT(28)
-#define QDMA_SW_CTXT_W1_ERR_MASK                            GENMASK(27, 26)
-#define QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK                    BIT(25)
-#define QDMA_SW_CTXT_W1_PORT_ID_MASK                        GENMASK(24, 22)
-#define QDMA_SW_CTXT_W1_IRQ_EN_MASK                         BIT(21)
-#define QDMA_SW_CTXT_W1_WBK_EN_MASK                         BIT(20)
-#define QDMA_SW_CTXT_W1_MM_CHN_MASK                         BIT(19)
-#define QDMA_SW_CTXT_W1_BYP_MASK                            BIT(18)
-#define QDMA_SW_CTXT_W1_DSC_SZ_MASK                         GENMASK(17, 16)
-#define QDMA_SW_CTXT_W1_RNG_SZ_MASK                         GENMASK(15, 12)
-#define QDMA_SW_CTXT_W1_FETCH_MAX_MASK                      GENMASK(7, 5)
-#define QDMA_SW_CTXT_W1_AT_MASK                             BIT(4)
-#define QDMA_SW_CTXT_W1_WB_INT_EN_MASK                      BIT(3)
-#define QDMA_SW_CTXT_W1_WBI_CHK_MASK                        BIT(2)
-#define QDMA_SW_CTXT_W1_FCRD_EN_MASK                        BIT(1)
-#define QDMA_SW_CTXT_W1_QEN_MASK                            BIT(0)
-#define QDMA_SW_CTXT_W0_FUNC_ID_MASK                        GENMASK(24, 17)
-#define QDMA_SW_CTXT_W0_IRQ_ARM_MASK                        BIT(16)
-#define QDMA_SW_CTXT_W0_PIDX                                GENMASK(15, 0)
-
-
-
-#define QDMA_PFTCH_CTXT_W1_VALID_MASK                       BIT(13)
-#define QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK                   GENMASK(12, 0)
-#define QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK                   GENMASK(31, 29)
-#define QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK                 BIT(28)
-#define QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK                   BIT(27)
-#define QDMA_PFTCH_CTXT_W0_ERR_MASK                         BIT(26)
-#define QDMA_PFTCH_CTXT_W0_PORT_ID_MASK                     GENMASK(7, 5)
-#define QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK                GENMASK(4, 1)
-#define QDMA_PFTCH_CTXT_W0_BYPASS_MASK                      BIT(0)
-
-
-
-
-#define QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK                   BIT(15)
-#define QDMA_COMPL_CTXT_W4_INTR_VEC_MASK                    GENMASK(14, 4)
-#define QDMA_COMPL_CTXT_W4_AT_MASK                          BIT(3)
-#define QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK                 BIT(2)
-#define QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK                   BIT(1)
-#define QDMA_COMPL_CTXT_W4_TMR_RUN_MASK                     BIT(0)
-#define QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK                 BIT(31)
-#define QDMA_COMPL_CTXT_W3_ERR_MASK                         GENMASK(30, 29)
-#define QDMA_COMPL_CTXT_W3_VALID_MASK                       BIT(28)
-#define QDMA_COMPL_CTXT_W3_CIDX_MASK                        GENMASK(27, 12)
-#define QDMA_COMPL_CTXT_W3_PIDX_H_MASK                      GENMASK(11, 0)
-#define QDMA_COMPL_CTXT_W2_PIDX_L_MASK                      GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK                   GENMASK(27, 26)
-#define QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK                  GENMASK(25, 0)
-#define QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK                  GENMASK(31, 6)
-#define QDMA_COMPL_CTXT_W0_RING_SZ_MASK                     GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W0_COLOR_MASK                       BIT(27)
-#define QDMA_COMPL_CTXT_W0_INT_ST_MASK                      GENMASK(26, 25)
-#define QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK                   GENMASK(24, 21)
-#define QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK                 GENMASK(20, 17)
-#define QDMA_COMPL_CTXT_W0_FNC_ID_MASK                      GENMASK(12, 5)
-#define QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK                   GENMASK(4, 2)
-#define QDMA_COMPL_CTXT_W0_EN_INT_MASK                      BIT(1)
-#define QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK                BIT(0)
-
-/** QDMA_IND_REG_SEL_HW_C2H */
-/** QDMA_IND_REG_SEL_HW_H2C */
-#define QDMA_HW_CTXT_W1_FETCH_PEND_MASK                     GENMASK(14, 11)
-#define QDMA_HW_CTXT_W1_EVENT_PEND_MASK                     BIT(10)
-#define QDMA_HW_CTXT_W1_IDL_STP_B_MASK                      BIT(9)
-#define QDMA_HW_CTXT_W1_DSC_PND_MASK                        BIT(8)
-#define QDMA_HW_CTXT_W0_CRD_USE_MASK                        GENMASK(31, 16)
-#define QDMA_HW_CTXT_W0_CIDX_MASK                           GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_CR_C2H */
-/** QDMA_IND_REG_SEL_CR_H2C */
-#define QDMA_CR_CTXT_W0_CREDT_MASK                          GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_INTR */
-
-
-#define QDMA_INTR_CTXT_W2_AT_MASK                           BIT(18)
-#define QDMA_INTR_CTXT_W2_PIDX_MASK                         GENMASK(17, 6)
-#define QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK                    GENMASK(5, 3)
-#define QDMA_INTR_CTXT_W2_BADDR_64_MASK                     GENMASK(2, 0)
-#define QDMA_INTR_CTXT_W1_BADDR_64_MASK                     GENMASK(31, 0)
-#define QDMA_INTR_CTXT_W0_BADDR_64_MASK                     GENMASK(31, 15)
-#define QDMA_INTR_CTXT_W0_COLOR_MASK                        BIT(14)
-#define QDMA_INTR_CTXT_W0_INT_ST_MASK                       BIT(13)
-#define QDMA_INTR_CTXT_W0_VEC_ID_MASK                       GENMASK(11, 1)
-#define QDMA_INTR_CTXT_W0_VALID_MASK                        BIT(0)
-
-
-
-
-
-/* ------------------------ QDMA_TRQ_SEL_GLBL (0x00200)-------------------*/
-#define QDMA_OFFSET_GLBL_RNG_SZ                             0x204
-#define QDMA_OFFSET_GLBL_SCRATCH                            0x244
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define QDMA_OFFSET_GLBL_DSC_CFG                            0x250
-#define     QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK               GENMASK(2, 0)
-#define     QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK            GENMASK(5, 3)
-#define QDMA_OFFSET_GLBL_DSC_ERR_STS                        0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MSK                        0x258
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG0                       0x25C
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG1                       0x260
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STS                        0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MSK                        0x268
-#define QDMA_OFFSET_GLBL_TRQ_ERR_LOG                        0x26C
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT0                       0x270
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT1                       0x274
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG2                       0x27C
-#define QDMA_OFFSET_GLBL_INTERRUPT_CFG                      0x2C4
-#define     QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK            BIT(0)
-#define     QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK              BIT(1)
-
-/* ------------------------- QDMA_TRQ_SEL_C2H (0x00A00) ------------------*/
-#define QDMA_OFFSET_C2H_TIMER_CNT                           0xA00
-#define QDMA_OFFSET_C2H_CNT_TH                              0xA40
-#define QDMA_OFFSET_C2H_QID2VEC_MAP_QID                     0xA80
-#define QDMA_OFFSET_C2H_QID2VEC_MAP                         0xA84
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED            0xA88
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED           0xA8C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED          0xA90
-#define QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP                   0xA94
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ACCEPTED              0xA98
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_CMP                   0xA9C
-#define QDMA_OFFSET_C2H_STAT_WRQ_OUT                        0xAA0
-#define QDMA_OFFSET_C2H_STAT_WPL_REN_ACCEPTED               0xAA4
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WRQ_LEN                  0xAA8
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WPL_LEN                  0xAAC
-#define QDMA_OFFSET_C2H_BUF_SZ                              0xAB0
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define QDMA_OFFSET_C2H_FATAL_ERR_ENABLE                    0xB00
-#define QDMA_OFFSET_C2H_ERR_INT                             0xB04
-#define QDMA_OFFSET_C2H_PFETCH_CFG                          0xB08
-#define     QDMA_C2H_EVT_QCNT_TH_MASK                       GENMASK(31, 25)
-#define     QDMA_C2H_PFCH_QCNT_MASK                         GENMASK(24, 18)
-#define     QDMA_C2H_NUM_PFCH_MASK                          GENMASK(17, 9)
-#define     QDMA_C2H_PFCH_FL_TH_MASK                        GENMASK(8, 0)
-#define QDMA_OFFSET_C2H_INT_TIMER_TICK                      0xB0C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED         0xB10
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED          0xB14
-#define QDMA_OFFSET_C2H_STAT_DESC_REQ                       0xB18
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0                0xB1C
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1                0xB20
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2                0xB24
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3                0xB28
-#define QDMA_OFFSET_C2H_DBG_PFCH_ERR_CTXT                   0xB2C
-#define QDMA_OFFSET_C2H_FIRST_ERR_QID                       0xB30
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_IN                    0xB34
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_OUT                   0xB38
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_DRP                   0xB3C
-#define QDMA_OFFSET_C2H_STAT_NUM_STAT_DESC_OUT              0xB40
-#define QDMA_OFFSET_C2H_STAT_NUM_DSC_CRDT_SENT              0xB44
-#define QDMA_OFFSET_C2H_STAT_NUM_FCH_DSC_RCVD               0xB48
-#define QDMA_OFFSET_C2H_STAT_NUM_BYP_DSC_RCVD               0xB4C
-#define QDMA_OFFSET_C2H_WRB_COAL_CFG                        0xB50
-#define     QDMA_C2H_MAX_BUF_SZ_MASK                        GENMASK(31, 26)
-#define     QDMA_C2H_TICK_VAL_MASK                          GENMASK(25, 14)
-#define     QDMA_C2H_TICK_CNT_MASK                          GENMASK(13, 2)
-#define     QDMA_C2H_SET_GLB_FLUSH_MASK                     BIT(1)
-#define     QDMA_C2H_DONE_GLB_FLUSH_MASK                    BIT(0)
-#define QDMA_OFFSET_C2H_INTR_H2C_REQ                        0xB54
-#define QDMA_OFFSET_C2H_INTR_C2H_MM_REQ                     0xB58
-#define QDMA_OFFSET_C2H_INTR_ERR_INT_REQ                    0xB5C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_REQ                     0xB60
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK        0xB64
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL       0xB68
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX    0xB6C
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL      0xB70
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_ACK                0xB74
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_FAIL               0xB78
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_NO_MSIX                 0xB7C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_CTXT_INVAL              0xB80
-#define QDMA_OFFSET_C2H_STAT_WR_CMP                         0xB84
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_4                0xB88
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_5                0xB8C
-#define QDMA_OFFSET_C2H_DBG_PFCH_QID                        0xB90
-#define QDMA_OFFSET_C2H_DBG_PFCH                            0xB94
-#define QDMA_OFFSET_C2H_INT_DEBUG                           0xB98
-#define QDMA_OFFSET_C2H_STAT_IMM_ACCEPTED                   0xB9C
-#define QDMA_OFFSET_C2H_STAT_MARKER_ACCEPTED                0xBA0
-#define QDMA_OFFSET_C2H_STAT_DISABLE_CMP_ACCEPTED           0xBA4
-#define QDMA_OFFSET_C2H_PAYLOAD_FIFO_CRDT_CNT               0xBA8
-#define QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH                  0xBE0
-#define QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH                 0xBE4
-
-/* ------------------------- QDMA_TRQ_SEL_H2C (0x00E00) ------------------*/
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define QDMA_OFFSET_H2C_FIRST_ERR_QID                       0xE08
-#define QDMA_OFFSET_H2C_DBG_REG0                            0xE0C
-#define QDMA_OFFSET_H2C_DBG_REG1                            0xE10
-#define QDMA_OFFSET_H2C_DBG_REG2                            0xE14
-#define QDMA_OFFSET_H2C_DBG_REG3                            0xE18
-#define QDMA_OFFSET_H2C_DBG_REG4                            0xE1C
-#define QDMA_OFFSET_H2C_FATAL_ERR_EN                        0xE20
-#define QDMA_OFFSET_H2C_REQ_THROT                           0xE24
-#define     QDMA_H2C_REQ_THROT_EN_REQ_MASK                  BIT(31)
-#define     QDMA_H2C_REQ_THRESH_MASK                        GENMASK(25, 17)
-#define     QDMA_H2C_REQ_THROT_EN_DATA_MASK                 BIT(16)
-#define     QDMA_H2C_DATA_THRESH_MASK                       GENMASK(15, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_H2C_MM (0x1200) ----------------*/
-#define QDMA_OFFSET_H2C_MM_CONTROL                          0x1204
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1S                      0x1208
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1C                      0x120C
-#define QDMA_OFFSET_H2C_MM_STATUS                           0x1240
-#define QDMA_OFFSET_H2C_MM_STATUS_RC                        0x1244
-#define QDMA_OFFSET_H2C_MM_COMPLETED_DESC_COUNT             0x1248
-#define QDMA_OFFSET_H2C_MM_ERR_CODE_EN_MASK                 0x1254
-#define QDMA_OFFSET_H2C_MM_ERR_CODE                         0x1258
-#define QDMA_OFFSET_H2C_MM_ERR_INFO                         0x125C
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CONTROL                 0x12C0
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_0           0x12C4
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_1           0x12C8
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_0            0x12CC
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_1            0x12D0
-#define QDMA_OFFSET_H2C_MM_DEBUG                            0x12E8
-
-/* ------------------------- QDMA_TRQ_SEL_C2H_MM (0x1000) ----------------*/
-#define QDMA_OFFSET_C2H_MM_CONTROL                          0x1004
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1S                      0x1008
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1C                      0x100C
-#define QDMA_OFFSET_C2H_MM_STATUS                           0x1040
-#define QDMA_OFFSET_C2H_MM_STATUS_RC                        0x1044
-#define QDMA_OFFSET_C2H_MM_COMPLETED_DESC_COUNT             0x1048
-#define QDMA_OFFSET_C2H_MM_ERR_CODE_EN_MASK                 0x1054
-#define QDMA_OFFSET_C2H_MM_ERR_CODE                         0x1058
-#define QDMA_OFFSET_C2H_MM_ERR_INFO                         0x105C
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CONTROL                 0x10C0
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_0           0x10C4
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_1           0x10C8
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_0            0x10CC
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_1            0x10D0
-#define QDMA_OFFSET_C2H_MM_DEBUG                            0x10E8
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL1 (0x0) -----------------*/
-#define QDMA_OFFSET_CONFIG_BLOCK_ID                         0x0
-#define     QDMA_CONFIG_BLOCK_ID_MASK                       GENMASK(31, 16)
-
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL2 (0x00100) ----------------*/
-#define QDMA_OFFSET_GLBL2_ID                                0x100
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT                    0x104
-#define     QDMA_GLBL2_PF3_BAR_MAP_MASK                     GENMASK(23, 18)
-#define     QDMA_GLBL2_PF2_BAR_MAP_MASK                     GENMASK(17, 12)
-#define     QDMA_GLBL2_PF1_BAR_MAP_MASK                     GENMASK(11, 6)
-#define     QDMA_GLBL2_PF0_BAR_MAP_MASK                     GENMASK(5, 0)
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_INT                 0x108
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_EXT                    0x10C
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_EXT                 0x110
-#define QDMA_OFFSET_GLBL2_CHANNEL_INST                      0x114
-#define QDMA_OFFSET_GLBL2_CHANNEL_MDMA                      0x118
-#define     QDMA_GLBL2_ST_C2H_MASK                          BIT(17)
-#define     QDMA_GLBL2_ST_H2C_MASK                          BIT(16)
-#define     QDMA_GLBL2_MM_C2H_MASK                          BIT(8)
-#define     QDMA_GLBL2_MM_H2C_MASK                          BIT(0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_STRM                      0x11C
-#define QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP                  0x120
-#define     QDMA_GLBL2_MULTQ_MAX_MASK                       GENMASK(11, 0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_PASID_CAP                 0x128
-#define QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET                  0x12C
-#define QDMA_OFFSET_GLBL2_SYSTEM_ID                         0x130
-#define QDMA_OFFSET_GLBL2_MISC_CAP                          0x134
-
-#define     QDMA_GLBL2_DEVICE_ID_MASK                       GENMASK(31, 28)
-#define     QDMA_GLBL2_VIVADO_RELEASE_MASK                  GENMASK(27, 24)
-#define     QDMA_GLBL2_VERSAL_IP_MASK                       GENMASK(23, 20)
-#define     QDMA_GLBL2_RTL_VERSION_MASK                     GENMASK(19, 16)
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ0                      0x1B8
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ1                      0x1BC
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR0                     0x1C0
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR1                     0x1C4
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD0                     0x1C8
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD1                     0x1CC
-
-/* used for VF bars identification */
-#define QDMA_OFFSET_VF_USER_BAR_ID                          0x1018
-#define QDMA_OFFSET_VF_CONFIG_BAR_ID                        0x1014
-
-/* FLR programming */
-#define QDMA_OFFSET_VF_REG_FLR_STATUS                       0x1100
-#define QDMA_OFFSET_PF_REG_FLR_STATUS                       0x2500
-#define     QDMA_FLR_STATUS_MASK                            0x1
-
-/* VF qdma version */
-#define QDMA_OFFSET_VF_VERSION                              0x1014
-#define QDMA_OFFSET_PF_VERSION                              0x2414
-#define     QDMA_GLBL2_VF_UNIQUE_ID_MASK                    GENMASK(31, 16)
-#define     QDMA_GLBL2_VF_DEVICE_ID_MASK                    GENMASK(15, 12)
-#define     QDMA_GLBL2_VF_VIVADO_RELEASE_MASK               GENMASK(11, 8)
-#define     QDMA_GLBL2_VF_VERSAL_IP_MASK                    GENMASK(7, 4)
-#define     QDMA_GLBL2_VF_RTL_VERSION_MASK                  GENMASK(3, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_QUEUE_PF (0x18000) ----------------*/
-
-#define QDMA_OFFSET_DMAP_SEL_INT_CIDX                       0x18000
-#define QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX                   0x18004
-#define QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX                   0x18008
-#define QDMA_OFFSET_DMAP_SEL_CMPT_CIDX                      0x1800C
-
-#define QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX                    0x3000
-#define QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX                0x3004
-#define QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX                0x3008
-#define QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX                   0x300C
-
-#define     QDMA_DMA_SEL_INT_SW_CIDX_MASK                   GENMASK(15, 0)
-#define     QDMA_DMA_SEL_INT_RING_IDX_MASK                  GENMASK(23, 16)
-#define     QDMA_DMA_SEL_DESC_PIDX_MASK                     GENMASK(15, 0)
-#define     QDMA_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define     QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK                  BIT(28)
-#define     QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK             BIT(27)
-#define     QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK                GENMASK(26, 24)
-#define     QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK                 GENMASK(23, 20)
-#define     QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK              GENMASK(19, 16)
-#define     QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK                GENMASK(15, 0)
-
-/* ------------------------- Hardware Errors ------------------------------ */
-#define TOTAL_LEAF_ERROR_AGGREGATORS                        7
-
-#define QDMA_OFFSET_GLBL_ERR_INT                            0xB04
-#define     QDMA_GLBL_ERR_FUNC_MASK                         GENMASK(7, 0)
-#define     QDMA_GLBL_ERR_VEC_MASK                          GENMASK(22, 12)
-#define     QDMA_GLBL_ERR_ARM_MASK                          BIT(24)
-
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define     QDMA_GLBL_ERR_RAM_SBE_MASK                      BIT(0)
-#define     QDMA_GLBL_ERR_RAM_DBE_MASK                      BIT(1)
-#define     QDMA_GLBL_ERR_DSC_MASK                          BIT(2)
-#define     QDMA_GLBL_ERR_TRQ_MASK                          BIT(3)
-#define     QDMA_GLBL_ERR_ST_C2H_MASK                       BIT(8)
-#define     QDMA_GLBL_ERR_ST_H2C_MASK                       BIT(11)
-
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define     QDMA_C2H_ERR_MTY_MISMATCH_MASK                  BIT(0)
-#define     QDMA_C2H_ERR_LEN_MISMATCH_MASK                  BIT(1)
-#define     QDMA_C2H_ERR_QID_MISMATCH_MASK                  BIT(3)
-#define     QDMA_C2H_ERR_DESC_RSP_ERR_MASK                  BIT(4)
-#define     QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK          BIT(6)
-#define     QDMA_C2H_ERR_MSI_INT_FAIL_MASK                  BIT(7)
-#define     QDMA_C2H_ERR_ERR_DESC_CNT_MASK                  BIT(9)
-#define     QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK          BIT(10)
-#define     QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK        BIT(11)
-#define     QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK                BIT(12)
-#define     QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK                BIT(13)
-#define     QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK                 BIT(14)
-#define     QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK                 BIT(15)
-#define     QDMA_C2H_ERR_ALL_MASK                           0xFEDB
-
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define     QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK            BIT(0)
-#define     QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK            BIT(1)
-#define     QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK            BIT(3)
-#define     QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK     BIT(4)
-#define     QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK        BIT(8)
-#define     QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK      BIT(9)
-#define     QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK      BIT(10)
-#define     QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK  BIT(11)
-#define     QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK       BIT(12)
-#define     QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK BIT(14)
-#define     QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK     BIT(15)
-#define     QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK       BIT(16)
-#define     QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK   BIT(17)
-#define     QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK            BIT(18)
-#define     QDMA_C2H_FATAL_ERR_ALL_MASK                     0x7DF1B
-
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define     QDMA_H2C_ERR_ZERO_LEN_DESC_MASK                 BIT(0)
-#define     QDMA_H2C_ERR_CSI_MOP_MASK                       BIT(1)
-#define     QDMA_H2C_ERR_NO_DMA_DSC_MASK                    BIT(2)
-#define     QDMA_H2C_ERR_SBE_MASK                           BIT(3)
-#define     QDMA_H2C_ERR_DBE_MASK                           BIT(4)
-#define     QDMA_H2C_ERR_ALL_MASK                           0x1F
-
-#define QDMA_OFFSET_GLBL_DSC_ERR_STAT                       0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MASK                       0x258
-#define     QDMA_GLBL_DSC_ERR_POISON_MASK                   BIT(0)
-#define     QDMA_GLBL_DSC_ERR_UR_CA_MASK                    BIT(1)
-#define     QDMA_GLBL_DSC_ERR_PARAM_MASK                    BIT(2)
-#define     QDMA_GLBL_DSC_ERR_ADDR_MASK                     BIT(3)
-#define     QDMA_GLBL_DSC_ERR_TAG_MASK                      BIT(4)
-#define     QDMA_GLBL_DSC_ERR_FLR_MASK                      BIT(5)
-#define     QDMA_GLBL_DSC_ERR_TIMEOUT_MASK                  BIT(9)
-#define     QDMA_GLBL_DSC_ERR_DAT_POISON_MASK               BIT(16)
-#define     QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK               BIT(19)
-#define     QDMA_GLBL_DSC_ERR_DMA_MASK                      BIT(20)
-#define     QDMA_GLBL_DSC_ERR_DSC_MASK                      BIT(21)
-#define     QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK                BIT(22)
-#define     QDMA_GLBL_DSC_ERR_DBE_MASK                      BIT(23)
-#define     QDMA_GLBL_DSC_ERR_SBE_MASK                      BIT(24)
-#define     QDMA_GLBL_DSC_ERR_ALL_MASK                      0x1F9023F
-
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STAT                       0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MASK                       0x268
-#define     QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK                 BIT(0)
-#define     QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK                BIT(1)
-#define     QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK                BIT(2)
-#define     QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK              BIT(3)
-#define     QDMA_GLBL_TRQ_ERR_ALL_MASK                      0xF
-
-#define QDMA_OFFSET_RAM_SBE_STAT                            0xF4
-#define QDMA_OFFSET_RAM_SBE_MASK                            0xF0
-#define     QDMA_SBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_SBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_SBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_SBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_SBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_SBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_SBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_SBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_SBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_SBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_SBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_SBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_SBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_SBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_SBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_RAM_DBE_STAT                            0xFC
-#define QDMA_OFFSET_RAM_DBE_MASK                            0xF8
-#define     QDMA_DBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_DBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_DBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_DBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_DBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_DBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_DBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_DBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_DBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_DBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_DBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_DBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_DBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_DBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_DBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_MBOX_BASE_VF                            0x1000
-#define QDMA_OFFSET_MBOX_BASE_PF                            0x2400
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_REG_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_compat.h b/QDMA/linux-kernel/driver/libqdma/qdma_compat.h
deleted file mode 100755
index ded71b5..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_compat.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-/**
- * @file
- * @brief This file is used to allow the driver to be compiled under multiple
- *	versions of Linux with as few obtrusive in-line ifdef's as possible.
- */
-
-#ifndef __QDMA_COMPAT_H
-#define __QDMA_COMPAT_H
-
-#include <linux/version.h>
-#include <linux/wait.h>
-#include <asm/barrier.h>
-
-/**
- * if linux kernel version is < 3.19.0
- * then define the dma_rmb and dma_wmb
- */
-#if KERNEL_VERSION(3, 19, 0) > LINUX_VERSION_CODE
-
-#ifndef dma_rmb
-#define dma_rmb		rmb
-#endif /* #ifndef dma_rmb */
-
-#ifndef dma_wmb
-#define dma_wmb		wmb
-#endif /* #ifndef dma_wmb */
-
-#endif
-
-#ifdef RHEL_RELEASE_VERSION
-#define qdma_wait_queue                 wait_queue_head_t
-#define qdma_waitq_init                 init_waitqueue_head
-#define qdma_waitq_wakeup               wake_up_interruptible
-#define qdma_waitq_wait_event           wait_event_interruptible
-#define qdma_waitq_wait_event_timeout   wait_event_interruptible_timeout
-#else
-/* use simple wait queue (swaitq) with kernels > 4.6.0 but < 4.19.0  */
-#if ((KERNEL_VERSION(4, 6, 0) <= LINUX_VERSION_CODE) && \
-		(KERNEL_VERSION(4, 19, 0) >= LINUX_VERSION_CODE))
-#include <linux/swait.h>
-
-#define qdma_wait_queue                 struct swait_queue_head
-#define qdma_waitq_init                 init_swait_queue_head
-#define qdma_waitq_wakeup               swake_up
-#define qdma_waitq_wait_event           swait_event_interruptible
-#define qdma_waitq_wait_event_timeout   swait_event_interruptible_timeout
-
-#else
-#include <linux/wait.h>
-
-#define qdma_wait_queue                 wait_queue_head_t
-#define qdma_waitq_init                 init_waitqueue_head
-#define qdma_waitq_wakeup               wake_up_interruptible
-#define qdma_waitq_wait_event           wait_event_interruptible
-#define qdma_waitq_wait_event_timeout   wait_event_interruptible_timeout
-
-#endif  /* swaitq */
-#endif
-
-/* timer */
-#if KERNEL_VERSION(4, 15, 0) <= LINUX_VERSION_CODE
-#define qdma_timer_setup(timer, fp_handler, data) \
-		timer_setup(timer, fp_handler, 0)
-
-#define qdma_timer_start(timer, expires) \
-		mod_timer(timer, round_jiffies(jiffies + (expires)))
-
-#else
-#define qdma_timer_setup(timer, fp_handler, priv)	\
-	do { \
-		init_timer(timer); \
-		timer->data = (unsigned long)priv; \
-		timer->function = fp_handler; \
-		del_timer(timer); \
-	} while (0)
-
-#define qdma_timer_start(timer, timeout) \
-	do { \
-		del_timer(timer); \
-		timer->expires = jiffies + (timeout); \
-		add_timer(timer); \
-	} while (0)
-
-
-#endif /* timer */
-
-
-#endif /* #ifndef __QDMA_COMPAT_H */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_context.c b/QDMA/linux-kernel/driver/libqdma/qdma_context.c
deleted file mode 100755
index 246280b..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_context.c
+++ /dev/null
@@ -1,952 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include "qdma_device.h"
-#include "qdma_descq.h"
-#include "qdma_intr.h"
-#include "qdma_regs.h"
-#include "qdma_context.h"
-#include "qdma_access_common.h"
-#include "qdma_mbox_protocol.h"
-
-/**
- * Make the interrupt context
- */
-static int make_intr_context(struct xlnx_dma_dev *xdev,
-			     struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int i;
-
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE)) {
-		pr_err("Invalid driver mode: %d", xdev->conf.qdma_drv_mode);
-		return -EINVAL;
-	}
-
-	/** program the coalescing context
-	 *  i -> Number of vectors
-	 */
-	for (i = 0; i <  QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-		struct intr_coal_conf *entry = (xdev->intr_coal_list + i);
-
-		ctxt[i].valid = 1;
-		ctxt[i].vec = entry->vec_id;
-		ctxt[i].baddr_4k = entry->intr_ring_bus;
-		ctxt[i].color = entry->color;
-		ctxt[i].page_size = xdev->conf.intr_rngsz;
-		ctxt[i].func_id = xdev->func_id;
-	}
-
-	return 0;
-}
-
-#ifndef __QDMA_VF__
-static int make_sw_context(struct qdma_descq *descq,
-			   struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	memset(sw_ctxt, 0, sizeof(struct qdma_descq_sw_ctxt));
-
-	/* sw context */
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		sw_ctxt->vec = get_intr_ring_index(descq->xdev,
-						       descq->intr_id);
-		sw_ctxt->intr_aggr = 0x01;
-	} else {
-		sw_ctxt->vec = descq->intr_id;
-	}
-
-	sw_ctxt->ring_bs_addr = descq->desc_bus;
-	sw_ctxt->wbi_chk = descq->conf.cmpl_status_pend_chk;
-	sw_ctxt->wbi_intvl_en = descq->conf.cmpl_status_acc_en;
-	sw_ctxt->rngsz_idx = descq->conf.desc_rng_sz_idx;
-	sw_ctxt->bypass = descq->conf.desc_bypass;
-	sw_ctxt->wbk_en = descq->conf.wb_status_en;
-	sw_ctxt->irq_en = descq->conf.irq_en;
-	sw_ctxt->is_mm = ~descq->conf.st;
-	sw_ctxt->qen = 1;
-
-	if (descq->conf.desc_bypass &&
-			(descq->conf.sw_desc_sz == DESC_SZ_64B)) {
-		sw_ctxt->desc_sz = descq->conf.sw_desc_sz;
-	} else {
-		sw_ctxt->fetch_max = FETCH_MAX_NUM;
-		if (!descq->conf.st) { /* mm h2c/c2h */
-			sw_ctxt->desc_sz = DESC_SZ_32B;
-			sw_ctxt->mm_chn = descq->channel;
-			sw_ctxt->host_id = descq->channel;
-		} else if (descq->conf.q_type == Q_C2H) {  /* st c2h */
-			sw_ctxt->frcd_en = descq->conf.fetch_credit;
-			sw_ctxt->desc_sz = DESC_SZ_8B;
-		} else if (descq->conf.q_type == Q_H2C) { /* st h2c */
-			sw_ctxt->frcd_en = descq->conf.fetch_credit;
-			sw_ctxt->desc_sz = DESC_SZ_16B;
-		} else
-			sw_ctxt->desc_sz = DESC_SZ_16B;
-	}
-
-	/* pidx = 0; irq_ack = 0 */
-	sw_ctxt->fnc_id = descq->xdev->func_id;
-	sw_ctxt->irq_arm = descq->conf.irq_en;
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		sw_ctxt->irq_en = 0;
-		sw_ctxt->irq_arm = 0;
-		sw_ctxt->wbk_en = 0;
-		sw_ctxt->wbi_chk = 0;
-	}
-
-	/* Disable the marker response. Not applicable for ST C2H */
-	if ((!descq->conf.desc_bypass) &&
-		((!descq->conf.st) || (descq->conf.q_type == Q_H2C)))
-		sw_ctxt->mrkr_dis = 1;
-
-#ifdef ERR_DEBUG
-	if (descq->induce_err & (1 << param)) {
-		sw_ctxt->fnc_id = 0xFFF;
-		pr_info("induced error %d", ind_ctxt_cmd_err);
-	}
-#endif
-
-	return 0;
-}
-
-static int make_qid2vec_context(struct qdma_descq *descq,
-	struct qdma_qid2vec *cntxt)
-{
-	u32 vec_num = 0;
-	u32 en_coal = 0;
-	struct xlnx_dma_dev *xdev = NULL;
-
-	BUG_ON(!descq);
-	BUG_ON(!cntxt);
-
-	vec_num = descq->intr_id;
-	xdev = descq->xdev;
-
-	memset(cntxt, 0, sizeof(struct qdma_qid2vec));
-	/*
-	 * Enable interrupt coalescing
-	 * In case of Indirect interrupt, interrupt ring index and enable
-	 * coalescing should be programmed. In case of Direct interrupt,
-	 * interrupt vector number should be programmed
-	 */
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		vec_num = get_intr_ring_index(xdev, descq->intr_id);
-		en_coal = 1;
-	}
-	if (descq->conf.q_type == Q_C2H) {
-		cntxt->c2h_en_coal = en_coal;
-		cntxt->c2h_vector = vec_num;
-	} else if (descq->conf.q_type == Q_H2C) {
-		cntxt->h2c_en_coal = en_coal;
-		cntxt->h2c_vector = vec_num;
-	}
-
-	pr_debug("qid2vec context :\n c2h_vector = %x\n"
-		"c2h_en_coal = %x\n"
-		"h2c_vector = %x\nh2c_en_coal = %x\n",
-		cntxt->c2h_vector,
-		cntxt->c2h_en_coal, cntxt->h2c_vector, cntxt->h2c_en_coal);
-	return 0;
-}
-
-/* ST: prefetch context setup */
-static int make_prefetch_context(struct qdma_descq *descq,
-				 struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	BUG_ON(!descq);
-	BUG_ON(!pfetch_ctxt);
-
-	memset(pfetch_ctxt, 0, sizeof(struct qdma_descq_prefetch_ctxt));
-
-	/* prefetch context */
-	pfetch_ctxt->valid = 1;
-	pfetch_ctxt->bypass = descq->conf.pfetch_bypass;
-	pfetch_ctxt->bufsz_idx = descq->conf.c2h_buf_sz_idx;
-	pfetch_ctxt->pfch_en = descq->conf.pfetch_en;
-
-	return 0;
-}
-
-/* ST C2H : writeback context setup */
-static int make_cmpt_context(struct qdma_descq *descq,
-			     struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	int ring_index;
-
-	memset(cmpt_ctxt, 0, sizeof(struct qdma_descq_cmpt_ctxt));
-
-	cmpt_ctxt->en_stat_desc = descq->conf.cmpl_stat_en;
-	cmpt_ctxt->en_int = descq->conf.cmpl_en_intr;
-	cmpt_ctxt->trig_mode = descq->conf.cmpl_trig_mode;
-	cmpt_ctxt->fnc_id = descq->xdev->func_id;
-	cmpt_ctxt->timer_idx = descq->conf.cmpl_timer_idx;
-	cmpt_ctxt->counter_idx = descq->conf.cmpl_cnt_th_idx;
-	cmpt_ctxt->color = 1;
-	cmpt_ctxt->ringsz_idx = descq->conf.cmpl_rng_sz_idx;
-
-	cmpt_ctxt->bs_addr = descq->desc_cmpt_bus;
-	cmpt_ctxt->desc_sz = descq->conf.cmpl_desc_sz;
-	cmpt_ctxt->full_upd = descq->conf.adaptive_rx;
-
-	cmpt_ctxt->valid = 1;
-
-	cmpt_ctxt->ovf_chk_dis = descq->conf.cmpl_ovf_chk_dis;
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		ring_index = get_intr_ring_index(descq->xdev, descq->intr_id);
-		cmpt_ctxt->vec = ring_index;
-		cmpt_ctxt->int_aggr = 1;
-	} else {
-		cmpt_ctxt->vec = descq->intr_id;
-	}
-
-	return 0;
-}
-#endif
-
-#ifdef __QDMA_VF__
-int qdma_intr_context_setup(struct xlnx_dma_dev *xdev)
-{
-	int i = 0;
-	int rv;
-	struct mbox_msg *m = NULL;
-	struct mbox_msg_intr_ctxt ictxt;
-
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE))
-		return 0;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	memset(&ictxt, 0, sizeof(struct mbox_msg_intr_ctxt));
-
-	ictxt.num_rings = QDMA_NUM_DATA_VEC_FOR_INTR_CXT;
-
-	for (i = 0; i < QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-		ictxt.ring_index_list[i] =
-			get_intr_ring_index(xdev, xdev->dvec_start_idx + i);
-	}
-
-	rv = make_intr_context(xdev, ictxt.ictxt);
-	if (rv < 0)
-		goto free_msg;
-
-	qdma_mbox_compose_vf_intr_ctxt_write(xdev->func_id, &ictxt, m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s, mbox failed for interrupt context %d.\n",
-				xdev->conf.name, rv);
-		goto free_msg;
-	}
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_intr_context_read(struct xlnx_dma_dev *xdev,
-				   int ring_index,
-				   struct qdma_indirect_intr_ctxt *ctxt)
-{
-	struct mbox_msg *m;
-	int rv = 0;
-	struct mbox_msg_intr_ctxt ictxt;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-	memset(&ictxt, 0, sizeof(struct mbox_msg_intr_ctxt));
-	ictxt.num_rings = 1;
-
-	ictxt.ring_index_list[0] = ring_index;
-	qdma_mbox_compose_vf_intr_ctxt_read(xdev->func_id,
-			&ictxt, m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s invalidate interrupt context failed %d.\n",
-			xdev->conf.name, rv);
-	}
-	rv = qdma_mbox_vf_intr_context_get(m->raw, &ictxt);
-	if (rv < 0) {
-		pr_err("mbox_vf_intr_context_get failed, err = %d", rv);
-		rv = -EINVAL;
-	} else
-		memcpy(ctxt, &ictxt.ictxt[0],
-		       sizeof(struct qdma_indirect_intr_ctxt));
-
-	qdma_mbox_msg_free(m);
-
-	return rv;
-}
-
-int qdma_descq_context_clear(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-				bool st, u8 type, bool clr)
-{
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv;
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-
-	if (!m)
-		return -ENOMEM;
-
-	if (!st) {
-		if (type == Q_CMPT)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_ONLY;
-		else
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-	} else {
-		if (type == Q_C2H)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	}
-
-	if (clr)
-		qdma_mbox_compose_vf_qctxt_clear(xdev->func_id,
-				qid_hw, st, type, cmpt_ctxt_type, m->raw);
-	else
-		qdma_mbox_compose_vf_qctxt_invalidate(xdev->func_id,
-				qid_hw, st, type, cmpt_ctxt_type, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			pr_err("%s, qid_hw 0x%x mbox failed %d.\n",
-				xdev->conf.name, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_descq_context_read(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-			bool st, u8 type, struct qdma_descq_context *context)
-{
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv;
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-
-	if (!m)
-		return -ENOMEM;
-
-	if (!st) {
-		if (type == Q_CMPT)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_ONLY;
-		else
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-	} else {
-		if (type == Q_C2H)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	}
-
-	qdma_mbox_compose_vf_qctxt_read(xdev->func_id,
-				qid_hw, st, type, cmpt_ctxt_type, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			pr_err("%s, qid_hw 0x%x mbox failed %d.\n",
-				xdev->conf.name, qid_hw, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_context_get(m->raw, context);
-	if (rv < 0) {
-		pr_err("mbox_vf_context_get faled with error = %d", rv);
-		rv = -EINVAL;
-	}
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_descq_context_setup(struct qdma_descq *descq)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-	struct mbox_descq_conf descq_conf;
-	int rv;
-	enum mbox_cmpt_ctxt_type cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-
-	if (!m)
-		return -ENOMEM;
-
-	memset(&descq_conf, 0, sizeof(struct mbox_descq_conf));
-	descq_conf.ring_bs_addr = descq->desc_bus;
-	descq_conf.cmpt_ring_bs_addr = descq->desc_cmpt_bus;
-	descq_conf.en_bypass = descq->conf.desc_bypass;
-	descq_conf.irq_arm = descq->conf.irq_en;
-	descq_conf.wbi_intvl_en = descq->conf.cmpl_status_acc_en;
-	descq_conf.wbi_chk = descq->conf.cmpl_status_pend_chk;
-	descq_conf.at = descq->conf.at;
-	descq_conf.wbk_en = descq->conf.wb_status_en;
-	descq_conf.irq_en = descq->conf.irq_en;
-	descq_conf.pfch_en = descq->conf.pfetch_en;
-	descq_conf.en_bypass_prefetch = descq->conf.pfetch_bypass;
-	descq_conf.dis_overflow_check = descq->conf.cmpl_ovf_chk_dis;
-	descq_conf.cmpt_int_en = descq->conf.cmpl_en_intr;
-	descq_conf.cmpl_stat_en = descq->conf.cmpl_stat_en;
-	if (descq->conf.desc_bypass &&
-			(descq->conf.sw_desc_sz == DESC_SZ_64B))
-		descq_conf.desc_sz = descq->conf.sw_desc_sz;
-	else {
-		if (descq->conf.q_type != Q_CMPT) {
-			if (!descq->conf.st) /* mm h2c/c2h */
-				descq_conf.desc_sz = DESC_SZ_32B;
-			else if (descq->conf.q_type)  {/* st c2h */
-				descq_conf.desc_sz = DESC_SZ_8B;
-				descq_conf.forced_en = descq->conf.fetch_credit;
-			} else /* st h2c */
-				descq_conf.desc_sz = DESC_SZ_16B;
-		}
-	}
-	descq_conf.cmpt_desc_sz = descq->conf.cmpl_desc_sz;
-	descq_conf.triggermode = descq->conf.cmpl_trig_mode;
-	descq_conf.cmpt_at = descq->conf.at;
-	descq_conf.cmpt_color = 1;
-	descq_conf.cmpt_full_upd = 0;
-	descq_conf.func_id = descq->xdev->func_id;
-	descq_conf.cnt_thres =
-			xdev->csr_info.c2h_cnt_th[descq->conf.cmpl_cnt_th_idx];
-	descq_conf.timer_thres =
-		xdev->csr_info.c2h_timer_cnt[descq->conf.cmpl_timer_idx];
-	descq_conf.ringsz = descq->conf.rngsz;
-	descq_conf.bufsz = descq->conf.c2h_bufsz;
-	descq_conf.cmpt_ringsz = descq->conf.rngsz_cmpt;
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		int ring_index = get_intr_ring_index(descq->xdev,
-						     descq->intr_id);
-		descq_conf.intr_id = ring_index & 0xFFF;
-		descq_conf.intr_aggr = 1;
-	} else
-		descq_conf.intr_id = descq->intr_id;
-
-	if (!descq->conf.st) {
-		if (descq->conf.q_type == Q_CMPT)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_ONLY;
-		else
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_CTXT_NONE;
-	} else {
-		if (descq->conf.q_type == Q_C2H)
-			cmpt_ctxt_type = QDMA_MBOX_CMPT_WITH_ST;
-	}
-
-	qdma_mbox_compose_vf_qctxt_write(xdev->func_id, descq->qidx_hw,
-				descq->conf.st, descq->conf.q_type,
-				cmpt_ctxt_type, &descq_conf, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			pr_err("%s, qid_hw 0x%x, %s mbox failed %d.\n",
-				xdev->conf.name, descq->qidx_hw,
-				descq->conf.name, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int qdma_descq_context_dump(struct qdma_descq *descq, char *buf, int buflen)
-{
-	int rv = 0;
-	int ring_index = -1;
-	int ring_count = 0;
-	int len = 0;
-	struct qdma_descq_context queue_context;
-	struct qdma_indirect_intr_ctxt intr_ctxt;
-
-	rv = qdma_descq_context_read(descq->xdev, descq->qidx_hw,
-			descq->conf.st, descq->conf.q_type, &queue_context);
-	if (rv < 0) {
-		pr_err("Failed to read queue context, rv = %d", rv);
-		return rv;
-	}
-
-	rv = descq->xdev->hw.qdma_dump_queue_context(descq->xdev,
-				descq->conf.st,
-				(enum qdma_dev_q_type)descq->conf.q_type,
-				&queue_context,
-				buf, buflen);
-	if (rv < 0) {
-		pr_err("Failed to dump queue context, rv = %d", rv);
-		return descq->xdev->hw.qdma_get_error_code(rv);
-	}
-	len = rv;
-
-	/** if interrupt aggregation is enabled
-	 *  add the interrupt context
-	 */
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		for (ring_count = 0;
-				ring_count < QDMA_NUM_DATA_VEC_FOR_INTR_CXT;
-				ring_count++) {
-			ring_index = get_intr_ring_index(
-						descq->xdev,
-						(descq->xdev->dvec_start_idx +
-								ring_count));
-
-			rv = qdma_intr_context_read(descq->xdev,
-						ring_index, &intr_ctxt);
-			if (rv < 0) {
-				pr_err("Failed to read intr context for ring %d, rv = %d",
-						ring_index, rv);
-				return rv;
-			}
-
-			rv = descq->xdev->hw.qdma_dump_intr_context(descq->xdev,
-						&intr_ctxt, ring_index,
-						buf + len, buflen - len);
-			if (rv < 0) {
-				pr_err("Failed to dump intr context, rv = %d",
-						rv);
-				return descq->xdev->hw.qdma_get_error_code(rv);
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-#else /* PF only */
-
-int qdma_prog_intr_context(struct xlnx_dma_dev *xdev,
-		struct mbox_msg_intr_ctxt *ictxt)
-{
-	int i = 0;
-	int rv;
-	int ring_index;
-	struct qdma_indirect_intr_ctxt *ctxt;
-
-	for (i = 0; i < ictxt->num_rings; i++) {
-		ring_index = ictxt->ring_index_list[i];
-
-		ctxt = &ictxt->ictxt[i];
-		rv = xdev->hw.qdma_indirect_intr_ctx_conf(xdev, ring_index,
-							  ctxt,
-							  QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			pr_err("Intr ctxt write failed, err = %d\n", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-	}
-
-	return 0;
-}
-
-int qdma_intr_context_setup(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_indirect_intr_ctxt ctxt[QDMA_NUM_DATA_VEC_FOR_INTR_CXT];
-	int i = 0;
-	int rv;
-	int ring_index;
-
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE))
-		return 0;
-
-	memset(ctxt, 0, sizeof(struct qdma_indirect_intr_ctxt) *
-	       QDMA_NUM_DATA_VEC_FOR_INTR_CXT);
-	/** Preparing the interrupt context for all the vectors
-	 *  each vector's context width is QDMA_REG_IND_CTXT_WCNT_3(3)
-	 */
-	rv = make_intr_context(xdev, ctxt);
-	if (rv < 0)
-		return rv;
-
-	for (i = 0; i <  QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-		ring_index = get_intr_ring_index(xdev,
-				(i + xdev->dvec_start_idx));
-		rv = xdev->hw.qdma_indirect_intr_ctx_conf(xdev, ring_index,
-							  NULL,
-							  QDMA_HW_ACCESS_CLEAR);
-		if (rv < 0) {
-			pr_err("Intr ctxt clear failed, err = %d\n", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-		rv = xdev->hw.qdma_indirect_intr_ctx_conf(xdev,
-				ring_index, &ctxt[i], QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			pr_err("Intr ctxt write failed, err = %d\n", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-	}
-
-	return 0;
-}
-
-int qdma_descq_context_clear(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-				bool st, u8 type, bool clr)
-{
-	int rv = 0;
-
-
-	if (clr) {
-
-		if (type != Q_CMPT) {
-			rv = xdev->hw.qdma_sw_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				pr_err("Fail to clear sw context, rv = %d", rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			rv = xdev->hw.qdma_hw_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				pr_err("Fail to clear hw context, rv = %d", rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			rv = xdev->hw.qdma_credit_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				pr_err("Fail to clear credit context, rv = %d",
-						rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			/* Only clear prefetch and writeback contexts
-			 * if this queue is ST C2H
-			 */
-			if (st && (type == Q_C2H)) {
-				rv = xdev->hw.qdma_pfetch_ctx_conf(xdev, qid_hw,
-						NULL, QDMA_HW_ACCESS_CLEAR);
-				if (rv < 0) {
-					pr_err("Fail to clear pfetch context, rv = %d",
-						   rv);
-					return xdev->hw.qdma_get_error_code(rv);
-				}
-			}
-		}
-
-		/* Only clear cmpt context if this queue is ST C2H or MM cmpt*/
-		if ((st && (type == Q_C2H)) || (!st && (type == Q_CMPT))) {
-			rv = xdev->hw.qdma_cmpt_ctx_conf(xdev, qid_hw, NULL,
-							 QDMA_HW_ACCESS_CLEAR);
-			if (rv < 0) {
-				pr_err("Fail to clear cmpt context, rv = %d",
-				       rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-		}
-
-	} else {
-		if (type != Q_CMPT) {
-
-			rv = xdev->hw.qdma_sw_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				pr_err("Fail to invalidate sw context, rv = %d",
-						rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			rv = xdev->hw.qdma_hw_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				pr_err("Fail to invalidate hw context, rv = %d",
-						rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			rv = xdev->hw.qdma_credit_ctx_conf(xdev, type, qid_hw,
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				pr_err("Fail to invalidate credit context, rv = %d",
-					   rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-
-			/* Only clear prefetch and writeback contexts if this
-			 * queue is ST C2H
-			 */
-			if (st && (type == Q_C2H)) {
-				rv = xdev->hw.qdma_pfetch_ctx_conf(xdev, qid_hw,
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-				if (rv < 0) {
-					pr_err("Fail to invalidate pfetch context, rv = %d",
-						   rv);
-					return xdev->hw.qdma_get_error_code(rv);
-				}
-			}
-		}
-
-		/* Only clear cmpt context if this queue is ST C2H MM cmpt*/
-		if ((st && (type == Q_C2H)) || (!st && (type == Q_CMPT))) {
-			rv = xdev->hw.qdma_cmpt_ctx_conf(xdev, qid_hw,
-					NULL, QDMA_HW_ACCESS_INVALIDATE);
-			if (rv < 0) {
-				pr_err("Fail to invalidate cmpt context, rv = %d",
-				       rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-		}
-	}
-
-	return 0;
-}
-
-int qdma_descq_context_setup(struct qdma_descq *descq)
-{
-	struct qdma_descq_context context;
-
-	memset(&context, 0, sizeof(context));
-
-	if (descq->conf.q_type != Q_CMPT) {
-
-		make_sw_context(descq, &context.sw_ctxt);
-
-		if (descq->xdev->dev_cap.qid2vec_ctx) {
-			if (descq->xdev->conf.qdma_drv_mode != POLL_MODE)
-				make_qid2vec_context(descq, &context.qid2vec);
-		}
-
-		if (descq->conf.st && (descq->conf.q_type == Q_C2H))
-			make_prefetch_context(descq, &context.pfetch_ctxt);
-	}
-
-	if ((descq->conf.st && (descq->conf.q_type == Q_C2H)) ||
-		(!descq->conf.st && (descq->conf.q_type == Q_CMPT)))
-		make_cmpt_context(descq, &context.cmpt_ctxt);
-
-	return qdma_descq_context_program(descq->xdev, descq->qidx_hw,
-				descq->conf.st, descq->conf.q_type, &context);
-}
-
-int qdma_descq_context_read(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-			bool st, u8 type, struct qdma_descq_context *context)
-{
-	int rv = 0;
-
-	memset(context, 0, sizeof(struct qdma_descq_context));
-
-	if (type != Q_CMPT) {
-		rv = xdev->hw.qdma_sw_ctx_conf(xdev, type, qid_hw,
-				&(context->sw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			pr_err("Failed to read sw context, rv = %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-		rv = xdev->hw.qdma_hw_ctx_conf(xdev, type, qid_hw,
-				&(context->hw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			pr_err("Failed to read hw context, rv = %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-		rv = xdev->hw.qdma_credit_ctx_conf(xdev, type, qid_hw,
-				&(context->cr_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			pr_err("Failed to read hw context, rv = %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-		rv = xdev->hw.qdma_fmap_conf(xdev, xdev->func_id,
-				&(context->fmap), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			pr_err("Failed to read fmap context, rv = %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-		if (st && type) {
-			rv = xdev->hw.qdma_pfetch_ctx_conf(xdev, qid_hw,
-						 &(context->pfetch_ctxt),
-						 QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				pr_err("Failed to read pftch context, rv = %d",
-						rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-		}
-	}
-
-	if ((st && (type == Q_C2H)) || (!st && (type == Q_CMPT))) {
-		rv = xdev->hw.qdma_cmpt_ctx_conf(xdev, qid_hw,
-						 &(context->cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			pr_err("Failed to read cmpt context, rv = %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-	}
-
-	return 0;
-}
-
-int qdma_intr_context_read(struct xlnx_dma_dev *xdev,
-	int ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = 0;
-
-	memset(ctxt, 0, sizeof(struct qdma_indirect_intr_ctxt));
-	rv = xdev->hw.qdma_indirect_intr_ctx_conf(xdev, ring_index, ctxt,
-						  QDMA_HW_ACCESS_READ);
-	if (rv < 0) {
-		pr_err("Failed to read intr context, rv = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	return 0;
-}
-
-int qdma_descq_context_program(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-			bool st, u8 type, struct qdma_descq_context *context)
-{
-	int rv;
-
-	/* always clear first */
-	rv = qdma_descq_context_clear(xdev, qid_hw, st, type, 1);
-	if (rv < 0) {
-		pr_err("failed to clear the context, rv= %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	if (type != Q_CMPT) {
-		rv = xdev->hw.qdma_sw_ctx_conf(xdev, type, qid_hw,
-				&context->sw_ctxt, QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			pr_err("failed to program sw context, rv= %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-
-		if (xdev->dev_cap.qid2vec_ctx) {
-			if (xdev->conf.qdma_drv_mode != POLL_MODE)
-				xdev->hw.qdma_qid2vec_conf(xdev, type, qid_hw,
-						&context->qid2vec,
-						QDMA_HW_ACCESS_WRITE);
-		}
-
-		if (st && type) {
-			/* prefetch context */
-			rv = xdev->hw.qdma_pfetch_ctx_conf(xdev, qid_hw,
-							&context->pfetch_ctxt,
-							QDMA_HW_ACCESS_WRITE);
-			if (rv < 0) {
-				pr_err("failed to program pfetch context, rv= %d",
-					   rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-		}
-	}
-
-	if ((st && (type == Q_C2H)) || (!st && (type == Q_CMPT))) {
-		/* cmpt context */
-		rv = xdev->hw.qdma_cmpt_ctx_conf(xdev, qid_hw,
-						 &context->cmpt_ctxt,
-						 QDMA_HW_ACCESS_WRITE);
-		if (rv < 0) {
-			pr_err("failed to program cmpt context, rv= %d", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-	}
-
-	return 0;
-}
-
-int qdma_descq_context_dump(struct qdma_descq *descq, char *buf, int buflen)
-{
-	int rv = 0;
-	int ring_index = -1;
-	int ring_count = 0;
-	int len = 0;
-	struct qdma_indirect_intr_ctxt intr_ctxt;
-
-	rv = descq->xdev->hw.qdma_read_dump_queue_context(descq->xdev,
-				descq->xdev->func_id,
-				descq->qidx_hw,
-				descq->conf.st, descq->conf.q_type,
-				buf, buflen);
-	if (rv < 0) {
-		pr_err("Failed to dump queue context, rv = %d", rv);
-		return descq->xdev->hw.qdma_get_error_code(rv);
-	}
-	len = rv;
-
-	/** if interrupt aggregation is enabled
-	 *  add the interrupt context
-	 */
-	if ((descq->xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		for (ring_count = 0;
-				ring_count < QDMA_NUM_DATA_VEC_FOR_INTR_CXT;
-				ring_count++) {
-			ring_index = get_intr_ring_index(
-						descq->xdev,
-						(descq->xdev->dvec_start_idx +
-								ring_count));
-
-			rv = qdma_intr_context_read(descq->xdev,
-						ring_index, &intr_ctxt);
-			if (rv < 0) {
-				pr_err("Failed to read intr context for ring %d, rv = %d",
-						ring_index, rv);
-				return rv;
-			}
-
-			rv = descq->xdev->hw.qdma_dump_intr_context(descq->xdev,
-						&intr_ctxt, ring_index,
-						buf + len, buflen - len);
-			if (rv < 0) {
-				pr_err("Failed to dump intr context, rv = %d",
-						rv);
-				return descq->xdev->hw.qdma_get_error_code(rv);
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-#endif
-
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_context.h b/QDMA/linux-kernel/driver/libqdma/qdma_context.h
deleted file mode 100755
index 9d21d48..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_context.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __LIBQDMA_CONTEXT_H__
-#define __LIBQDMA_CONTEXT_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma context handlers
- *
- */
-#include "xdev.h"
-#include "qdma_mbox.h"
-
-/*
- * fetch_max [40:37]
- * Description: Maximum number of descriptor fetches outstanding for this queue.
- * The max outstanding is fetch_max + 1 .
- * Higher value can increase the single queue performance.
- */
-#define FETCH_MAX_NUM 7
-
-/*****************************************************************************/
-/**
- * qdma_intr_context_setup() - handler to set the qdma interrupt context
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_intr_context_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_prog_intr_context() -
- *			handler to program the qdma interrupt context for
- *			VF from PF
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	ictxt:		interrupt context
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-
-int qdma_prog_intr_context(struct xlnx_dma_dev *xdev,
-		struct mbox_msg_intr_ctxt *ictxt);
-
-/*****************************************************************************/
-/**
- * qdma_descq_context_setup() - handler to set the qdma sw descriptor context
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_setup(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_context_clear() - handler to clear the qdma sw descriptor context
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	qid_hw:	hw qidx
- * @param[in]	st:		indicated whether the mm mode or st mode
- * @param[in]	c2h:		indicates whether the h2c or c2h direction
- * @param[in]	mm_cmpt_en:	indicates whether cmpt is enabled for mm or not
- * @param[in]	clr:	flag to indicate whether to clear the context or not
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_clear(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-				bool st, u8 type, bool clr);
-
-/*****************************************************************************/
-/**
- * qdma_descq_context_read() - handler to read the queue context
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	qid_hw:	hw qidx
- * @param[in]	st:		indicated whether the mm mode or st mode
- * @param[in]	c2h:		indicates whether the h2c or c2h direction
- * @param[in]	mm_cmpt_en:	indicates whether cmpt is enabled for mm or not
- * @param[out]	ctxt:	pointer to context data
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_read(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-			bool st, u8 type, struct qdma_descq_context *context);
-
-/*****************************************************************************/
-/**
- * qdma_descq_context_dump() - handler to dump the queue context
- *
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[out]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_dump(struct qdma_descq *descq, char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * qdma_intr_context_read() - handler to read the interrupt context
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	ring_index:	interrupt ring index
- * @param[in]	ctxt_sz:	context size
- * @param[out]	context:	pointer to interrupt context*
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_intr_context_read(struct xlnx_dma_dev *xdev,
-	int ring_index, struct qdma_indirect_intr_ctxt *ctxt);
-
-#ifndef __QDMA_VF__
-/*****************************************************************************/
-/**
- * qdma_descq_context_read() - handler to program the context for vf
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	qid_hw:	hw qidx
- * @param[in]	st:		indicated whether the mm mode or st mode
- * @param[in]	c2h:		indicates whether the h2c or c2h direction
- * @param[in]	mm_cmpt_en:	indicates whether cmpt is enabled for mm or not*
- * @param[out]	ctxt:	pointer to context data
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_program(struct xlnx_dma_dev *xdev, unsigned int qid_hw,
-			bool st, u8 type, struct qdma_descq_context *context);
-
-#endif
-
-#endif /* ifndef __LIBQDMA_CONTEXT_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c
deleted file mode 100755
index 0c61bad..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_debugfs.h"
-
-/*****************************************************************************/
-/**
- * qdma_debugfs_init() - function to initialize debugfs
- *
- * param[in]: qdma_debugfs_root - debugfs root
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_debugfs_init(struct dentry **qdma_debugfs_root)
-{
-	struct dentry *debugfs_root = NULL;
-	/* create a directory by the name qdma in
-	 * /sys/kernel/debugfs
-	 */
-#ifndef __QDMA_VF__
-	debugfs_root = debugfs_create_dir("qdma-pf", NULL);
-	if (!debugfs_root)
-		return -ENOENT;
-	pr_debug("created qdma-pf dir in Linux debug file system\n");
-
-#else
-	debugfs_root = debugfs_create_dir("qdma-vf", NULL);
-	if (!debugfs_root)
-		return -ENOENT;
-	pr_debug("created qdma-vf dir in Linux debug file system\n");
-
-#endif
-
-	*qdma_debugfs_root = debugfs_root;
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_debugfs_exit() - function to cleanup debugfs
- *
- * param[in]: qdma_debugfs_root - debugfs root
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-void qdma_debugfs_exit(struct dentry *qdma_debugfs_root)
-{
-	debugfs_remove_recursive(qdma_debugfs_root);
-#ifndef __QDMA_VF__
-	pr_debug("removed qdma_pf directory from Linux debug file system\n");
-#else
-	pr_debug("removed qdma_vf directory from Linux debug file system\n");
-#endif
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h
deleted file mode 100755
index 2b3600a..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_DEBUGFS_H__
-#define __QDMA_DEBUGFS_H__
-
-#include <linux/pci.h>
-#include <linux/debugfs.h>
-#include <linux/fs.h>
-#include <asm/uaccess.h>
-#include <linux/mutex.h>
-#include <linux/slab.h>
-
-#define DBGFS_DBG_FNAME_SZ  (64)
-#define QDMA_DEV_NAME_SZ	(64)
-
-/*****************************************************************************/
-/**
- * qdma_debugfs_init() - function to initialize debugfs
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int qdma_debugfs_init(struct dentry **qdma_debugfs_root);
-
-/*****************************************************************************/
-/**
- * qdma_debugfs_exit() - function to cleanup debugfs
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-void qdma_debugfs_exit(struct dentry *qdma_debugfs_root);
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c
deleted file mode 100755
index 3daa36a..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.c
+++ /dev/null
@@ -1,1009 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-
-#ifdef DEBUGFS
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_debugfs_dev.h"
-#include "qdma_reg_dump.h"
-#include "qdma_access_common.h"
-#include "qdma_context.h"
-#include "libqdma_export.h"
-#include "qdma_intr.h"
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/mutex.h>
-
-
-enum dbgfs_dev_dbg_file_type {
-	DBGFS_DEV_DBGF_INFO = 0,
-	DBGFS_DEV_DBGF_REGS = 1,
-	DBGFS_DEV_DBGF_REG_INFO = 2,
-	DBGFS_DEV_DBGF_END,
-};
-
-enum dbgfs_dev_intr_file_type {
-	DBFS_DEV_INTR_CTX = 0,
-	DBFS_DEV_INTR_ENTRIES = 1,
-	DBGFS_DEV_INTR_END,
-};
-
-struct dbgfs_dev_dbgf {
-	char name[DBGFS_DBG_FNAME_SZ];
-	struct file_operations fops;
-};
-
-struct dbgfs_dev_intr_dbgf {
-	char name[DBGFS_DBG_FNAME_SZ];
-	struct file_operations fops;
-};
-
-struct dbgfs_dev_priv {
-	unsigned long dev_hndl;
-	char dev_name[QDMA_DEV_NAME_SZ];
-	char *data;
-	int datalen;
-};
-
-enum bar_type {
-	DEBUGFS_BAR_CONFIG = 0,
-	DEBUGFS_BAR_USER = 1,
-	DEBUGFS_BAR_BYPASS = 2,
-};
-
-/** structure to hold file ops */
-static struct dbgfs_dev_dbgf dbgf[DBGFS_DEV_DBGF_END];
-
-/** structure to hold interrupt file ops */
-static struct dbgfs_dev_dbgf dbg_intrf[DBGFS_DEV_INTR_END];
-
-/*****************************************************************************/
-/**
- * dump_banner() - static helper function to dump a device banner
- *
- * @param[in]	dev_name:	qdma device name
- * @param[out]	buf:	buffer to which banner is dumped
- * @param[in]	buf_sz:	size of the buffer passed to func
- *
- * @return	len: length of the buffer printed
- *****************************************************************************/
-static int dump_banner(char *dev_name, char *buf, int buf_sz)
-{
-	int len = 0;
-	char seperator[81] = {0};
-
-	memset(seperator, '#', 80);
-
-	/** Banner consumes three lines, so size should be min 240 (80 * 3)
-	 * If changed, check the minimum buffer size required
-	 */
-	if (buf_sz < (3 * DEBGFS_LINE_SZ))
-		return -1;
-
-	len += snprintf(buf + len, buf_sz - len, "%s\n", seperator);
-	len += snprintf(buf + len, buf_sz - len,
-			"###\t\t\t\tqdma%s, reg dump\n",
-			dev_name);
-	len += snprintf(buf + len, buf_sz - len, "%s\n", seperator);
-
-	return len;
-}
-
-
-#define BANNER_LEN (81 * 5)
-
-/*****************************************************************************/
-/**
- * dbgfs_dump_qdma_regs() - static function to dump qdma device registers
- *
- * @param[in]	xpdev:	pointer to qdma pci device structure
- * @param[in]	buf:	buffer to dump the registers
- * @param[in]	buf_len:size of the buffer passed
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dbgfs_dump_qdma_regs(unsigned long dev_hndl, char *dev_name,
-		char **data, int *data_len)
-{
-	int len = 0;
-	int rv;
-	char *buf = NULL;
-	int buflen;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev)
-		return -EINVAL;
-
-#ifndef __QDMA_VF__
-	rv = qdma_acc_reg_dump_buf_len((void *)dev_hndl,
-			xdev->version_info.ip_type,
-			xdev->version_info.device_type, &buflen);
-#else
-	rv = qdma_acc_reg_dump_buf_len((void *)dev_hndl,
-			xdev->version_info.ip_type,
-			xdev->version_info.device_type, &buflen);
-#endif
-	if (rv < 0) {
-		pr_err("Failed to get reg dump buffer length\n");
-		return rv;
-	}
-	buflen += BANNER_LEN;
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	/* print the banner with device info */
-	rv = dump_banner(dev_name, buf + len, buflen - len);
-	if (rv < 0) {
-		pr_warn("insufficient space to dump register banner, err =%d\n",
-				rv);
-		kfree(buf);
-		return len;
-	}
-	len += rv;
-
-	rv = qdma_config_reg_dump(dev_hndl, buf + len, buflen - len);
-	if (rv < 0) {
-		pr_warn("Not able to dump Config Bar register values, err = %d\n",
-					rv);
-		*data = buf;
-		*data_len = buflen;
-		return len;
-	}
-	len += rv;
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dump_qdma_reg_info() - static function to dump qdma device registers
- *
- * @param[in]	xpdev:	pointer to qdma pci device structure
- * @param[in]	buf:	buffer to dump the registers
- * @param[in]	buf_len:size of the buffer passed
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dbgfs_dump_qdma_reg_info(unsigned long dev_hndl, char *dev_name,
-		char **data, int *data_len)
-{
-	int len = 0;
-	int rv;
-	char *buf = NULL;
-	int buflen;
-	int num_regs;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev)
-		return -EINVAL;
-
-	rv = qdma_acc_reg_info_len((void *)dev_hndl,
-			xdev->version_info.ip_type,
-			xdev->version_info.device_type, &buflen, &num_regs);
-
-	if (rv < 0) {
-		pr_err("Failed to get reg dump buffer length\n");
-		return rv;
-	}
-	buflen += BANNER_LEN;
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	/* print the banner with device info */
-	rv = dump_banner(dev_name, buf + len, buflen - len);
-	if (rv < 0) {
-		pr_warn("insufficient space to dump register banner, err =%d\n",
-				rv);
-		kfree(buf);
-		return len;
-	}
-	len += rv;
-
-	rv = qdma_config_reg_info_dump(dev_hndl, 0, num_regs, buf + len,
-							buflen - len);
-	if (rv < 0) {
-		pr_warn("Not able to dump Config Bar register values, err = %d\n",
-					rv);
-		*data = buf;
-		*data_len = buflen;
-		return len;
-	}
-	len += rv;
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dump_qdma_info() - static function to dump qdma device registers
- *
- * @xpdev:	pointer to qdma pci device structure
- * @buf:	buffer to dump the registers
- * @buf_len:size of the buffer passed
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dbgfs_dump_qdma_info(unsigned long dev_hndl, char *dev_name,
-		char **data, int *data_len)
-{
-	int len = 0;
-	char *buf = NULL;
-	int buflen = DEBUGFS_DEV_INFO_SZ;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_dev_conf *conf = NULL;
-
-	if (!xdev)
-		return -EINVAL;
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-	conf = &xdev->conf;
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	len += snprintf(buf + len, buflen - len, "%-36s: %s\n", "Master PF",
-			(conf->master_pf) ? "True" : "False");
-	len += snprintf(buf + len, buflen - len, "%-36s: %d\n", "QBase",
-			conf->qsets_base);
-	len += snprintf(buf + len, buflen - len, "%-36s: %u\n", "Max Qsets",
-			conf->qsets_max);
-	len += snprintf(buf + len, buflen - len, "%-36s: %d\n",
-			"Number of VFs", xdev->vf_count);
-	len += snprintf(buf + len, buflen - len, "%-36s: %d\n",
-			"Max number of VFs", conf->vf_max);
-	len += snprintf(buf + len, buflen - len, "%-36s: %s mode\n",
-			"Driver Mode",
-			mode_name_list[conf->qdma_drv_mode].name);
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dump_intr_cntx() - static function to dump interrupt context
- *
- * @param[in]	xpdev:	pointer to qdma pci device structure
- * @param[in]	buf:	buffer to dump the interrupt context
- * @param[in]	buf_len:size of the buffer passed
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dbgfs_dump_intr_cntx(unsigned long dev_hndl, char *dev_name,
-		char **data, int *data_len)
-{
-
-	int len = 0;
-	int rv = 0;
-	char *buf = NULL;
-	int i = 0;
-	int ring_index = 0;
-	struct qdma_indirect_intr_ctxt intr_ctxt;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int buflen = DEBUGFS_INTR_CNTX_SZ;
-
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	/** if interrupt aggregation is enabled
-	 *  add the interrupt context
-	 */
-	if ((xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		for (i = 0; i < QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-			ring_index = get_intr_ring_index(
-						xdev,
-						(i + xdev->dvec_start_idx));
-			rv = qdma_intr_context_read(
-						xdev,
-						ring_index,
-						&intr_ctxt);
-			if (rv < 0) {
-				len += snprintf(buf + len, buflen - len,
-					"%s read intr context failed %d.\n",
-					xdev->conf.name, rv);
-				*data = buf;
-				*data_len = buflen;
-				return rv;
-			}
-
-			rv = xdev->hw.qdma_dump_intr_context(xdev,
-						&intr_ctxt, ring_index,
-						buf + len, buflen - len);
-			if (rv < 0) {
-				pr_err("Failed to dump intr context, rv = %d",
-						rv);
-				return xdev->hw.qdma_get_error_code(rv);
-			}
-			len += rv;
-		}
-	}
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dump_intr_ring() - static function to dump interrupt ring
- *
- * @param[in]	xpdev:	pointer to qdma pci device structure
- * @param[in]	buf:	buffer to dump the interrupt ring
- * @param[in]	buf_len:size of the buffer passed
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dbgfs_dump_intr_ring(unsigned long dev_hndl, char *dev_name,
-		char **data, int *data_len)
-{
-	int len = 0;
-	int rv = 0;
-	char *buf = NULL;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	unsigned int vector_idx = xdev->msix[xdev->dvec_start_idx].entry;
-	int num_entries = (xdev->conf.intr_rngsz + 1) * 512;
-	int buflen = (45 * num_entries) + 1;
-
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	rv = qdma_intr_ring_dump(dev_hndl, vector_idx, 0,
-		 num_entries - 1, buf, buflen);
-	if (rv < 0) {
-		len += snprintf(buf + len, buflen - len,
-					   "%s read intr context failed %d.\n",
-					   xdev->conf.name, rv);
-		kfree(buf);
-		return rv;
-	}
-
-	len = strlen(buf);
-	buf[len++] = '\n';
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-/*****************************************************************************/
-/**
- * dev_dbg_file_open() - static function that provides generic open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_dbg_file_open(struct inode *inode, struct file *fp)
-{
-	unsigned long dev_id = -1;
-	int rv = 0;
-	unsigned char dev_name[QDMA_DEV_NAME_SZ] = {0};
-	unsigned char *lptr = NULL, *rptr = NULL;
-	struct dentry *dev_dir = NULL;
-	struct dbgfs_dev_priv *priv = NULL;
-	struct xlnx_dma_dev *xdev = NULL;
-
-	if (!inode || !fp)
-		return -EINVAL;
-	dev_dir = fp->f_path.dentry->d_parent;
-	xdev = inode->i_private;
-	if (!xdev)
-		return -EINVAL;
-
-	/* convert colon sepearted b:d:f to hex */
-	rptr = dev_dir->d_iname;
-	lptr = dev_name;
-	while (*rptr) {
-		if (*rptr == ':') {
-			rptr++;
-			continue;
-		}
-		*lptr++ = *rptr++;
-	}
-
-	/* convert this string as hex integer */
-	rv = kstrtoul((const char *)dev_name, 16, &dev_id);
-	if (rv < 0) {
-		rv = -ENODEV;
-		return rv;
-	}
-
-
-	priv = (struct dbgfs_dev_priv *) kzalloc(sizeof(struct dbgfs_dev_priv),
-			GFP_KERNEL);
-	if (!priv) {
-		rv = -ENOMEM;
-		return rv;
-	}
-
-	priv->dev_hndl = (unsigned long)xdev;
-	snprintf(priv->dev_name, QDMA_DEV_NAME_SZ, "%s", dev_name);
-	fp->private_data = priv;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * dev_dbg_file_release() - static function that provides generic release
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_dbg_file_release(struct inode *inode, struct file *fp)
-{
-	kfree(fp->private_data);
-
-	fp->private_data = NULL;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * dev_dbg_file_read() - static function that provides common read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- * @param[in]	type: information type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_dbg_file_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos, enum dbgfs_dev_dbg_file_type type)
-{
-	char *buf = NULL;
-	int buf_len = 0;
-	int len = 0;
-	int rv = 0;
-	struct dbgfs_dev_priv *dev_priv =
-		(struct dbgfs_dev_priv *)fp->private_data;
-
-	if (dev_priv->data == NULL && dev_priv->datalen == 0) {
-		if (type == DBGFS_DEV_DBGF_INFO) {
-			rv = dbgfs_dump_qdma_info(dev_priv->dev_hndl,
-					dev_priv->dev_name, &buf, &buf_len);
-		} else if (type == DBGFS_DEV_DBGF_REGS) {
-			rv = dbgfs_dump_qdma_regs(dev_priv->dev_hndl,
-					dev_priv->dev_name, &buf, &buf_len);
-		} else if (type == DBGFS_DEV_DBGF_REG_INFO) {
-			rv = dbgfs_dump_qdma_reg_info(dev_priv->dev_hndl,
-					dev_priv->dev_name, &buf, &buf_len);
-		}
-
-		if (rv < 0)
-			goto dev_dbg_file_read_exit;
-
-		dev_priv->datalen = rv;
-		dev_priv->data = buf;
-	}
-
-	buf = dev_priv->data;
-	len = dev_priv->datalen;
-
-	if (!buf)
-		goto dev_dbg_file_read_exit;
-
-	/** write to user buffer */
-	if (*ppos >= len) {
-		rv = 0;
-		goto dev_dbg_file_read_exit;
-	}
-
-	if (*ppos + count > len)
-		count = len - *ppos;
-
-	if (copy_to_user(user_buffer, buf + *ppos, count)) {
-		rv = -EFAULT;
-		goto dev_dbg_file_read_exit;
-	}
-
-	*ppos += count;
-	rv = count;
-
-	pr_debug("number of bytes written to user space is %zu\n", count);
-
-dev_dbg_file_read_exit:
-	kfree(buf);
-	dev_priv->data = NULL;
-	dev_priv->datalen = 0;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * dev_intr_file_read() - static function that provides common read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- * @param[in]	type: information type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_intr_file_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos, enum dbgfs_dev_intr_file_type type)
-{
-	char *buf = NULL;
-	int buf_len = 0;
-	int len = 0;
-	int rv = 0;
-	struct dbgfs_dev_priv *dev_priv =
-		(struct dbgfs_dev_priv *)fp->private_data;
-
-	if (dev_priv->data == NULL && dev_priv->datalen == 0) {
-		if (type == DBFS_DEV_INTR_CTX) {
-			rv = dbgfs_dump_intr_cntx(dev_priv->dev_hndl,
-					dev_priv->dev_name, &buf, &buf_len);
-		} else if (type == DBFS_DEV_INTR_ENTRIES) {
-			rv = dbgfs_dump_intr_ring(dev_priv->dev_hndl,
-					dev_priv->dev_name, &buf, &buf_len);
-		}
-
-		if (rv < 0)
-			goto dev_intr_file_read_exit;
-
-		dev_priv->datalen = rv;
-		dev_priv->data = buf;
-	}
-
-	buf = dev_priv->data;
-	len = dev_priv->datalen;
-
-	if (!buf)
-		goto dev_intr_file_read_exit;
-
-	/** write to user buffer */
-	if (*ppos >= len) {
-		rv = 0;
-		goto dev_intr_file_read_exit;
-	}
-
-	if (*ppos + count > len)
-		count = len - *ppos;
-
-	if (copy_to_user(user_buffer, buf + *ppos, count)) {
-		rv = -EFAULT;
-		goto dev_intr_file_read_exit;
-	}
-
-	*ppos += count;
-	rv = count;
-
-	pr_debug("nuber of bytes written to user space is %zu\n", count);
-
-dev_intr_file_read_exit:
-	kfree(buf);
-	dev_priv->data = NULL;
-	dev_priv->datalen = 0;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * dev_info_open() - static function that executes info open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_info_open(struct inode *inode, struct file *fp)
-{
-	return dev_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * dev_info_read() - static function that executes info read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_info_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return dev_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_DEV_DBGF_INFO);
-}
-
-/*****************************************************************************/
-/**
- * dev_regs_open() - static function that opens regs debug file
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_regs_open(struct inode *inode, struct file *fp)
-{
-	return dev_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * dev_reg_info_open() - static function that opens regInfo debug file
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_reg_info_open(struct inode *inode, struct file *fp)
-{
-	return dev_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * dev_regs_read() - static function that executes info read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_regs_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return dev_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_DEV_DBGF_REGS);
-}
-
-/*****************************************************************************/
-/**
- * dev_reg_info_read() - static function that executes info read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_reg_info_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return dev_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_DEV_DBGF_REG_INFO);
-}
-/*****************************************************************************/
-/**
- * dev_intr_cntx_open() -static function to open interrupt context debug file
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_intr_cntx_open(struct inode *inode, struct file *fp)
-{
-	return dev_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * dev_intr_cntx_read() - static function that executes interrupt context read
- *			  file
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_intr_cntx_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return dev_intr_file_read(fp, user_buffer, count, ppos,
-			DBFS_DEV_INTR_CTX);
-}
-
-/*****************************************************************************/
-/**
- * dev_intr_ring_open() -static function to open interrupt ring entries file
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int dev_intr_ring_open(struct inode *inode, struct file *fp)
-{
-	return dev_dbg_file_open(inode, fp);
-}
-/*****************************************************************************/
-/**
- * dev_intr_ring_read() - static function that reads interrupt ring entries to
- *						  file
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t dev_intr_ring_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return dev_intr_file_read(fp, user_buffer, count, ppos,
-			DBFS_DEV_INTR_ENTRIES);
-}
-/*****************************************************************************/
-/**
- * create_dev_dbg_files() - static function to create queue debug files
- *
- * @param[in]	dev_root:	debugfs root for the device
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int create_dev_dbg_files(struct xlnx_dma_dev *xdev,
-		struct dentry *dev_root)
-{
-	struct dentry  *fp[DBGFS_DEV_DBGF_END] = { NULL };
-	struct file_operations *fops = NULL;
-	int i = 0;
-
-	memset(dbgf, 0, sizeof(struct dbgfs_dev_dbgf) * DBGFS_DEV_DBGF_END);
-
-	for (i = 0; i < DBGFS_DEV_DBGF_END; i++) {
-		fops = &dbgf[i].fops;
-		fops->owner = THIS_MODULE;
-		switch (i) {
-		case DBGFS_DEV_DBGF_INFO:
-			snprintf(dbgf[i].name, 64, "%s", "qdma_info");
-			fops->open = dev_info_open;
-			fops->read = dev_info_read;
-			fops->release = dev_dbg_file_release;
-			break;
-		case DBGFS_DEV_DBGF_REGS:
-			snprintf(dbgf[i].name, 64, "%s", "qdma_regs");
-			fops->open = dev_regs_open;
-			fops->read = dev_regs_read;
-			fops->release = dev_dbg_file_release;
-			break;
-		case DBGFS_DEV_DBGF_REG_INFO:
-			snprintf(dbgf[i].name, 64, "%s", "qdma_reg_info");
-			fops->open = dev_reg_info_open;
-			fops->read = dev_reg_info_read;
-			fops->release = dev_dbg_file_release;
-			break;
-		}
-	}
-
-	for (i = 0; i < DBGFS_DEV_DBGF_END; i++) {
-		fp[i] = debugfs_create_file(dbgf[i].name, 0644, dev_root,
-				    xdev, &dbgf[i].fops);
-		if (!fp[i])
-			return -1;
-	}
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * create_dev_intr_files() - static function to create intr ring files
- *
- * @param[in]	dev_root:	debugfs root for the device
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int create_dev_intr_files(struct xlnx_dma_dev *xdev,
-		struct dentry *intr_root)
-{
-	struct dentry  *fp[DBGFS_DEV_DBGF_END] = { NULL };
-	struct file_operations *fops = NULL;
-	int i = 0;
-	char intr_dir[16] = {0};
-	struct dentry *dbgfs_intr_ring = NULL;
-
-	snprintf(intr_dir, 8, "%d",
-			 get_intr_ring_index(xdev,
-			 xdev->dvec_start_idx));
-
-	dbgfs_intr_ring = debugfs_create_dir(intr_dir, intr_root);
-	memset(dbg_intrf, 0, sizeof(
-		struct dbgfs_dev_intr_dbgf) * DBGFS_DEV_INTR_END);
-
-	for (i = 0; i < DBGFS_DEV_INTR_END; i++) {
-		fops = &dbg_intrf[i].fops;
-		fops->owner = THIS_MODULE;
-		switch (i) {
-		case DBFS_DEV_INTR_CTX:
-			snprintf(dbg_intrf[i].name, 64, "%s", "cntxt");
-			fops->open = dev_intr_cntx_open;
-			fops->read = dev_intr_cntx_read;
-			fops->release = dev_dbg_file_release;
-			break;
-		case DBFS_DEV_INTR_ENTRIES:
-			snprintf(dbg_intrf[i].name, 64, "%s", "entries");
-			fops->open = dev_intr_ring_open;
-			fops->read = dev_intr_ring_read;
-			fops->release = dev_dbg_file_release;
-			break;
-		}
-	}
-
-	for (i = 0; i < DBGFS_DEV_INTR_END; i++) {
-		fp[i] = debugfs_create_file(dbg_intrf[i].name, 0644,
-					dbgfs_intr_ring,
-					xdev, &dbg_intrf[i].fops);
-		if (!fp[i])
-			return -1;
-	}
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dev_init() - function to initialize device debugfs files
- *
- * @param[in]	xdev:	Xilinx dma device
- * @param[in]	qdma_debugfs_root:	root file in debugfs
- *
- * @return	=0: success
- * @return	<0: error
- *****************************************************************************/
-int dbgfs_dev_init(struct xlnx_dma_dev *xdev)
-{
-	char dname[QDMA_DEV_NAME_SZ] = {0};
-	struct dentry *dbgfs_dev_root = NULL;
-	struct dentry *dbgfs_queues_root = NULL;
-	struct dentry *dbgfs_intr_root = NULL;
-	struct pci_dev *pdev = xdev->conf.pdev;
-	int rv = 0;
-
-	if (!xdev->conf.debugfs_dev_root) {
-		snprintf(dname, QDMA_DEV_NAME_SZ, "%04x:%02x:%02x:%x",
-				pci_domain_nr(pdev->bus),
-				pdev->bus->number,
-				PCI_SLOT(pdev->devfn),
-				PCI_FUNC(pdev->devfn));
-		/* create a directory for the device in debugfs */
-		dbgfs_dev_root = debugfs_create_dir(dname, qdma_debugfs_root);
-		if (!dbgfs_dev_root) {
-			pr_err("Failed to create device direcotry\n");
-			return -1;
-		}
-		xdev->dbgfs_dev_root = dbgfs_dev_root;
-	} else
-		xdev->dbgfs_dev_root = xdev->conf.debugfs_dev_root;
-
-	/* create debug files for qdma device */
-	rv = create_dev_dbg_files(xdev, xdev->dbgfs_dev_root);
-	if (rv < 0) {
-		pr_err("Failed to create device debug files\n");
-		goto dbgfs_dev_init_fail;
-	}
-
-	/* create a directory for the queues in debugfs */
-	dbgfs_queues_root = debugfs_create_dir("queues", xdev->dbgfs_dev_root);
-	if (!dbgfs_queues_root) {
-		pr_err("Failed to create queues directory under device directory\n");
-		goto dbgfs_dev_init_fail;
-	}
-	if ((xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		/* create a directory for the intr in debugfs */
-		dbgfs_intr_root = debugfs_create_dir("intr_rings",
-				xdev->dbgfs_dev_root);
-		if (!dbgfs_queues_root) {
-			pr_err("Failed to create intr_ring directory under device directory\n");
-			goto dbgfs_dev_init_fail;
-		}
-
-		/* create debug files for intr */
-		rv = create_dev_intr_files(xdev, dbgfs_intr_root);
-		if (rv < 0) {
-			pr_err("Failed to create intr ring files\n");
-			goto dbgfs_dev_init_fail;
-		}
-	}
-	xdev->dbgfs_queues_root = dbgfs_queues_root;
-	xdev->dbgfs_intr_root = dbgfs_intr_root;
-	spin_lock_init(&xdev->qidx_lock);
-
-	return 0;
-
-dbgfs_dev_init_fail:
-
-	debugfs_remove_recursive(xdev->dbgfs_dev_root);
-	return -1;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_dev_exit() - function to cleanup device debugfs files
- *
- * @param[in]	xdev:	Xilinx dma device
- *
- *****************************************************************************/
-void dbgfs_dev_exit(struct xlnx_dma_dev *xdev)
-{
-	if (!xdev->conf.debugfs_dev_root)
-		debugfs_remove_recursive(xdev->dbgfs_dev_root);
-	xdev->dbgfs_dev_root = NULL;
-	xdev->dbgfs_queues_root = NULL;
-	xdev->dbgfs_intr_root = NULL;
-}
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h
deleted file mode 100755
index 5a74c79..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_dev.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_DEBUGFS_DEV_H__
-#define __QDMA_DEBUGFS_DEV_H__
-
-#include "qdma_debugfs.h"
-#include "xdev.h"
-
-int dbgfs_dev_init(struct xlnx_dma_dev *xdev);
-void dbgfs_dev_exit(struct xlnx_dma_dev *xdev);
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c
deleted file mode 100755
index c323c47..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.c
+++ /dev/null
@@ -1,964 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_debugfs_queue.h"
-#include "libqdma_export.h"
-#include "qdma_regs.h"
-#include "qdma_context.h"
-#include "qdma_descq.h"
-#include "qdma_regs.h"
-#include <linux/uaccess.h>
-
-#ifdef DEBUGFS
-#define DEBUGFS_QUEUE_DESC_SZ	(100)
-#define DEBUGFS_QUEUE_INFO_SZ	(256)
-#define DEBUGFS_QUEUE_CTXT_SZ	(24 * 1024)
-
-#define DEBUGFS_CTXT_ELEM(reg, pos, size)   \
-	((reg >> pos) & ~(~0 << size))
-
-#define DBGFS_QUEUE_INFO_SZ	256
-#define DBGFS_ERR_BUFLEN    (64)
-
-enum dbgfs_queue_info_type {
-	DBGFS_QINFO_INFO = 0,
-	DBGFS_QINFO_CNTXT = 1,
-	DBGFS_QINFO_DESC = 2,
-	DBGFS_QINFO_END,
-};
-
-enum dbgfs_cntxt_word {
-	DBGFS_CNTXT_W0 = 0,
-	DBGFS_CNTXT_W1 = 1,
-	DBGFS_CNTXT_W2 = 2,
-	DBGFS_CNTXT_W3 = 3,
-	DBGFS_CNTXT_W4 = 4,
-	DBGFS_CNTXT_W5 = 5,
-	DBGFS_CNTXT_W6 = 6,
-	DBGFS_CNTXT_W7 = 7,
-};
-
-enum dbgfs_cmpt_queue_info_type {
-	DBGFS_CMPT_QINFO_INFO = 0,
-	DBGFS_CMPT_QINFO_CNTXT = 1,
-	DBGFS_CMPT_QINFO_DESC = 2,
-	DBGFS_CMPT_QINFO_END,
-};
-
-struct dbgfs_q_dbgf {
-	char name[DBGFS_DBG_FNAME_SZ];
-	struct file_operations fops;
-};
-
-struct dbgfs_q_priv {
-	unsigned long dev_hndl;
-	unsigned long qhndl;
-	char *data;
-	int datalen;
-};
-
-enum dbgfs_desc_type {
-	DBGFS_DESC_TYPE_C2H = 0,
-	DBGFS_DESC_TYPE_H2C = DBGFS_DESC_TYPE_C2H,
-	DBGFS_DESC_TYPE_CMPT = 1,
-	DBGFS_DESC_TYPE_END = 2,
-};
-
-/** structure to hold file ops */
-static struct dbgfs_q_dbgf qf[DBGFS_QINFO_END];
-
-/** structure to hold file ops */
-static struct dbgfs_q_dbgf cmpt_qf[DBGFS_CMPT_QINFO_END];
-static int q_dbg_file_open(struct inode *inode, struct file *fp);
-static int q_dbg_file_release(struct inode *inode, struct file *fp);
-static int qdbg_info_read(unsigned long dev_hndl, unsigned long id, char **data,
-		int *data_len, enum dbgfs_desc_type type);
-static int qdbg_desc_read(unsigned long dev_hndl, unsigned long id, char **data,
-		int *data_len, enum dbgfs_desc_type type);
-static int qdbg_cntxt_read(unsigned long dev_hndl, unsigned long id,
-		char **data, int *data_len, enum dbgfs_desc_type type);
-
-/*****************************************************************************/
-/**
- * cmpt_q_dbg_file_open() - static function that provides generic open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int cmpt_q_dbg_file_open(struct inode *inode, struct file *fp)
-{
-	return q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_dbg_file_release() - static function that provides generic release
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int cmpt_q_dbg_file_release(struct inode *inode, struct file *fp)
-{
-	return q_dbg_file_release(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_dbg_file_read() - static function that provides common read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- * @param[in]	type: information type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t cmpt_q_dbg_file_read(struct file *fp,
-		char __user *user_buffer,
-		size_t count, loff_t *ppos,
-		enum dbgfs_queue_info_type type)
-{
-	char *buf = NULL;
-	int buf_len = 0;
-	int len = 0;
-	int rv = 0;
-	struct dbgfs_q_priv *qpriv =
-		(struct dbgfs_q_priv *)fp->private_data;
-
-	if (qpriv->data == NULL && qpriv->datalen == 0) {
-		if (type == DBGFS_QINFO_INFO) {
-			rv = qdbg_info_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_CMPT);
-		} else if (type == DBGFS_QINFO_CNTXT) {
-			rv = qdbg_cntxt_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_CMPT);
-		} else if (type == DBGFS_QINFO_DESC) {
-			rv = qdbg_desc_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_CMPT);
-		}
-
-		if (rv < 0)
-			goto cmpt_q_dbg_file_read_exit;
-
-		qpriv->datalen = rv;
-		qpriv->data = buf;
-	}
-
-	buf = qpriv->data;
-	len = qpriv->datalen;
-
-	if (!buf)
-		goto cmpt_q_dbg_file_read_exit;
-
-	/** write to user buffer */
-	if (*ppos >= len) {
-		rv = 0;
-		goto cmpt_q_dbg_file_read_exit;
-	}
-
-	if (*ppos + count > len)
-		count = len - *ppos;
-
-	if (copy_to_user(user_buffer, buf + *ppos, count)) {
-		rv = -EFAULT;
-		goto cmpt_q_dbg_file_read_exit;
-	}
-
-	*ppos += count;
-
-	pr_debug("cmpt q read size %zu\n", count);
-
-	return count;
-
-cmpt_q_dbg_file_read_exit:
-	kfree(buf);
-	qpriv->data = NULL;
-	qpriv->datalen = 0;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_info_open() - static function that executes info open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int cmpt_q_info_open(struct inode *inode, struct file *fp)
-{
-	return cmpt_q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_info_read() - static function that executes info read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t cmpt_q_info_read(struct file *fp, char __user *user_buffer,
-			size_t count, loff_t *ppos)
-{
-	return cmpt_q_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_QINFO_INFO);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_cntxt_open() - static function that executes info open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int cmpt_q_cntxt_open(struct inode *inode, struct file *fp)
-{
-	return cmpt_q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_cntxt_read() - static function that executes info read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t cmpt_q_cntxt_read(struct file *fp, char __user *user_buffer,
-			size_t count, loff_t *ppos)
-{
-	return cmpt_q_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_QINFO_CNTXT);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_desc_open() - static function that executes descriptor open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int cmpt_q_desc_open(struct inode *inode, struct file *fp)
-{
-	return cmpt_q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * cmpt_q_desc_read() - static function that executes descriptor read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t cmpt_q_desc_read(struct file *fp, char __user *user_buffer,
-			size_t count, loff_t *ppos)
-{
-	return cmpt_q_dbg_file_read(fp, user_buffer, count, ppos,
-			DBGFS_QINFO_DESC);
-}
-
-/*****************************************************************************/
-/**
- * create_cmpt_q_dbg_files() - static function to create cmpt queue dbg files
- *
- * @param[in]	queue_root:	debugfs root for a queue
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int create_cmpt_q_dbg_files(struct qdma_descq *descq,
-		struct dentry *queue_root)
-{
-	struct dentry  *fp[DBGFS_QINFO_END] = { NULL };
-	struct file_operations *fops = NULL;
-	int i = 0;
-
-	memset(cmpt_qf, 0, sizeof(struct dbgfs_q_dbgf) * DBGFS_CMPT_QINFO_END);
-
-	for (i = 0; i < DBGFS_CMPT_QINFO_END; i++) {
-		fops = &cmpt_qf[i].fops;
-		fops->owner = THIS_MODULE;
-		switch (i) {
-		case DBGFS_CMPT_QINFO_INFO:
-			snprintf(cmpt_qf[i].name, DBGFS_DBG_FNAME_SZ,
-							"%s", "info");
-			fops->open = cmpt_q_info_open;
-			fops->read = cmpt_q_info_read;
-			fops->release = cmpt_q_dbg_file_release;
-			break;
-		case DBGFS_CMPT_QINFO_CNTXT:
-			snprintf(cmpt_qf[i].name, DBGFS_DBG_FNAME_SZ,
-							"%s", "cntxt");
-			fops->open = cmpt_q_cntxt_open;
-			fops->read = cmpt_q_cntxt_read;
-			fops->release = cmpt_q_dbg_file_release;
-			break;
-		case DBGFS_CMPT_QINFO_DESC:
-			snprintf(cmpt_qf[i].name, DBGFS_DBG_FNAME_SZ,
-							"%s", "desc");
-			fops->open = cmpt_q_desc_open;
-			fops->read = cmpt_q_desc_read;
-			fops->release = cmpt_q_dbg_file_release;
-			break;
-		}
-	}
-
-	for (i = 0; i < DBGFS_CMPT_QINFO_END; i++) {
-		fp[i] = debugfs_create_file(cmpt_qf[i].name, 0644, queue_root,
-					descq, &cmpt_qf[i].fops);
-		if (!fp[i])
-			return -1;
-	}
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * q_dbg_file_open() - generic queue debug file open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int q_dbg_file_open(struct inode *inode, struct file *fp)
-{
-	unsigned long dev_id = -1;
-	int qidx = -1;
-	struct dbgfs_q_priv *priv = NULL;
-	int rv = 0;
-	unsigned char dev_name[QDMA_DEV_NAME_SZ] = {0};
-	unsigned char *lptr = NULL, *rptr = NULL;
-	struct dentry *direction_dir = NULL;
-	struct dentry *qid_dir = NULL;
-	struct dentry *qroot_dir = NULL;
-	struct dentry *dev_dir = NULL;
-	struct qdma_descq *descq = NULL;
-
-	if (!inode || !fp)
-		return -EINVAL;
-	descq = inode->i_private;
-	if (!descq)
-		return -EINVAL;
-
-	direction_dir = fp->f_path.dentry->d_parent;
-	qid_dir = direction_dir->d_parent;
-	qroot_dir = qid_dir->d_parent;
-	dev_dir = qroot_dir->d_parent;
-
-	/* convert this string as integer */
-	rv = kstrtoint((const char *)qid_dir->d_iname, 0, &qidx);
-	if (rv < 0) {
-		rv = -ENODEV;
-		return rv;
-	}
-
-	/* convert colon sepearted b:d:f to hex */
-	rptr = dev_dir->d_iname;
-	lptr = dev_name;
-	while (*rptr) {
-		if (*rptr == ':') {
-			rptr++;
-			continue;
-		}
-		*lptr++ = *rptr++;
-	}
-
-	/* convert this string as hex integer */
-	rv = kstrtoul((const char *)dev_name, 16, &dev_id);
-	if (rv < 0) {
-		pr_err("%s, kstrtoint failed for %s, Error:%d\n", __func__,
-			dev_dir->d_iname, rv);
-		rv = -ENODEV;
-		return rv;
-	}
-
-	priv = (struct dbgfs_q_priv *) kzalloc(sizeof(struct dbgfs_q_priv),
-			GFP_KERNEL);
-	if (!priv) {
-		rv = -ENOMEM;
-		return rv;
-	}
-
-	priv->dev_hndl = (unsigned long)descq->xdev;
-	priv->qhndl = qdma_device_get_id_from_descq(descq->xdev, descq);
-
-	fp->private_data = priv;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * q_dbg_file_release() - function that provides generic release
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int q_dbg_file_release(struct inode *inode, struct file *fp)
-{
-	kfree(fp->private_data);
-
-	fp->private_data = NULL;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdbg_cntxt_read() - reads queue context for a queue
- *
- * @param[in]	dev_hndl:	xdev device handle
- * @param[in]	id: queue handle
- * @param[out]	buf: buffer to collect the context info
- * @param[in]	buflen: buffer len
- * @param[in]	type: context type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int qdbg_cntxt_read(unsigned long dev_hndl, unsigned long id,
-		char **data, int *data_len, enum dbgfs_desc_type type)
-{
-	int rv = 0;
-	char *buf = NULL;
-	int buflen = DEBUGFS_QUEUE_CTXT_SZ;
-	struct qdma_descq *descq = NULL;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev)
-		return -EINVAL;
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-	/* allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	/** get descq by id */
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 0);
-	if (!descq) {
-		kfree(buf);
-		return -EINVAL;
-	}
-
-	rv = qdma_descq_context_dump(descq, buf, buflen);
-	if (rv < 0) {
-		pr_err("%s: Failed to dump the context, rv = %d",
-				descq->conf.name, rv);
-		return descq->xdev->hw.qdma_get_error_code(rv);
-	}
-
-
-	buf[rv] = '\0';
-
-	*data = buf;
-	*data_len = buflen;
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdbg_info_read() - reads queue info for a queue
- *
- * @param[in]	dev_hndl:	xdev device handle
- * @param[in]	id: queue handle
- * @param[out]	data: buffer pointer to collect the queue info
- * @param[out]	data_len: buffer len pointer
- * @param[in]	type: ring type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int qdbg_info_read(unsigned long dev_hndl, unsigned long id, char **data,
-		int *data_len, enum dbgfs_desc_type type)
-{
-	int len = 0;
-	char *buf = NULL;
-	int buflen = DEBUGFS_QUEUE_INFO_SZ;
-	struct qdma_descq *descq = NULL;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/** allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 0);
-	if (!descq) {
-		kfree(buf);
-		return -EINVAL;
-	}
-
-	len = qdma_descq_dump_state(descq, buf + len, buflen - len);
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdbg_desc_read() - reads descriptors of a queue
- *
- * @param[in]	dev_hndl:	xdev device handle
- * @param[in]	id: queue handle
- * @param[out]	data: buffer pointer to collect the queue descriptors
- * @param[out]	data_len: buffer len pointer
- * @param[in]	type: ring type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int qdbg_desc_read(unsigned long dev_hndl, unsigned long id, char **data,
-		int *data_len, enum dbgfs_desc_type type)
-{
-	int len = 0;
-	int rngsz = 0;
-	struct qdma_descq *descq = NULL;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	char *buf = NULL;
-	int buflen = 0;
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 0);
-	if (!descq)
-		return -EINVAL;
-
-	/** get the ring size */
-	if (type != DBGFS_DESC_TYPE_CMPT)
-		rngsz = descq->conf.rngsz;
-	else
-		rngsz = descq->conf.rngsz_cmpt;
-
-	/** 128 bytes is to accomodate header printed in the begining */
-	buflen = (rngsz * DEBUGFS_QUEUE_DESC_SZ) + 128;
-
-	/* allocate memory */
-	buf = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	if (type != DBGFS_DESC_TYPE_CMPT) {
-		len += qdma_queue_dump_desc(dev_hndl, id,
-				0, rngsz-1, buf + len, buflen - len);
-	} else {
-		len += qdma_queue_dump_cmpt(dev_hndl, id,
-				0, rngsz-1, buf + len, buflen - len);
-	}
-
-	*data = buf;
-	*data_len = buflen;
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * q_dbg_file_read() - static function that provides common read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- * @param[in]	type: information type
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t q_dbg_file_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos, enum dbgfs_queue_info_type type)
-{
-	char *buf = NULL;
-	int buf_len = 0, len = 0, rv = 0;
-	struct dbgfs_q_priv *qpriv = (struct dbgfs_q_priv *)fp->private_data;
-
-	if (qpriv->data == NULL && qpriv->datalen == 0) {
-		if (type == DBGFS_QINFO_INFO) {
-			rv = qdbg_info_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_C2H);
-		} else if (type == DBGFS_QINFO_CNTXT) {
-			rv = qdbg_cntxt_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_C2H);
-		} else if (type == DBGFS_QINFO_DESC) {
-			rv = qdbg_desc_read(qpriv->dev_hndl, qpriv->qhndl,
-					&buf, &buf_len, DBGFS_DESC_TYPE_C2H);
-		}
-
-		if (rv < 0)
-			goto q_dbg_file_read_exit;
-
-		qpriv->datalen = rv;
-		qpriv->data = buf;
-	}
-
-	buf = qpriv->data;
-	len = qpriv->datalen;
-
-	if (!buf)
-		goto q_dbg_file_read_exit;
-
-	/** write to user buffer */
-	if (*ppos >= len) {
-		rv = 0;
-		goto q_dbg_file_read_exit;
-	}
-
-	if (*ppos + count > len)
-		count = len - *ppos;
-
-	if (copy_to_user(user_buffer, buf + *ppos, count)) {
-		rv = -EFAULT;
-		goto q_dbg_file_read_exit;
-	}
-
-	*ppos += count;
-	rv = count;
-
-	pr_debug("number of bytes written to user space is %zu\n", count);
-
-q_dbg_file_read_exit:
-	kfree(buf);
-	qpriv->data = NULL;
-	qpriv->datalen = 0;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * q_info_open() - static function that executes info file open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int q_info_open(struct inode *inode, struct file *fp)
-{
-	return q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * q_info_read() - static function that executes info file read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t q_info_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return q_dbg_file_read(fp, user_buffer, count, ppos, DBGFS_QINFO_INFO);
-}
-
-/*****************************************************************************/
-/**
- * q_cntxt_open() - static function that executes cntxt file open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int q_cntxt_open(struct inode *inode, struct file *fp)
-{
-	return q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * q_cntxt_read() - static function that performs cntxt file read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t q_cntxt_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return q_dbg_file_read(fp, user_buffer, count, ppos, DBGFS_QINFO_CNTXT);
-}
-
-/*****************************************************************************/
-/**
- * q_desc_open() - static function that executes desc file open
- *
- * @param[in]	inode:	pointer to file inode
- * @param[in]	fp:	pointer to file structure
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-static int q_desc_open(struct inode *inode, struct file *fp)
-{
-	return q_dbg_file_open(inode, fp);
-}
-
-/*****************************************************************************/
-/**
- * q_desc_read() - static function that executes desc read
- *
- * @param[in]	fp:	pointer to file structure
- * @param[out]	user_buffer: pointer to user buffer
- * @param[in]	count: size of data to read
- * @param[in/out]	ppos: pointer to offset read
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static ssize_t q_desc_read(struct file *fp, char __user *user_buffer,
-		size_t count, loff_t *ppos)
-{
-	return q_dbg_file_read(fp, user_buffer, count, ppos, DBGFS_QINFO_DESC);
-}
-
-/*****************************************************************************/
-/**
- * create_q_dbg_files() - static function to create queue debug files
- *
- * @param[in]	queue_root:	debugfs root for a queue
- *
- * @return	>0: size read
- * @return	<0: error
- *****************************************************************************/
-static int create_q_dbg_files(struct qdma_descq *descq,
-		struct dentry *queue_root)
-{
-	struct dentry  *fp[DBGFS_QINFO_END] = { NULL };
-	struct file_operations *fops = NULL;
-	int i = 0;
-
-	memset(qf, 0, sizeof(struct dbgfs_q_dbgf) * DBGFS_QINFO_END);
-
-	for (i = 0; i < DBGFS_QINFO_END; i++) {
-		fops = &qf[i].fops;
-		fops->owner = THIS_MODULE;
-		switch (i) {
-		case DBGFS_QINFO_INFO:
-			snprintf(qf[i].name, DBGFS_DBG_FNAME_SZ, "%s", "info");
-			fops->open = q_info_open;
-			fops->read = q_info_read;
-			fops->release = q_dbg_file_release;
-			break;
-		case DBGFS_QINFO_CNTXT:
-			snprintf(qf[i].name, DBGFS_DBG_FNAME_SZ, "%s", "cntxt");
-			fops->open = q_cntxt_open;
-			fops->read = q_cntxt_read;
-			fops->release = q_dbg_file_release;
-			break;
-		case DBGFS_QINFO_DESC:
-			snprintf(qf[i].name, DBGFS_DBG_FNAME_SZ, "%s", "desc");
-			fops->open = q_desc_open;
-			fops->read = q_desc_read;
-			fops->release = q_dbg_file_release;
-			break;
-		}
-	}
-
-	for (i = 0; i < DBGFS_QINFO_END; i++) {
-		fp[i] = debugfs_create_file(qf[i].name, 0644, queue_root,
-				descq, &qf[i].fops);
-		if (!fp[i])
-			return -1;
-	}
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_queue_init() - queue initialization function
- *
- * @param[in]	conf:	queue configuration
- * @param[in]	pair_conf:	pair queue configuration
- * @param[in]	dbgfs_queues_root:	root directory for all queues
- *
- * @return	0: success
- * @return	<0: error
- *****************************************************************************/
-int dbgfs_queue_init(struct qdma_queue_conf *conf,
-		struct qdma_descq *pairq,
-		struct dentry *dbgfs_queues_root)
-{
-	char qname[16] = {0};
-	char qdir[8] = {0};
-	struct dentry *dbgfs_qidx_root = NULL;
-	struct dentry *dbgfs_queue_root = NULL;
-	struct dentry *dbgfs_cmpt_queue_root = NULL;
-	struct qdma_descq *descq = container_of(conf, struct qdma_descq, conf);
-	int rv = 0;
-
-	if (!descq)
-		return -EINVAL;
-	snprintf(qname, 16, "%u", conf->qidx);
-
-	spin_lock(&descq->xdev->qidx_lock);
-	/** create queue root only if it is not created */
-	if (pairq->dbgfs_qidx_root) {
-		dbgfs_qidx_root = pairq->dbgfs_qidx_root;
-	} else {
-		/* create a directory for the queue in debugfs */
-		dbgfs_qidx_root = debugfs_create_dir(qname,
-				dbgfs_queues_root);
-		if (!dbgfs_qidx_root) {
-			pr_err("Failed to create queue [%s] directory\n",
-					qname);
-			spin_unlock(&descq->xdev->qidx_lock);
-			return -1;
-		}
-	}
-
-	/* create a directory for direction */
-	if (conf->q_type == Q_C2H)
-		snprintf(qdir, 8, "%s", "c2h");
-	else if (conf->q_type == Q_H2C)
-		snprintf(qdir, 8, "%s", "h2c");
-	else
-		snprintf(qdir, 8, "%s", "cmpt");
-
-	dbgfs_queue_root = debugfs_create_dir(qdir,
-			dbgfs_qidx_root);
-	if (!dbgfs_queue_root) {
-		pr_err("Failed to create %s directory under %s",
-				qdir, qname);
-		goto dbgfs_queue_init_fail;
-	}
-
-	if ((conf->q_type == Q_C2H) && conf->st) {
-		/* create a directory for the cmpt in debugfs */
-		dbgfs_cmpt_queue_root = debugfs_create_dir("cmpt",
-				dbgfs_qidx_root);
-		if (!dbgfs_cmpt_queue_root) {
-			pr_err("Failed to create cmpt directory under %s",
-					qname);
-			goto dbgfs_queue_init_fail;
-		}
-	}
-
-	/* intialize fops and create all the files */
-	rv = create_q_dbg_files(descq, dbgfs_queue_root);
-	if (rv < 0) {
-		pr_err("Failed to create qdbg files, removing %s dir\n",
-				qdir);
-		debugfs_remove_recursive(dbgfs_queue_root);
-		goto dbgfs_queue_init_fail;
-	}
-
-	if (dbgfs_cmpt_queue_root) {
-		rv = create_cmpt_q_dbg_files(descq, dbgfs_cmpt_queue_root);
-		if (rv < 0) {
-			pr_err("Failed to create cmptq dbg files,removing cmpt dir\n");
-			debugfs_remove_recursive(dbgfs_cmpt_queue_root);
-			goto dbgfs_queue_init_fail;
-		}
-	}
-
-	descq->dbgfs_qidx_root = dbgfs_qidx_root;
-	descq->dbgfs_queue_root = dbgfs_queue_root;
-	descq->dbgfs_cmpt_queue_root = dbgfs_cmpt_queue_root;
-	spin_unlock(&descq->xdev->qidx_lock);
-
-	return 0;
-
-dbgfs_queue_init_fail:
-	if (pairq->dbgfs_qidx_root) {
-		spin_unlock(&descq->xdev->qidx_lock);
-		return -1;
-	}
-	pr_err("Failed to init q debug files, removing [%s] dir\n", qname);
-	debugfs_remove_recursive(dbgfs_qidx_root);
-	spin_unlock(&descq->xdev->qidx_lock);
-	return -1;
-}
-
-/*****************************************************************************/
-/**
- * dbgfs_queue_exit() - debugfs queue teardown function
- *
- * @param[in]	conf:	queue configuration
- * @param[in]	conf:	pair queue configuration
- *
- *****************************************************************************/
-void dbgfs_queue_exit(struct qdma_queue_conf *conf,
-		struct qdma_descq *pairq)
-{
-	struct qdma_descq *descq = container_of(conf, struct qdma_descq, conf);
-
-	if (!descq)
-		return;
-	debugfs_remove_recursive(descq->dbgfs_queue_root);
-	debugfs_remove_recursive(descq->dbgfs_cmpt_queue_root);
-	descq->dbgfs_queue_root = NULL;
-	descq->dbgfs_cmpt_queue_root = NULL;
-	if (!pairq)
-		debugfs_remove_recursive(descq->dbgfs_qidx_root);
-
-	descq->dbgfs_qidx_root = NULL;
-}
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h b/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h
deleted file mode 100755
index 37d62e7..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_debugfs_queue.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_DEBUGFS_QUEUE_H__
-#define __QDMA_DEBUGFS_QUEUE_H__
-
-#include "qdma_debugfs.h"
-#include "qdma_descq.h"
-
-
-int dbgfs_queue_init(struct qdma_queue_conf *conf,
-		struct qdma_descq *pairq,
-		struct dentry *dbgfs_queues_root);
-void dbgfs_queue_exit(struct qdma_queue_conf *conf,
-		struct qdma_descq *pairq);
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_descq.c b/QDMA/linux-kernel/driver/libqdma/qdma_descq.c
deleted file mode 100755
index 9cc4e49..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_descq.c
+++ /dev/null
@@ -1,2139 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_descq.h"
-
-#include <linux/kernel.h>
-#include <linux/delay.h>
-
-#include "qdma_device.h"
-#include "qdma_intr.h"
-#include "qdma_regs.h"
-#include "qdma_thread.h"
-#include "qdma_context.h"
-#include "qdma_st_c2h.h"
-#include "qdma_access_common.h"
-#ifdef __XRT__
-#include "eqdma_soft_access.h"
-#endif
-#include "thread.h"
-#include "qdma_ul_ext.h"
-#include "version.h"
-#ifdef ERR_DEBUG
-#include "qdma_nl.h"
-#endif
-
-struct q_state_name q_state_list[] = {
-	{Q_STATE_DISABLED, "disabled"},
-	{Q_STATE_ENABLED, "cfg'ed"},
-	{Q_STATE_ONLINE, "online"}
-};
-
-/*
- * dma transfer requests
- */
-#ifdef DEBUG
-static void sgl_dump(struct qdma_sw_sg *sgl, unsigned int sgcnt)
-{
-	struct qdma_sw_sg *sg = sgl;
-	int i;
-
-	pr_info("sgl 0x%p, sgcntt %u.\n", sgl, sgcnt);
-
-	for (i = 0; i < sgcnt; i++, sg++)
-		pr_info("%d, 0x%p, pg 0x%p,%u+%u, dma 0x%llx.\n",
-			i, sg, sg->pg, sg->offset, sg->len, sg->dma_addr);
-}
-#endif
-
-u64 rdtsc_gettime(void)
-{
-	unsigned int low, high;
-
-	asm volatile("rdtscp" : "=a" (low), "=d" (high));
-	return low | ((u64)high) << 32;
-}
-
-int qdma_sgl_find_offset(struct qdma_request *req, struct qdma_sw_sg **sg_p,
-			unsigned int *sg_offset)
-{
-	struct qdma_sgt_req_cb *cb = qdma_req_cb_get(req);
-	struct qdma_sw_sg *sg = req->sgl;
-	unsigned int sgcnt = req->sgcnt;
-	unsigned int offset = cb->offset;
-	unsigned int len = 0;
-	int i;
-
-	if (req->count == 0) {
-		*sg_p = sg;
-		*sg_offset = 0;
-		return 0;
-	}
-
-
-	for (i = 0;  i < sgcnt; i++, sg++) {
-		len += sg->len;
-
-		if (len == offset) {
-			*sg_p = sg + 1;
-			*sg_offset = 0;
-			++i;
-			break;
-		} else if (len > offset) {
-			*sg_p = sg;
-			*sg_offset = sg->len - (len - offset);
-			break;
-		}
-	}
-
-	if (i < sgcnt)
-		return i;
-
-	return -EINVAL;
-}
-
-void qdma_update_request(void *q_hndl, struct qdma_request *req,
-			unsigned int num_desc,
-			unsigned int data_cnt,
-			unsigned int sg_offset,
-			void *sg)
-{
-	struct qdma_descq *descq = (struct qdma_descq *)q_hndl;
-	struct qdma_sgt_req_cb *cb = qdma_req_cb_get(req);
-
-	cb->desc_nr += num_desc;
-	cb->offset += data_cnt;
-	cb->sg_offset = sg_offset;
-	cb->sg = sg;
-	if (cb->offset >= req->count) {
-		qdma_work_queue_del(descq, cb);
-		list_add_tail(&cb->list, &descq->pend_list);
-	}
-}
-
-static int descq_mm_n_h2c_cmpl_status(struct qdma_descq *descq);
-
-static int descq_poll_mm_n_h2c_cmpl_status(struct qdma_descq *descq)
-{
-	enum qdma_drv_mode drv_mode = descq->xdev->conf.qdma_drv_mode;
-
-	if ((drv_mode == POLL_MODE) || (drv_mode == AUTO_MODE)) {
-		descq->proc_req_running = 1;
-		return descq_mm_n_h2c_cmpl_status(descq);
-	} else
-		return 0;
-}
-
-static inline unsigned int incr_pidx(unsigned int pidx, unsigned int incr_val,
-				     unsigned int ring_sz)
-{
-	pidx += incr_val;
-	if (pidx >= ring_sz)
-		pidx -= ring_sz;
-
-	return pidx;
-}
-
-static inline int qdma_pidx_update(struct qdma_descq *descq,
-				unsigned char force)
-{
-	int ret = 0;
-	unsigned int desc_avail_max = descq->conf.rngsz - 1;
-
-	/* interrupt for last update came, now submit descs that are setup */
-	if (force) /* re-arm interrupt with pidx update */
-		goto update;
-	/* q is not very busy, go ahead and submit */
-	if (descq->avail > (desc_avail_max - descq->conf.pidx_acc))
-		goto update;
-
-	/* accumulating descs to be submitted */
-	if (descq->desc_pend < descq->conf.pidx_acc)
-		goto exit_update;
-
-update:
-	ret = queue_pidx_update(descq->xdev, descq->conf.qidx,
-			descq->conf.q_type, &descq->pidx_info);
-	if (ret < 0) {
-		pr_err("%s: Failed to update pidx\n",
-				descq->conf.name);
-		return -EINVAL;
-	}
-
-	descq->desc_pend = 0;
-
-exit_update:
-	return ret;
-}
-
-static ssize_t descq_mm_proc_request(struct qdma_descq *descq)
-{
-	int rv = 0;
-	unsigned int desc_written = 0;
-	unsigned int rngsz = descq->conf.rngsz;
-	unsigned int pidx;
-	u64 ep_addr = 0;
-	struct qdma_mm_desc *desc;
-	struct qdma_queue_conf *qconf = &descq->conf;
-	unsigned char is_ul_ext = (qconf->desc_bypass &&
-			qconf->fp_bypass_desc_fill) ? 1 : 0;
-	u32 aperture = qconf->aperture_size ?
-				 qconf->aperture_size : QDMA_DESC_BLEN_MAX;
-	u8 keyhole_en = qconf->aperture_size ? 1 : 0;
-	u64 ep_addr_max = 0;
-#ifdef __XRT__
-	if (descq->xdev->version_info.ip_type == EQDMA_SOFT_IP) {
-		uint32_t ip_version;
-#ifndef __QDMA_VF__
-		uint8_t is_vf = 0;
-#else
-		uint8_t is_vf = 1;
-#endif
-		rv = eqdma_get_ip_version(descq->xdev, is_vf, &ip_version);
-		if (ip_version == EQDMA_IP_VERSION_5) {
-			pr_info("EQDMA Soft IP 5.0 supports descriptor length < 64K.\n");
-			aperture = qconf->aperture_size ?
-					qconf->aperture_size : SOFT_QDMA_DESC_BLEN_MAX;
-		}
-	}
-#endif
-
-	lock_descq(descq);
-	/* process completion of submitted requests */
-	if (descq->q_stop_wait) {
-		descq_mm_n_h2c_cmpl_status(descq);
-		unlock_descq(descq);
-		return 0;
-	}
-	if (unlikely(descq->q_state != Q_STATE_ONLINE)) {
-		unlock_descq(descq);
-		return 0;
-	}
-
-	if (descq->proc_req_running) {
-		unlock_descq(descq);
-		return 0;
-	}
-
-	pidx = descq->pidx;
-	desc = (struct qdma_mm_desc *)descq->desc + pidx;
-
-	descq_poll_mm_n_h2c_cmpl_status(descq);
-
-	while (!list_empty(&descq->work_list)) {
-		struct qdma_sgt_req_cb *cb = list_first_entry(&descq->work_list,
-						struct qdma_sgt_req_cb, list);
-		struct qdma_request *req = (struct qdma_request *)cb;
-		struct qdma_sw_sg *sg = req->sgl;
-		unsigned int sg_offset = 0;
-		unsigned int sg_max = req->sgcnt;
-		struct qdma_mm_desc *desc_start = NULL;
-		struct qdma_mm_desc *desc_end = NULL;
-		unsigned int desc_max = descq->avail;
-		unsigned int data_cnt = 0;
-		unsigned int desc_cnt = 0;
-		unsigned int len = 0;
-		int i = 0;
-		int rv;
-
-		ep_addr_max = req->ep_addr + aperture - 1;
-
-		/**
-		 * When keyhole feature is enabled, the ep_addr
-		 * cannot ever exceed the aperture size.
-		 * The offset calculation is implemented below.
-		 */
-		if (!keyhole_en)
-			ep_addr = req->ep_addr + cb->offset;
-		else
-			ep_addr = req->ep_addr + (cb->offset & (aperture - 1));
-
-		if (!desc_max) {
-			descq_poll_mm_n_h2c_cmpl_status(descq);
-			desc_max = descq->avail;
-		}
-
-		if (!desc_max)
-			break;
-
-		if (is_ul_ext) {
-			int desc_consumed =
-				qconf->fp_bypass_desc_fill(descq,
-						   QDMA_Q_MODE_MM,
-						   (qconf->q_type == Q_C2H) ?
-						   QDMA_Q_DIR_C2H :
-						   QDMA_Q_DIR_H2C,
-						   req);
-			if (desc_consumed > 0)
-				desc_cnt += desc_consumed;
-			goto update_pidx;
-		}
-		rv = qdma_sgl_find_offset(req, &sg, &sg_offset);
-		if (rv < 0) {
-			pr_info("descq %s, req 0x%p, OOR %u/%u, %d/%u.\n",
-				descq->conf.name, req, cb->offset,
-				req->count, rv, sg_max);
-			qdma_update_request(descq, req, 0, 0, 0, NULL);
-			continue;
-		}
-		i = rv;
-		pr_debug("%s, req 0x%p, offset %u/%u -> sg %d, 0x%p,%u.\n",
-			descq->conf.name, req, cb->offset, req->count,
-			i, sg, sg_offset);
-
-		desc_start = desc;
-		for (; i < sg_max && desc_cnt < desc_max; i++, sg++) {
-			unsigned int tlen = sg->len;
-			dma_addr_t src_addr = sg->dma_addr;
-			unsigned int pg_off = sg->offset;
-
-			pr_debug("desc %u/%u, sgl %d, len %u,%u, offset %u.\n",
-				desc_cnt, desc_max, i, len, tlen, sg_offset);
-
-			desc->flag_len = 0;
-			if (sg_offset) {
-				tlen -= sg_offset;
-				src_addr += sg_offset;
-				pg_off += sg_offset;
-				sg_offset = 0;
-			}
-
-			do {
-				unsigned int len = min_t(unsigned int, tlen,
-							aperture);
-
-				if (keyhole_en) {
-					if (ep_addr > ep_addr_max)
-						ep_addr = req->ep_addr;
-
-					if (ep_addr + len > ep_addr_max)
-						len = ep_addr_max - ep_addr + 1;
-				}
-
-				desc_end = desc;
-				sg_offset += len;
-
-				desc->rsvd1 = 0UL;
-				desc->rsvd0 = 0U;
-
-				if (descq->conf.q_type == Q_C2H) {
-					desc->src_addr = ep_addr;
-					desc->dst_addr = src_addr;
-				} else {
-					desc->dst_addr = ep_addr;
-					desc->src_addr = src_addr;
-				}
-
-				desc->flag_len = len;
-				desc->flag_len |= (1 << S_DESC_F_DV);
-				ep_addr += len;
-				data_cnt += len;
-				src_addr += len;
-				tlen -= len;
-				pg_off += len;
-
-				if (++pidx == rngsz) {
-					pidx = 0;
-					desc =
-					(struct qdma_mm_desc *)descq->desc;
-				} else {
-					desc++;
-				}
-
-				desc_cnt++;
-				if (desc_cnt == desc_max)
-					break;
-			} while (tlen);
-			if (!tlen)
-				sg_offset = 0;
-		}
-		if (i == sg_max) {
-			sg = NULL;
-			sg_offset = 0;
-		}
-
-		if (!desc_end || !desc_start) {
-			pr_info("descq %s, %u, pidx 0x%x, desc 0x%p ~ 0x%p.\n",
-				descq->conf.name, descq->qidx_hw, pidx,
-				desc_start, desc_end);
-			break;
-		}
-
-		/* set eop */
-		desc_end->flag_len |= (1 << S_DESC_F_EOP);
-		/* set sop */
-		desc_start->flag_len |= (1 << S_DESC_F_SOP);
-		qdma_update_request(descq, req, desc_cnt, data_cnt, sg_offset,
-				    sg);
-		descq->pidx = pidx;
-		descq->avail -= desc_cnt;
-update_pidx:
-
-		desc_written += desc_cnt;
-
-		pr_debug("descq %s, +%u,%u, avail %u, ep_addr 0x%llx + 0x%x(%u).\n",
-			descq->conf.name, desc_cnt, pidx, descq->avail,
-			req->ep_addr, data_cnt, data_cnt);
-
-	}
-
-	if (desc_written) {
-		descq->pend_list_empty = 0;
-		descq->pidx_info.pidx = descq->pidx;
-		rv = queue_pidx_update(descq->xdev, descq->conf.qidx,
-				descq->conf.q_type, &descq->pidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to update pidx\n",
-					descq->conf.name);
-			unlock_descq(descq);
-			return -EINVAL;
-		}
-		descq_poll_mm_n_h2c_cmpl_status(descq);
-	}
-
-	descq->proc_req_running = 0;
-	unlock_descq(descq);
-
-	if (desc_written && descq->cmplthp)
-		qdma_kthread_wakeup(descq->cmplthp);
-
-	return 0;
-}
-/**
- * This function is called directly while sending packet or as  interrupt
- * service when any pending request or pending descriptor is present.
- */
-static ssize_t descq_proc_st_h2c_request_qep(struct qdma_descq *descq)
-{
-	int ret = 0;
-	struct qdma_request *req;
-	unsigned int desc_written = 0;
-	unsigned int desc_cnt = 0;
-
-	/* exit as packet have been queued and can be processes as part of who
-	 * ever holding the lock or during interrupt service
-	 */
-	if (!(spin_trylock_bh(&(descq)->lock)))
-		return 0;
-
-	/* process completion of submitted requests */
-	if (unlikely(descq->q_stop_wait)) {
-		descq_mm_n_h2c_cmpl_status(descq);
-		unlock_descq(descq);
-		return 0;
-	}
-
-	if (unlikely(descq->q_state != Q_STATE_ONLINE)) {
-		unlock_descq(descq);
-		return 0;
-	}
-
-setup_desc:
-	while (qdma_work_queue_len(descq) && descq->avail) {
-		req = qdma_work_queue_first_entry(descq);
-		desc_cnt = descq->conf.fp_bypass_desc_fill(descq,
-			QDMA_Q_MODE_ST, QDMA_Q_DIR_H2C, req);
-
-		if (unlikely(desc_cnt == 0))
-			break;
-
-		desc_written += desc_cnt;
-
-		if (desc_written >= descq->conf.pidx_acc)
-			break;
-	}
-
-	if (unlikely(!desc_written)) {
-		/* packet queued while holding lock and no interrupt pending */
-		if (unlikely(qdma_work_queue_len(descq) &&
-				descq->avail == descq->conf.rngsz - 1)) {
-			unlock_descq(descq);
-			descq_proc_st_h2c_request_qep(descq);
-			return 0;
-		}
-		unlock_descq(descq);
-		return 0;
-	}
-
-	descq->desc_pend += desc_written;
-	descq->pidx_info.pidx = descq->pidx;
-
-	ret = qdma_pidx_update(descq, 0);
-	if (unlikely(ret < 0)) {
-		pr_err("%s: Failed to update pidx\n",
-				descq->conf.name);
-		unlock_descq(descq);
-		return -EINVAL;
-	}
-
-	if (descq->work_req_pend && (desc_written >= descq->conf.pidx_acc)) {
-		desc_written = 0;
-		goto setup_desc;
-	}
-
-	unlock_descq(descq);
-
-	return ret;
-}
-
-
-static ssize_t descq_proc_st_h2c_request(struct qdma_descq *descq)
-{
-	int ret = 0;
-	struct qdma_h2c_desc *desc;
-	u8 *tx_time_pkt_offset = NULL;
-	unsigned int rngsz = descq->conf.rngsz;
-	unsigned int pidx;
-	unsigned int desc_written = 0;
-	struct qdma_queue_conf *qconf = &descq->conf;
-	unsigned char is_ul_ext = (qconf->desc_bypass &&
-			qconf->fp_bypass_desc_fill) ? 1 : 0;
-	struct qdma_dev *qdev = NULL;
-
-	lock_descq(descq);
-	/* process completion of submitted requests */
-	if (descq->q_stop_wait) {
-		descq_mm_n_h2c_cmpl_status(descq);
-		unlock_descq(descq);
-		return 0;
-	}
-	if (unlikely(descq->q_state != Q_STATE_ONLINE)) {
-		unlock_descq(descq);
-		return 0;
-	}
-
-	if (descq->proc_req_running) {
-		unlock_descq(descq);
-		return 0;
-	}
-
-	qdev = xdev_2_qdev(descq->xdev);
-	/* service completion first */
-	descq_poll_mm_n_h2c_cmpl_status(descq);
-
-	pidx = descq->pidx;
-	desc = (struct qdma_h2c_desc *)descq->desc + pidx;
-	while (!list_empty(&descq->work_list)) {
-		struct qdma_sgt_req_cb *cb = list_first_entry(&descq->work_list,
-						struct qdma_sgt_req_cb, list);
-		struct qdma_request *req = (struct qdma_request *)cb;
-		struct qdma_sw_sg *sg = req->sgl;
-		unsigned int sg_offset = 0;
-		unsigned int sg_max = req->sgcnt;
-		unsigned int desc_max = descq->avail;
-		unsigned int data_cnt = 0;
-		unsigned int desc_cnt = 0;
-		unsigned int pktsz = req->ep_addr ?
-				min_t(unsigned int, req->ep_addr, PAGE_SIZE) :
-				PAGE_SIZE;
-		int i = 0;
-		int rv;
-
-		if (!desc_max) {
-			descq_poll_mm_n_h2c_cmpl_status(descq);
-			desc_max = descq->avail;
-		}
-
-		if (!desc_max)
-			break;
-
-#ifdef DEBUG
-		pr_info("%s, req %u.\n", descq->conf.name, req->count);
-		sgl_dump(req->sgl, sg_max);
-#endif
-		if (is_ul_ext) {
-			int desc_consumed =
-				qconf->fp_bypass_desc_fill(descq,
-							   QDMA_Q_MODE_ST,
-							   QDMA_Q_DIR_H2C,
-							   req);
-			if (desc_consumed > 0)
-				desc_cnt += desc_consumed;
-			goto update_pidx;
-		}
-
-		rv = qdma_sgl_find_offset(req, &sg,
-					      &sg_offset);
-
-		if (rv < 0) {
-			pr_err("descq %s, req 0x%p, OOR %u/%u, %d/%u.\n",
-			descq->conf.name, req, cb->offset,
-			req->count, rv, sg_max);
-			qdma_update_request(descq, req, 0, 0, 0, NULL);
-			continue;
-		}
-		i = rv;
-		pr_debug("%s, req 0x%p, offset %u/%u -> sg %d, 0x%p,%u.\n",
-			descq->conf.name, req, cb->offset, req->count,
-			i, sg, sg_offset);
-		desc->flags = 0;
-		desc->cdh_flags = 0;
-
-		for (; i < sg_max && desc_cnt < desc_max; i++, sg++) {
-			unsigned int tlen = sg->len;
-			dma_addr_t src_addr = sg->dma_addr;
-
-			if (sg_offset) {
-				tlen -= sg_offset;
-				src_addr += sg_offset;
-				sg_offset = 0;
-			}
-
-			do { /* to support zero byte transfer */
-				unsigned int len = min_t(unsigned int, tlen,
-							 pktsz);
-
-				sg_offset += len;
-				desc->src_addr = src_addr;
-				desc->len = len;
-				desc->pld_len = len;
-				desc->cdh_flags |= S_H2C_DESC_F_ZERO_CDH;
-				data_cnt += len;
-				src_addr += len;
-				tlen -= len;
-				tx_time_pkt_offset =
-					(u8 *)(page_address(sg->pg) +
-							sg->offset);
-
-				/* Setting SOP/EOP for the dummy bypass case */
-				if (descq->conf.desc_bypass) {
-					if (i == 0)
-						desc->flags |= S_H2C_DESC_F_SOP;
-
-					if ((i == sg_max - 1))
-						desc->flags |= S_H2C_DESC_F_EOP;
-				}
-
-#if 0
-				pr_info("desc %d, pidx 0x%x, data_cnt %u, cb off %u:\n",
-					i, pidx, data_cnt, cb->offset);
-				print_hex_dump(KERN_INFO, "desc",
-					       DUMP_PREFIX_OFFSET, 16, 1,
-					       (void *)desc, 16, false);
-#endif
-
-				if (++pidx == rngsz) {
-					pidx = 0;
-					desc =
-					(struct qdma_h2c_desc *)descq->desc;
-				} else {
-					desc++;
-					desc->flags = 0;
-					desc->cdh_flags = 0;
-				}
-
-				desc_cnt++;
-				if (desc_cnt == desc_max)
-					break;
-			} while (tlen);
-			if (!tlen)
-				sg_offset = 0;
-
-		}
-		if (i == sg_max) {
-			sg = NULL;
-			sg_offset = 0;
-		}
-		qdma_update_request(descq, req, desc_cnt, data_cnt, sg_offset,
-				    sg);
-		descq->pidx = pidx;
-		descq->avail -= desc_cnt;
-update_pidx:
-		if (!desc_cnt)
-			break;
-		desc_written += desc_cnt;
-
-		pr_debug("descq %s, +%u,%u, avail %u, 0x%x(%u), cb off %u.\n",
-			descq->conf.name, desc_cnt, pidx, descq->avail,
-			data_cnt, data_cnt, cb->offset);
-
-	}
-
-	if (desc_written) {
-		descq->pend_list_empty = 0;
-		descq->pidx_info.pidx = descq->pidx;
-		if (descq->conf.ping_pong_en) {
-			if (tx_time_pkt_offset != NULL) {
-				u64 tx_time = rdtsc_gettime();
-
-				qdev->c2h_descq[qconf->qidx].ping_pong_tx_time =
-						tx_time;
-				memcpy(tx_time_pkt_offset, &tx_time,
-					   sizeof(tx_time));
-			} else
-				pr_err("Err: Tx Time Offset is NULL\n");
-		}
-
-
-		ret = queue_pidx_update(descq->xdev, descq->conf.qidx,
-				descq->conf.q_type, &descq->pidx_info);
-		if (ret < 0) {
-			pr_err("%s: Failed to update pidx\n",
-					descq->conf.name);
-			unlock_descq(descq);
-			return -EINVAL;
-		}
-		descq_poll_mm_n_h2c_cmpl_status(descq);
-	}
-
-	descq->proc_req_running = 0;
-
-	if (desc_written && descq->cmplthp)
-		qdma_kthread_wakeup(descq->cmplthp);
-
-	unlock_descq(descq);
-
-	return 0;
-}
-
-/*
- * descriptor Queue
- */
-static inline int get_desc_size(struct qdma_descq *descq)
-{
-	if (descq->conf.desc_bypass && (descq->conf.sw_desc_sz == DESC_SZ_64B))
-		return DESC_SZ_64B_BYTES;
-	if (!descq->conf.st)
-		return (int)sizeof(struct qdma_mm_desc);
-
-	if (descq->conf.q_type == Q_C2H)
-		return (int)sizeof(struct qdma_c2h_desc);
-
-	return (int)sizeof(struct qdma_h2c_desc);
-}
-
-static inline int get_desc_cmpl_status_size(struct qdma_descq *descq)
-{
-	return (int)sizeof(struct qdma_desc_cmpl_status);
-}
-
-static inline void desc_ring_free(struct xlnx_dma_dev *xdev, int ring_sz,
-			int desc_sz, int cs_sz, u8 *desc, dma_addr_t desc_bus)
-{
-	unsigned int len = ring_sz * desc_sz + cs_sz;
-
-	pr_debug("free %u(0x%x)=%d*%u+%d, 0x%p, bus 0x%llx.\n",
-		len, len, desc_sz, ring_sz, cs_sz, desc, desc_bus);
-
-	dma_free_coherent(&xdev->conf.pdev->dev,
-			((size_t)ring_sz * desc_sz + cs_sz),
-			desc, desc_bus);
-}
-
-static void *desc_ring_alloc(struct xlnx_dma_dev *xdev, int ring_sz,
-			int desc_sz, int cs_sz, dma_addr_t *bus, u8 **cs_pp)
-{
-	unsigned int len = ring_sz * desc_sz + cs_sz;
-	u8 *p = dma_alloc_coherent(&xdev->conf.pdev->dev, len, bus, GFP_KERNEL);
-
-	if (!p) {
-		pr_err("%s, OOM, sz ring %d, desc %d, cmpl status sz %d.\n",
-			xdev->conf.name, ring_sz, desc_sz, cs_sz);
-		return NULL;
-	}
-
-	*cs_pp = p + ring_sz * desc_sz;
-	memset(p, 0, len);
-
-	pr_debug("alloc %u(0x%x)=%d*%u+%d, 0x%p, bus 0x%llx, cmpl status 0x%p.\n",
-		len, len, desc_sz, ring_sz, cs_sz, p, *bus, *cs_pp);
-
-	return p;
-}
-
-static void desc_alloc_irq(struct qdma_descq *descq)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	unsigned long flags;
-	int i, idx = 0, min = -1;
-
-	if (!xdev->num_vecs)
-		return;
-
-	/** Pick the MSI-X vector that currently has the fewest queues
-	 * on PF0, vector#0 is dedicated for Error interrupts and
-	 * vector #1 is dedicated for User interrupts
-	 * For all other PFs, vector#0 is dedicated for User interrupts
-	 */
-
-	idx = xdev->dvec_start_idx;
-	if (xdev->conf.qdma_drv_mode == DIRECT_INTR_MODE) {
-		for (i = xdev->dvec_start_idx; i < xdev->num_vecs; i++) {
-			struct intr_info_t *intr_info_list =
-					&xdev->dev_intr_info_list[i];
-
-			spin_lock_irqsave(&intr_info_list->vec_q_list,
-					flags);
-			if (!intr_info_list->intr_list_cnt) {
-				spin_unlock_irqrestore(
-						&intr_info_list->vec_q_list,
-						flags);
-				idx = i;
-				break;
-			}
-			if (min < 0)
-				min = intr_info_list->intr_list_cnt;
-			if (intr_info_list->intr_list_cnt < min) {
-				min = intr_info_list->intr_list_cnt;
-				idx = i;
-			}
-
-			spin_unlock_irqrestore(&intr_info_list->vec_q_list,
-					flags);
-		}
-	}
-	descq->intr_id = idx;
-	pr_debug("descq->intr_id = %d allocated to qidx = %d\n",
-		descq->intr_id, descq->conf.qidx);
-}
-
-/*
- * writeback handling
- */
-static int descq_mm_n_h2c_cmpl_status(struct qdma_descq *descq)
-{
-	int rv = 0;
-	unsigned int cidx, cidx_hw;
-	unsigned int cr;
-
-	pr_debug("descq 0x%p, %s, pidx %u, cidx %u.\n",
-		descq, descq->conf.name, descq->pidx, descq->cidx);
-
-	if (descq->pidx == descq->cidx) { /* queue empty? */
-		pr_debug("descq %s empty, return.\n", descq->conf.name);
-		return 0;
-	}
-
-	cidx = descq->cidx;
-#ifdef __READ_ONCE_DEFINED__
-	cidx_hw = READ_ONCE(((struct qdma_desc_cmpl_status *)
-				descq->desc_cmpl_status)->cidx);
-#else
-	cidx_hw = ((struct qdma_desc_cmpl_status *)
-					descq->desc_cmpl_status)->cidx;
-	dma_rmb();
-#endif
-
-	if (cidx_hw == cidx) /* no new writeback? */
-		return 0;
-
-	/* completion credits */
-	cr = (cidx_hw < cidx) ? (descq->conf.rngsz - cidx) + cidx_hw :
-				cidx_hw - cidx;
-
-	pr_debug("%s descq %s, cidx 0x%x -> 0x%x, avail 0x%x + 0x%x.\n",
-			__func__, descq->conf.name, cidx,
-			cidx_hw, descq->avail, cr);
-
-	descq->cidx = cidx_hw;
-	descq->avail += cr;
-	descq->credit += cr;
-
-	incr_cmpl_desc_cnt(descq, cr);
-
-	/* completes requests */
-	pr_debug("%s %s, 0x%p, credit %u + %u.\n",
-			__func__, descq->conf.name, descq, cr, descq->credit);
-
-	cr = descq->credit;
-
-	while (!list_empty(&descq->pend_list)) {
-		struct qdma_sgt_req_cb *cb = list_first_entry(&descq->pend_list,
-						struct qdma_sgt_req_cb, list);
-
-		pr_debug("%s, 0x%p, cb 0x%p, desc_nr %u, credit %u.\n",
-			descq->conf.name, descq, cb, cb->desc_nr, cr);
-
-		if (cr >= cb->desc_nr) {
-			pr_debug("%s, cb 0x%p done, credit %u > %u.\n",
-				descq->conf.name, cb, cr, cb->desc_nr);
-			cr -= cb->desc_nr;
-			qdma_sgt_req_done(descq, cb, 0);
-		} else {
-			pr_debug("%s, cb 0x%p not done, credit %u < %u.\n",
-				descq->conf.name, cb, cr, cb->desc_nr);
-			cb->desc_nr -= cr;
-			cr = 0;
-		}
-
-		if (!cr)
-			break;
-	}
-
-	descq->credit = cr;
-	pr_debug("%s, 0x%p, credit %u.\n",
-		descq->conf.name, descq, descq->credit);
-
-	rv = qdma_pidx_update(descq, 1);
-	if (unlikely(rv < 0))
-		pr_err("%s: Failed to update pidx\n", descq->conf.name);
-
-	return 0;
-}
-
-/* ************** public function definitions ******************************* */
-
-void qdma_descq_init(struct qdma_descq *descq, struct xlnx_dma_dev *xdev,
-			int idx_hw, int idx_sw)
-{
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-
-	memset(descq, 0, sizeof(struct qdma_descq));
-
-	spin_lock_init(&descq->lock);
-	spin_lock_init(&descq->work_list_lock);
-	INIT_LIST_HEAD(&descq->work_list);
-	INIT_LIST_HEAD(&descq->pend_list);
-	qdma_waitq_init(&descq->pend_list_wq);
-	INIT_LIST_HEAD(&descq->intr_list);
-	INIT_LIST_HEAD(&descq->legacy_intr_q_list);
-	INIT_WORK(&descq->work, intr_work);
-	descq->xdev = xdev;
-	descq->channel = 0;
-	descq->qidx_hw = qdev->qbase + idx_hw;
-	descq->conf.qidx = idx_sw;
-}
-
-int qdma_q_desc_get(void *q_hndl, const unsigned int desc_cnt,
-		    struct qdma_q_desc_list **desc_list)
-{
-	struct qdma_descq *descq = (struct qdma_descq *)q_hndl;
-
-	if (unlikely(desc_cnt >= descq->conf.rngsz)) {
-		pr_err("Number of descriptors required > ring size");
-		return -EINVAL; /* not possible to give so many desc */
-	}
-
-	/*
-	 * it is very unlikely that below condition hits in MM or ST H2C as
-	 * one packet is submitted at once. But It is ibserved that HW is not
-	 * giving writeback and sometimes its corresponding interrupt. For this
-	 * reason a polling logic is introduced as below
-	 **/
-	if (descq->avail < desc_cnt)
-		descq_mm_n_h2c_cmpl_status(descq);
-
-	if (unlikely(descq->avail < desc_cnt)) {
-		pr_err("No entries available to read");
-		return -EBUSY; /* curently not available */
-	}
-
-	*desc_list = descq->desc_list + descq->pidx;
-	descq->pidx = incr_pidx(descq->pidx,
-				desc_cnt,
-				descq->conf.rngsz);
-	descq->avail -= desc_cnt;
-	return 0;
-}
-
-int qdma_q_init_pointers(void *q_hndl)
-{
-	struct qdma_descq *descq = (struct qdma_descq *)q_hndl;
-	int rv;
-
-	if ((descq->conf.st && (descq->conf.q_type == Q_C2H)) ||
-			(!descq->conf.st && (descq->conf.q_type == Q_CMPT))) {
-		if (descq->conf.init_pidx_dis) {
-			/* use qdma_q_init_pointers
-			 *for updating the pidx and cidx later
-			 */
-			descq->cmpt_cidx_info.wrb_cidx = 0;
-			rv = queue_cmpt_cidx_update(descq->xdev,
-					descq->conf.qidx,
-					&descq->cmpt_cidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-
-			if (descq->conf.q_type == Q_CMPT)
-				return 0;
-
-			descq->pidx_info.pidx = descq->conf.rngsz - 1;
-			rv = queue_pidx_update(descq->xdev, descq->conf.qidx,
-					descq->conf.q_type, &descq->pidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update pidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-		} else {
-			pr_err("pidx disable is active");
-			return -EINVAL;
-		}
-	} else {
-		pr_err("Invalid mode");
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-int qdma_queue_update_pointers(unsigned long dev_hndl, unsigned long qhndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq = qdma_device_get_descq_by_id(xdev, qhndl,
-							NULL, 0, 0);
-	int ret = 0;
-
-	if (!descq) {
-		pr_err("%s descq is null\n", __func__);
-		return -EINVAL;
-	}
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		lock_descq(descq);
-		if (descq->q_state == Q_STATE_ONLINE) {
-			ret = queue_cmpt_cidx_update(descq->xdev,
-					descq->conf.qidx,
-					&descq->cmpt_cidx_info);
-			if (ret < 0) {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-
-				ret = -EBUSY;
-				goto func_exit;
-			}
-			ret = queue_pidx_update(descq->xdev,
-					descq->conf.qidx,
-					descq->conf.q_type,
-					&descq->pidx_info);
-			if (ret < 0) {
-				pr_err("%s: Failed to update pidx\n",
-						descq->conf.name);
-				ret = -EBUSY;
-				goto func_exit;
-			}
-			/*
-			 * Memory barrier in update pointers
-			 */
-			wmb();
-		} else {
-			pr_debug("Pointer update for offline queue for %s",
-					descq->conf.name);
-			ret =  -ENODEV;
-		}
-	} else {
-		pr_err("Pointer update for invalid queue for %s",
-					descq->conf.name);
-		ret =  -EINVAL;
-	}
-
-func_exit:
-	unlock_descq(descq);
-	return ret;
-
-}
-
-int qdma_descq_alloc_resource(struct qdma_descq *descq)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct qdma_queue_conf *qconf = &descq->conf;
-	unsigned char is_ul_ext = (qconf->desc_bypass &&
-			qconf->fp_bypass_desc_fill) ? 1 : 0;
-	int rv;
-#ifdef TEST_64B_DESC_BYPASS_FEATURE
-	int i = 0;
-	u8 *desc_bypass;
-	u8 bypass_data[DESC_SZ_64B_BYTES];
-#endif
-	/* descriptor ring */
-	if (descq->conf.q_type != Q_CMPT) {
-		descq->desc = desc_ring_alloc(xdev, descq->conf.rngsz,
-				get_desc_size(descq),
-				get_desc_cmpl_status_size(descq),
-				&descq->desc_bus, &descq->desc_cmpl_status);
-		if (!descq->desc) {
-			pr_err("dev %s, descq %s, sz %u, desc ring OOM.\n",
-				xdev->conf.name, descq->conf.name,
-				descq->conf.rngsz);
-			goto err_out;
-		}
-	}
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-
-		flq->desc = (struct qdma_c2h_desc *)descq->desc;
-		flq->size = descq->conf.rngsz;
-		flq->buf_pg_shift = fls(descq->conf.c2h_bufsz) - 1;
-		flq->buf_pg_mask = (1 << flq->buf_pg_shift) - 1;
-
-		flq->desc_buf_size = get_next_powof2(descq->conf.c2h_bufsz);
-		flq->desc_pg_shift = fls(flq->desc_buf_size) - 1;
-
-		/* These code changes are to accomodate buf_sz
-		 *  of less than 4096
-		 */
-
-		if (flq->desc_pg_shift < PAGE_SHIFT)
-			flq->desc_pg_order = 0;
-		else
-			flq->desc_pg_order = flq->desc_pg_shift - PAGE_SHIFT;
-
-		flq->max_pg_offset = (PAGE_SIZE << flq->desc_pg_order);
-
-		pr_debug("%s: buf_pg_shift = %d, buf_pg_mask = %d, desc_buf_size = %d, desc_pg_shift = %d, flq->desc_pg_order = %d, flq->max_pg_offset = %d",
-				descq->conf.name,
-				flq->buf_pg_shift,
-				flq->buf_pg_mask,
-				flq->desc_buf_size,
-				flq->desc_pg_shift,
-				flq->desc_pg_order,
-				flq->max_pg_offset);
-
-
-		/* freelist / rx buffers */
-		rv = descq_flq_alloc_resource(descq);
-		if (rv < 0) {
-			pr_err("%s: resource allocation failed",
-					__func__);
-			goto err_out;
-		}
-	} else if (is_ul_ext) {
-		int i;
-		unsigned int desc_sz = get_desc_size(descq);
-
-		descq->desc_list = kcalloc(descq->conf.rngsz,
-					   sizeof(struct qdma_q_desc_list),
-					   GFP_KERNEL);
-		if (!descq->desc_list) {
-			pr_err("desc_list allocation failed.OOM");
-			goto err_out;
-		}
-		for (i = 0; i < descq->conf.rngsz; i++) {
-			int next = (i == (descq->conf.rngsz - 1)) ? 0 : (i + 1);
-
-			descq->desc_list[i].desc = descq->desc + (i * desc_sz);
-			descq->desc_list[i].next = &descq->desc_list[next];
-		}
-	}
-
-	if ((descq->conf.st && (descq->conf.q_type == Q_C2H)) ||
-		    (!descq->conf.st && (descq->conf.q_type == Q_CMPT))) {
-
-		descq->color = 1;
-
-		/* writeback ring */
-		descq->desc_cmpt = desc_ring_alloc(xdev,
-					descq->conf.rngsz_cmpt,
-					descq->cmpt_entry_len,
-					sizeof(struct
-					       qdma_c2h_cmpt_cmpl_status),
-					&descq->desc_cmpt_bus,
-					&descq->desc_cmpt_cmpl_status);
-		if (!descq->desc_cmpt) {
-			pr_warn("dev %s, descq %s, sz %u, cmpt ring OOM.\n",
-				xdev->conf.name, descq->conf.name,
-				descq->conf.rngsz_cmpt);
-			goto err_out;
-		}
-		descq->desc_cmpt_cur = descq->desc_cmpt;
-
-	}
-
-	pr_debug("%s: %u/%u, rng %u,%u, desc 0x%p, cmpl status 0x%p.\n",
-		descq->conf.name, descq->conf.qidx, descq->qidx_hw,
-		descq->conf.rngsz, descq->conf.rngsz_cmpt, descq->desc,
-		descq->desc_cmpt);
-
-	/* interrupt vectors */
-	desc_alloc_irq(descq);
-
-	/* Fill in the descriptors with some hard coded value for testing */
-#ifdef TEST_64B_DESC_BYPASS_FEATURE
-	desc_bypass = descq->desc;
-	if (descq->conf.st && (descq->conf.q_type == Q_H2C)) {
-		if (descq->conf.desc_bypass &&
-				(descq->conf.sw_desc_sz == DESC_SZ_64B)) {
-			for (i = 0; i < descq->conf.rngsz; i++) {
-				memset(bypass_data, i+1, DESC_SZ_64B_BYTES);
-				memcpy(&desc_bypass[i*DESC_SZ_64B_BYTES],
-					bypass_data, DESC_SZ_64B_BYTES);
-			}
-		}
-	}
-#endif
-	return 0;
-
-err_out:
-	qdma_descq_free_resource(descq);
-	pr_err("Out of Memory");
-	return -ENOMEM;
-}
-
-void qdma_descq_free_resource(struct qdma_descq *descq)
-{
-	if (!descq)
-		return;
-
-	if (descq->desc) {
-
-		int desc_sz = get_desc_size(descq);
-		int cs_sz = get_desc_cmpl_status_size(descq);
-
-		pr_debug("%s: desc 0x%p, cmpt 0x%p.\n",
-			descq->conf.name, descq->desc, descq->desc_cmpt);
-
-		if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-			descq_flq_free_resource(descq);
-			descq_flq_free_page_resource(descq);
-		} else
-			kfree(descq->desc_list);
-
-		desc_ring_free(descq->xdev, descq->conf.rngsz, desc_sz, cs_sz,
-				descq->desc, descq->desc_bus);
-		descq->desc_cmpl_status = NULL;
-		descq->desc = NULL;
-		descq->desc_bus = 0UL;
-	}
-
-	if (descq->desc_cmpt) {
-		desc_ring_free(descq->xdev, descq->conf.rngsz_cmpt,
-			descq->cmpt_entry_len,
-			sizeof(struct qdma_c2h_cmpt_cmpl_status),
-			descq->desc_cmpt, descq->desc_cmpt_bus);
-
-		descq->desc_cmpt_cmpl_status = NULL;
-		descq->desc_cmpt = NULL;
-		descq->desc_cmpt_bus = 0UL;
-	}
-}
-
-void qdma_descq_config(struct qdma_descq *descq, struct qdma_queue_conf *qconf,
-		 int reconfig)
-{
-	if (!reconfig) {
-		int len;
-
-		memcpy(&descq->conf, qconf, sizeof(struct qdma_queue_conf));
-		/* descq->conf.st = qconf->st;
-		 * descq->conf.c2h = qconf->c2h;
-		 */
-
-		/* qdma[vf]<255>-MM/ST-H2C/C2H-Q[2048] */
-#ifdef __QDMA_VF__
-		len = snprintf(descq->conf.name, QDMA_QUEUE_NAME_MAXLEN,
-				"qdmavf");
-#else
-		len = snprintf(descq->conf.name, QDMA_QUEUE_NAME_MAXLEN,
-				"qdma");
-#endif
-		len += snprintf(descq->conf.name + len,
-			QDMA_QUEUE_NAME_MAXLEN - len,
-			"%05x-%s-%u",
-			descq->xdev->conf.bdf, descq->conf.st ? "ST" : "MM",
-			descq->conf.qidx);
-		descq->conf.name[len] = '\0';
-
-		descq->conf.st = qconf->st;
-		descq->conf.q_type = qconf->q_type;
-
-	} else {
-		descq->conf.desc_rng_sz_idx = qconf->desc_rng_sz_idx;
-		descq->conf.cmpl_rng_sz_idx = qconf->cmpl_rng_sz_idx;
-		descq->conf.c2h_buf_sz_idx = qconf->c2h_buf_sz_idx;
-
-		descq->conf.irq_en = (descq->xdev->conf.qdma_drv_mode !=
-				POLL_MODE) ? 1 : 0;
-		descq->conf.cmpl_en_intr = descq->conf.irq_en;
-		descq->conf.wb_status_en = qconf->wb_status_en;
-		descq->conf.cmpl_status_acc_en = qconf->cmpl_status_acc_en;
-		descq->conf.cmpl_status_pend_chk = qconf->cmpl_status_pend_chk;
-		descq->conf.cmpl_stat_en = qconf->cmpl_stat_en;
-		descq->conf.cmpl_trig_mode = qconf->cmpl_trig_mode;
-		descq->conf.cmpl_timer_idx = qconf->cmpl_timer_idx;
-		descq->conf.fetch_credit = qconf->fetch_credit;
-		descq->conf.cmpl_cnt_th_idx = qconf->cmpl_cnt_th_idx;
-		/* Below check is applicable only for Versal family. */
-		if (descq->xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP)
-			descq->channel = qconf->mm_channel;
-
-		descq->conf.desc_bypass = qconf->desc_bypass;
-		descq->conf.pfetch_bypass = qconf->pfetch_bypass;
-		descq->conf.pfetch_en = qconf->pfetch_en;
-		descq->conf.cmpl_udd_en = qconf->cmpl_udd_en;
-		descq->conf.cmpl_desc_sz = qconf->cmpl_desc_sz;
-		descq->conf.sw_desc_sz = qconf->sw_desc_sz;
-		descq->conf.cmpl_ovf_chk_dis = qconf->cmpl_ovf_chk_dis;
-		descq->conf.adaptive_rx = qconf->adaptive_rx;
-		descq->conf.ping_pong_en = qconf->ping_pong_en;
-		descq->conf.aperture_size = qconf->aperture_size;
-		descq->conf.pidx_acc = qconf->pidx_acc;
-	}
-}
-
-int qdma_descq_config_complete(struct qdma_descq *descq)
-{
-	struct global_csr_conf *csr_info = &descq->xdev->csr_info;
-	struct qdma_queue_conf *qconf = &descq->conf;
-	struct xlnx_dma_dev *xdev = descq->xdev;
-
-	qconf->rngsz = csr_info->ring_sz[qconf->desc_rng_sz_idx] - 1;
-
-	/* <= 2018.2 IP
-	 * make the cmpl ring size bigger if possible to avoid run out of
-	 * cmpl entry while desc. ring still have free entries
-	 */
-	if ((qconf->st && (qconf->q_type == Q_C2H)) ||
-			(!qconf->st && (qconf->q_type == Q_CMPT))) {
-		int i;
-		unsigned int v = csr_info->ring_sz[qconf->cmpl_rng_sz_idx];
-		int best_fit_idx = -1;
-
-		for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-			if (csr_info->ring_sz[i] > v) {
-				if (best_fit_idx < 0)
-					best_fit_idx = i;
-				else if ((best_fit_idx >= 0) &&
-						(csr_info->ring_sz[i] <
-					csr_info->ring_sz[best_fit_idx]))
-					best_fit_idx = i;
-			}
-		}
-
-		if (best_fit_idx >= 0)
-			qconf->cmpl_rng_sz_idx = best_fit_idx;
-
-		qconf->rngsz_cmpt = csr_info->ring_sz[qconf->cmpl_rng_sz_idx] -
-				1;
-		qconf->c2h_bufsz = csr_info->c2h_buf_sz[qconf->c2h_buf_sz_idx];
-		descq->cmpt_cidx_info.irq_en = qconf->cmpl_en_intr;
-		descq->cmpt_cidx_info.trig_mode = qconf->cmpl_trig_mode;
-		descq->cmpt_cidx_info.timer_idx = qconf->cmpl_timer_idx;
-		descq->cmpt_cidx_info.counter_idx = qconf->cmpl_cnt_th_idx;
-		descq->cmpt_cidx_info.wrb_en = qconf->cmpl_stat_en;
-	}
-	if (qconf->st && (qconf->q_type == Q_C2H))
-		descq->pidx_info.irq_en = 0;
-	else
-		descq->pidx_info.irq_en = descq->conf.irq_en;
-
-	/* we can never use the full ring because then cidx would equal pidx
-	 * and thus the ring would be interpreted as empty. Thus max number of
-	 * usable entries is ring_size - 1
-	 */
-	descq->avail = descq->conf.rngsz - 1;
-	descq->pend_list_empty = 1;
-
-	descq->pidx = 0;
-	descq->cidx = 0;
-	descq->cidx_cmpt = 0;
-	descq->pidx_cmpt = 0;
-	descq->credit = 0;
-	descq->work_req_pend = 0;
-
-	/* ST C2H only */
-	if ((qconf->st && (qconf->q_type == Q_C2H)) ||
-			(!qconf->st && (qconf->q_type == Q_CMPT))) {
-		int i, hi_idx, low_idx;
-
-		descq->cmpt_entry_len = 8 << qconf->cmpl_desc_sz;
-
-		pr_debug("%s: cmpl sz %u(%d), udd_en %d.\n",
-			descq->conf.name, descq->cmpt_entry_len,
-			descq->conf.cmpl_desc_sz, descq->conf.cmpl_udd_en);
-		descq->c2h_pend_pkt_moving_avg =
-			csr_info->c2h_cnt_th[descq->conf.cmpl_cnt_th_idx];
-		for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-			if (descq->conf.cmpl_cnt_th_idx ==
-					descq->xdev->sorted_c2h_cntr_idx[i]) {
-				descq->sorted_c2h_cntr_idx = i;
-				break;
-			}
-		}
-		hi_idx = descq->sorted_c2h_cntr_idx + 1;
-		low_idx = descq->sorted_c2h_cntr_idx - 1;
-
-		if (descq->sorted_c2h_cntr_idx ==
-				(QDMA_GLOBAL_CSR_ARRAY_SZ - 1))
-			hi_idx = descq->sorted_c2h_cntr_idx;
-
-		i = xdev->sorted_c2h_cntr_idx[hi_idx];
-
-		descq->c2h_pend_pkt_avg_thr_hi =
-				(descq->c2h_pend_pkt_moving_avg +
-				csr_info->c2h_cnt_th[i]);
-		if (descq->sorted_c2h_cntr_idx == 0)
-			low_idx = 0;
-
-		i = xdev->sorted_c2h_cntr_idx[low_idx];
-
-		descq->c2h_pend_pkt_avg_thr_lo =
-				(descq->c2h_pend_pkt_moving_avg +
-				csr_info->c2h_cnt_th[i]);
-		descq->c2h_pend_pkt_avg_thr_hi >>= 1;
-		descq->c2h_pend_pkt_avg_thr_lo >>= 1;
-		pr_debug("q%u: sorted idx =  %u %u %u", descq->conf.qidx,
-			descq->sorted_c2h_cntr_idx,
-			descq->c2h_pend_pkt_avg_thr_lo,
-			descq->c2h_pend_pkt_avg_thr_hi);
-	}
-
-	return 0;
-}
-
-int qdma_descq_prog_hw(struct qdma_descq *descq)
-{
-	int rv = qdma_descq_context_setup(descq);
-
-	if (rv < 0) {
-		pr_warn("%s failed to program contexts", descq->conf.name);
-		return rv;
-	}
-
-	/* update pidx/cidx */
-	if ((descq->conf.st && (descq->conf.q_type == Q_C2H)) ||
-		(!descq->conf.st && (descq->conf.q_type == Q_CMPT))) {
-		if (!descq->conf.init_pidx_dis) {
-			/* use qdma_q_init_pointers
-			 * for updating the pidx and cidx later
-			 */
-			descq->cmpt_cidx_info.wrb_cidx = 0;
-			rv = queue_cmpt_cidx_update(descq->xdev,
-					descq->conf.qidx,
-					&descq->cmpt_cidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-
-			if (descq->conf.q_type == Q_CMPT)
-				return rv;
-
-			descq->pidx_info.pidx = descq->conf.rngsz - 1;
-			rv = queue_pidx_update(descq->xdev, descq->conf.qidx,
-					descq->conf.q_type, &descq->pidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update pidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-		}
-	}
-
-	return rv;
-}
-
-int qdma_descq_service_cmpl_update(struct qdma_descq *descq, int budget,
-				bool c2h_upd_cmpl)
-{
-	int rv = 0;
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		lock_descq(descq);
-		if (descq->q_state == Q_STATE_ONLINE) {
-			rv = descq_process_completion_st_c2h(descq, budget,
-						c2h_upd_cmpl);
-			if (rv && (rv != -ENODATA))
-				pr_err("Error detected in %s",
-				       descq->conf.name);
-		} else {
-			pr_debug("Invalid q state of %s ", descq->conf.name);
-			rv = -EINVAL;
-		}
-		unlock_descq(descq);
-	} else if ((descq->xdev->conf.qdma_drv_mode == POLL_MODE) ||
-			(descq->xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		lock_descq(descq);
-		if (!descq->proc_req_running) {
-			unlock_descq(descq);
-			qdma_descq_proc_sgt_request(descq);
-		} else {
-			pr_err("Processing previous request\n");
-			unlock_descq(descq);
-		}
-	} else {
-		lock_descq(descq);
-		descq_mm_n_h2c_cmpl_status(descq);
-		if (qdma_work_queue_len(descq) || descq->desc_pend) {
-			unlock_descq(descq);
-			rv = qdma_descq_proc_sgt_request(descq);
-			return rv;
-		}
-		unlock_descq(descq);
-	}
-
-	return rv;
-}
-
-ssize_t qdma_descq_proc_sgt_request(struct qdma_descq *descq)
-{
-	if (!descq->conf.st) /* MM H2C/C2H */
-		return descq_mm_proc_request(descq);
-	else if (descq->conf.st && (descq->conf.q_type == Q_H2C)) {/* ST H2C */
-		if (descq->conf.fp_bypass_desc_fill &&
-			descq->conf.desc_bypass &&
-			descq->xdev->conf.qdma_drv_mode == DIRECT_INTR_MODE)
-			return descq_proc_st_h2c_request_qep(descq);
-		return descq_proc_st_h2c_request(descq);
-	} else	/* ST C2H - should not happen - handled separately */
-		return -EINVAL;
-}
-
-void incr_cmpl_desc_cnt(struct qdma_descq *descq, unsigned int cnt)
-{
-	descq->total_cmpl_descs += cnt;
-	switch ((descq->conf.st << 1) | descq->conf.q_type) {
-	case 0:
-		descq->xdev->total_mm_h2c_pkts += cnt;
-		break;
-	case 1:
-		descq->xdev->total_mm_c2h_pkts += cnt;
-		break;
-	case 2:
-		descq->xdev->total_st_h2c_pkts += cnt;
-		break;
-	case 3:
-		descq->xdev->total_st_c2h_pkts += cnt;
-		break;
-	default:
-		break;
-	}
-}
-
-void qdma_sgt_req_done(struct qdma_descq *descq, struct qdma_sgt_req_cb *cb,
-			int error)
-{
-	struct qdma_request *req = (struct qdma_request *)cb;
-
-	if (unlikely(error))
-		pr_err("req 0x%p, cb 0x%p, fp_done 0x%p done, err %d.\n",
-			req, cb, req->fp_done, error);
-
-	list_del(&cb->list);
-	if (cb->unmap_needed) {
-		sgl_unmap(descq->xdev->conf.pdev, req->sgl, req->sgcnt,
-			(descq->conf.q_type == Q_C2H) ?
-			DMA_FROM_DEVICE : DMA_TO_DEVICE);
-		cb->unmap_needed = 0;
-	}
-	if (req->fp_done) {
-		if ((cb->offset != req->count) &&
-				!(descq->conf.st &&
-				(descq->conf.q_type == Q_C2H))) {
-			pr_info("req 0x%p not completed %u != %u.\n",
-				req, cb->offset, req->count);
-			error = -EINVAL;
-		}
-		cb->status = error;
-		cb->done = 1;
-		req->fp_done(req, cb->offset, error);
-	} else {
-		pr_debug("req 0x%p, cb 0x%p, wake up.\n", req, cb);
-		cb->status = error;
-		cb->done = 1;
-		qdma_waitq_wakeup(&cb->wq);
-	}
-
-	if (!descq->conf.fp_descq_c2h_packet) {
-		if (descq->conf.st && (descq->conf.q_type == Q_C2H))
-			descq->pend_list_empty = (descq->avail == 0);
-		else
-			descq->pend_list_empty = (descq->avail ==
-					(descq->conf.rngsz - 1));
-
-		if (descq->q_stop_wait && descq->pend_list_empty)
-			qdma_waitq_wakeup(&descq->pend_list_wq);
-	} else
-		descq->pend_list_empty = 1;
-}
-
-int qdma_descq_dump_desc(struct qdma_descq *descq, int start,
-			int end, char *buf, int buflen)
-{
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	int desc_sz = get_desc_size(descq);
-	u8 *p = descq->desc + start * desc_sz;
-	struct qdma_sw_sg *fl = (descq->conf.st &&
-				(descq->conf.q_type == Q_C2H)) ?
-				flq->sdesc + start : NULL;
-	int i = start;
-	int len = strlen(buf);
-
-	if (!descq->desc)
-		return 0;
-
-	for (; i < end && i < descq->conf.rngsz; i++, p += desc_sz) {
-		len += snprintf(buf + len, buflen - len,
-					   "%d: 0x%p ", i, p);
-		hex_dump_to_buffer(p, desc_sz,
-				  (desc_sz < DESC_SZ_16B_BYTES) ? 16 : 32,
-				  4, buf + len, buflen - len, 0);
-		len = strlen(buf);
-		if (desc_sz > DESC_SZ_32B_BYTES) {
-			len += snprintf(buf + len, buflen - len, " ");
-			hex_dump_to_buffer(p + DESC_SZ_32B_BYTES, desc_sz,
-					32, 4, buf + len, buflen - len, 0);
-			len = strlen(buf);
-		}
-		if (fl) {
-			len += snprintf(buf + len, buflen - len,
-				" fl pg 0x%p, 0x%llx.\n",
-				fl->pg, fl->dma_addr);
-			fl++;
-		} else
-			buf[len++] = '\n';
-	}
-
-	p = descq->desc_cmpl_status;
-
-	dma_rmb();
-
-	len += snprintf(buf + len, buflen - len, "CMPL STATUS: 0x%p ", p);
-	hex_dump_to_buffer(p, get_desc_cmpl_status_size(descq), 16, 4,
-			buf + len, buflen - len, 0);
-	len = strlen(buf);
-	buf[len++] = '\n';
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		p = page_address(fl->pg);
-		len += snprintf(buf + len, buflen - len, "data 0: 0x%p ", p);
-		hex_dump_to_buffer(p, descq->cmpt_entry_len,
-			(descq->cmpt_entry_len < DESC_SZ_16B_BYTES) ? 16 : 32,
-			4, buf + len,
-			buflen - len, 0);
-		len = strlen(buf);
-		if (descq->cmpt_entry_len > DESC_SZ_32B_BYTES) {
-			len += snprintf(buf + len, buflen - len, " ");
-			hex_dump_to_buffer(p + DESC_SZ_32B_BYTES,
-					descq->cmpt_entry_len, 32, 4,
-					buf + len, buflen - len, 0);
-			len = strlen(buf);
-		}
-		buf[len++] = '\n';
-	}
-
-	return len;
-}
-
-int qdma_descq_dump_cmpt(struct qdma_descq *descq, int start,
-			int end, char *buf, int buflen)
-{
-	uint8_t *cmpt = descq->desc_cmpt;
-	u8 *p;
-	int i = start;
-	int len = strlen(buf);
-	int stride = descq->cmpt_entry_len;
-
-	if (!descq->desc_cmpt)
-		return 0;
-
-	for (cmpt += (start * stride);
-			i < end && i < descq->conf.rngsz_cmpt; i++,
-			cmpt += stride) {
-		len += snprintf(buf + len, buflen - len,
-						"%d: 0x%p ", i, cmpt);
-		hex_dump_to_buffer(cmpt, descq->cmpt_entry_len,
-				32, 4, buf + len, buflen - len, 0);
-		len = strlen(buf);
-		if (descq->cmpt_entry_len > DESC_SZ_32B_BYTES) {
-			len += snprintf(buf + len, buflen - len,
-							" ");
-			hex_dump_to_buffer(cmpt + DESC_SZ_32B_BYTES,
-					   descq->cmpt_entry_len,
-					   32, 4, buf + len, buflen - len, 0);
-			len = strlen(buf);
-		}
-		buf[len++] = '\n';
-	}
-
-	len += snprintf(buf + len, buflen - len,
-			"CMPL STATUS: 0x%p ",
-			descq->desc_cmpt_cmpl_status);
-
-	p = descq->desc_cmpt_cmpl_status;
-	dma_rmb();
-	hex_dump_to_buffer(p, sizeof(struct qdma_c2h_cmpt_cmpl_status),
-			16, 4, buf + len, buflen - len, 0);
-	len = strlen(buf);
-	buf[len++] = '\n';
-
-	return len;
-}
-
-int qdma_descq_dump_state(struct qdma_descq *descq, char *buf, int buflen)
-{
-	char *cur = buf;
-	char *const end = buf + buflen;
-
-	if (!buf || !buflen) {
-		pr_warn("incorrect arguments buf=%p buflen=%d", buf, buflen);
-		return 0;
-	}
-
-	if (descq->conf.q_type != Q_CMPT)
-		cur += snprintf(cur, end - cur, "%s %s ",
-				descq->conf.name,
-				(descq->conf.q_type == Q_C2H) ? "C2H" : "H2C");
-	else
-		cur += snprintf(cur, end - cur, "%s %s ",
-				descq->conf.name, "CMPT");
-	if (cur >= end)
-		goto handle_truncation;
-
-	if (descq->err)
-		cur += snprintf(cur, end - cur, "ERR\n");
-	else
-		cur += snprintf(cur, end - cur, "%s\n",
-					q_state_list[descq->q_state].name);
-
-	if (cur >= end)
-		goto handle_truncation;
-
-	return cur - buf;
-
-handle_truncation:
-	*buf = '\0';
-	return cur - buf;
-}
-
-int qdma_descq_dump(struct qdma_descq *descq, char *buf, int buflen, int detail)
-{
-	char *cur = buf;
-	char *const end = buf + buflen;
-
-	if (!buf || !buflen) {
-		pr_info("%s:%s 0x%x/0x%x, desc sz %u/%u, pidx %u, cidx %u\n",
-			descq->conf.name, descq->err ? "ERR" : "",
-			descq->conf.qidx, descq->qidx_hw, descq->conf.rngsz,
-			descq->avail, descq->pidx, descq->cidx);
-		return 0;
-	}
-
-	cur += qdma_descq_dump_state(descq, cur, end - cur);
-	if (cur >= end)
-		goto handle_truncation;
-
-	if (descq->q_state == Q_STATE_DISABLED)
-		return cur - buf;
-
-	cur += snprintf(cur, end - cur,
-		"\thw_ID %u, thp %s, desc 0x%p/0x%llx, %u\n",
-		descq->qidx_hw,
-		descq->cmplthp ? descq->cmplthp->name : "?",
-		descq->desc, descq->desc_bus, descq->conf.rngsz);
-	if (cur >= end)
-		goto handle_truncation;
-
-	if (descq->conf.st && (descq->conf.q_type == Q_C2H)) {
-		cur += snprintf(cur, end - cur,
-			"\tcmpt desc 0x%p/0x%llx, %u\n",
-			descq->desc_cmpt, descq->desc_cmpt_bus,
-			descq->conf.rngsz_cmpt);
-		if (cur >= end)
-			goto handle_truncation;
-	}
-
-	if (!detail)
-		return cur - buf;
-
-	if (descq->desc_cmpl_status) {
-		u8 *cs = descq->desc_cmpl_status;
-
-		cur += snprintf(cur, end - cur, "\n\tcmpl status: 0x%p, ", cs);
-		if (cur >= end)
-			goto handle_truncation;
-
-		dma_rmb();
-#if KERNEL_VERSION(4, 0, 0) <= LINUX_VERSION_CODE
-		cur += hex_dump_to_buffer(cs,
-					  sizeof(struct qdma_desc_cmpl_status),
-					  16, 4, cur, end - cur, 0);
-#else
-		hex_dump_to_buffer(cs, sizeof(struct qdma_desc_cmpl_status),
-					  16, 4, cur, end - cur, 0);
-		cur += strlen(cur);
-#endif
-		if (cur >= end)
-			goto handle_truncation;
-
-		cur += snprintf(cur, end - cur, "\n");
-		if (cur >= end)
-			goto handle_truncation;
-	}
-	if (descq->desc_cmpt_cmpl_status) {
-		u8 *cs = descq->desc_cmpt_cmpl_status;
-
-		cur += snprintf(cur, end - cur, "\tCMPT CMPL STATUS: 0x%p, ",
-				cs);
-		if (cur >= end)
-			goto handle_truncation;
-
-		dma_rmb();
-#if KERNEL_VERSION(4, 0, 0) <= LINUX_VERSION_CODE
-		cur += hex_dump_to_buffer(cs,
-				sizeof(struct qdma_c2h_cmpt_cmpl_status),
-				16, 4, cur, end - cur, 0);
-#else
-		hex_dump_to_buffer(cs, sizeof(struct qdma_c2h_cmpt_cmpl_status),
-					  16, 4, cur, end - cur, 0);
-		cur += strlen(cur);
-#endif
-		if (cur >= end)
-			goto handle_truncation;
-
-		cur += snprintf(cur, end - cur, "\n");
-		if (cur >= end)
-			goto handle_truncation;
-	}
-
-	return cur - buf;
-
-handle_truncation:
-	*buf = '\0';
-	return cur - buf;
-}
-
-int qdma_queue_avail_desc(unsigned long dev_hndl, unsigned long id)
-{
-	struct qdma_descq *descq = qdma_device_get_descq_by_id(
-					(struct xlnx_dma_dev *)dev_hndl,
-					id, NULL, 0, 1);
-	int avail;
-
-	if (!descq) {
-		pr_err("Invalid qid: %ld", id);
-		return -EINVAL;
-	}
-
-	lock_descq(descq);
-	avail = descq->avail;
-	unlock_descq(descq);
-
-	return avail;
-}
-
-#ifdef ERR_DEBUG
-int qdma_queue_set_err_induction(unsigned long dev_hndl, unsigned long id,
-			u32 err, char *buf, int buflen)
-{
-	struct qdma_descq *descq = qdma_device_get_descq_by_id(
-					(struct xlnx_dma_dev *)dev_hndl,
-					id, buf, buflen, 1);
-	unsigned int err_en = (err >> 31);
-	unsigned int err_no = (err & 0x7FFFFFFF);
-
-	if (!descq) {
-		pr_err("Invalid qid: %ld", id);
-		return -EINVAL;
-	}
-
-	if (err_no < sb_mi_h2c0_dat) {
-		descq->induce_err &= ~(1 << err_no);
-		descq->induce_err |= (err_en << err_no);
-	} else {
-		descq->ecc_err &= ~(1 << (err_no - sb_mi_h2c0_dat));
-		descq->ecc_err |= (err_en << (err_no - sb_mi_h2c0_dat));
-	}
-	pr_info("Errs enabled = [QDMA]: 0x%08x 0x%08x\n [ECC]: 0x%08x 0x%08x",
-		(u32)(descq->induce_err >> 32),
-		(u32)(descq->induce_err & 0xFFFFFFFF),
-		(u32)(descq->ecc_err >> 32),
-		(u32)(descq->ecc_err & 0xFFFFFFFF));
-
-	return 0;
-}
-#endif
-
-int qdma_queue_packet_write(unsigned long dev_hndl, unsigned long id,
-				struct qdma_request *req)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_sgt_req_cb *cb;
-	int rv;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (unlikely(!xdev)) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (unlikely(xdev_check_hndl(__func__,
-				xdev->conf.pdev, dev_hndl) < 0)) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (unlikely(!req)) {
-		pr_err("req is NULL");
-		return -EINVAL;
-	}
-
-	cb = qdma_req_cb_get(req);
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 0);
-	if (unlikely(!descq)) {
-		pr_err("Invalid qid: %ld", id);
-		return -EINVAL;
-	}
-
-	if (unlikely(!descq->conf.st || (descq->conf.q_type == Q_C2H))) {
-		pr_err("%s: st %d, type %d.\n",
-			descq->conf.name, descq->conf.st, descq->conf.q_type);
-		return -EINVAL;
-	}
-
-	memset(cb, 0, QDMA_REQ_OPAQUE_SIZE);
-	qdma_waitq_init(&cb->wq);
-	qdma_work_queue_add(descq, cb);
-
-	if (!req->dma_mapped) {
-		rv = sgl_map(descq->xdev->conf.pdev, req->sgl, req->sgcnt,
-				DMA_TO_DEVICE);
-		if (rv < 0) {
-			pr_err("%s map sgl %u failed, %u.\n",
-				descq->conf.name, req->sgcnt, req->count);
-			goto unmap_sgl;
-		}
-		cb->unmap_needed = 1;
-	}
-
-	if (!req->check_qstate_disabled) {
-		lock_descq(descq);
-		if (descq->q_state != Q_STATE_ONLINE) {
-			unlock_descq(descq);
-			pr_err("%s descq %s NOT online.\n",
-				descq->xdev->conf.name, descq->conf.name);
-			rv = -EINVAL;
-			goto unmap_sgl;
-		}
-		unlock_descq(descq);
-	}
-
-	qdma_descq_proc_sgt_request(descq);
-
-
-	pr_debug("%s: cb 0x%p submitted for bytes %u.\n",
-					descq->conf.name, cb, req->count);
-
-	return req->count;
-
-unmap_sgl:
-	if (cb->unmap_needed)
-		sgl_unmap(descq->xdev->conf.pdev, req->sgl, req->sgcnt,
-			DMA_TO_DEVICE);
-	return rv;
-}
-
-int qdma_descq_get_cmpt_udd(unsigned long dev_hndl, unsigned long id,
-		char *buf, int buflen)
-{
-	uint8_t *cmpt;
-	uint8_t i = 0;
-	int len = 0;
-	int print_len = 0;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq = NULL;
-	struct qdma_c2h_cmpt_cmpl_status *cs;
-
-	if (!buf || !buflen || !xdev) {
-		pr_err("Invalid bud:%p, buflen:%d", buf, buflen);
-		return -EINVAL;
-	}
-
-
-	descq = qdma_device_get_descq_by_id(xdev, id, buf, buflen, 1);
-
-	if (!descq) {
-		pr_err("Invalid qid: %ld", id);
-		return -EINVAL;
-	}
-
-	cs = (struct qdma_c2h_cmpt_cmpl_status *)
-						descq->desc_cmpt_cmpl_status;
-
-	cmpt = descq->desc_cmpt + ((cs->pidx - 1) * descq->cmpt_entry_len);
-
-	/*
-	 * Ignoring the first 4 bits of the completion entry as they represent
-	 * the error and color bits.
-	 * TODO: May need to change the masking logic and move that in thegtest,
-	 * as error and color bit positions may change in the future releases.
-	 */
-	for (i = 0; i < descq->cmpt_entry_len; i++) {
-		if (buf && buflen) {
-			if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP)
-					&& xdev->version_info.device_type ==
-					QDMA_DEVICE_VERSAL_CPM4) {
-				if (i <= 1)
-					continue;
-				else if (i == 2)
-					print_len = snprintf(buf + len, buflen,
-							"%02x",
-							(0xF0 & cmpt[i]));
-				else
-					print_len = snprintf(buf + len, buflen,
-							"%02x",
-							cmpt[i]);
-			} else {
-				if (i == 0)
-					print_len = snprintf(buf + len, buflen,
-							"%02x",
-							(cmpt[i] & 0xF0));
-				else
-					print_len = snprintf(buf + len, buflen,
-							"%02x",
-							cmpt[i]);
-			}
-
-		}
-		buflen -= print_len;
-		len += print_len;
-	}
-	buf[len] = '\0';
-
-	return 0;
-}
-
-static int qdma_descq_read_cmpt(struct qdma_descq *descq,
-				u32 num_entries, u8 *cmpt_data)
-{
-	uint8_t *cmpt;
-	int i = 0;
-	int stride = descq->cmpt_entry_len;
-	u8 *temp = cmpt_data;
-
-	if (!descq->desc_cmpt)
-		return 0;
-
-	lock_descq(descq);
-	cmpt = descq->desc_cmpt + (descq->cidx_cmpt * stride);
-	for (i = 0; i < num_entries;
-			i++, cmpt += stride, cmpt_data += stride) {
-		memcpy(cmpt_data, cmpt, stride);
-	}
-	*(temp) = (*(temp) & 0xF0);
-	unlock_descq(descq);
-
-	return i;
-}
-
-int qdma_descq_read_cmpt_data(unsigned long dev_hndl, unsigned long id,
-				u32 *num_entries,  u8 **cmpt_entries,
-				char *buf, int buflen)
-{
-	struct qdma_descq *descq = qdma_device_get_descq_by_id(
-					(struct xlnx_dma_dev *)dev_hndl,
-					id, buf, buflen, 1);
-	struct qdma_c2h_cmpt_cmpl_status *cs = NULL;
-	unsigned int pidx_cmpt = 0;
-	unsigned int cidx_cmpt = 0;
-	int  rv = 0;
-	u32 pend = 0;
-
-	if (!descq) {
-		pr_err("Invalid qid, qid = %ld", id);
-		return -EINVAL;
-	}
-
-	if (!buf || !buflen) {
-		pr_err("Invalid buf:%p, buflen:%d", buf, buflen);
-		return -EINVAL;
-	}
-
-	if (descq->conf.st) {
-		pr_err("Not supported for ST mode");
-		rv = -EINVAL;
-		return rv;
-	}
-
-	lock_descq(descq);
-	cs = (struct qdma_c2h_cmpt_cmpl_status *)
-				descq->desc_cmpt_cmpl_status;
-	cidx_cmpt = descq->cidx_cmpt;
-	pidx_cmpt = cs->pidx;
-	unlock_descq(descq);
-	pend = ring_idx_delta(pidx_cmpt,
-			      cidx_cmpt,
-				descq->conf.rngsz_cmpt);
-	pr_debug("ringsz %d, pend = %d, cs->pidx = %d cs->cidx = %d, descq->cidx_cmpt = %d, descq->pidx_cmpt = %d",
-			descq->conf.rngsz_cmpt, pend, cs->pidx, cs->cidx,
-				    cidx_cmpt,
-				    pidx_cmpt);
-	*num_entries = min(pend, descq->conf.rngsz_cmpt);
-
-	if (!pend) {
-		int l = 0;
-
-		pr_debug("No pending cmpt entries");
-		/* SW work around where next interrupt could be missed when
-		 * there are no entries as of now
-		 */
-		if (descq->xdev->conf.qdma_drv_mode != POLL_MODE) {
-			lock_descq(descq);
-			descq->cmpt_cidx_info.wrb_cidx = cidx_cmpt;
-			unlock_descq(descq);
-			rv = queue_cmpt_cidx_update(descq->xdev,
-					descq->conf.qidx,
-					&descq->cmpt_cidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-
-		}
-
-		l = strlen(buf);
-
-		l += snprintf(buf + l, buflen,
-			"%s no pending entries in cmpt ring\n",
-			descq->conf.name);
-		buf[l] = '\0';
-		*num_entries = 0;
-		return 0;
-	}
-
-	if (*num_entries > 0) {
-		/** Note: cmpt_entries will be freed by caller in nl.c
-		 *  do not free it here
-		 */
-		*cmpt_entries = kzalloc((*num_entries * descq->cmpt_entry_len),
-								GFP_KERNEL);
-		if (!*cmpt_entries) {
-			int l = snprintf(buf, buflen, "OOM for cmpt_entries\n");
-
-			buf[l] = '\0';
-			*num_entries = 0;
-			return 0;
-		}
-
-		qdma_descq_read_cmpt(descq, *num_entries, *cmpt_entries);
-		lock_descq(descq);
-		descq->cidx_cmpt += *num_entries;
-		descq->cmpt_cidx_info.wrb_cidx = descq->cidx_cmpt;
-		unlock_descq(descq);
-		rv = queue_cmpt_cidx_update(descq->xdev,
-				descq->conf.qidx,
-				&descq->cmpt_cidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to update cmpt cidx\n",
-				  descq->conf.name);
-			return -EINVAL;
-		}
-	}
-
-	return rv;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_descq.h b/QDMA/linux-kernel/driver/libqdma/qdma_descq.h
deleted file mode 100755
index bb1ba36..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_descq.h
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_DESCQ_H__
-#define __QDMA_DESCQ_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma descq processing
- *
- */
-#include <linux/spinlock_types.h>
-#include <linux/types.h>
-#include "qdma_compat.h"
-#include "libqdma_export.h"
-#include "qdma_regs.h"
-#ifdef ERR_DEBUG
-#include "qdma_nl.h"
-#endif
-#include "qdma_ul_ext.h"
-
-/**
- * struct q_state_name - Structure to hold the q state and name
- *
- * A queue can be in one of these states
- *
- */
-struct q_state_name {
-	/** @q_state : Current state of the queue. */
-	enum q_state_t q_state;
-	/** @state     : Q state Name */
-	char name[20];
-};
-
-extern struct q_state_name q_state_list[];
-
-#define QDMA_FLQ_SIZE 124
-
-/**
- * @struct - qdma_descq
- * @brief	qdma software descriptor book keeping fields
- */
-struct qdma_descq {
-	/** qdma queue configuration */
-	struct qdma_queue_conf conf;
-	/** lock to protect access to software descriptor */
-	spinlock_t lock;
-	/** pointer to dma device */
-	struct xlnx_dma_dev *xdev;
-	/** number of channels */
-	u8 channel;
-	/** flag to indicate error on the Q, in halted state */
-	u8 err:1;
-	/** color bit for the queue */
-	u8 color:1;
-	/** cpu attached */
-	u8 cpu_assigned:1;
-	/** state of the proc req */
-	u8 proc_req_running;
-	/* rx_time in CPU timestamp of ping_pong pkt for
-	 * measuring H2C-C2H loopback latency
-	 */
-	u64 ping_pong_rx_time;
-	/* tx_time in CPU timestamp of ping_pong pkt for
-	 * measuring H2C-C2H loopback latency
-	 */
-	u64 ping_pong_tx_time;
-	/** Indicate q state */
-	enum q_state_t q_state;
-	/** hw qidx associated for this queue */
-	unsigned int qidx_hw;
-	/** cpu attached to intr_work */
-	unsigned int intr_work_cpu;
-	/** @q_hndl: Q handle */
-	unsigned long q_hndl;
-	/** queue handler */
-	struct work_struct work;
-	/** interrupt list */
-	struct list_head intr_list;
-	/** leagcy interrupt list */
-	struct list_head legacy_intr_q_list;
-	/** interrupt id associated for this queue */
-	int intr_id;
-	/** work  list for the queue */
-	struct list_head work_list;
-	/** current req count */
-	unsigned int work_req_pend;
-	/* lock to synchonize  work queue access*/
-	spinlock_t work_list_lock;
-	/** write back therad list */
-	struct qdma_kthread *cmplthp;
-	/** completion status thread list for the queue */
-	struct list_head cmplthp_list;
-	/** pending qork thread list */
-	struct list_head pend_list;
-	/** wait queue for pending list clear */
-	qdma_wait_queue pend_list_wq;
-	/** pending list empty count */
-	unsigned int pend_list_empty;
-	/* flag to indicate wwaiting for transfers to complete before q stop*/
-	unsigned int q_stop_wait;
-	/** availed count */
-	unsigned int avail;
-	/** current req count */
-	unsigned int pend_req_desc;
-	/** current producer index */
-	unsigned int pidx;
-	/** current consumer index */
-	unsigned int cidx;
-	/** number of descrtors yet to be processed*/
-	unsigned int credit;
-	/** desctor to be processed*/
-	u8 *desc;
-	/** desctor dma address*/
-	dma_addr_t desc_bus;
-	/** desctor writeback*/
-	u8 *desc_cmpl_status;
-
-	/* ST C2H */
-	/** programming order of the data in ST c2h mode*/
-	unsigned char fl_pg_order;
-	/** cmpt entry length*/
-	unsigned char cmpt_entry_len;
-	/** 2 bits reserved*/
-	unsigned char rsvd[2];
-	/** qdma free list q*/
-	unsigned char flq[QDMA_FLQ_SIZE];
-	/**total # of udd outstanding */
-	unsigned int udd_cnt;
-	/** packet count/number of packets to be processed*/
-	unsigned int pkt_cnt;
-	/** packet data length */
-	unsigned int pkt_dlen;
-	/** pidx of the completion entry */
-	unsigned int pidx_cmpt;
-	/** completion cidx */
-	unsigned int cidx_cmpt;
-	/** number of packets processed in q */
-	unsigned long long total_cmpl_descs;
-	/** descriptor writeback, data type depends on the cmpt_entry_len */
-	void *desc_cmpt_cur;
-	/* descriptor list to be provided for ul extenstion call */
-	struct qdma_q_desc_list *desc_list;
-	/** pointer to completion entry */
-	u8 *desc_cmpt;
-	/** descriptor dma bus address*/
-	dma_addr_t desc_cmpt_bus;
-	/** descriptor writeback dma bus address*/
-	u8 *desc_cmpt_cmpl_status;
-	/** @desc_pend: pending desc to be updated processed by hw */
-	unsigned char desc_pend;
-	/** pidx info to be written to PIDX regiser*/
-	struct qdma_q_pidx_reg_info pidx_info;
-	/** cmpt cidx info to be written to CMPT CIDX regiser*/
-	struct qdma_q_cmpt_cidx_reg_info cmpt_cidx_info;
-	/** @c2h_pend_pkt_moving_avg: average rate of packets received */
-	unsigned int c2h_pend_pkt_moving_avg;
-	/** @c2h_pend_pkt_avg_thr_hi: higher average threshold */
-	unsigned int c2h_pend_pkt_avg_thr_hi;
-	/** @c2h_pend_pkt_avg_thr_lo: lower average threshold */
-	unsigned int c2h_pend_pkt_avg_thr_lo;
-	/** @sorted_c2h_cntr_idx: sorted c2h counter index */
-	unsigned char sorted_c2h_cntr_idx;
-	/** @c2h_cntr_monitor_cnt: c2h counter stagnant monitor count */
-	unsigned char c2h_cntr_monitor_cnt;
-#ifdef ERR_DEBUG
-	/** flag to indicate error inducing */
-	u64 induce_err;
-	u64 ecc_err;
-#endif
-#ifdef DEBUGFS
-	/** debugfs queue index root */
-	struct dentry *dbgfs_qidx_root;
-	/** debugfs queue root */
-	struct dentry *dbgfs_queue_root;
-	/** debugfs cmpt queue root */
-	struct dentry *dbgfs_cmpt_queue_root;
-#endif
-};
-#ifdef DEBUG_THREADS
-#define lock_descq(descq)	\
-	do { \
-		pr_debug("locking descq %s ...\n", (descq)->conf.name); \
-		spin_lock_bh(&(descq)->lock); \
-	} while (0)
-
-#define unlock_descq(descq) \
-	do { \
-		pr_debug("unlock descq %s ...\n", (descq)->conf.name); \
-		spin_unlock_bh(&(descq)->lock); \
-	} while (0)
-#else
-/** macro to lock descq */
-#define lock_descq(descq)	spin_lock_bh(&(descq)->lock)
-/** macro to un lock descq */
-#define unlock_descq(descq)	spin_unlock_bh(&(descq)->lock)
-#endif
-
-static inline unsigned int ring_idx_delta(unsigned int new, unsigned int old,
-					unsigned int rngsz)
-{
-	return new >= old ? (new - old) : new + (rngsz - old);
-}
-
-static inline unsigned int ring_idx_incr(unsigned int idx, unsigned int cnt,
-					unsigned int rngsz)
-{
-	idx += cnt;
-	return idx >= rngsz ? idx - rngsz : idx;
-}
-
-static inline unsigned int ring_idx_decr(unsigned int idx, unsigned int cnt,
-					unsigned int rngsz)
-{
-	return idx >= cnt ?  idx - cnt : rngsz - (cnt - idx);
-}
-
-/*****************************************************************************/
-/**
- * qdma_descq_init() - initialize the sw descq entry
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	idx_hw:		hw queue index
- * @param[in]	idx_sw:		sw queue index
- *
- * @return	none
- *****************************************************************************/
-void qdma_descq_init(struct qdma_descq *descq, struct xlnx_dma_dev *xdev,
-			int idx_hw, int idx_sw);
-
-/*****************************************************************************/
-/**
- * qdma_descq_config() - configure the sw descq entry
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	qconf:		queue configuration
- * @param[in]	reconfig:	flag to indicate whether to refig the sw descq
- *
- * @return	none
- *****************************************************************************/
-void qdma_descq_config(struct qdma_descq *descq, struct qdma_queue_conf *qconf,
-		 int reconfig);
-
-/*****************************************************************************/
-/**
- * qdma_descq_config_complete() - initialize the descq with default values
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_config_complete(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_alloc_resource() - allocate the resources for a request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_alloc_resource(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_free_resource() - free up the resources assigned to a request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void qdma_descq_free_resource(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_prog_hw() - program the hw descriptors
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_prog_hw(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_context_cleanup() - clean up the queue context
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_context_cleanup(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_descq_service_cmpl_update() - process completion data for the request
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	budget:		number of descriptors to process
- * @param[in]	c2h_upd_cmpl:	C2H only: if update completion needed
- *
- * @return	0 - success, < 0 for failure
- *****************************************************************************/
-int qdma_descq_service_cmpl_update(struct qdma_descq *descq, int budget,
-			bool c2h_upd_cmpl);
-
-/*****************************************************************************/
-/**
- * qdma_descq_dump() - dump the queue sw desciptor data
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	detail:		indicate whether full details or abstact details
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_dump(struct qdma_descq *descq,
-					char *buf, int buflen, int detail);
-
-/*****************************************************************************/
-/**
- * qdma_descq_dump_desc() - dump the queue hw descriptors
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	start:		start descriptor index
- * @param[in]	end:		end descriptor index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_dump_desc(struct qdma_descq *descq, int start, int end,
-		char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * qdma_descq_dump_state() - dump the queue desciptor state
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_dump_state(struct qdma_descq *descq, char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * intr_cidx_update() - update the interrupt cidx
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	sw_cidx:	sw cidx
- * @param[in]	ring_index:	ring index
- *
- *****************************************************************************/
-void intr_cidx_update(struct qdma_descq *descq, unsigned int sw_cidx,
-		      int ring_index);
-
-/*****************************************************************************/
-/**
- * incr_cmpl_desc_cnt() - update the interrupt cidx
- *
- * @param[in]   descq:      pointer to qdma_descq
- *
- *****************************************************************************/
-void incr_cmpl_desc_cnt(struct qdma_descq *descq, unsigned int cnt);
-
-/**
- * @struct - qdma_sgt_req_cb
- * @brief	qdma_sgt_req_cb fits in qdma_request.opaque
- */
-struct qdma_sgt_req_cb {
-	/** qdma read/write request list*/
-	struct list_head list;
-	/** request wait queue */
-	qdma_wait_queue wq;
-	/** number of descriptors to proccess*/
-	unsigned int desc_nr;
-	/** offset in the page*/
-	unsigned int offset;
-	/** offset in the scatter gather list*/
-	unsigned int sg_offset;
-	/** next sg to be processed */
-	void *sg;
-	/** scatter gather ebtry index*/
-	unsigned int sg_idx;
-	/** number of data byte not yet proccessed*/
-	unsigned int left;
-	/** status of the request*/
-	int status;
-	/** indicates whether request processing is done or not*/
-	u8 done;
-	/** indicates whether to unmap the kernel pages*/
-	u8 unmap_needed:1;
-};
-
-/** macro to get the request call back data */
-#define qdma_req_cb_get(req)	(struct qdma_sgt_req_cb *)((req)->opaque)
-
-/*****************************************************************************/
-/**
- * qdma_descq_proc_sgt_request() - handler to process the qdma
- *				read/write request
- *
- * @param[in]	descq:	pointer to qdma_descq
- * @param[in]	cb:		scatter gather list call back data
- *
- * @return	size of the request
- *****************************************************************************/
-ssize_t qdma_descq_proc_sgt_request(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_sgt_req_done() - handler to track the progress of the request
- *
- * @param[in]	descq:	pointer to qdma_descq
- * @param[in]	cb:		scatter gather list call back data
- * @param[out]	error:	indicates the error status
- *
- * @return	none
- *****************************************************************************/
-void qdma_sgt_req_done(struct qdma_descq *descq, struct qdma_sgt_req_cb *cb,
-			int error);
-
-/*****************************************************************************/
-/**
- * sgl_map() - handler to map the scatter gather list to kernel pages
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	sgl:	scatter gather list
- * @param[in]	sgcnt:	number of entries in scatter gather list
- * @param[in]	dir:	direction of the request
- *
- * @return	none
- *****************************************************************************/
-int sgl_map(struct pci_dev *pdev, struct qdma_sw_sg *sgl, unsigned int sgcnt,
-		enum dma_data_direction dir);
-
-/*****************************************************************************/
-/**
- * sgl_unmap() - handler to unmap the scatter gather list and free
- *				the kernel pages
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	sg:		scatter gather list
- * @param[in]	sgcnt:	number of entries in scatter gather list
- * @param[in]	dir:	direction of the request
- *
- * @return	none
- *****************************************************************************/
-void sgl_unmap(struct pci_dev *pdev, struct qdma_sw_sg *sg, unsigned int sgcnt,
-		enum dma_data_direction dir);
-
-/*****************************************************************************/
-/**
- * descq_flq_free_resource() - handler to free the pages for the request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void descq_flq_free_resource(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * descq_flq_free_page_resource() - handler to free the pages for the request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void descq_flq_free_page_resource(struct qdma_descq *descq);
-int rcv_udd_only(struct qdma_descq *descq, struct qdma_ul_cmpt_info *cmpl);
-int parse_cmpl_entry(struct qdma_descq *descq, struct qdma_ul_cmpt_info *cmpl);
-void cmpt_next(struct qdma_descq *descq);
-
-/* CIDX/PIDX update macros */
-#ifndef __QDMA_VF__
-#define queue_pidx_update(xdev, qid, is_c2h, pidx_info) \
-	(xdev->hw.qdma_queue_pidx_update(xdev, QDMA_DEV_PF, qid, is_c2h,\
-					pidx_info))
-#else
-#define queue_pidx_update(xdev, qid, is_c2h, pidx_info) \
-	(xdev->hw.qdma_queue_pidx_update(xdev, QDMA_DEV_VF, qid, is_c2h, \
-					pidx_info))
-#endif
-
-#ifndef __QDMA_VF__
-#define queue_cmpt_cidx_update(xdev, qid, cmpt_cidx_info) \
-	(xdev->hw.qdma_queue_cmpt_cidx_update(xdev, QDMA_DEV_PF, qid, \
-						cmpt_cidx_info))
-#else
-#define queue_cmpt_cidx_update(xdev, qid, cmpt_cidx_info) \
-	(xdev->hw.qdma_queue_cmpt_cidx_update(xdev, QDMA_DEV_VF, qid, \
-					     cmpt_cidx_info))
-#endif
-
-#ifndef __QDMA_VF__
-#define queue_cmpt_cidx_read(xdev, qid, cmpt_cidx_info) \
-	(xdev->hw.qdma_queue_cmpt_cidx_read(xdev, QDMA_DEV_PF, qid, \
-					   cmpt_cidx_info))
-#else
-#define queue_cmpt_cidx_read(xdev, qid, cmpt_cidx_info) \
-	(xdev->hw.qdma_queue_cmpt_cidx_read(xdev, QDMA_DEV_VF, qid, \
-					   cmpt_cidx_info))
-#endif
-
-#ifndef __QDMA_VF__
-#define queue_intr_cidx_update(xdev, qid, intr_cidx_info) \
-	(xdev->hw.qdma_queue_intr_cidx_update(xdev, QDMA_DEV_PF, qid, \
-						intr_cidx_info))
-#else
-#define queue_intr_cidx_update(xdev, qid, intr_cidx_info) \
-	(xdev->hw.qdma_queue_intr_cidx_update(xdev, QDMA_DEV_VF, qid, \
-						intr_cidx_info))
-#endif
-
-u64 rdtsc_gettime(void);
-static inline unsigned int get_next_powof2(unsigned int value)
-{
-	unsigned int num_bits, mask, f_value;
-
-	num_bits = fls(value) - 1;
-	mask = (1 << num_bits) - 1;
-	f_value = ((value + mask) >> num_bits) << num_bits;
-
-	return f_value;
-}
-
-//#define QDMA_SPIN_LOCK_GRANULAR
-
-static inline void qdma_work_queue_add(struct qdma_descq *descq,
-				struct qdma_sgt_req_cb *cb)
-{
-#ifdef QDMA_SPIN_LOCK_GRANULAR
-	spin_lock_bh(&descq->work_list_lock);
-	list_add_tail(&cb->list, &descq->work_list);
-	descq->work_req_pend++;
-	spin_unlock_bh(&descq->work_list_lock);
-#else
-	list_add_tail(&cb->list, &descq->work_list);
-	descq->work_req_pend++;
-#endif
-}
-
-static inline void qdma_work_queue_del(struct qdma_descq *descq,
-				struct qdma_sgt_req_cb *cb)
-{
-#ifdef QDMA_SPIN_LOCK_GRANULAR
-	spin_lock_bh(&descq->work_list_lock);
-	list_del(&cb->list);
-	descq->work_req_pend--;
-	spin_unlock_bh(&descq->work_list_lock);
-#else
-	list_del(&cb->list);
-	descq->work_req_pend--;
-#endif
-}
-
-static inline int qdma_work_queue_len(struct qdma_descq *descq)
-{
-	int count = 0;
-
-#ifdef QDMA_SPIN_LOCK_GRANULAR
-	spin_lock_bh(&descq->work_list_lock);
-	count = descq->work_req_pend;
-	spin_unlock_bh(&descq->work_list_lock);
-#else
-	count = descq->work_req_pend;
-#endif
-	return count;
-}
-
-static inline struct qdma_request *qdma_work_queue_first_entry(
-			struct qdma_descq *descq)
-{
-	struct qdma_request *req;
-#ifdef QDMA_SPIN_LOCK_GRANULAR
-	spin_lock_bh(&descq->work_list_lock);
-	req = (struct qdma_request *) list_first_entry(&descq->work_list,
-					struct qdma_sgt_req_cb, list);
-	spin_unlock_bh(&descq->work_list_lock);
-#else
-	req = (struct qdma_request *) list_first_entry(&descq->work_list,
-						struct qdma_sgt_req_cb, list);
-#endif
-	return req;
-}
-#endif /* ifndef __QDMA_DESCQ_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_device.c b/QDMA/linux-kernel/driver/libqdma/qdma_device.c
deleted file mode 100755
index fcf8058..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_device.c
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/module.h>
-#include <linux/sched.h>
-#include <linux/gfp.h>
-#include "qdma_device.h"
-#include "qdma_context.h"
-#include "qdma_descq.h"
-#include "qdma_intr.h"
-#include "qdma_regs.h"
-#include "qdma_mbox.h"
-#include "qdma_access_common.h"
-#include "qdma_resource_mgmt.h"
-
-#ifdef __QDMA_VF__
-static int device_set_qrange(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-	struct mbox_msg *m;
-	int rv = 0;
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return -EINVAL;
-	}
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_fmap_prog(xdev->func_id, qdev->qmax,
-				       (int)qdev->qbase,
-					m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		if (rv != -ENODEV)
-			pr_info("%s set q range (fmap) failed %d.\n",
-				xdev->conf.name, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_response_status(m->raw);
-	if (rv < 0) {
-		pr_err("mbox_vf_response_status failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-	pr_debug("%s, func id %u/%u, Q 0x%x + 0x%x.\n",
-		xdev->conf.name, xdev->func_id, xdev->func_id_parent,
-		qdev->qbase, qdev->qmax);
-
-	if (!rv)
-		qdev->init_qrange = 1;
-
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-int device_set_qconf(struct xlnx_dma_dev *xdev, int *qmax, int *qbase)
-{
-	struct mbox_msg *m;
-	int rv = 0;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_qreq(xdev->func_id,
-				  (uint16_t)*qmax & 0xFFFF, *qbase, m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_info("%s set q range (qconf) failed %d.\n",
-			xdev->conf.name, rv);
-		goto err_out;
-	}
-
-	rv = qdma_mbox_vf_qinfo_get(m->raw, qbase, (uint16_t *)qmax);
-	if (rv < 0) {
-		pr_err("mbox_vf_qinfo_get  failed, err = %d", rv);
-		rv = -EINVAL;
-	}
-err_out:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-#else
-static int device_set_qrange(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-	struct qdma_fmap_cfg fmap;
-	int rv = 0;
-
-	memset(&fmap, 0, sizeof(struct qdma_fmap_cfg));
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return -EINVAL;
-	}
-
-	fmap.qmax = qdev->qmax;
-	fmap.qbase = qdev->qbase;
-
-	rv = xdev->hw.qdma_fmap_conf(xdev, xdev->func_id, &fmap,
-				     QDMA_HW_ACCESS_WRITE);
-	if (rv < 0) {
-		pr_err("FMAP write failed, err %d\n", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	qdev->init_qrange = 1;
-
-	pr_debug("%s, func id %u, Q 0x%x + 0x%x.\n",
-		xdev->conf.name, xdev->func_id, qdev->qbase, qdev->qmax);
-
-	return rv;
-}
-#endif /* ifndef __QDMA_VF__ */
-
-int qdma_device_interrupt_setup(struct xlnx_dma_dev *xdev)
-{
-	int rv = 0;
-
-	if ((xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(xdev->conf.qdma_drv_mode == AUTO_MODE)) {
-		rv = intr_ring_setup(xdev);
-		if (rv) {
-			pr_err("Failed to setup intr ring, err %d", rv);
-			return -EINVAL;
-		}
-
-		if (xdev->intr_coal_list != NULL) {
-			rv = qdma_intr_context_setup(xdev);
-			if (rv)
-				return rv;
-		} else {
-			pr_info("dev %s intr vec[%d] >= queues[%d], No aggregation\n",
-				dev_name(&xdev->conf.pdev->dev),
-				(xdev->num_vecs - xdev->dvec_start_idx),
-				xdev->conf.qsets_max);
-			pr_warn("Changing the system mode to direct interrupt mode");
-			xdev->conf.qdma_drv_mode = DIRECT_INTR_MODE;
-		}
-	}
-
-
-#ifndef __QDMA_VF__
-	if (((xdev->conf.qdma_drv_mode != POLL_MODE) &&
-			(xdev->conf.qdma_drv_mode != LEGACY_INTR_MODE)) &&
-			xdev->conf.master_pf) {
-		rv = qdma_err_intr_setup(xdev);
-		if (rv < 0) {
-			pr_err("Failed to setup err intr, err %d", rv);
-			return -EINVAL;
-		}
-
-		rv = xdev->hw.qdma_hw_error_enable(xdev,
-				xdev->hw.qdma_max_errors);
-		if (rv < 0) {
-			pr_err("Failed to enable error interrupt, err = %d",
-					rv);
-			return -EINVAL;
-		}
-
-		rv = xdev->hw.qdma_hw_error_intr_rearm(xdev);
-		if (rv < 0) {
-			pr_err("Failed to rearm error interrupt with error = %d",
-						rv);
-			return -EINVAL;
-		}
-	}
-#endif
-	return rv;
-}
-
-void qdma_device_interrupt_cleanup(struct xlnx_dma_dev *xdev)
-{
-	if (xdev->intr_coal_list)
-		intr_ring_teardown(xdev);
-}
-
-int qdma_device_prep_q_resource(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-	int rv = 0;
-
-	if (qdev->init_qrange)
-		goto done;
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (rv < 0)
-		goto done;
-
-	rv = device_set_qrange(xdev);
-	if (rv < 0)
-		goto done;
-done:
-	return rv;
-}
-
-int qdma_device_init(struct xlnx_dma_dev *xdev)
-{
-	int i = 0;
-	struct qdma_fmap_cfg fmap;
-
-#ifndef __QDMA_VF__
-	int rv = 0;
-#endif
-	int qmax = xdev->conf.qsets_max;
-	struct qdma_descq *descq;
-	struct qdma_dev *qdev;
-
-	memset(&fmap, 0, sizeof(struct qdma_fmap_cfg));
-
-	qdev = kzalloc(sizeof(struct qdma_dev), GFP_KERNEL);
-
-	if (!qdev) {
-		pr_err("dev %s qmax %d OOM.\n",
-			dev_name(&xdev->conf.pdev->dev), qmax);
-		intr_teardown(xdev);
-		return -ENOMEM;
-	}
-
-	spin_lock_init(&qdev->lock);
-	xdev->dev_priv = (void *)qdev;
-#ifndef __QDMA_VF__
-	if (xdev->conf.master_pf) {
-		rv = xdev->hw.qdma_init_ctxt_memory(xdev);
-		if (rv < 0) {
-			pr_err("init ctxt write failed, err %d\n", rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-	}
-#endif
-
-	qdev->h2c_descq = kmalloc(sizeof(struct qdma_descq) * qmax, GFP_KERNEL);
-	qdev->c2h_descq = kmalloc(sizeof(struct qdma_descq) * qmax, GFP_KERNEL);
-	qdev->cmpt_descq = kmalloc(sizeof(struct qdma_descq) * qmax,
-					GFP_KERNEL);
-
-	qdev->qmax = qmax;
-	qdev->init_qrange = 0;
-
-	qdev->qbase = xdev->conf.qsets_base;
-
-	for (i = 0, descq = qdev->h2c_descq; i < qdev->qmax; i++, descq++)
-		qdma_descq_init(descq, xdev, i, i);
-	for (i = 0, descq = qdev->c2h_descq; i < qdev->qmax; i++, descq++)
-		qdma_descq_init(descq, xdev, i, i);
-	for (i = 0, descq = qdev->cmpt_descq; i < qdev->qmax; i++, descq++)
-		qdma_descq_init(descq, xdev, i, i);
-#ifndef __QDMA_VF__
-	xdev->hw.qdma_set_default_global_csr(xdev);
-	for (i = 0; i < xdev->dev_cap.mm_channel_max; i++) {
-		xdev->hw.qdma_mm_channel_conf(xdev, i, 1, 1);
-		xdev->hw.qdma_mm_channel_conf(xdev, i, 0, 1);
-	}
-#endif
-	return 0;
-}
-
-#define QDMA_BUF_LEN 256
-void qdma_device_cleanup(struct xlnx_dma_dev *xdev)
-{
-	int i;
-	struct qdma_dev *qdev = xdev_2_qdev(xdev);
-	struct qdma_descq *descq;
-	char buf[QDMA_BUF_LEN];
-
-	if  (!qdev) {
-		pr_info("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return;
-	}
-
-	for (i = 0, descq = qdev->h2c_descq; i < qdev->qmax; i++, descq++) {
-		if (descq->q_state == Q_STATE_ONLINE)
-			qdma_queue_stop((unsigned long int)xdev,
-					i, buf, QDMA_BUF_LEN);
-	}
-
-	for (i = 0, descq = qdev->c2h_descq; i < qdev->qmax; i++, descq++) {
-		if (descq->q_state == Q_STATE_ONLINE)
-			qdma_queue_stop((unsigned long int)xdev,
-					i + qdev->qmax, buf, QDMA_BUF_LEN);
-	}
-
-	for (i = 0, descq = qdev->h2c_descq; i < qdev->qmax; i++, descq++) {
-		if (descq->q_state == Q_STATE_ENABLED)
-			qdma_queue_remove((unsigned long int)xdev,
-					i, buf, QDMA_BUF_LEN);
-	}
-
-	for (i = 0, descq = qdev->c2h_descq; i < qdev->qmax; i++, descq++) {
-		if (descq->q_state == Q_STATE_ENABLED)
-			qdma_queue_remove((unsigned long int)xdev,
-					  i + qdev->qmax, buf, QDMA_BUF_LEN);
-	}
-
-	kfree(qdev->h2c_descq);
-	kfree(qdev->c2h_descq);
-	kfree(qdev->cmpt_descq);
-	xdev->dev_priv = NULL;
-	kfree(qdev);
-}
-
-long qdma_device_get_id_from_descq(struct xlnx_dma_dev *xdev,
-				   struct qdma_descq *descq)
-{
-	struct qdma_dev *qdev;
-	unsigned long idx;
-	unsigned long idx_max;
-	struct qdma_descq *_descq;
-
-	if (!xdev) {
-		pr_info("xdev NULL.\n");
-		return -EINVAL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return -EINVAL;
-	}
-	if (descq->conf.q_type == Q_H2C) {
-		_descq = qdev->h2c_descq;
-		idx = 0;
-	} else if (descq->conf.q_type == Q_C2H) {
-		_descq = qdev->c2h_descq;
-		idx = qdev->qmax;
-	} else {
-		_descq = qdev->cmpt_descq;
-		idx = 2 * qdev->qmax;
-	}
-
-	idx_max = (idx + (2 * qdev->qmax));
-	for (; idx < idx_max; idx++, _descq++)
-		if (_descq == descq)
-			return idx;
-
-	return -EINVAL;
-
-}
-
-struct qdma_descq *qdma_device_get_descq_by_id(struct xlnx_dma_dev *xdev,
-			unsigned long idx, char *buf, int buflen, int init)
-{
-	struct qdma_dev *qdev;
-	struct qdma_descq *descq;
-
-	if (!xdev) {
-		pr_info("xdev NULL.\n");
-		return NULL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return NULL;
-	}
-
-	if (idx >= qdev->qmax) {
-		idx -= qdev->qmax;
-		if (idx >= qdev->qmax) {
-			idx -= qdev->qmax;
-			if (idx >= qdev->qmax) {
-				pr_info("%s, q idx too big 0x%lx > 0x%x.\n",
-					xdev->conf.name, idx, qdev->qmax);
-				if (buf && buflen)
-					snprintf(buf, buflen,
-					"%s, q idx too big 0x%lx > 0x%x.\n",
-					xdev->conf.name, idx, qdev->qmax);
-				return NULL;
-			}
-			descq = qdev->cmpt_descq + idx;
-		} else {
-			descq = qdev->c2h_descq + idx;
-		}
-	} else {
-		descq = qdev->h2c_descq + idx;
-	}
-
-	if (init) {
-		lock_descq(descq);
-		if (descq->q_state == Q_STATE_DISABLED) {
-			pr_info("%s, idx 0x%lx, q 0x%p state invalid.\n",
-				xdev->conf.name, idx, descq);
-			if (buf && buflen)
-				snprintf(buf, buflen,
-				"%s, idx 0x%lx, q 0x%p state invalid.\n",
-					xdev->conf.name, idx, descq);
-			unlock_descq(descq);
-			return NULL;
-		}
-		unlock_descq(descq);
-	}
-
-	return descq;
-}
-
-#ifdef DEBUGFS
-struct qdma_descq *qdma_device_get_pair_descq_by_id(struct xlnx_dma_dev *xdev,
-			unsigned long idx, char *buf, int buflen, int init)
-{
-	struct qdma_dev *qdev;
-	struct qdma_descq *pair_descq;
-
-	if (!xdev) {
-		pr_info("xdev NULL.\n");
-		return NULL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return NULL;
-	}
-
-	if (idx >= qdev->qmax) {
-		idx -= qdev->qmax;
-		if (idx >= qdev->qmax) {
-			pr_debug("%s, q idx too big 0x%lx > 0x%x.\n",
-				xdev->conf.name, idx, qdev->qmax);
-			if (buf && buflen)
-				snprintf(buf, buflen,
-					"%s, q idx too big 0x%lx > 0x%x.\n",
-					xdev->conf.name, idx, qdev->qmax);
-			return NULL;
-		}
-		pair_descq = qdev->h2c_descq + idx;
-	} else {
-		pair_descq = qdev->c2h_descq + idx;
-	}
-
-	if (init) {
-		lock_descq(pair_descq);
-		if (pair_descq->q_state == Q_STATE_DISABLED) {
-			pr_debug("%s, idx 0x%lx, q 0x%p state invalid.\n",
-				xdev->conf.name, idx, pair_descq);
-			if (buf && buflen)
-				snprintf(buf, buflen,
-				"%s, idx 0x%lx, q 0x%p state invalid.\n",
-					xdev->conf.name, idx, pair_descq);
-			unlock_descq(pair_descq);
-			return NULL;
-		}
-		unlock_descq(pair_descq);
-	}
-
-	return pair_descq;
-}
-#endif
-
-struct qdma_descq *qdma_device_get_descq_by_hw_qid(struct xlnx_dma_dev *xdev,
-			unsigned long qidx_hw, u8 c2h)
-{
-	struct qdma_dev *qdev;
-	struct qdma_descq *descq;
-	unsigned long qidx_sw = 0;
-
-	if (!xdev) {
-		pr_info("xdev NULL.\n");
-		return NULL;
-	}
-
-	qdev = xdev_2_qdev(xdev);
-
-	if  (!qdev) {
-		pr_err("dev %s, qdev null.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		return NULL;
-	}
-
-	qidx_sw = qidx_hw - qdev->qbase;
-	if (c2h)
-		descq = &qdev->c2h_descq[qidx_sw];
-	else
-		descq = &qdev->h2c_descq[qidx_sw];
-
-	return descq;
-}
-
-
-void qdma_pf_trigger_vf_reset(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	unsigned int sleep_timeout = 0;
-	struct mbox_msg *m = NULL;
-	struct qdma_vf_info *vf = NULL;
-	int i = 0, rv = 0;
-	u8 vf_count_online = 0, no_bye_count = 0;
-	uint32_t active_queue_count = 0;
-
-	if (!xdev) {
-		pr_err("xdev NULL\n");
-		return;
-	}
-
-	if (!xdev->vf_count) {
-		pr_debug("VF count is zero\n");
-		return;
-	}
-
-	vf_count_online = xdev->vf_count_online;
-	vf = (struct qdma_vf_info *)xdev->vf_info;
-
-	xdev->reset_state = RESET_STATE_PF_WAIT_FOR_BYES;
-	for (i = 0; i < vf_count_online; i++) {
-		active_queue_count = qdma_get_device_active_queue_count(
-					xdev->dma_device_index,
-					vf[i].func_id, QDMA_DEV_Q_TYPE_H2C);
-		active_queue_count += qdma_get_device_active_queue_count(
-					xdev->dma_device_index,
-					vf[i].func_id, QDMA_DEV_Q_TYPE_C2H);
-		sleep_timeout = QDMA_MBOX_MSG_TIMEOUT_MS +
-				(200 * active_queue_count);
-
-		pr_info("VF reset in progress. Wait for 0x%x ms\n",
-				sleep_timeout);
-
-		m = qdma_mbox_msg_alloc();
-		if (!m) {
-			pr_err("Memory allocation for mbox message failed\n");
-			return;
-		}
-
-		pr_debug("xdev->func_id=%d, vf[i].func_id=%d, i = %d",
-				 xdev->func_id, vf[i].func_id, i);
-		qdma_mbox_compose_vf_reset_message(m->raw, xdev->func_id,
-							vf[i].func_id);
-		rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-		if (rv == 0) {
-			qdma_waitq_wait_event_timeout(xdev->wq,
-					(xdev->vf_count_online ==
-					(vf_count_online - i - 1)),
-					msecs_to_jiffies(sleep_timeout));
-		}
-		if (xdev->vf_count_online !=
-						(vf_count_online - i - 1)) {
-			xdev->vf_count_online--;
-			no_bye_count++;
-			pr_warn("BYE not recv from func=%d, online_count=%d\n",
-					vf[i].func_id, xdev->vf_count_online);
-		}
-	}
-
-	xdev->reset_state = RESET_STATE_IDLE;
-	pr_debug("no_bye_count=%d\n", no_bye_count);
-
-}
-
-void qdma_pf_trigger_vf_offline(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct mbox_msg *m = NULL;
-	struct qdma_vf_info *vf = NULL;
-	int i = 0, rv = 0;
-	unsigned int sleep_timeout = 0;
-	u8 vf_count_online = 0;
-	uint32_t active_queue_count = 0;
-
-	if (!xdev) {
-		pr_err("xdev NULL\n");
-		return;
-	}
-
-	if (!xdev->vf_count) {
-		pr_debug("VF count is zero\n");
-		return;
-	}
-
-	vf_count_online = xdev->vf_count_online;
-	vf = (struct qdma_vf_info *)xdev->vf_info;
-
-	for (i = 0; i < vf_count_online; i++) {
-		active_queue_count = qdma_get_device_active_queue_count(
-					xdev->dma_device_index,
-					vf[i].func_id, QDMA_DEV_Q_TYPE_H2C);
-		active_queue_count += qdma_get_device_active_queue_count(
-					xdev->dma_device_index,
-					vf[i].func_id, QDMA_DEV_Q_TYPE_C2H);
-		sleep_timeout = QDMA_MBOX_MSG_TIMEOUT_MS +
-				(200 * active_queue_count);
-
-		pr_info("VF offline in progress. Wait for 0x%x ms\n",
-				sleep_timeout);
-		m = qdma_mbox_msg_alloc();
-		if (!m) {
-			pr_err("Memory allocation for mbox message failed\n");
-			return;
-		}
-		pr_info("xdev->func_id=%d, vf[i].func_id=%d, i = %d",
-				 xdev->func_id, vf[i].func_id, i);
-		qdma_mbox_compose_pf_offline(m->raw, xdev->func_id,
-							vf[i].func_id);
-		rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-
-		if (!rv) {
-			qdma_waitq_wait_event_timeout(xdev->wq,
-					vf[i].func_id == QDMA_FUNC_ID_INVALID,
-					msecs_to_jiffies(sleep_timeout));
-		}
-
-		if (vf[i].func_id != QDMA_FUNC_ID_INVALID)
-			pr_warn("BYE not recv from func=%d, online_count=%d\n",
-					vf[i].func_id, xdev->vf_count_online);
-	}
-	pr_debug("xdev->vf_count_online=%d\n", xdev->vf_count_online);
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_device.h b/QDMA/linux-kernel/driver/libqdma/qdma_device.h
deleted file mode 100755
index c860467..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_device.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef LIBQDMA_QDMA_DEVICE_H_
-#define LIBQDMA_QDMA_DEVICE_H_
-/**
- * @file
- * @brief This file contains the declarations for QDMA device
- *
- */
-#include <linux/spinlock_types.h>
-#include "libqdma_export.h"
-#include "qdma_access_common.h"
-
-/**
- * forward declaration for qdma descriptor
- */
-struct qdma_descq;
-/**
- * forward declaration for xlnx_dma_dev
- */
-struct xlnx_dma_dev;
-
-/**
- * @struct - qdma_dev
- * @brief	qdma device per function
- */
-struct qdma_dev {
-	/** flag indicates whether the fmap programming is completed or not */
-	u8 init_qrange:1;
-	/** filler */
-	u8 filler[3];
-	/** max number of queues per function */
-	unsigned short qmax;
-	/** queue start number for this function */
-	unsigned short qbase;
-	/** qdma_dev lock */
-	spinlock_t lock;
-	/** h2c descq list */
-	struct qdma_descq *h2c_descq;
-	/** c2h descq list */
-	struct qdma_descq *c2h_descq;
-	/** cmpt descq list */
-	struct qdma_descq *cmpt_descq;
-};
-
-/**
- * macro to convert the given xdev to qdev
- */
-#define xdev_2_qdev(xdev)	(struct qdma_dev *)((xdev)->dev_priv)
-
-/*****************************************************************************/
-/**
- * qdma_device_init() - initializes the qdma device
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	-1: failure
- *****************************************************************************/
-int qdma_device_init(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_device_cleanup() - clean up the qdma device
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-void qdma_device_cleanup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_device_get_descq_by_id() - get the qhndl for descq
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	descq:	pointer to the descq
- *
- * @return	qhndl for descq on success
- * @return	<0 on failure
- *****************************************************************************/
-long qdma_device_get_id_from_descq(struct xlnx_dma_dev *xdev,
-				   struct qdma_descq *descq);
-/*****************************************************************************/
-/**
- * qdma_device_get_descq_by_id() - get the descq using the qid
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	idx:	sw qidx
- * @param[in]	init:	indicates whether to initialize the device or not
- * @param[in]	buflen:	length of the input buffer
- * @param[out]	buf:	message buffer
- *
- * @return	pointer to descq on success
- * @return	NULL on failure
- *****************************************************************************/
-struct qdma_descq *qdma_device_get_descq_by_id(struct xlnx_dma_dev *xdev,
-			unsigned long idx, char *buf, int buflen, int init);
-
-#ifdef DEBUGFS
-/*****************************************************************************/
-/**
- * qdma_device_get_pair_descq_by_id() - get the descq using the qid
- *
- * @param[in]	xdev:	pointer to xdev
- * @param[in]	idx:	sw qidx
- * @param[in]	init:	indicates whether to initialize the device or not
- * @param[in]	buflen:	length of the input buffer
- * @param[out]	buf:	message buffer
- *
- * @return	pointer to descq on success
- * @return	NULL on failure
- *****************************************************************************/
-struct qdma_descq *qdma_device_get_pair_descq_by_id(struct xlnx_dma_dev *xdev,
-			unsigned long idx, char *buf, int buflen, int init);
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_device_get_descq_by_hw_qid() - get the descq using the hw qid
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	qidx_hw:	hw qidx
- * @param[in]	c2h:		indicates whether hw qidx belongs to c2h or h2c
- *
- * @return	pointer to descq on success
- * @return	NULL on failure
- *****************************************************************************/
-struct qdma_descq *qdma_device_get_descq_by_hw_qid(struct xlnx_dma_dev *xdev,
-			unsigned long qidx_hw, u8 c2h);
-
-/*****************************************************************************/
-/**
- * qdma_device_prep_q_resource() - Prepare queue resources
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_prep_q_resource(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_device_interrupt_setup() - Setup device itnerrupts
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_interrupt_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_device_interrupt_cleanup() - Celanup device interrupts
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-void qdma_device_interrupt_cleanup(struct xlnx_dma_dev *xdev);
-
-#ifdef __QDMA_VF__
-/*****************************************************************************/
-/**
- * device_set_qconf() - set device conf
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	qmax:		maximum request qsize for VF instance
- * @param[in]	qbase:		queue base
- *
- * @return  0: success
- * @return  < 0: failure
- *****************************************************************************/
-int device_set_qconf(struct xlnx_dma_dev *xdev, int *qmax, int *qbase);
-
-#endif
-
-
-enum csr_type {
-	QDMA_CSR_TYPE_NONE,
-	QDMA_CSR_TYPE_RNGSZ,	/** all global csr ring size settings */
-	QDMA_CSR_TYPE_BUFSZ,	/** all global csr buffer size settings */
-	QDMA_CSR_TYPE_TIMER_CNT, /** all global csr timer count settings */
-	QDMA_CSR_TYPE_CNT_TH,	/** all global csr counter thresh settings */
-
-	QDMA_CSR_TYPE_MAX
-};
-
-/*****************************************************************************/
-/**
- * qdma_csr_read() - Read specific global csr registers
- *
- * @param[in]   xdev:           pointer to xdev
- * @param[out]  csr:            csr value
- *
- * @return      0: success
- * @return      <0: failure
- *****************************************************************************/
-int qdma_csr_read(struct xlnx_dma_dev *xdev, struct global_csr_conf *csr);
-
-/*****************************************************************************/
-/**
- * qdma_set_ring_sizes() - Wrapper function to set the ring sizes values
- *
- * @param[in]   xdev:           pointer to xdev
- * @param[in]   index: Index from where the values needs to written
- * @param[in]   count: number of entries to be written
- * @param[in]	glbl_rng_sz: pointer to array of global ring sizes
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_set_ring_sizes(struct xlnx_dma_dev *xdev, u8 index,
-		u8 count, u32 *glbl_rng_sz);
-
-/*****************************************************************************/
-/**
- * qdma_set_ring_sizes() - Wrapper function to set the ring sizes values
- *
- * @param[in]   xdev:  pointer to xdev
- * @param[in]   index: Index from where the values needs to written
- * @param[in]   count: number of entries to be written
- * @param[out]	glbl_rng_sz: pointer to array of global ring sizes
- *
- * @return	0 on success
- * @return	<0 on failure
- *****************************************************************************/
-int qdma_get_ring_sizes(struct xlnx_dma_dev *xdev, u8 index,
-		u8 count, u32 *glbl_rng_sz);
-
-
-/*****************************************************************************/
-/**
- * qdma_pf_trigger_vf_reset() - Function to trigger FLR of all the VFs on PF
- *
- * @param[in]	dev_hndl:	Handle of the xdev
- *****************************************************************************/
-void qdma_pf_trigger_vf_reset(unsigned long dev_hndl);
-
-/**
- * qdma_pf_trigger_vf_offline() - Function to trigger offline of all the VFs
- *
- * @param[in]	dev_hndl:	Handle of the xdev
- *****************************************************************************/
-void qdma_pf_trigger_vf_offline(unsigned long dev_hndl);
-#endif /* LIBQDMA_QDMA_DEVICE_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c b/QDMA/linux-kernel/driver/libqdma/qdma_intr.c
deleted file mode 100755
index 1a90a42..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_intr.c
+++ /dev/null
@@ -1,1024 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/kernel.h>
-#include "qdma_descq.h"
-#include "qdma_device.h"
-#include "qdma_regs.h"
-#include "thread.h"
-#include "version.h"
-#include "qdma_mbox_protocol.h"
-#include "qdma_intr.h"
-#ifdef DUMP_ON_ERROR_INTERRUPT
-#include "qdma_reg_dump.h"
-#endif
-#include "qdma_access_common.h"
-
-#ifndef __QDMA_VF__
-static LIST_HEAD(legacy_intr_q_list);
-static spinlock_t legacy_intr_lock;
-static spinlock_t legacy_q_add_lock;
-static unsigned long legacy_intr_flags = IRQF_SHARED;
-#endif
-
-
-#ifndef __QDMA_VF__
-#ifdef DUMP_ON_ERROR_INTERRUPT
-#define REG_BANNER_LEN (81 * 5)
-static int dump_qdma_regs(struct xlnx_dma_dev *xdev)
-{
-	int len = 0, dis_len = 0;
-	int rv;
-	char *buf = NULL, *tbuff = NULL;
-	int buflen;
-	char temp_buf[512];
-
-	if (!xdev) {
-		pr_err("Invalid device\n");
-		return -EINVAL;
-	}
-
-	rv = qdma_reg_dump_buf_len((void *)xdev,
-			xdev->version_info.ip_type, &buflen);
-	if (rv < 0) {
-		pr_err("Failed to get reg dump buffer length\n");
-		return rv;
-	}
-	buflen += REG_BANNER_LEN;
-
-	/** allocate memory */
-	tbuff = (char *) kzalloc(buflen, GFP_KERNEL);
-	if (!tbuff)
-		return -ENOMEM;
-
-	buf = tbuff;
-	rv = qdma_dump_config_regs(xdev, buf + len, buflen - len);
-	if (rv < 0) {
-		pr_warn("Failed to dump Config Bar register values\n");
-		goto free_buf;
-	}
-	len += rv;
-
-	*data = buf;
-	*data_len = buflen;
-
-	buf[++len] = '\0';
-	memset(temp_buf, '\0', 512);
-	for (dis_len = 0; dis_len < len; dis_len += 512) {
-		memcpy(temp_buf, buf, 512);
-		pr_info("\n%s", temp_buf);
-		memset(temp_buf, '\0', 512);
-		buf += 512;
-	}
-
-free_buf:
-	kfree(tbuf);
-	return 0;
-}
-#endif
-#endif
-
-#ifndef MBOX_INTERRUPT_DISABLE
-static irqreturn_t mbox_intr_handler(int irq_index, int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-	struct qdma_mbox *mbox = &xdev->mbox;
-
-	pr_debug("Mailbox IRQ fired on Funtion#%d: index=%d, vector=%d\n",
-		xdev->func_id, irq_index, irq);
-
-	queue_work(mbox->workq, &mbox->rx_work);
-
-	return IRQ_HANDLED;
-}
-#endif
-
-#ifndef USER_INTERRUPT_DISABLE
-static irqreturn_t user_intr_handler(int irq_index, int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-
-	pr_debug("User IRQ fired on Funtion#%d: index=%d, vector=%d\n",
-		xdev->func_id, irq_index, irq);
-
-	if (xdev->conf.fp_user_isr_handler) {
-#ifndef __XRT__
-		xdev->conf.fp_user_isr_handler((unsigned long)xdev,
-						xdev->conf.uld);
-#else
-		xdev->conf.fp_user_isr_handler((unsigned long)xdev,
-						irq_index, xdev->conf.uld);
-#endif
-	}
-
-	return IRQ_HANDLED;
-}
-#endif
-
-#ifndef __QDMA_VF__
-static irqreturn_t error_intr_handler(int irq_index, int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-
-	pr_info("Error IRQ fired on Funtion#%d: index=%d, vector=%d\n",
-			xdev->func_id, irq_index, irq);
-
-	xdev->hw.qdma_hw_error_process(xdev);
-
-	xdev->hw.qdma_hw_error_intr_rearm(xdev);
-#ifdef DUMP_ON_ERROR_INTERRUPT
-	dump_qdma_regs(xdev);
-#endif
-	return IRQ_HANDLED;
-}
-#endif
-
-static void data_intr_aggregate(struct xlnx_dma_dev *xdev, int vidx, int irq,
-		u64 timestamp)
-{
-	struct qdma_descq *descq = NULL;
-	u32 counter = 0;
-	struct intr_coal_conf *coal_entry =
-			(xdev->intr_coal_list + vidx - xdev->dvec_start_idx);
-	union qdma_intr_ring *ring_entry;
-	struct qdma_intr_cidx_reg_info *intr_cidx_info;
-	uint8_t color = 0;
-	uint8_t intr_type = 0;
-	uint32_t qid = 0;
-	uint32_t num_entries_processed = 0;
-
-
-	if (!coal_entry) {
-		pr_err("Failed to locate the coalescing entry for vector = %d\n",
-			vidx);
-		return;
-	}
-	intr_cidx_info = &coal_entry->intr_cidx_info;
-	pr_debug("INTR_COAL: msix[%d].vector=%d, msix[%d].entry=%d, rngsize=%d, cidx = %d\n",
-		vidx, xdev->msix[vidx].vector,
-		vidx,
-		xdev->msix[vidx].entry,
-		coal_entry->intr_rng_num_entries,
-		intr_cidx_info->sw_cidx);
-
-	pr_debug("vidx = %d, dvec_start_idx = %d\n", vidx,
-		 xdev->dvec_start_idx);
-
-	if ((xdev->msix[vidx].entry) !=  coal_entry->vec_id) {
-		pr_err("msix[%d].entry[%d] != vec_id[%d]\n",
-			vidx, xdev->msix[vidx].entry,
-			coal_entry->vec_id);
-
-		return;
-	}
-
-	counter = intr_cidx_info->sw_cidx;
-	ring_entry = (coal_entry->intr_ring_base + counter);
-	if (!ring_entry) {
-		pr_err("Failed to locate the ring entry for vector = %d\n",
-			vidx);
-		return;
-	}
-
-	do {
-		if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-				(xdev->version_info.device_type ==
-				 QDMA_DEVICE_VERSAL_CPM4)) {
-			color = ring_entry->ring_cpm.coal_color;
-			intr_type = ring_entry->ring_cpm.intr_type;
-			qid = ring_entry->ring_cpm.qid;
-		} else {
-			color = ring_entry->ring_generic.coal_color;
-			intr_type = ring_entry->ring_generic.intr_type;
-			qid = ring_entry->ring_generic.qid;
-		}
-
-		if (color != coal_entry->color)
-			break;
-		pr_debug("IRQ[%d]: IVE[%d], Qid = %d, e_color = %d, c_color = %d, intr_type = %d\n",
-				irq, vidx, qid, coal_entry->color,
-				color, intr_type);
-
-		descq = qdma_device_get_descq_by_hw_qid(xdev, qid,
-				intr_type);
-		if (!descq) {
-			pr_err("IRQ[%d]: IVE[%d], Qid = %d: desc not found\n",
-					irq, vidx, qid);
-			return;
-		}
-		xdev->prev_descq = descq;
-		pr_debug("IRQ[%d]: IVE[%d], Qid = %d, e_color = %d, c_color = %d, intr_type = %d\n",
-				irq, vidx, qid, coal_entry->color,
-				color, intr_type);
-
-		if (descq->conf.ping_pong_en &&
-			descq->conf.q_type == Q_C2H && descq->conf.st)
-			descq->ping_pong_rx_time = timestamp;
-
-		if (descq->conf.fp_descq_isr_top) {
-			descq->conf.fp_descq_isr_top(descq->q_hndl,
-					descq->conf.quld);
-		} else {
-			if (descq->cpu_assigned)
-				schedule_work_on(descq->intr_work_cpu,
-						&descq->work);
-			else
-				schedule_work(&descq->work);
-		}
-
-		if (++intr_cidx_info->sw_cidx ==
-				coal_entry->intr_rng_num_entries) {
-			counter = 0;
-			xdev->intr_coal_list->color =
-				(xdev->intr_coal_list->color) ? 0 : 1;
-			intr_cidx_info->sw_cidx = 0;
-		} else
-			counter++;
-		num_entries_processed++;
-		ring_entry = (coal_entry->intr_ring_base + counter);
-	} while (1);
-
-	if (descq) {
-		queue_intr_cidx_update(descq->xdev,
-			descq->conf.qidx, &coal_entry->intr_cidx_info);
-	} else if (num_entries_processed == 0) {
-		pr_debug("No entries processed\n");
-		descq = xdev->prev_descq;
-		if (descq) {
-			pr_debug("Doing stale update\n");
-			queue_intr_cidx_update(descq->xdev,
-				descq->conf.qidx, &coal_entry->intr_cidx_info);
-		}
-	}
-
-}
-
-static void data_intr_direct(struct xlnx_dma_dev *xdev, int vidx, int irq,
-			u64 timestamp)
-{
-	struct qdma_descq *descq;
-	unsigned long flags;
-	struct list_head *descq_list =
-			&xdev->dev_intr_info_list[vidx].intr_list;
-	struct list_head *entry, *tmp;
-
-	spin_lock_irqsave(&xdev->dev_intr_info_list[vidx].vec_q_list,
-			  flags);
-	list_for_each_safe(entry, tmp, descq_list) {
-		descq = container_of(entry, struct qdma_descq, intr_list);
-
-		if (descq->conf.ping_pong_en &&
-				descq->conf.q_type == Q_C2H && descq->conf.st)
-			descq->ping_pong_rx_time = timestamp;
-
-		if (descq->conf.fp_descq_isr_top) {
-			descq->conf.fp_descq_isr_top(descq->q_hndl,
-					descq->conf.quld);
-		} else {
-			if (descq->cpu_assigned)
-				schedule_work_on(descq->intr_work_cpu,
-						&descq->work);
-			else
-				schedule_work(&descq->work);
-		}
-	}
-	spin_unlock_irqrestore(&xdev->dev_intr_info_list[vidx].vec_q_list,
-			    flags);
-}
-
-static irqreturn_t data_intr_handler(int vector_index, int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-	u64 timestamp;
-
-	pr_debug("%s: Data IRQ fired on Funtion#%05x: index=%d, vector=%d\n",
-		xdev->mod_name, xdev->func_id, vector_index, irq);
-	timestamp = rdtsc_gettime();
-
-	if ((xdev->conf.qdma_drv_mode == INDIRECT_INTR_MODE) ||
-			(xdev->conf.qdma_drv_mode == AUTO_MODE))
-		data_intr_aggregate(xdev, vector_index, irq, timestamp);
-	else
-		data_intr_direct(xdev, vector_index, irq, timestamp);
-
-	return IRQ_HANDLED;
-}
-
-static inline void intr_ring_free(struct xlnx_dma_dev *xdev, int ring_sz,
-			int intr_desc_sz, u8 *intr_desc, dma_addr_t desc_bus)
-{
-	unsigned int len = ring_sz * intr_desc_sz;
-
-	pr_debug("free %u(0x%x)=%d*%u, 0x%p, bus 0x%llx.\n",
-		len, len, intr_desc_sz, ring_sz, intr_desc, desc_bus);
-
-	dma_free_coherent(&xdev->conf.pdev->dev, (size_t)ring_sz * intr_desc_sz,
-			intr_desc, desc_bus);
-}
-
-static void *intr_ring_alloc(struct xlnx_dma_dev *xdev, int ring_sz,
-				int intr_desc_sz, dma_addr_t *bus)
-{
-	unsigned int len = ring_sz * intr_desc_sz;
-	u8 *p = dma_alloc_coherent(&xdev->conf.pdev->dev, len, bus, GFP_KERNEL);
-
-	if (!p) {
-		pr_err("%s, OOM, sz ring %d, intr_desc %d.\n",
-			xdev->conf.name, ring_sz, intr_desc_sz);
-		return NULL;
-	}
-
-	memset(p, 0, len);
-
-	pr_debug("alloc %u(0x%x)=%d*%u, bus 0x%llx .\n",
-		len, len, intr_desc_sz, ring_sz, *bus);
-
-	return p;
-}
-
-#ifdef __QDMA_VF__
-static void intr_context_invalidate(struct xlnx_dma_dev *xdev)
-{
-	int i = 0;
-	struct mbox_msg *m;
-	int rv = 0;
-	struct mbox_msg_intr_ctxt ictxt;
-	struct intr_coal_conf  *ring_entry;
-
-	m = qdma_mbox_msg_alloc();
-	if (!m)
-		return;
-	memset(&ictxt, 0, sizeof(struct mbox_msg_intr_ctxt));
-	ictxt.num_rings = QDMA_NUM_DATA_VEC_FOR_INTR_CXT;
-
-	for (i = 0; i < QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-		ictxt.ring_index_list[i] =
-			get_intr_ring_index(xdev, xdev->dvec_start_idx + i);
-	}
-	qdma_mbox_compose_vf_intr_ctxt_invalidate(xdev->func_id,
-			&ictxt, m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s invalidate interrupt context failed %d.\n",
-			xdev->conf.name, rv);
-	}
-
-	qdma_mbox_msg_free(m);
-
-	for (i = 0; i < QDMA_NUM_DATA_VEC_FOR_INTR_CXT; i++) {
-		ring_entry = (xdev->intr_coal_list + i);
-		if (ring_entry) {
-			intr_ring_free(xdev,
-				ring_entry->intr_rng_num_entries,
-				sizeof(union qdma_intr_ring),
-				(u8 *)ring_entry->intr_ring_base,
-				ring_entry->intr_ring_bus);
-		}
-	}
-
-}
-#else
-static void intr_context_invalidate(struct xlnx_dma_dev *xdev)
-{
-	int i = 0;
-	unsigned int ring_index = 0;
-	struct intr_coal_conf  *ring_entry;
-	int rv = 0;
-
-	while (i < QDMA_NUM_DATA_VEC_FOR_INTR_CXT) {
-		ring_index = get_intr_ring_index(xdev,
-				(i + xdev->dvec_start_idx));
-		rv = xdev->hw.qdma_indirect_intr_ctx_conf(xdev, ring_index,
-				NULL, QDMA_HW_ACCESS_INVALIDATE);
-		if (rv < 0) {
-			pr_err("Intr ctxt invalidate failed, err = %d",
-						rv);
-			return;
-		}
-		ring_entry = (xdev->intr_coal_list + i);
-		if (ring_entry) {
-			intr_ring_free(xdev,
-				ring_entry->intr_rng_num_entries,
-				sizeof(union qdma_intr_ring),
-				(u8 *)ring_entry->intr_ring_base,
-				ring_entry->intr_ring_bus);
-		}
-		i++;
-	}
-
-}
-#endif
-
-void intr_ring_teardown(struct xlnx_dma_dev *xdev)
-{
-	intr_context_invalidate(xdev);
-	kfree(xdev->intr_coal_list);
-}
-
-static void data_vector_handler(int irq, struct xlnx_dma_dev *xdev)
-{
-	int i;
-
-	for (i = 0; i < xdev->num_vecs; i++) {
-		if (xdev->msix[i].vector == irq) {
-			xdev->dev_intr_info_list[i].intr_vec_map.intr_handler(i,
-					irq, (void *)xdev);
-			break;
-		}
-	}
-}
-
-static irqreturn_t irq_bottom(int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-
-	data_vector_handler(irq, xdev);
-
-	return IRQ_HANDLED;
-}
-
-static irqreturn_t irq_top(int irq, void *dev_id)
-{
-	struct xlnx_dma_dev *xdev = dev_id;
-
-	if (xdev->conf.fp_q_isr_top_dev) {
-		xdev->conf.fp_q_isr_top_dev((unsigned long)xdev,
-					xdev->conf.uld);
-	}
-
-	return IRQ_WAKE_THREAD;
-}
-
-
-void intr_teardown(struct xlnx_dma_dev *xdev)
-{
-	int i = xdev->num_vecs;
-
-	while (--i >= 0)
-		free_irq(xdev->msix[i].vector, xdev);
-
-	if (xdev->num_vecs)
-		pci_disable_msix(xdev->conf.pdev);
-
-	kfree(xdev->msix);
-	kfree(xdev->dev_intr_info_list);
-}
-
-
-static int intr_vector_setup(struct xlnx_dma_dev *xdev, int idx,
-			enum intr_type_list type, f_intr_handler handler)
-{
-	int rv;
-
-	if (type == INTR_TYPE_ERROR)
-		snprintf(xdev->dev_intr_info_list[idx].msix_name,
-			 QDMA_DEV_NAME_MAXLEN + 16, "%s-error",
-			 xdev->conf.name);
-
-	if (type == INTR_TYPE_USER)
-#ifndef USER_INTERRUPT_DISABLE
-		snprintf(xdev->dev_intr_info_list[idx].msix_name,
-			 QDMA_DEV_NAME_MAXLEN + 16, "%s-user", xdev->conf.name);
-#else
-		return -EINVAL;
-#endif
-	if (type == INTR_TYPE_DATA)
-		snprintf(xdev->dev_intr_info_list[idx].msix_name,
-			 QDMA_DEV_NAME_MAXLEN + 16, "%s-data", xdev->conf.name);
-	if (type == INTR_TYPE_MBOX)
-#ifndef MBOX_INTERRUPT_DISABLE
-		snprintf(xdev->dev_intr_info_list[idx].msix_name,
-			 QDMA_DEV_NAME_MAXLEN + 16, "%s-mbox", xdev->conf.name);
-#else
-		return -EINVAL;
-#endif
-
-	xdev->dev_intr_info_list[idx].intr_vec_map.intr_type = type;
-	xdev->dev_intr_info_list[idx].intr_vec_map.intr_vec_index = idx;
-	xdev->dev_intr_info_list[idx].intr_vec_map.intr_handler = handler;
-
-	if ((type == INTR_TYPE_DATA) || (type == INTR_TYPE_MBOX)) {
-		rv = request_irq(xdev->msix[idx].vector, irq_bottom, 0,
-				 xdev->dev_intr_info_list[idx].msix_name, xdev);
-	} else
-		rv = request_threaded_irq(xdev->msix[idx].vector, irq_top,
-					  irq_bottom, 0,
-				  xdev->dev_intr_info_list[idx].msix_name,
-				  xdev);
-
-	pr_debug("%s requesting IRQ vector #%d: vec %d, type %d, %s.\n",
-			xdev->conf.name, idx, xdev->msix[idx].vector,
-			type, xdev->dev_intr_info_list[idx].msix_name);
-
-	if (rv) {
-		pr_err("%s requesting IRQ vector #%d: vec %d failed %d.\n",
-			xdev->conf.name, idx, xdev->msix[idx].vector, rv);
-		return rv;
-	}
-
-	return 0;
-}
-#ifdef __PCI_MSI_VEC_COUNT__
-
-#define msix_table_size(flags)	((flags & PCI_MSIX_FLAGS_QSIZE) + 1)
-
-static int pci_msix_vec_count(struct pci_dev *dev)
-{
-	u16 control;
-
-	if (!dev->msix_cap)
-		return 0;
-
-	pci_read_config_word(dev, dev->msix_cap + PCI_MSIX_FLAGS, &control);
-	return msix_table_size(control);
-}
-#endif
-
-int intr_setup(struct xlnx_dma_dev *xdev)
-{
-	int rv = 0;
-	int i = 0;
-	int num_vecs = 0;
-	int num_vecs_req = 0;
-#ifndef USER_INTERRUPT_DISABLE
-	int intr_count = 0;
-#endif
-
-	if ((xdev->conf.qdma_drv_mode == POLL_MODE) ||
-			(xdev->conf.qdma_drv_mode == LEGACY_INTR_MODE)) {
-		goto exit;
-	}
-	num_vecs = pci_msix_vec_count(xdev->conf.pdev);
-	pr_debug("dev %s, xdev->num_vecs = %d\n",
-			dev_name(&xdev->conf.pdev->dev), xdev->num_vecs);
-
-	if (num_vecs == 0) {
-		pr_warn("MSI-X not supported, running in polled mode\n");
-		return 0;
-	}
-
-	if (xdev->conf.data_msix_qvec_max == 0) {
-		pr_err("At least 1 data vector is required. input invalid: data_masix_qvec_max(%u)",
-			xdev->conf.data_msix_qvec_max);
-		return -EINVAL;
-	}
-
-	xdev->num_vecs = min_t(int, num_vecs, xdev->conf.msix_qvec_max);
-	if (xdev->num_vecs < xdev->conf.msix_qvec_max)
-		pr_info("current device supports only (%u) msix vectors per function. ignoring input for (%u) vectors",
-			xdev->num_vecs,
-			xdev->conf.msix_qvec_max);
-
-	/** Make sure the total supported vectors =
-	 *  (user vectors + data vectors + 1 error vectors
-	 *  + 1 mailbox vectors)
-	 *  find the requested vectors and check the available vectors
-	 *  can satisfy the request
-	 */
-	num_vecs_req = xdev->conf.user_msix_qvec_max +
-					xdev->conf.data_msix_qvec_max;
-
-	/** Dedicate 1 vector for error interrupts */
-	if (xdev->conf.master_pf)
-		num_vecs_req++;
-
-#ifndef MBOX_INTERRUPT_DISABLE
-	/** Dedicate 1 vector for mailbox interrupts */
-	if (qdma_mbox_is_irq_availabe(xdev))
-		num_vecs_req++;
-#endif
-
-	if (num_vecs_req > xdev->num_vecs) {
-		pr_warn("Available vectors(%u) is less than Requested vectors(%u) [u:%u|d:%u]\n",
-				xdev->num_vecs,
-				num_vecs_req,
-				xdev->conf.user_msix_qvec_max,
-				xdev->conf.data_msix_qvec_max);
-		return -EINVAL;
-	}
-
-	xdev->msix = kzalloc((sizeof(struct msix_entry) * xdev->num_vecs),
-						GFP_KERNEL);
-	if (!xdev->msix) {
-		pr_err("dev %s xdev->msix OOM.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		rv = -ENOMEM;
-		goto exit;
-	}
-
-	xdev->dev_intr_info_list =
-			kzalloc((sizeof(struct intr_info_t) * xdev->num_vecs),
-					GFP_KERNEL);
-	if (!xdev->dev_intr_info_list) {
-		pr_err("dev %s xdev->dev_intr_info_list OOM.\n",
-			dev_name(&xdev->conf.pdev->dev));
-		rv = -ENOMEM;
-		goto free_msix;
-	}
-
-	for (i = 0; i < xdev->num_vecs; i++) {
-		xdev->msix[i].entry = i;
-		INIT_LIST_HEAD(&xdev->dev_intr_info_list[i].intr_list);
-		spin_lock_init(&xdev->dev_intr_info_list[i].vec_q_list);
-	}
-
-#if KERNEL_VERSION(4, 12, 0) <= LINUX_VERSION_CODE
-	rv = pci_enable_msix_exact(xdev->conf.pdev, xdev->msix, xdev->num_vecs);
-#else
-	rv = pci_enable_msix(xdev->conf.pdev, xdev->msix, xdev->num_vecs);
-#endif
-	if (rv < 0) {
-		pr_err("Error enabling MSI-X (%d)\n", rv);
-		goto free_intr_info;
-	}
-
-	/** On master PF0, vector#2 is dedicated for Error interrupts and
-	 * vector #1 is dedicated for User interrupts
-	 * For all other PFs and VFs, vector#0 is dedicated for User interrupts
-	 * The remaining vectors are for Data interrupts
-	 */
-	i = 0; /* This is mandatory, do not delete */
-
-#ifndef MBOX_INTERRUPT_DISABLE
-	if (qdma_mbox_is_irq_availabe(xdev)) {
-		/* Mail box interrupt */
-		rv = intr_vector_setup(xdev, i, INTR_TYPE_MBOX,
-				mbox_intr_handler);
-		if (rv)
-			goto cleanup_irq;
-		i++;
-	}
-#endif
-
-#ifndef USER_INTERRUPT_DISABLE
-	for (intr_count = 0;
-		intr_count < xdev->conf.user_msix_qvec_max;
-		intr_count++) {
-		/* user interrupt */
-		rv = intr_vector_setup(xdev, i, INTR_TYPE_USER,
-				user_intr_handler);
-		if (rv)
-			goto cleanup_irq;
-		i++;
-	}
-#endif
-
-#ifndef __QDMA_VF__
-	/* global error interrupt */
-	if (xdev->conf.master_pf) {
-		rv = intr_vector_setup(xdev, i, INTR_TYPE_ERROR,
-				error_intr_handler);
-		if (rv)
-			goto cleanup_irq;
-		i++;
-	}
-#endif
-
-	/* data interrupt */
-	xdev->dvec_start_idx = i;
-	for (; i < xdev->num_vecs; i++) {
-		rv = intr_vector_setup(xdev, i, INTR_TYPE_DATA,
-					data_intr_handler);
-		if (rv)
-			goto cleanup_irq;
-	}
-
-	xdev->flags |= XDEV_FLAG_IRQ;
-	return rv;
-
-cleanup_irq:
-	while (--i >= 0)
-		free_irq(xdev->msix[i].vector, xdev);
-
-	pci_disable_msix(xdev->conf.pdev);
-	xdev->num_vecs = 0;
-free_intr_info:
-	kfree(xdev->dev_intr_info_list);
-free_msix:
-	kfree(xdev->msix);
-exit:
-	return rv;
-}
-
-
-
-#ifndef __QDMA_VF__
-static irqreturn_t irq_legacy(int irq, void *irq_data)
-{
-	struct list_head *entry, *tmp;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)irq_data;
-	irqreturn_t ret = IRQ_NONE;
-
-	if (!xdev) {
-		pr_err("Invalid Xdev");
-		goto irq_return;
-	}
-
-	spin_lock_irqsave(&legacy_intr_lock, legacy_intr_flags);
-	if (!xdev->hw.qdma_is_legacy_intr_pend(xdev)) {
-
-		list_for_each_safe(entry, tmp, &legacy_intr_q_list) {
-			struct qdma_descq *descq =
-					container_of(entry,
-						     struct qdma_descq,
-						     legacy_intr_q_list);
-
-			qdma_descq_service_cmpl_update(descq, 0, 1);
-		}
-		xdev->hw.qdma_clear_pend_legacy_intr(xdev);
-		xdev->hw.qdma_legacy_intr_conf(xdev, ENABLE);
-		ret = IRQ_HANDLED;
-	}
-	spin_unlock_irqrestore(&legacy_intr_lock, legacy_intr_flags);
-
-irq_return:
-	return ret;
-}
-
-void intr_legacy_clear(struct qdma_descq *descq)
-{
-
-	if (!descq) {
-		pr_err("Invalid descq received");
-		return;
-	}
-	list_del(&descq->legacy_intr_q_list);
-
-	if (list_empty(&legacy_intr_q_list)) {
-
-		pr_info("un-registering legacy interrupt from qdma%05x\n",
-			descq->xdev->conf.bdf);
-
-		descq->xdev->hw.qdma_legacy_intr_conf(descq->xdev, DISABLE);
-
-		free_irq(descq->xdev->conf.pdev->irq, descq->xdev);
-	}
-}
-
-int intr_legacy_setup(struct qdma_descq *descq)
-{
-	int req_irq = 0;
-	int rv = 0;
-
-	if (!descq) {
-		pr_err("Invalid descq received");
-		return -EINVAL;
-	}
-
-	spin_lock(&legacy_q_add_lock);
-	req_irq = list_empty(&legacy_intr_q_list);
-	rv = req_irq ? 0 : 1;
-
-	if (req_irq != 0) {
-		spin_lock_init(&legacy_intr_lock);
-		pr_debug("registering legacy interrupt for irq-%d from qdma%05x\n",
-			descq->xdev->conf.pdev->irq, descq->xdev->conf.bdf);
-
-		if (descq->xdev->hw.qdma_legacy_intr_conf(descq->xdev,
-								DISABLE)) {
-			spin_unlock(&legacy_q_add_lock);
-			return -EINVAL;
-		}
-
-		rv = request_threaded_irq(descq->xdev->conf.pdev->irq, irq_top,
-					  irq_legacy, legacy_intr_flags,
-					  "qdma legacy intr",
-					  descq->xdev);
-
-		if (rv < 0)
-			goto exit_intr_setup;
-		else {
-			list_add_tail(&descq->legacy_intr_q_list,
-				      &legacy_intr_q_list);
-			rv = 0;
-		}
-		if (descq->xdev->hw.qdma_legacy_intr_conf(descq->xdev,
-								ENABLE)) {
-			spin_unlock(&legacy_q_add_lock);
-			return -EINVAL;
-		}
-	} else
-		list_add_tail(&descq->legacy_intr_q_list,
-			      &legacy_intr_q_list);
-
-exit_intr_setup:
-	spin_unlock(&legacy_q_add_lock);
-	return rv;
-}
-#endif
-
-int intr_ring_setup(struct xlnx_dma_dev *xdev)
-{
-	int num_entries = 0;
-	int counter = 0;
-	struct intr_coal_conf  *intr_coal_list;
-	struct intr_coal_conf  *intr_coal_list_entry;
-
-	if ((xdev->conf.qdma_drv_mode != INDIRECT_INTR_MODE) &&
-			(xdev->conf.qdma_drv_mode != AUTO_MODE)) {
-		pr_debug("skipping interrupt aggregation: driver is loaded in %s mode\n",
-			mode_name_list[xdev->conf.qdma_drv_mode].name);
-		xdev->intr_coal_list = NULL;
-		return 0;
-	}
-
-	/** For master_pf, vec1 and vec2 is used for
-	 *  error and user interrupts
-	 *  for other pfs, vec0 is used for user interrupts
-	 */
-	if (xdev->num_vecs != 0) {
-		pr_debug("dev %s num_vectors[%d] < num_queues [%d]\n",
-					dev_name(&xdev->conf.pdev->dev),
-					xdev->num_vecs,
-					xdev->conf.qsets_max);
-		pr_debug("Enabling Interrupt aggregation\n");
-
-		/** obtain the number of queue entries
-		 * in each inr_ring based on ring size
-		 */
-		num_entries = ((xdev->conf.intr_rngsz + 1) * 512);
-
-		pr_debug("%s interrupt coalescing ring with %d entries\n",
-			dev_name(&xdev->conf.pdev->dev), num_entries);
-		/**
-		 * Initially assuming that each vector has the same size of the
-		 * ring, In practical it is possible to have different ring
-		 * size of different vectors (?)
-		 */
-		intr_coal_list = kzalloc(
-				sizeof(struct intr_coal_conf) *
-				QDMA_NUM_DATA_VEC_FOR_INTR_CXT,
-				GFP_KERNEL);
-		if (!intr_coal_list) {
-			pr_err("dev %s num_vecs %d OOM.\n",
-				dev_name(&xdev->conf.pdev->dev),
-				QDMA_NUM_DATA_VEC_FOR_INTR_CXT);
-			return -ENOMEM;
-		}
-
-		for (counter = 0;
-			counter < QDMA_NUM_DATA_VEC_FOR_INTR_CXT;
-			counter++) {
-			intr_coal_list_entry = (intr_coal_list + counter);
-			intr_coal_list_entry->intr_rng_num_entries =
-							num_entries;
-			intr_coal_list_entry->intr_ring_base = intr_ring_alloc(
-					xdev, num_entries,
-					sizeof(union qdma_intr_ring),
-					&intr_coal_list_entry->intr_ring_bus);
-			if (!intr_coal_list_entry->intr_ring_base) {
-				pr_err("dev %s, sz %u, intr_desc ring OOM.\n",
-				xdev->conf.name,
-				intr_coal_list_entry->intr_rng_num_entries);
-				goto err_out;
-			}
-
-			intr_coal_list_entry->vec_id =
-			xdev->msix[counter + xdev->dvec_start_idx].entry;
-			intr_coal_list_entry->intr_cidx_info.sw_cidx = 0;
-			intr_coal_list_entry->color = 1;
-			intr_coal_list_entry->intr_cidx_info.rng_idx =
-					get_intr_ring_index(xdev,
-					    intr_coal_list_entry->vec_id);
-			pr_debug("ring_number = %d, vector_index = %d, ring_size = %d, ring_base = 0x%08x",
-			    counter, intr_coal_list_entry->vec_id,
-			    intr_coal_list_entry->intr_rng_num_entries,
-			    (unsigned int)intr_coal_list_entry->intr_ring_bus);
-		}
-
-		pr_debug("dev %s interrupt coalescing ring setup successful\n",
-					dev_name(&xdev->conf.pdev->dev));
-
-		xdev->intr_coal_list = intr_coal_list;
-	} else {
-		pr_info("dev %s intr vec[%d] >= queues[%d], No aggregation\n",
-			dev_name(&xdev->conf.pdev->dev),
-			(xdev->num_vecs - xdev->dvec_start_idx),
-			xdev->conf.qsets_max);
-
-		xdev->intr_coal_list = NULL;
-		/* Fallback from indirect interrupt mode */
-		xdev->conf.qdma_drv_mode = POLL_MODE;
-	}
-	return 0;
-
-err_out:
-	while (--counter >= 0) {
-		intr_coal_list_entry = (intr_coal_list + counter);
-		intr_ring_free(xdev, intr_coal_list_entry->intr_rng_num_entries,
-				sizeof(union qdma_intr_ring),
-				(u8 *)intr_coal_list_entry->intr_ring_base,
-				intr_coal_list_entry->intr_ring_bus);
-	}
-	kfree(intr_coal_list);
-	return -ENOMEM;
-}
-
-void intr_work(struct work_struct *work)
-{
-	struct qdma_descq *descq;
-
-	descq = container_of(work, struct qdma_descq, work);
-	qdma_descq_service_cmpl_update(descq, 0, 1);
-}
-
-/**
- * qdma_queue_service - service the queue
- * in the case of irq handler is registered by the user, the user should
- * call qdma_queue_service() in its interrupt handler to service the queue
- * @dev_hndl: hndl retured from qdma_device_open()
- * @qhndl: hndl retured from qdma_queue_add()
- */
-int qdma_queue_service(unsigned long dev_hndl, unsigned long id, int budget,
-			bool c2h_upd_cmpl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 0);
-	if (descq)
-		return qdma_descq_service_cmpl_update(descq,
-					budget, c2h_upd_cmpl);
-
-	return -EINVAL;
-}
-
-static u8 get_intr_vec_index(struct xlnx_dma_dev *xdev, u8 intr_type)
-{
-	int i = 0;
-
-	for (i = 0; i < xdev->num_vecs; i++) {
-		if (xdev->dev_intr_info_list[i].intr_vec_map.intr_type ==
-		    intr_type) {
-			struct intr_info_t *dev_intr_info_list =
-					&xdev->dev_intr_info_list[i];
-			return dev_intr_info_list->intr_vec_map.intr_vec_index;
-		}
-	}
-	return 0;
-}
-
-int qdma_err_intr_setup(struct xlnx_dma_dev *xdev)
-{
-	int rv = 0;
-	u8  err_intr_index = 0;
-
-	err_intr_index = get_intr_vec_index(xdev, INTR_TYPE_ERROR);
-
-	rv = xdev->hw.qdma_hw_error_intr_setup(xdev, xdev->func_id,
-					    err_intr_index);
-	if (rv < 0) {
-		pr_err("Failed to setup error interrupt, err = %d", rv);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-int get_intr_ring_index(struct xlnx_dma_dev *xdev, u32 vector_index)
-{
-	int ring_index = 0;
-
-	ring_index = (vector_index - xdev->dvec_start_idx) +
-			(xdev->func_id * QDMA_NUM_DATA_VEC_FOR_INTR_CXT);
-	pr_debug("func_id = %d, vector_index = %d, ring_index = %d\n",
-			xdev->func_id, vector_index, ring_index);
-
-	return ring_index;
-}
-
-void intr_legacy_init(void)
-{
-#ifndef __QDMA_VF__
-	spin_lock_init(&legacy_q_add_lock);
-#endif
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_intr.h b/QDMA/linux-kernel/driver/libqdma/qdma_intr.h
deleted file mode 100755
index c26174e..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_intr.h
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef LIBQDMA_QDMA_INTR_H_
-#define LIBQDMA_QDMA_INTR_H_
-/**
- * @file
- * @brief This file contains the declarations for qdma dev interrupt handlers
- *
- */
-#include <linux/types.h>
-#include <linux/workqueue.h>
-#include "qdma_descq.h"
-/**
- * forward declaration for xlnx_dma_dev
- */
-struct xlnx_dma_dev;
-
-/**
- * @struct - qdma_intr_ring_cpm
- * @brief	Interrupt ring entry definition for 2018.2 CPM release
- */
-struct qdma_intr_ring_cpm {
-	/** producer index. This is from Interrupt source.
-	 *  Cumulative pointer of total interrupt Aggregation
-	 *  Ring entry written
-	 */
-	__be64 pidx:16;
-	/** consumer index. This is from Interrupt source.
-	 *  Cumulative consumed pointer
-	 */
-	__be64 cidx:16;
-	/** source color. This is from Interrupt source.
-	 *  This bit inverts every time pidx wraps around
-	 *  and this field gets copied to color field of descriptor.
-	 */
-	__be64 s_color:1;
-	/** This is from Interrupt source.
-	 * Interrupt state, 0: CMPT_INT_ISR; 1: CMPT_INT_TRIG; 2: CMPT_INT_ARMED
-	 */
-	__be64 intr_satus:2;
-	/** error. This is from interrupt source
-	 *  {C2h_err[1:0], h2c_err[1:0]}
-	 */
-	__be64 error:4;
-	/**  11 reserved bits*/
-	__be64 rsvd:11;
-	/**  Is the interrupt raised due to error ?
-	 *   1: error interrupt; 0: non-error interrupt
-	 */
-	__be64 error_int:1;
-	/**  interrupt type, 0: H2C; 1: C2H*/
-	__be64 intr_type:1;
-	/**  This is from Interrupt source. Queue ID*/
-	__be64 qid:11;
-	/**  The color bit of the Interrupt Aggregation Ring.
-	 *   This bit inverts every time pidx wraps around on the
-	 *   Interrupt Aggregation Ring.
-	 */
-	__be64 coal_color:1;
-};
-
-/**
- * @struct - qdma_intr_ring_generic
- * @brief	Interrupt ring entry definition
- */
-struct qdma_intr_ring_generic {
-	/** producer index. This is from Interrupt source.
-	 *  Cumulative pointer of total interrupt Aggregation
-	 *  Ring entry written
-	 */
-	__be64 pidx:16;
-	/** consumer index. This is from Interrupt source.
-	 *  Cumulative consumed pointer
-	 */
-	__be64 cidx:16;
-	/** source color. This is from Interrupt source.
-	 *  This bit inverts every time pidx wraps around
-	 *  and this field gets copied to color field of descriptor.
-	 */
-	__be64 s_color:1;
-	/** This is from Interrupt source.
-	 * Interrupt state, 0: CMPT_INT_ISR; 1: CMPT_INT_TRIG; 2: CMPT_INT_ARMED
-	 */
-	__be64 intr_satus:2;
-	/** error. This is from interrupt source
-	 *  {C2h_err[1:0], h2c_err[1:0]}
-	 */
-	__be64 error:2;
-	/**  1 reserved bits*/
-	__be64 rsvd:1;
-	/**  interrupt type, 0: H2C; 1: C2H*/
-	__be64 intr_type:1;
-	/**  This is from Interrupt source. Queue ID*/
-	__be64 qid:24;
-	/**  The color bit of the Interrupt Aggregation Ring.
-	 *   This bit inverts every time pidx wraps around on the
-	 *   Interrupt Aggregation Ring.
-	 */
-	__be64 coal_color:1;
-};
-
-union qdma_intr_ring {
-	struct qdma_intr_ring_cpm ring_cpm;
-	struct qdma_intr_ring_generic ring_generic;
-};
-
-
-/*****************************************************************************/
-/**
- * intr_teardown() - un register the interrupts for the device
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-void intr_teardown(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * intr_setup() - register the interrupts for the device
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int intr_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * intr_ring_teardown() - delete the interrupt ring
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-void intr_ring_teardown(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * intr_context_setup() - set up the interrupt context
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int intr_context_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * intr_ring_setup() - create the interrupt ring
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int intr_ring_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * intr_legacy_setup() - setup the legacy interrupt handler
- *
- * @param[in]	descq:	descq on which the interrupt needs to be setup
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int intr_legacy_setup(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * intr_legacy_clear() - clear the legacy interrupt handler
- *
- * @param[in]	descq:	descq on which the interrupt needs to be cleared
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-void intr_legacy_clear(struct qdma_descq *descq);
-
-
-/*****************************************************************************/
-/**
- * intr_work() - attach the top half for the interrupt
- *
- * @param[in]	work:		pointer to struct work_struct
- *
- * @return	none
- *****************************************************************************/
-void intr_work(struct work_struct *work);
-
-/*****************************************************************************/
-/**
- * qdma_err_intr_setup() - set up the error interrupt
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-int qdma_err_intr_setup(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_enable_hw_err() - enable the hw errors
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	hw_err_type:	hw error type
- *
- * @return	none
- *****************************************************************************/
-void qdma_enable_hw_err(struct xlnx_dma_dev *xdev, u8 hw_err_type);
-
-/*****************************************************************************/
-/**
- * get_intr_ring_index() - get the interrupt ring index based on vector index
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	vector_index:	vector index
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int get_intr_ring_index(struct xlnx_dma_dev *xdev, u32 vector_index);
-
-#ifndef __QDMA_VF__
-#ifdef ERR_DEBUG
-/*****************************************************************************/
-/**
- * err_stat_handler() - error interrupt handler
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-void err_stat_handler(struct xlnx_dma_dev *xdev);
-#endif
-#endif
-
-#endif /* LIBQDMA_QDMA_DEVICE_H_ */
-
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_license.h b/QDMA/linux-kernel/driver/libqdma/qdma_license.h
deleted file mode 100755
index 3175073..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_license.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef LIBQDMA_QDMA_LICENSE_H_
-#define LIBQDMA_QDMA_LICENSE_H_
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#endif /* LIBQDMA_QDMA_LICENSE_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c
deleted file mode 100755
index 0161d04..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.c
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-#include <linux/jiffies.h>
-#include <linux/timer.h>
-#include <linux/delay.h>
-#include <linux/sched.h>
-
-#include "qdma_compat.h"
-#include "xdev.h"
-#include "qdma_device.h"
-#include "qdma_regs.h"
-#include "qdma_context.h"
-#include "qdma_intr.h"
-#include "qdma_mbox.h"
-
-#define MBOX_TIMER_INTERVAL	(1)
-
-#ifdef __QDMA_VF__
-#define QDMA_DEV QDMA_DEV_VF
-#else
-#define QDMA_DEV QDMA_DEV_PF
-#endif
-
-static int mbox_hw_send(struct qdma_mbox *mbox, struct mbox_msg *m)
-{
-	struct xlnx_dma_dev *xdev = mbox->xdev;
-	int rv;
-
-	spin_lock_bh(&mbox->hw_tx_lock);
-	rv = qdma_mbox_send(xdev, QDMA_DEV, m->raw);
-	spin_unlock_bh(&mbox->hw_tx_lock);
-
-	return rv;
-}
-
-static int mbox_hw_rcv(struct qdma_mbox *mbox, struct mbox_msg *m)
-{
-	struct xlnx_dma_dev *xdev = mbox->xdev;
-	int rv;
-
-	spin_lock_bh(&mbox->hw_rx_lock);
-	memset(m->raw, 0, MBOX_MSG_REG_MAX *
-	       sizeof(uint32_t));
-	rv = qdma_mbox_rcv(xdev, QDMA_DEV, m->raw);
-	spin_unlock_bh(&mbox->hw_rx_lock);
-	return rv;
-}
-
-/*
- * mbox tx message processing
- */
-static void mbox_msg_destroy(struct kref *kref)
-{
-	struct mbox_msg *m = container_of(kref, struct mbox_msg, refcnt);
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(8, 1) <= RHEL_RELEASE_CODE
-	vfree(m);
-#else
-	kfree(m);
-#endif
-#else
-	kfree(m);
-#endif
-}
-
-void __qdma_mbox_msg_free(const char *f, struct mbox_msg *m)
-{
-	kref_put(&m->refcnt, mbox_msg_destroy);
-}
-
-struct mbox_msg *qdma_mbox_msg_alloc(void)
-{
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(8, 1) <= RHEL_RELEASE_CODE
-	struct mbox_msg *m = vmalloc(sizeof(struct mbox_msg));
-#else
-	struct mbox_msg *m = kzalloc(sizeof(struct mbox_msg), GFP_KERNEL);
-#endif
-#else
-	struct mbox_msg *m = kzalloc(sizeof(struct mbox_msg), GFP_KERNEL);
-#endif
-	if (!m)
-		return NULL;
-	memset(m, 0, sizeof(struct mbox_msg));
-	kref_init(&m->refcnt);
-	qdma_waitq_init(&m->waitq);
-
-	return m;
-}
-
-int qdma_mbox_msg_send(struct xlnx_dma_dev *xdev, struct mbox_msg *m,
-			bool wait_resp, unsigned int timeout_ms)
-{
-	struct qdma_mbox *mbox = &xdev->mbox;
-
-	m->resp_op_matched = 0;
-	m->wait_resp = wait_resp ? 1 : 0;
-	m->retry_cnt = (timeout_ms / 1000) + 1;
-
-#if defined(__QDMA_VF__)
-	if (xdev->reset_state == RESET_STATE_INVALID)
-		return -EINVAL;
-#endif
-	/* queue up to ensure order */
-	spin_lock_bh(&mbox->list_lock);
-	list_add_tail(&m->list, &mbox->tx_todo_list);
-	spin_unlock_bh(&mbox->list_lock);
-
-	/* kick start the tx */
-	queue_work(mbox->workq, &mbox->tx_work);
-
-	if (!wait_resp)
-		return 0;
-
-	qdma_waitq_wait_event_timeout(m->waitq, m->resp_op_matched,
-			msecs_to_jiffies(timeout_ms));
-
-	if (!m->resp_op_matched) {
-		/* delete from mbox list */
-		spin_lock_bh(&mbox->list_lock);
-		list_del(&m->list);
-		spin_unlock_bh(&mbox->list_lock);
-
-		pr_err("%s mbox timed out. timeout %u ms.\n",
-				xdev->conf.name, timeout_ms);
-
-		return -EPIPE;
-	}
-
-	return 0;
-}
-
-/*
- * mbox rx message processing
- */
-#ifdef __QDMA_VF__
-
-static int mbox_rcv_one_msg(struct qdma_mbox *mbox)
-{
-	struct mbox_msg *m_rcv = &mbox->rx;
-	struct mbox_msg *m_snd = NULL, *tmp1 = NULL, *tmp2 = NULL;
-	struct mbox_msg *m_resp = NULL;
-	int rv = 0;
-
-	if (mbox->xdev->func_id == mbox->xdev->func_id_parent) {
-		mbox->xdev->func_id = qdma_mbox_vf_func_id_get(m_rcv->raw,
-							QDMA_DEV);
-		mbox->xdev->func_id_parent = qdma_mbox_vf_parent_func_id_get(
-				m_rcv->raw);
-	}
-	spin_lock_bh(&mbox->list_lock);
-	/* check if the sent request expired */
-	if (!list_empty(&mbox->rx_pend_list)) {
-		list_for_each_entry_safe(tmp1, tmp2, &mbox->rx_pend_list,
-					 list) {
-			if (qdma_mbox_is_msg_response(tmp1->raw, m_rcv->raw)) {
-				m_snd = tmp1;
-				m_snd->resp_op_matched = 1;
-				break;
-			}
-		}
-	}
-	spin_unlock_bh(&mbox->list_lock);
-
-	if (list_empty(&mbox->rx_pend_list)) {
-		m_resp = qdma_mbox_msg_alloc();
-		if (!m_resp) {
-			pr_err("Failed to allocate mbox msg\n");
-			return -ENOMEM;
-		}
-		rv = qdma_mbox_vf_rcv_msg_handler(m_rcv->raw, m_resp->raw);
-		if (rv == QDMA_MBOX_VF_RESET) {
-			qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-						QDMA_MBOX_MSG_TIMEOUT_MS);
-			mbox->xdev->reset_state = RESET_STATE_RECV_PF_RESET_REQ;
-			queue_work(mbox->xdev->workq,
-					   &(mbox->xdev->reset_work));
-		} else if (rv == QDMA_MBOX_PF_RESET_DONE) {
-			mbox->xdev->reset_state =
-				RESET_STATE_RECV_PF_RESET_DONE;
-			qdma_waitq_wakeup(&mbox->xdev->wq);
-			qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-						QDMA_MBOX_MSG_TIMEOUT_MS);
-
-
-		}  else if (rv == QDMA_MBOX_PF_BYE) {
-			qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-						QDMA_MBOX_MSG_TIMEOUT_MS);
-			mbox->xdev->reset_state =
-				RESET_STATE_RECV_PF_OFFLINE_REQ;
-			queue_work(mbox->xdev->workq,
-					   &(mbox->xdev->reset_work));
-		} else {
-			pr_err("func_id=0x%x parent=0x%x", mbox->xdev->func_id,
-				   mbox->xdev->func_id_parent);
-		}
-
-	}
-
-	if (m_snd) {
-		/* a matching request is found */
-		spin_lock_bh(&mbox->list_lock);
-		list_del(&m_snd->list);
-		memcpy(m_snd->raw, m_rcv->raw, MBOX_MSG_REG_MAX *
-		       sizeof(uint32_t));
-		/* wake up anyone waiting on the response */
-		qdma_waitq_wakeup(&m_snd->waitq);
-		spin_unlock_bh(&mbox->list_lock);
-	}
-
-	return 0;
-}
-
-#else
-static int mbox_rcv_one_msg(struct qdma_mbox *mbox)
-{
-	struct mbox_msg *m = &mbox->rx;
-	struct mbox_msg *m_resp = qdma_mbox_msg_alloc();
-	struct mbox_msg *m_snd = NULL, *tmp1 = NULL, *tmp2 = NULL;
-	int rv;
-
-	if (!m_resp)
-		return -ENOMEM;
-
-	rv = qdma_mbox_pf_rcv_msg_handler(mbox->xdev,
-					  mbox->xdev->dma_device_index,
-					  mbox->xdev->func_id,
-					  m->raw, m_resp->raw);
-
-	if (rv == QDMA_MBOX_VF_OFFLINE ||
-		rv == QDMA_MBOX_VF_RESET_BYE) {
-#ifdef CONFIG_PCI_IOV
-		uint16_t vf_func_id = qdma_mbox_vf_func_id_get(m->raw,
-				QDMA_DEV);
-
-		xdev_sriov_vf_offline(mbox->xdev, vf_func_id);
-#endif
-		if (rv == QDMA_MBOX_VF_RESET_BYE)
-			qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-				QDMA_MBOX_MSG_TIMEOUT_MS);
-		else
-			qdma_mbox_msg_free(m_resp);
-	} else if (rv == QDMA_MBOX_VF_ONLINE) {
-#ifdef CONFIG_PCI_IOV
-		uint16_t vf_func_id = qdma_mbox_vf_func_id_get(m->raw,
-				QDMA_DEV);
-
-		xdev_sriov_vf_online(mbox->xdev, vf_func_id);
-#endif
-		qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-					QDMA_MBOX_MSG_TIMEOUT_MS);
-	} else if (rv == QDMA_MBOX_VF_RESET ||
-			   rv == QDMA_MBOX_PF_RESET_DONE ||
-			   rv == QDMA_MBOX_PF_BYE) {
-		spin_lock_bh(&mbox->list_lock);
-		if (!list_empty(&mbox->rx_pend_list)) {
-			list_for_each_entry_safe(tmp1, tmp2,
-						&mbox->rx_pend_list,
-						list) {
-				if (qdma_mbox_is_msg_response(tmp1->raw,
-								m->raw)) {
-					m_snd = tmp1;
-					m_snd->resp_op_matched = 1;
-					break;
-				}
-			}
-		}
-		if (m_snd) {
-			list_del(&m_snd->list);
-			memcpy(m_snd->raw, m->raw, MBOX_MSG_REG_MAX *
-				   sizeof(uint32_t));
-			qdma_waitq_wakeup(&m_snd->waitq);
-			qdma_mbox_msg_free(m_snd);
-		}
-		qdma_mbox_msg_free(m_resp);
-		spin_unlock_bh(&mbox->list_lock);
-	} else
-		qdma_mbox_msg_send(mbox->xdev, m_resp, 0,
-					QDMA_MBOX_MSG_TIMEOUT_MS);
-
-	return 0;
-}
-#endif
-
-static inline void mbox_timer_stop(struct qdma_mbox *mbox)
-{
-	del_timer(&mbox->timer);
-}
-
-static inline void mbox_timer_start(struct qdma_mbox *mbox)
-{
-	struct timer_list *timer = &mbox->timer;
-
-	qdma_timer_start(timer, MBOX_TIMER_INTERVAL);
-}
-
-/*
- * tx & rx workqueue handler
- */
-static void mbox_tx_work(struct work_struct *work)
-{
-	struct qdma_mbox *mbox = container_of(work, struct qdma_mbox, tx_work);
-
-	while (1) {
-		struct mbox_msg *m = NULL;
-
-		spin_lock_bh(&mbox->list_lock);
-		if (list_empty(&mbox->tx_todo_list)) {
-			spin_unlock_bh(&mbox->list_lock);
-			break;
-		}
-
-		m = list_first_entry(&mbox->tx_todo_list,
-						struct mbox_msg, list);
-
-		spin_unlock_bh(&mbox->list_lock);
-
-		if (mbox_hw_send(mbox, m) == 0) {
-			mbox->send_busy = 0;
-			spin_lock_bh(&mbox->list_lock);
-			/* Msg tx successful, remove from list */
-			list_del(&m->list);
-			spin_unlock_bh(&mbox->list_lock);
-
-			/* response needed */
-			if (m->wait_resp) {
-				spin_lock_bh(&mbox->list_lock);
-				list_add_tail(&m->list, &mbox->rx_pend_list);
-				spin_unlock_bh(&mbox->list_lock);
-			} else
-				qdma_mbox_msg_free(m);
-		} else {
-			if (!xlnx_dma_device_flag_check(mbox->xdev,
-							XDEV_FLAG_OFFLINE)) {
-				if (!m->wait_resp) {
-					m->retry_cnt--;
-					if (!m->retry_cnt) {
-						spin_lock_bh(&mbox->list_lock);
-						list_del(&m->list);
-						spin_unlock_bh(
-							&mbox->list_lock);
-						qdma_mbox_msg_free(m);
-						break;
-					}
-				}
-				mbox->send_busy = 1;
-				mbox_timer_start(mbox);
-			} else
-				qdma_mbox_msg_free(m);
-			break;
-		}
-	}
-}
-
-static void mbox_rx_work(struct work_struct *work)
-{
-	struct qdma_mbox *mbox = container_of(work, struct qdma_mbox, rx_work);
-	struct xlnx_dma_dev *xdev = mbox->xdev;
-	struct mbox_msg *m = &mbox->rx;
-	int rv;
-	int mbox_stop = 0;
-
-	rv = mbox_hw_rcv(mbox, m);
-	while (rv == 0) {
-		if (unlikely(xlnx_dma_device_flag_check(xdev,
-						XDEV_FLAG_OFFLINE)))
-			break;
-		else if (mbox_rcv_one_msg(mbox) == -EINVAL)
-			break;
-		rv = mbox_hw_rcv(mbox, m);
-	}
-
-	if (rv == -QDMA_ERR_MBOX_ALL_ZERO_MSG) {
-#ifdef __QDMA_VF__
-		if (xdev->reset_state == RESET_STATE_IDLE) {
-			mbox_stop = 1;
-			pr_info("func_id=0x%x parent=0x%x %s: rcv'ed all zeros msg, disable mbox processing.\n",
-				xdev->func_id, xdev->func_id_parent,
-				xdev->conf.name);
-		}
-#else
-		mbox_stop = 1;
-		pr_info("PF func_id=0x%x %s: rcv'ed all zero mbox msg, disable mbox processing.\n",
-			xdev->func_id, xdev->conf.name);
-#endif
-
-	} else if (xlnx_dma_device_flag_check(xdev, XDEV_FLAG_OFFLINE))
-		mbox_stop = 1;
-
-	if (mbox->rx_poll) {
-
-		if (mbox_stop == 1)
-			mbox_timer_stop(mbox);
-		else
-			mbox_timer_start(mbox);
-	} else {
-		if (mbox_stop != 0)
-			qdma_mbox_disable_interrupts(xdev, QDMA_DEV);
-	}
-}
-
-/*
- * non-interrupt mode: use timer for periodic checking of new messages
- */
-#if KERNEL_VERSION(4, 15, 0) <= LINUX_VERSION_CODE
-static void mbox_timer_handler(struct timer_list *t)
-#else
-static void mbox_timer_handler(unsigned long arg)
-#endif
-{
-#if KERNEL_VERSION(4, 15, 0) <= LINUX_VERSION_CODE
-	struct qdma_mbox *mbox = from_timer(mbox, t, timer);
-#else
-	struct qdma_mbox *mbox = (struct qdma_mbox *)arg;
-#endif
-	if (mbox->rx_poll)
-		queue_work(mbox->workq, &mbox->rx_work);
-	if (mbox->send_busy)
-		queue_work(mbox->workq, &mbox->tx_work);
-}
-
-bool qdma_mbox_is_irq_availabe(struct xlnx_dma_dev *xdev)
-{
-	/*MBOX is available in all QDMA Soft Devices for vivado release >
-	 * 2019.1
-	 */
-	if (((xdev->version_info.device_type == QDMA_DEVICE_SOFT) &&
-		(xdev->version_info.vivado_release >= QDMA_VIVADO_2019_1)))
-		return true;
-	/*MBOX is available in all Versal Hard IP from CPM5 onwards */
-	if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-		(xdev->version_info.device_type == QDMA_DEVICE_VERSAL_CPM5))
-		return true;
-
-	return false;
-}
-
-/*
- * mailbox initialization and cleanup
- */
-void qdma_mbox_stop(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_mbox *mbox = &xdev->mbox;
-	uint8_t retry_count = 100;
-	int rv = 0;
-
-#ifndef __QDMA_VF__
-	if (!xdev->dev_cap.mailbox_en)
-		return;
-#endif
-	do {
-		spin_lock_bh(&mbox->list_lock);
-		if (list_empty(&mbox->tx_todo_list))
-			break;
-		spin_unlock_bh(&mbox->list_lock);
-		mdelay(10); /* sleep 10ms for msgs to be sent or freed */
-	} while (1);
-	spin_unlock_bh(&mbox->list_lock);
-
-	do {
-		rv = qdma_mbox_out_status(xdev, QDMA_DEV);
-		if (!rv)
-			break;
-		retry_count--;
-		mdelay(10);
-	} while (retry_count != 0);
-	mbox_timer_stop(&xdev->mbox);
-	pr_debug("func_id=%d retry_count=%d\n", xdev->func_id, retry_count);
-	if (qdma_mbox_is_irq_availabe(xdev)) {
-		if (!xdev->mbox.rx_poll)
-			qdma_mbox_disable_interrupts(xdev, QDMA_DEV);
-	}
-}
-
-void qdma_mbox_start(struct xlnx_dma_dev *xdev)
-{
-
-#ifndef __QDMA_VF__
-	if (!xdev->dev_cap.mailbox_en)
-		return;
-#endif
-	if (xdev->mbox.rx_poll)
-		mbox_timer_start(&xdev->mbox);
-	else
-		qdma_mbox_enable_interrupts(xdev, QDMA_DEV);
-}
-
-void qdma_mbox_poll_start(struct xlnx_dma_dev *xdev)
-{
-
-#ifndef __QDMA_VF__
-	if (!xdev->dev_cap.mailbox_en)
-		return;
-#endif
-	xdev->mbox.rx_poll = 1;
-	qdma_mbox_disable_interrupts(xdev, QDMA_DEV);
-	mbox_timer_start(&xdev->mbox);
-}
-
-void qdma_mbox_cleanup(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_mbox *mbox = &xdev->mbox;
-
-	if (mbox->workq) {
-		mbox_timer_stop(mbox);
-		if (!xdev->mbox.rx_poll)
-			qdma_mbox_disable_interrupts(xdev, QDMA_DEV);
-		flush_workqueue(mbox->workq);
-		destroy_workqueue(mbox->workq);
-	}
-}
-
-int qdma_mbox_init(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_mbox *mbox = &xdev->mbox;
-	struct timer_list *timer = &mbox->timer;
-#ifndef __QDMA_VF__
-	int i;
-#endif
-	struct mbox_msg m;
-	char name[80];
-	int rv;
-
-	mbox->xdev = xdev;
-
-	spin_lock_init(&mbox->lock);
-	spin_lock_init(&mbox->list_lock);
-	spin_lock_init(&mbox->hw_rx_lock);
-	spin_lock_init(&mbox->hw_tx_lock);
-
-	INIT_LIST_HEAD(&mbox->tx_todo_list);
-	INIT_LIST_HEAD(&mbox->rx_pend_list);
-	INIT_WORK(&mbox->tx_work, mbox_tx_work);
-	INIT_WORK(&mbox->rx_work, mbox_rx_work);
-
-	snprintf(name, 80, "%s_mbox_wq", xdev->conf.name);
-	mbox->workq = create_singlethread_workqueue(name);
-
-	if (!mbox->workq) {
-		pr_info("%s OOM, mbox workqueue.\n", xdev->conf.name);
-		goto cleanup;
-	}
-
-
-	/* read & discard whatever in the incoming message buffer */
-#ifndef __QDMA_VF__
-	for (i = 0; i < 256; i++)
-		rv = mbox_hw_rcv(mbox, &m);
-#else
-	rv = mbox_hw_rcv(mbox, &m);
-#endif
-	/* ack any received messages in the Q */
-	qdma_mbox_hw_init(xdev, QDMA_DEV);
-	if (qdma_mbox_is_irq_availabe(xdev)) {
-		if ((xdev->conf.qdma_drv_mode != POLL_MODE) &&
-			(xdev->conf.qdma_drv_mode != LEGACY_INTR_MODE)) {
-			mbox->rx_poll = 0;
-			qdma_mbox_enable_interrupts(xdev, QDMA_DEV);
-		} else
-			mbox->rx_poll = 1;
-	} else
-		mbox->rx_poll = 1;
-
-	qdma_timer_setup(timer, mbox_timer_handler, mbox);
-
-	return 0;
-
-cleanup:
-	qdma_mbox_cleanup(xdev);
-	return -ENOMEM;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h b/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h
deleted file mode 100755
index e027eda..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_mbox.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_MBOX_H__
-#define __QDMA_MBOX_H__
-
-#include "qdma_compat.h"
-#include "qdma_device.h"
-#include "qdma_access_common.h"
-#include "qdma_mbox_protocol.h"
-
-/**
- * @file
- * @brief This file contains the declarations for qdma mailbox apis
- *
- */
-
-/**
- * mailbox messages
- *
- * NOTE: make sure the total message length is <= 128 bytes:
- * mbox_msg_hdr: 4 bytes
- * body: <= (128 - hdr) bytes
- *
- */
-
-struct mbox_msg {
-	struct work_struct work;	/** workqueue item */
-	struct list_head list;		/** message list */
-	qdma_wait_queue waitq;
-	struct kref refcnt;
-	u8 wait_resp;
-	u8 resp_op_matched;
-	u16 retry_cnt;
-
-	u32 raw[MBOX_MSG_REG_MAX];
-};
-
-/**
- * forward declaration of xlnx_dma_dev
- */
-struct xlnx_dma_dev;
-/**
- * @struct - qdma_mbox book keeping
- * @brief mailbox book keeping structure
- */
-struct qdma_mbox {
-	/** common lock */
-	spinlock_t lock;
-	/** tx lock */
-	spinlock_t hw_tx_lock;
-	/** rx lock */
-	spinlock_t hw_rx_lock;
-	/** work queue */
-	struct workqueue_struct *workq;
-	/** pointer to device data */
-	struct xlnx_dma_dev *xdev;
-	/** tx work_struct to pass data to tx work queue */
-	struct work_struct tx_work;
-	/** rx work_struct to pass data to rx work queue */
-	struct work_struct rx_work;
-	/** mbox rx message */
-	struct mbox_msg rx;
-	/** list lock */
-	spinlock_t list_lock;
-	/** list of messages waiting to be sent */
-	struct list_head tx_todo_list;
-	/** list of messages waiting for response */
-	struct list_head rx_pend_list;
-	/* flag to monitor tx is busy */
-	uint8_t send_busy;
-	/* flag for rx polling mode */
-	uint8_t rx_poll;
-
-	/** timer list */
-	struct timer_list timer;
-
-};
-
-#define QDMA_MBOX_MSG_TIMEOUT_MS	10000 /* 10 sec*/
-/*****************************************************************************/
-/**
- * qdma_mbox_init() - initialize qdma mailbox
- *
- * @param	xdev:	pointer to xlnx_dma_dev
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_mbox_init(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * qdma_mbox_cleanup()	- cleanup resources of qdma mailbox
- * qdma_mbox_stop()	- stop mailbox processing
- * qdma_mbox_start()	- start mailbox processing
- * qdma_mbox_poll_start()	- start mailbox processing in poll mode
- *
- * @param	xdev:	pointer to xlnx_dma_dev
- *
- * @return	none
- *****************************************************************************/
-void qdma_mbox_cleanup(struct xlnx_dma_dev *xdev);
-void qdma_mbox_stop(struct xlnx_dma_dev *xdev);
-void qdma_mbox_start(struct xlnx_dma_dev *xdev);
-void qdma_mbox_poll_start(struct xlnx_dma_dev *xdev);
-bool qdma_mbox_is_irq_availabe(struct xlnx_dma_dev *xdev);
-
-
-/*****************************************************************************/
-/**
- * qdma_mbox_msg_send() - handler to send a mailbox message
- *
- * @param	xdev:	pointer to xlnx_dma_dev
- * @param	m:		mailbox message
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_mbox_msg_send(struct xlnx_dma_dev *xdev, struct mbox_msg *m,
-			bool wait_resp, unsigned int timeout_ms);
-
-
-/*****************************************************************************/
-/**
- * qdma_mbox_msg_alloc() - allocate a mailbox message
- *
- * @param	xdev:	pointer to xlnx_dma_dev
- *
- * @return	0: success
- * @return	NULL: failure
- *****************************************************************************/
-struct mbox_msg *qdma_mbox_msg_alloc(void);
-
-/*****************************************************************************/
-/**
- * __qdma_mbox_msg_free() - free the mailbox message
- *
- * @param	f:		function name
- * @param	m:		mailbox message
- *
- * @return	none
- *****************************************************************************/
-void __qdma_mbox_msg_free(const char *f, struct mbox_msg *m);
-#define qdma_mbox_msg_free(m)	__qdma_mbox_msg_free(__func__, m)
-
-#endif /* #ifndef __QDMA_MBOX_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_platform.c b/QDMA/linux-kernel/driver/libqdma/qdma_platform.c
deleted file mode 100755
index d008d92..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_platform.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-#include "qdma_platform.h"
-#include "qdma_regs.h"
-#include "qdma_access_errors.h"
-#include <linux/errno.h>
-#include <linux/delay.h>
-
-static struct err_code_map error_code_map_list[] = {
-	{QDMA_SUCCESS,				0},
-	{QDMA_ERR_INV_PARAM,			EINVAL},
-	{QDMA_ERR_NO_MEM,			ENOMEM},
-	{QDMA_ERR_HWACC_BUSY_TIMEOUT,		EBUSY},
-	{QDMA_ERR_HWACC_INV_CONFIG_BAR,		EINVAL},
-	{QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,	EINVAL},
-	{QDMA_ERR_HWACC_BAR_NOT_FOUND,		EINVAL},
-	{QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,	EINVAL},
-	{QDMA_ERR_RM_RES_EXISTS,		EPERM},
-	{QDMA_ERR_RM_RES_NOT_EXISTS,		EINVAL},
-	{QDMA_ERR_RM_DEV_EXISTS,		EPERM},
-	{QDMA_ERR_RM_DEV_NOT_EXISTS,		EINVAL},
-	{QDMA_ERR_RM_NO_QUEUES_LEFT,		EPERM},
-	{QDMA_ERR_RM_QMAX_CONF_REJECTED,	EPERM},
-	{QDMA_ERR_MBOX_FMAP_WR_FAILED,		EIO},
-	{QDMA_ERR_MBOX_NUM_QUEUES,		EINVAL},
-	{QDMA_ERR_MBOX_INV_QID,			EINVAL},
-	{QDMA_ERR_MBOX_INV_RINGSZ,		EINVAL},
-	{QDMA_ERR_MBOX_INV_BUFSZ,		EINVAL},
-	{QDMA_ERR_MBOX_INV_CNTR_TH,		EINVAL},
-	{QDMA_ERR_MBOX_INV_TMR_TH,		EINVAL},
-	{QDMA_ERR_MBOX_INV_MSG,			EINVAL},
-	{QDMA_ERR_MBOX_SEND_BUSY,		EBUSY},
-	{QDMA_ERR_MBOX_NO_MSG_IN,		EINVAL},
-	{QDMA_ERR_MBOX_REG_READ_FAILED,	EIO},
-	{QDMA_ERR_MBOX_ALL_ZERO_MSG,		EINVAL},
-};
-
-/**
- * mutex  used for resource management APIs
- */
-static DEFINE_MUTEX(res_mutex);
-
-void *qdma_calloc(uint32_t num_blocks, uint32_t size)
-{
-	return kzalloc((num_blocks * (size_t)size), GFP_KERNEL);
-}
-
-void qdma_memfree(void *memptr)
-{
-	kfree(memptr);
-}
-
-void qdma_udelay(u32 delay_us)
-{
-	udelay(delay_us);
-}
-
-int qdma_reg_access_lock(void *dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	spin_lock(&xdev->hw_prg_lock);
-
-	return 0;
-}
-
-int qdma_reg_access_release(void *dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	spin_unlock(&xdev->hw_prg_lock);
-
-	return 0;
-}
-
-u32 qdma_reg_read(void *dev_hndl, u32 reg_offst)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	return readl(xdev->regs + reg_offst);
-}
-
-void qdma_reg_write(void *dev_hndl, u32 reg_offst, u32 val)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	writel(val, xdev->regs + reg_offst);
-}
-
-void qdma_resource_lock_take(void)
-{
-	mutex_lock(&res_mutex);
-}
-
-void qdma_resource_lock_give(void)
-{
-	mutex_unlock(&res_mutex);
-}
-
-void qdma_get_hw_access(void *dev_hndl, struct qdma_hw_access **hw)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	*hw = &xdev->hw;
-}
-
-void qdma_strncpy(char *dest, const char *src, size_t n)
-{
-	strncpy(dest, src, n);
-}
-
-
-int qdma_get_err_code(int acc_err_code)
-{
-	acc_err_code *= -1;
-	return -(error_code_map_list[acc_err_code].err_code);
-}
-
-int qdma_io_wmb(void)
-{
-	/*
-	 * TODO: Write memory barrier(wmb) calls are happening differently
-	 * for DPDK and Linux drivers. DPDK driver is calling wmb() before
-	 * pidx/cmpt_cidx updates, where as linux driver calls wmb() after
-	 * pidx/cmpt_cidx updates. As linux driver performance numbers
-	 * are good with current changes, so keeping this function
-	 * as place holder for furure changes related to memory barriers.
-	 */
-	return 0;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h b/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h
deleted file mode 100755
index 6649bfc..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_platform_env.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-#ifndef LIBQDMA_QDMA_PLATFORM_ENV_H_
-#define LIBQDMA_QDMA_PLATFORM_ENV_H_
-
-#include <linux/types.h>
-#include <linux/kernel.h>
-
-#define QDMA_SNPRINTF_S(arg1, arg2, arg3, ...) \
-		snprintf(arg1, arg3, ##__VA_ARGS__)
-
-#define qdma_log_info(x_, ...) pr_info(x_, ##__VA_ARGS__)
-#define qdma_log_warning(x_, ...) pr_warn(x_, ##__VA_ARGS__)
-#define qdma_log_error(x_, ...) pr_err(x_, ##__VA_ARGS__)
-#define qdma_log_debug(x_, ...) pr_debug(x_, ##__VA_ARGS__)
-
-#endif /* LIBQDMA_QDMA_PLATFORM_ENV_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_regs.c b/QDMA/linux-kernel/driver/libqdma/qdma_regs.c
deleted file mode 100755
index 920176c..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_regs.c
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_regs.h"
-
-#include <linux/version.h>
-#include <linux/delay.h>
-#include <linux/printk.h>
-#include <linux/stddef.h>
-#include <linux/string.h>
-
-#include "xdev.h"
-#include "qdma_device.h"
-#include "qdma_descq.h"
-#include "qdma_st_c2h.h"
-#include "qdma_access_common.h"
-#include "qdma_resource_mgmt.h"
-
-int qdma_set_ring_sizes(struct xlnx_dma_dev *xdev, u8 index,
-		u8 count, u32 *glbl_rng_sz)
-{
-	int i = 0;
-
-	if (!xdev || !glbl_rng_sz)
-		return -EINVAL;
-
-	/* Adding 1 for the wrap around descriptor and status descriptor */
-	for (i = index; i < (index + count); i++)
-		*(glbl_rng_sz + i) += 1;
-
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count, glbl_rng_sz,
-					QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-
-	return 0;
-}
-
-int qdma_get_ring_sizes(struct xlnx_dma_dev *xdev, u8 index,
-		u8 count, u32 *glbl_rng_sz)
-{
-	int i = 0;
-
-	if (!xdev || !glbl_rng_sz)
-		return -EINVAL;
-
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count, glbl_rng_sz,
-					QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ))
-		return -EINVAL;
-
-	/* Subtracting 1 for the wrap around descriptor and status descriptor */
-	for (i = index; i < (index + count); i++)
-		*(glbl_rng_sz + i) -= 1;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_read_config_register() - read dma config. register
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	reg_addr:	register address
- * @param[out]	value:          pointer to hold the read value
- *
- * Return:	0 for success and <0 for error
- *****************************************************************************/
-int qdma_device_read_config_register(unsigned long dev_hndl,
-					unsigned int reg_addr, u32 *value)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*value = readl(xdev->regs + reg_addr);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_write_config_register() - write dma config. register
- *
- * @param[in]	dev_hndl:	dev_hndl returned from qdma_device_open()
- * @param[in]	reg_addr:	register address
- * @param[in]	value:		register value to be writen
- *
- * Return:	0 for success and <0 for error
- *****************************************************************************/
-int qdma_device_write_config_register(unsigned long dev_hndl,
-				unsigned int reg_addr, unsigned int val)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	pr_debug("%s reg 0x%x, w 0x%08x.\n", xdev->conf.name, reg_addr, val);
-	writel(val, xdev->regs + reg_addr);
-
-	return 0;
-}
-
-
-#ifdef __QDMA_VF__
-#include "qdma_mbox.h"
-
-int qdma_csr_read(struct xlnx_dma_dev *xdev, struct global_csr_conf *csr)
-{
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-	int rv, i;
-	struct qdma_csr_info csr_info;
-
-	if (!m)
-		return -ENOMEM;
-
-	memset(&csr_info, 0, sizeof(csr_info));
-
-	qdma_mbox_compose_csr_read(xdev->func_id, m->raw);
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0)
-		goto free_msg;
-
-	rv = qdma_mbox_vf_csr_get(m->raw, &csr_info);
-	if (!rv) {
-		for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-			csr->ring_sz[i] = (uint32_t)csr_info.ringsz[i];
-			csr->c2h_buf_sz[i] = (uint32_t)csr_info.bufsz[i];
-			csr->c2h_timer_cnt[i] = (uint32_t)csr_info.timer_cnt[i];
-			csr->c2h_cnt_th[i] = (uint32_t)csr_info.cnt_thres[i];
-		}
-		csr->wb_intvl = csr_info.wb_intvl;
-	} else {
-		pr_err("csr info read failed, rv = %d", rv);
-		rv = -EINVAL;
-	}
-
-
-free_msg:
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-int qdma_global_csr_set(unsigned long dev_hndl, u8 index, u8 count,
-		struct global_csr_conf *csr)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-	pr_info("VF %d setting csr NOT allowed.\n", xdev->func_id);
-	return -EINVAL;
-}
-#endif
-#else /* ifdef __QDMA_VF__ */
-
-static void qdma_sort_c2h_cntr_th_values(struct xlnx_dma_dev *xdev)
-{
-	uint8_t i, idx = 0, j = 0;
-	uint8_t c2h_cntr_val = xdev->csr_info.c2h_cnt_th[0];
-	uint8_t least_max = 0;
-	int ref_idx = -1;
-
-get_next_idx:
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if ((ref_idx >= 0) && (ref_idx == i))
-			continue;
-		if (xdev->csr_info.c2h_cnt_th[i] < least_max)
-			continue;
-		c2h_cntr_val = xdev->csr_info.c2h_cnt_th[i];
-		idx = i;
-		break;
-	}
-	for (; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if ((ref_idx >= 0) && (ref_idx == i))
-			continue;
-		if (xdev->csr_info.c2h_cnt_th[i] < least_max)
-			continue;
-		if (c2h_cntr_val >= xdev->csr_info.c2h_cnt_th[i]) {
-			c2h_cntr_val = xdev->csr_info.c2h_cnt_th[i];
-			idx = i;
-		}
-	}
-	xdev->sorted_c2h_cntr_idx[j] = idx;
-	ref_idx = idx;
-	j++;
-	idx = j;
-	least_max = c2h_cntr_val;
-	if (j < QDMA_GLOBAL_CSR_ARRAY_SZ)
-		goto get_next_idx;
-}
-
-int qdma_csr_read(struct xlnx_dma_dev *xdev, struct global_csr_conf *csr)
-{
-	int rv = 0;
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, csr->ring_sz,
-				QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		pr_err("Failed to read global ring sizes, err = %d", rv);
-		return xdev->hw.qdma_get_error_code(rv);
-	}
-
-	rv = xdev->hw.qdma_global_writeback_interval_conf(xdev,
-						&csr->wb_intvl,
-						QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		if (rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED) {
-			pr_err("Failed to read write back interval, err = %d",
-					rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-		pr_warn("Hardware Feature not supported");
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, csr->c2h_buf_sz,
-				QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		if (rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED) {
-			pr_err("Failed to read global buffer sizes, err = %d",
-						rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-		pr_warn("Hardware Feature not supported");
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, csr->c2h_timer_cnt,
-				QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		if (rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED) {
-			pr_err("Failed to read global timer count, err = %d",
-						rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-		pr_warn("Hardware Feature not supported");
-	}
-
-	rv = xdev->hw.qdma_global_csr_conf(xdev, 0,
-				QDMA_GLOBAL_CSR_ARRAY_SZ, csr->c2h_cnt_th,
-				QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-	if (unlikely(rv < 0)) {
-		if (rv != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED) {
-			pr_err("Failed to read global counter threshold, err = %d",
-					rv);
-			return xdev->hw.qdma_get_error_code(rv);
-		}
-		pr_warn("Hardware Feature not supported");
-	}
-	qdma_sort_c2h_cntr_th_values(xdev);
-	return 0;
-}
-
-#ifdef QDMA_CSR_REG_UPDATE
-int qdma_global_csr_set(unsigned long dev_hndl, u8 index, u8 count,
-		struct global_csr_conf *csr)
-{
-	int rv = 0;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  cannot modify global CSR.
-	 */
-	if (qdma_get_active_queue_count(xdev->dma_device_index)) {
-		pr_err("xdev %s, FMAP prog done, cannot modify global CSR\n",
-				xdev->mod_name);
-		return -EINVAL;
-	}
-	if (xdev->hw.qdma_global_writeback_interval_conf(xdev, csr->wb_intvl,
-							 QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count, csr->ring_sz,
-				QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count,
-					  csr->c2h_timer_cnt,
-				QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count, csr->c2h_cnt_th,
-					QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-	if (xdev->hw.qdma_global_csr_conf(xdev, index, count, csr->c2h_buf_sz,
-					QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_WRITE))
-		return -EINVAL;
-
-	rv = qdma_csr_read(xdev, &xdev->csr_info);
-	if (unlikely(rv < 0))
-		return rv;
-
-	return 0;
-}
-#endif
-#endif
-
-int qdma_global_csr_get(unsigned long dev_hndl, u8 index, u8 count,
-		struct global_csr_conf *csr)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int i = 0;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if ((index + count) > QDMA_GLOBAL_CSR_ARRAY_SZ) {
-		pr_err("%s: Invalid index=%u and count=%u > %d",
-					   __func__, index, count,
-					   QDMA_GLOBAL_CSR_ARRAY_SZ);
-		return -EINVAL;
-	}
-
-	/** If qdma_get_active_queue_count() > 0,
-	 *  read the stored xdev csr values.
-	 */
-	if (qdma_get_active_queue_count(xdev->dma_device_index))
-		memcpy(csr, &xdev->csr_info, sizeof(struct global_csr_conf));
-	else
-		qdma_csr_read(xdev, csr);
-
-	/** Subtracting 1 for the wrap around descriptor and status descriptor
-	 *  This same logic is present in qdma_get/set_ring_sizes() API
-	 *  In case of any changes to this number, make sure to update in
-	 *  all these places
-	 */
-	for (i = index; i < (index + count); i++)
-		csr->ring_sz[i]--;
-
-	return 0;
-}
-
-int qdma_device_flr_quirk_set(struct pci_dev *pdev, unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-
-	if (!dev_hndl) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("Invalid pdev passed: pci_dev(0x%lx) != pdev(0x%lx)\n",
-			(unsigned long)xdev->conf.pdev, (unsigned long)pdev);
-		return -EINVAL;
-	}
-
-	if (!xdev->dev_cap.flr_present) {
-		pr_info("FLR not present, therefore skipping FLR reset\n");
-		return 0;
-	}
-
-	if (!dev_hndl || xdev_check_hndl(__func__, pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-#ifndef __QDMA_VF__
-	rv = xdev->hw.qdma_initiate_flr(xdev, 0);
-#else
-	rv = xdev->hw.qdma_initiate_flr(xdev, 1);
-#endif
-	if (rv)
-		return -EINVAL;
-
-	return 0;
-}
-
-int qdma_device_flr_quirk_check(struct pci_dev *pdev, unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-	uint8_t flr_done = 0;
-
-	if (!dev_hndl) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("Invalid pdev passed: pci_dev(0x%lx) != pdev(0x%lx)\n",
-			(unsigned long)xdev->conf.pdev, (unsigned long)pdev);
-		return -EINVAL;
-	}
-
-	if (!xdev->dev_cap.flr_present) {
-		pr_info("FLR not present, therefore skipping FLR reset status\n");
-		return 0;
-	}
-
-#ifndef __QDMA_VF__
-	rv = xdev->hw.qdma_is_flr_done(xdev, 0, &flr_done);
-#else
-	rv = xdev->hw.qdma_is_flr_done(xdev, 1, &flr_done);
-#endif
-	if (rv)
-		return -EINVAL;
-
-	if (!flr_done)
-		pr_info("%s, flr status stuck\n", xdev->conf.name);
-
-	return 0;
-}
-
-int qdma_device_version_info(unsigned long dev_hndl,
-		struct qdma_version_info *version_info)
-{
-	int rv = 0;
-	struct qdma_hw_version_info info;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!version_info) {
-		pr_err("version_info is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	memset(&info, 0, sizeof(info));
-#ifndef __QDMA_VF__
-	rv = xdev->hw.qdma_get_version(xdev, QDMA_DEV_PF, &info);
-#else
-	rv = xdev->hw.qdma_get_version(xdev, QDMA_DEV_VF, &info);
-#endif
-	if (rv < 0) {
-		pr_err("failed to get version with error = %d", rv);
-		return  xdev->hw.qdma_get_error_code(rv);
-	}
-
-	strncpy(version_info->ip_str, info.qdma_ip_type_str,
-			sizeof(version_info->ip_str) - 1);
-	strncpy(version_info->rtl_version_str, info.qdma_rtl_version_str,
-			sizeof(version_info->rtl_version_str) - 1);
-	strncpy(version_info->vivado_release_str,
-			info.qdma_vivado_release_id_str,
-			sizeof(version_info->vivado_release_str) - 1);
-	strncpy(version_info->device_type_str,
-			info.qdma_device_type_str,
-			sizeof(version_info->device_type_str) - 1);
-	return 0;
-}
-
-#ifndef __QDMA_VF__
-void qdma_device_attributes_get(struct xlnx_dma_dev *xdev)
-{
-	struct qdma_dev_attributes dev_info;
-
-	memset(&dev_info, 0, sizeof(dev_info));
-
-	xdev->hw.qdma_get_device_attributes(xdev, &xdev->dev_cap);
-
-	pr_info("%s: num_pfs:%d, num_qs:%d, flr_present:%d, st_en:%d, mm_en:%d, mm_cmpt_en:%d, mailbox_en:%d, mm_channel_max:%d, qid2vec_ctx:%d, cmpt_ovf_chk_dis:%d, mailbox_intr:%d, sw_desc_64b:%d, cmpt_desc_64b:%d, dynamic_bar:%d, legacy_intr:%d, cmpt_trig_count_timer:%d",
-		xdev->conf.name,
-		xdev->dev_cap.num_pfs,
-		xdev->dev_cap.num_qs,
-		xdev->dev_cap.flr_present,
-		xdev->dev_cap.st_en,
-		xdev->dev_cap.mm_en,
-		xdev->dev_cap.mm_cmpt_en,
-		xdev->dev_cap.mailbox_en,
-		xdev->dev_cap.mm_channel_max,
-		xdev->dev_cap.qid2vec_ctx,
-		xdev->dev_cap.cmpt_ovf_chk_dis,
-		xdev->dev_cap.mailbox_intr,
-		xdev->dev_cap.sw_desc_64b,
-		xdev->dev_cap.cmpt_desc_64b,
-		xdev->dev_cap.dynamic_bar,
-		xdev->dev_cap.legacy_intr,
-		xdev->dev_cap.cmpt_trig_count_timer);
-}
-#endif
-
-int qdma_queue_cmpl_ctrl(unsigned long dev_hndl, unsigned long id,
-			struct qdma_cmpl_ctrl *cctrl, bool set)
-{
-	int rv = 0;
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 1);
-	if (!descq) {
-		pr_err("Invalid qid: %ld", id);
-		return -EINVAL;
-	}
-
-	if (set) {
-		lock_descq(descq);
-
-		descq->cmpt_cidx_info.trig_mode =
-				descq->conf.cmpl_trig_mode =
-						cctrl->trigger_mode;
-		descq->cmpt_cidx_info.timer_idx =
-				descq->conf.cmpl_timer_idx = cctrl->timer_idx;
-		descq->cmpt_cidx_info.counter_idx =
-				descq->conf.cmpl_cnt_th_idx = cctrl->cnt_th_idx;
-		descq->cmpt_cidx_info.irq_en =
-				descq->conf.cmpl_en_intr = cctrl->cmpl_en_intr;
-		descq->cmpt_cidx_info.wrb_en =
-				descq->conf.cmpl_stat_en = cctrl->en_stat_desc;
-
-		descq->cmpt_cidx_info.wrb_cidx = descq->cidx_cmpt;
-		rv = queue_cmpt_cidx_update(descq->xdev,
-				descq->conf.qidx, &descq->cmpt_cidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to update cmpt cidx\n",
-					descq->conf.name);
-			unlock_descq(descq);
-			return rv;
-		}
-
-		unlock_descq(descq);
-
-	} else {
-		lock_descq(descq);
-		/* read the setting */
-		rv = queue_cmpt_cidx_read(descq->xdev,
-				descq->conf.qidx, &descq->cmpt_cidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to read cmpt cidx\n",
-					descq->conf.name);
-			unlock_descq(descq);
-			return rv;
-		}
-
-		cctrl->trigger_mode = descq->conf.cmpl_trig_mode =
-				descq->cmpt_cidx_info.trig_mode;
-		cctrl->timer_idx = descq->conf.cmpl_timer_idx =
-				descq->cmpt_cidx_info.timer_idx;
-		cctrl->cnt_th_idx = descq->conf.cmpl_cnt_th_idx =
-				descq->cmpt_cidx_info.counter_idx;
-		cctrl->en_stat_desc = descq->conf.cmpl_stat_en =
-				descq->cmpt_cidx_info.wrb_en;
-		cctrl->cmpl_en_intr = descq->conf.cmpl_en_intr =
-				descq->cmpt_cidx_info.irq_en;
-		unlock_descq(descq);
-	}
-
-	return 0;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_regs.h b/QDMA/linux-kernel/driver/libqdma/qdma_regs.h
deleted file mode 100755
index 4e1d1bb..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_regs.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_REGS_H__
-#define __QDMA_REGS_H__
-
-#include <linux/types.h>
-#include "xdev.h"
-
-#define QDMA_REG_SZ_IN_BYTES	4
-
-#define DESC_SZ_64B         3
-#define DESC_SZ_8B_BYTES    8
-#define DESC_SZ_16B_BYTES   16
-#define DESC_SZ_32B_BYTES   32
-#define DESC_SZ_64B_BYTES   64
-
-#ifndef __QDMA_VF__
-
-/*
- * monitor
- */
-#define QDMA_REG_C2H_STAT_AXIS_PKG_CMP		0xA94
-
-#endif /* ifndef __QDMA_VF__ */
-
-/*
- * descriptor & writeback status
- */
-/**
- * @struct - qdma_mm_desc
- * @brief	memory mapped descriptor format
- */
-struct qdma_mm_desc {
-	/** source address */
-	__be64 src_addr;
-	/** flags */
-	__be32 flag_len;
-	/** reserved 32 bits */
-	__be32 rsvd0;
-	/** destination address */
-	__be64 dst_addr;
-	/** reserved 64 bits */
-	__be64 rsvd1;
-};
-
-#define S_DESC_F_DV		    28
-#define S_DESC_F_SOP		29
-#define S_DESC_F_EOP		30
-
-
-#define S_H2C_DESC_F_SOP		1
-#define S_H2C_DESC_F_EOP		2
-
-
-#define S_H2C_DESC_NUM_GL		0
-#define M_H2C_DESC_NUM_GL		0x7U
-#define V_H2C_DESC_NUM_GL(x)	((x) << S_H2C_DESC_NUM_GL)
-
-#define S_H2C_DESC_NUM_CDH		3
-#define M_H2C_DESC_NUM_CDH		0xFU
-#define V_H2C_DESC_NUM_CDH(x)	((x) << S_H2C_DESC_NUM_CDH)
-
-#define S_H2C_DESC_F_ZERO_CDH		13
-#define S_H2C_DESC_F_EOT			14
-#define S_H2C_DESC_F_REQ_CMPL_STATUS	15
-
-/* FIXME pld_len and flags members are part of custom descriptor format needed
- * by example design for ST loopback and desc bypass
- */
-/**
- * @struct - qdma_h2c_desc
- * @brief	memory mapped descriptor format
- */
-struct qdma_h2c_desc {
-	__be16 cdh_flags;	/**< cdh flags */
-	__be16 pld_len;		/**< current packet length */
-	__be16 len;			/**< total packet length */
-	__be16 flags;		/**< descriptor flags */
-	__be64 src_addr;	/**< source address */
-};
-
-/**
- * @struct - qdma_c2h_desc
- * @brief	qdma c2h descriptor
- */
-struct qdma_c2h_desc {
-	__be64 dst_addr;	/**< destination address */
-};
-
-/**
- * @struct - qdma_desc_cmpl_status
- * @brief	qdma writeback descriptor
- */
-struct qdma_desc_cmpl_status {
-	__be16 pidx;	/**< producer index */
-	__be16 cidx;	/**< consumer index */
-	__be32 rsvd;	/**< reserved 32 bits */
-};
-
-#define S_C2H_CMPT_ENTRY_F_FORMAT		0
-#define F_C2H_CMPT_ENTRY_F_FORMAT		(1 << S_C2H_CMPT_ENTRY_F_FORMAT)
-#define		DFORMAT0_CMPL_MASK	0xF	/* udd starts at bit 4 */
-#define		DFORMAT1_CMPL_MASK	0xFFFFF	/* udd starts at bit 20 */
-
-
-#define S_C2H_CMPT_ENTRY_F_COLOR		1
-#define F_C2H_CMPT_ENTRY_F_COLOR		(1 << S_C2H_CMPT_ENTRY_F_COLOR)
-
-#define S_C2H_CMPT_ENTRY_F_ERR		2
-#define F_C2H_CMPT_ENTRY_F_ERR		(1 << S_C2H_CMPT_ENTRY_F_ERR)
-
-#define S_C2H_CMPT_ENTRY_F_DESC_USED	3
-#define F_C2H_CMPT_ENTRY_F_DESC_USED	(1 << S_C2H_CMPT_ENTRY_F_DESC_USED)
-
-#define S_C2H_CMPT_ENTRY_LENGTH			4
-#define M_C2H_CMPT_ENTRY_LENGTH			0xFFFFU
-#define L_C2H_CMPT_ENTRY_LENGTH			16
-#define V_C2H_CMPT_ENTRY_LENGTH(x)	\
-	(((x) & M_C2H_CMPT_ENTRY_LENGTH) << S_C2H_CMPT_ENTRY_LENGTH)
-
-#define S_C2H_CMPT_ENTRY_F_EOT			20
-#define F_C2H_CMPT_ENTRY_F_EOT			(1 << S_C2H_CMPT_ENTRY_F_EOT)
-
-#define S_C2H_CMPT_ENTRY_F_USET_INTR		21
-
-#define S_C2H_CMPT_USER_DEFINED			22
-#define V_C2H_CMPT_USER_DEFINED(x)		((x) << S_C2H_CMPT_USER_DEFINED)
-
-#define M_C2H_CMPT_ENTRY_DMA_INFO		0xFFFFFF
-#define L_C2H_CMPT_ENTRY_DMA_INFO		3 /* 20 bits */
-/**
- * @struct - qdma_c2h_cmpt_cmpl_status
- * @brief	qdma completion data descriptor
- */
-struct qdma_c2h_cmpt_cmpl_status {
-	__be16 pidx;				/**< producer index */
-	__be16 cidx;				/**< consumer index */
-	__be32 color_isr_status;	/**< isr color and status */
-};
-#define S_C2H_CMPT_F_COLOR	0
-
-#define S_C2H_CMPT_INT_STATE	1
-#define M_C2H_CMPT_INT_STATE	0x3U
-
-/*
- * HW API
- */
-
-#include "xdev.h"
-
-#define __read_reg(xdev, reg_addr) (readl(xdev->regs + reg_addr))
-#ifdef DEBUG__
-#define __write_reg(xdev, reg_addr, val) \
-	do { \
-		pr_debug("%s, reg 0x%x, val 0x%x.\n", \
-				xdev->conf.name, reg_addr, (u32)val); \
-		writel(val, xdev->regs + reg_addr); \
-	} while (0)
-#else
-#define __write_reg(xdev, reg_addr, val) (writel(val, xdev->regs + reg_addr))
-#endif /* #ifdef DEBUG__ */
-
-#ifndef __QDMA_VF__
-void qdma_device_attributes_get(struct xlnx_dma_dev *xdev);
-
-#endif /* #ifndef __QDMA_VF__ */
-
-#endif
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c b/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c
deleted file mode 100755
index 4911bf8..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_sriov.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/errno.h>
-
-#include "xdev.h"
-#include "qdma_mbox.h"
-#include <linux/sched.h>
-
-#ifdef __QDMA_VF__
-int xdev_sriov_vf_offline(struct xlnx_dma_dev *xdev, u16 func_id)
-{
-	int rv;
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_offline(xdev->func_id, m->raw);
-	/** For sending BYE message, retry to send multiple
-	 * times before giving up by giving non-zero timeout value
-	 */
-	rv = qdma_mbox_msg_send(xdev, m, 0, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0)
-		pr_info("%s, send bye failed %d.\n", xdev->conf.name, rv);
-
-	return rv;
-}
-
-int xdev_sriov_vf_reset_offline(struct xlnx_dma_dev *xdev)
-{
-	int rv;
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-
-	if (!m)
-		return -ENOMEM;
-
-	qdma_mbox_compose_vf_reset_offline(xdev->func_id, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0)
-		pr_err("%s, send reset bye failed %d.\n", xdev->conf.name, rv);
-
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-int xdev_sriov_vf_online(struct xlnx_dma_dev *xdev, u16 func_id)
-{
-	int rv;
-	int qbase = -1;
-	struct mbox_msg *m = qdma_mbox_msg_alloc();
-
-	if (!m)
-		return -ENOMEM;
-
-	qmda_mbox_compose_vf_online(xdev->func_id, 0, &qbase, m->raw);
-
-	rv = qdma_mbox_msg_send(xdev, m, 1, QDMA_MBOX_MSG_TIMEOUT_MS);
-	if (rv < 0) {
-		pr_err("%s, send hello failed %d.\n",  xdev->conf.name, rv);
-		qdma_mbox_msg_free(m);
-		return rv;
-	}
-
-	rv = qdma_mbox_vf_dev_info_get(m->raw, &xdev->dev_cap,
-			&xdev->dma_device_index);
-	if (rv < 0) {
-		pr_info("%s, failed to get dev info %d.\n",
-			xdev->conf.name, rv);
-		rv = -EINVAL;
-	} else {
-		pr_info("%s: num_pfs:%d, num_qs:%d, flr_present:%d, st_en:%d, mm_en:%d, mm_cmpt_en:%d, mailbox_en:%d, mm_channel_max:%d, qid2vec_ctx:%d, cmpt_ovf_chk_dis:%d, mailbox_intr:%d, sw_desc_64b:%d, cmpt_desc_64b:%d, dynamic_bar:%d, legacy_intr:%d, cmpt_trig_count_timer:%d",
-				xdev->conf.name,
-				xdev->dev_cap.num_pfs,
-				xdev->dev_cap.num_qs,
-				xdev->dev_cap.flr_present,
-				xdev->dev_cap.st_en,
-				xdev->dev_cap.mm_en,
-				xdev->dev_cap.mm_cmpt_en,
-				xdev->dev_cap.mailbox_en,
-				xdev->dev_cap.mm_channel_max,
-				xdev->dev_cap.qid2vec_ctx,
-				xdev->dev_cap.cmpt_ovf_chk_dis,
-				xdev->dev_cap.mailbox_intr,
-				xdev->dev_cap.sw_desc_64b,
-				xdev->dev_cap.cmpt_desc_64b,
-				xdev->dev_cap.dynamic_bar,
-				xdev->dev_cap.legacy_intr,
-				xdev->dev_cap.cmpt_trig_count_timer);
-	}
-
-	qdma_mbox_msg_free(m);
-	return rv;
-}
-
-#elif defined(CONFIG_PCI_IOV)
-
-void xdev_sriov_disable(struct xlnx_dma_dev *xdev)
-{
-	struct pci_dev *pdev = xdev->conf.pdev;
-	unsigned int sleep_timeout = (50 * xdev->vf_count); /* 50ms per vf */
-
-	if (!xdev->vf_count)
-		return;
-
-	pci_disable_sriov(pdev);
-
-	qdma_waitq_wait_event_timeout(xdev->wq, (xdev->vf_count == 0),
-					 msecs_to_jiffies(sleep_timeout));
-
-	qdma_mbox_stop(xdev);
-	kfree(xdev->vf_info);
-	xdev->vf_info = NULL;
-	xdev->vf_count = 0;
-
-}
-
-int xdev_sriov_enable(struct xlnx_dma_dev *xdev, int num_vfs)
-{
-	struct pci_dev *pdev = xdev->conf.pdev;
-	int current_vfs = pci_num_vf(pdev);
-	struct qdma_vf_info *vf;
-	int i;
-	int rv;
-
-	if (current_vfs) {
-		dev_err(&pdev->dev, "%d VFs already enabled!n", current_vfs);
-		return current_vfs;
-	}
-
-	vf = kmalloc(num_vfs * (sizeof(struct qdma_vf_info)), GFP_KERNEL);
-	if (!vf) {
-		pr_info("%s failed to allocate memory for VFs, %d * %ld.\n",
-			xdev->conf.name, num_vfs, sizeof(struct qdma_vf_info));
-		return -ENOMEM;
-	}
-
-	for (i = 0; i < num_vfs; i++)
-		vf[i].func_id = QDMA_FUNC_ID_INVALID;
-
-	qdma_waitq_init(&xdev->wq);
-	xdev->vf_count = num_vfs;
-	xdev->vf_info = vf;
-
-	pr_debug("%s: req %d, current %d, assigned %d.\n",
-		xdev->conf.name, num_vfs, current_vfs, pci_vfs_assigned(pdev));
-
-	qdma_mbox_start(xdev);
-
-	rv = pci_enable_sriov(pdev, num_vfs);
-	if (rv) {
-		pr_info("%s, enable sriov %d failed %d.\n",
-			xdev->conf.name, num_vfs, rv);
-		xdev_sriov_disable(xdev);
-		return 0;
-	}
-
-	pr_debug("%s: done, req %d, current %d, assigned %d.\n",
-		xdev->conf.name, num_vfs, pci_num_vf(pdev),
-		pci_vfs_assigned(pdev));
-
-	return num_vfs;
-}
-
-int qdma_device_sriov_config(struct pci_dev *pdev, unsigned long dev_hndl,
-				int num_vfs)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-
-	if (!dev_hndl)
-		return -EINVAL;
-
-	rv = xdev_check_hndl(__func__, pdev, dev_hndl);
-	if (rv < 0)
-		return rv;
-
-	/* if zero disable sriov */
-	if (!num_vfs) {
-		xdev_sriov_disable(xdev);
-		return 0;
-	}
-
-	if (!xdev->dev_cap.mailbox_en) {
-		dev_err(&pdev->dev, "Mailbox not enabled in this device");
-		return -EPERM;
-	}
-
-	rv = xdev_sriov_enable(xdev, num_vfs);
-	if (rv < 0)
-		return rv;
-
-	return xdev->vf_count;
-}
-
-void xdev_sriov_vf_offline(struct xlnx_dma_dev *xdev, u16 func_id)
-{
-	struct qdma_vf_info *vf = (struct qdma_vf_info *)xdev->vf_info;
-	int i;
-
-	xdev->vf_count_online--;
-	for (i = 0; i < xdev->vf_count; i++, vf++) {
-		if (vf->func_id == func_id) {
-			/** func_id cannot be marked invalid in the PF FLR flow.
-			 *  This is because, after PF comes back up
-			 *  it should have valid func_id list to be able to
-			 *  send out the RESET_DONE msg
-			 */
-			if (xdev->reset_state == RESET_STATE_IDLE)
-				vf->func_id = QDMA_FUNC_ID_INVALID;
-			vf->qbase = 0;
-			vf->qmax = 0;
-		}
-	}
-
-	qdma_waitq_wakeup(&xdev->wq);
-}
-
-int xdev_sriov_vf_online(struct xlnx_dma_dev *xdev, u16 func_id)
-{
-	struct qdma_vf_info *vf = (struct qdma_vf_info *)xdev->vf_info;
-	int i;
-
-	xdev->vf_count_online++;
-
-	if (xdev->reset_state == RESET_STATE_IDLE) {
-		for (i = 0; i < xdev->vf_count; i++, vf++) {
-			if (vf->func_id == QDMA_FUNC_ID_INVALID) {
-				vf->func_id = func_id;
-				return 0;
-			}
-		}
-		pr_info("%s, func 0x%x, NO free slot.\n", xdev->conf.name,
-				func_id);
-		qdma_waitq_wakeup(&xdev->wq);
-		return -EINVAL;
-	} else
-		return 0;
-}
-
-int xdev_sriov_vf_fmap(struct xlnx_dma_dev *xdev, u16 func_id,
-			unsigned short qbase, unsigned short qmax)
-{
-	struct qdma_vf_info *vf = (struct qdma_vf_info *)xdev->vf_info;
-	int i;
-
-	for (i = 0; i < xdev->vf_count; i++, vf++) {
-		if (vf->func_id == func_id) {
-			vf->qbase = qbase;
-			vf->qmax = qmax;
-			return 0;
-		}
-	}
-
-	pr_info("%s, func 0x%x, NO match.\n", xdev->conf.name, func_id);
-	return -EINVAL;
-}
-
-#endif /* if defined(CONFIG_PCI_IOV) && !defined(__QDMA_VF__) */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c
deleted file mode 100755
index 80a8d73..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.c
+++ /dev/null
@@ -1,1286 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)     KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_descq.h"
-
-#include <asm/cacheflush.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-
-#include "qdma_device.h"
-#include "qdma_intr.h"
-#include "qdma_regs.h"
-#include "qdma_thread.h"
-#include "qdma_context.h"
-#include "thread.h"
-#include "qdma_compat.h"
-#include "qdma_st_c2h.h"
-#include "qdma_access_common.h"
-#include "qdma_ul_ext.h"
-#include "version.h"
-
-/*
- * ST C2H descq (i.e., freelist) RX buffers
- */
-
-static inline void flq_free_one(struct qdma_sw_sg *sdesc,
-					struct qdma_c2h_desc *desc)
-{
-	if (sdesc) {
-		if (sdesc->dma_addr) {
-			desc->dst_addr = 0UL;
-			sdesc->dma_addr = 0UL;
-		}
-
-		if (sdesc->pg) {
-			sdesc->pg = NULL;
-			sdesc->offset = 0;
-		}
-	} else
-		pr_err("%s: sdesc is NULL", __func__);
-
-}
-
-static inline int flq_fill_one(struct qdma_descq *descq,
-				struct qdma_sw_sg *sdesc,
-				struct qdma_c2h_desc *desc)
-{
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	struct qdma_sw_pg_sg *pg_sdesc;
-	unsigned int pg_idx = 0;
-	unsigned int buf_sz;
-
-	if (!flq) {
-		pr_err("%s: flq is NULL", __func__);
-		return -EINVAL;
-	}
-
-	if (flq->num_pages == 0) {
-		pr_err("%s: flq->num_pages is NULL", __func__);
-		return -EINVAL;
-	}
-
-	buf_sz = flq->desc_buf_size;
-	pg_idx = (flq->alloc_idx & flq->num_pgs_mask);
-
-	if (pg_idx >= flq->num_pages) {
-		pr_err("%s: pg_idx %d is Invalid",
-				__func__,
-				pg_idx);
-		return -EINVAL;
-	}
-
-	pg_sdesc = flq->pg_sdesc + pg_idx;
-	if (!pg_sdesc || !pg_sdesc->pg_base) {
-		pr_err("%s: pg_sdesc is NULL", __func__);
-		return -EINVAL;
-	}
-
-	if (pg_sdesc->pg_offset + buf_sz > flq->max_pg_offset) {
-		pr_err("%s: memory full, alloc_idx %u, recycle_idx = %u offset = %u, pg_idx = %u",
-				__func__,
-				flq->alloc_idx,
-				flq->recycle_idx,
-				pg_sdesc->pg_offset,
-				pg_idx);
-		return -ENOMEM;
-	}
-
-
-	sdesc->pg = pg_sdesc->pg_base;
-	sdesc->offset = pg_sdesc->pg_offset;
-	sdesc->dma_addr = pg_sdesc->pg_dma_base_addr + pg_sdesc->pg_offset;
-	sdesc->len = descq->conf.c2h_bufsz;
-	desc->dst_addr = sdesc->dma_addr;
-#if KERNEL_VERSION(4, 6, 0) < LINUX_VERSION_CODE
-	page_ref_inc(pg_sdesc->pg_base);
-#else
-	atomic_inc(&(pg_sdesc->pg_base->_count));
-#endif
-	pg_sdesc->pg_offset += buf_sz;
-
-	if ((pg_sdesc->pg_offset + buf_sz) > flq->max_pg_offset)
-		flq->alloc_idx++;
-
-	return 0;
-}
-
-static inline void flq_unmap_page_one(struct qdma_sw_pg_sg *pg_sdesc,
-				struct device *dev,
-				unsigned char pg_order)
-{
-	if (pg_sdesc && pg_sdesc->pg_dma_base_addr) {
-		dma_unmap_page(dev, pg_sdesc->pg_dma_base_addr,
-				PAGE_SIZE << pg_order,
-				DMA_FROM_DEVICE);
-		pg_sdesc->pg_dma_base_addr = 0UL;
-	}
-}
-
-static inline void flq_free_page_one(struct qdma_sw_pg_sg *pg_sdesc,
-				struct device *dev,
-				unsigned char pg_order,
-				unsigned int pg_shift)
-{
-	unsigned int page_count = 0;
-	unsigned int i = 0;
-
-	if (pg_sdesc && pg_sdesc->pg_base) {
-		/* +1 for dma_unmap*/
-		page_count = (pg_sdesc->pg_offset >> pg_shift) + 1;
-
-		flq_unmap_page_one(pg_sdesc, dev, pg_order);
-
-		for (i = 0; i < page_count; i++)
-			put_page(pg_sdesc->pg_base);
-
-		pg_sdesc->pg_base = NULL;
-		pg_sdesc->pg_dma_base_addr = 0UL;
-	}
-}
-
-void descq_flq_free_page_resource(struct qdma_descq *descq)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct device *dev = &xdev->conf.pdev->dev;
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	struct qdma_sw_pg_sg *pg_sdesc = flq->pg_sdesc;
-	unsigned char pg_order = flq->desc_pg_order;
-	int i;
-
-	for (i = 0; i < flq->num_pages; i++, pg_sdesc++)
-		flq_free_page_one(pg_sdesc, dev,
-				pg_order, flq->desc_pg_shift);
-
-	kfree(flq->pg_sdesc);
-	flq->pg_sdesc = NULL;
-
-	memset(flq, 0, sizeof(struct qdma_flq));
-}
-
-void descq_flq_free_resource(struct qdma_descq *descq)
-{
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	struct qdma_sw_sg *sdesc = flq->sdesc;
-	struct qdma_c2h_desc *desc = flq->desc;
-	int i;
-
-	/* It can never be null beyond this */
-	if (!sdesc) {
-		pr_err("%s: sdesc is Invalid",
-				__func__);
-		return;
-	}
-
-	for (i = 0; i < flq->size; i++, sdesc++, desc++)
-		flq_free_one(sdesc, desc);
-
-	kfree(flq->sdesc);
-	flq->sdesc = NULL;
-	flq->sdesc_info = NULL;
-
-}
-
-
-static inline int flq_fill_page_one(struct qdma_sw_pg_sg *pg_sdesc,
-				struct device *dev,
-				int node, unsigned char pg_order, gfp_t gfp)
-{
-	struct page *pg;
-	dma_addr_t mapping;
-
-	pg = alloc_pages_node(node, __GFP_COMP | gfp, pg_order);
-	if (unlikely(!pg)) {
-		pr_err("%s: failed to allocate the pages, order %d.\n",
-				__func__,
-				pg_order);
-		return -ENOMEM;
-	}
-
-	mapping = dma_map_page(dev, pg, 0, (PAGE_SIZE << pg_order),
-					DMA_FROM_DEVICE);
-	if (unlikely(dma_mapping_error(dev, mapping))) {
-		dev_err(dev, "page 0x%p mapping error 0x%llx.\n",
-			pg, (unsigned long long)mapping);
-		__free_pages(pg, pg_order);
-		return -EINVAL;
-	}
-
-	pg_sdesc->pg_base = pg;
-	pg_sdesc->pg_dma_base_addr = mapping;
-	pg_sdesc->pg_offset = 0;
-	return 0;
-}
-
-int descq_flq_alloc_resource(struct qdma_descq *descq)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	struct device *dev = &xdev->conf.pdev->dev;
-	int node = dev_to_node(dev);
-	struct qdma_sw_pg_sg *pg_sdesc = NULL;
-	struct qdma_sw_sg *sdesc, *prev = NULL;
-	struct qdma_sdesc_info *sinfo, *sprev = NULL;
-	struct qdma_c2h_desc *desc = flq->desc;
-	int i;
-	int rv = 0;
-	/* find the most significant bit number */
-	unsigned int div_bits = 0;
-
-	div_bits = flq->desc_pg_shift;
-	flq->num_bufs_per_pg =
-			(flq->max_pg_offset >> div_bits);
-
-	if (flq->num_bufs_per_pg == 0) {
-		pr_err("%s: conf_c2h_bufsz = %d, flq_c2h_buf_size = %d, flq->max_pg_offset = %d, flq->num_bufs_per_pg = %d, flq->desc_pg_order = %d, div_bits = %d",
-				__func__,
-				descq->conf.c2h_bufsz,
-				flq->desc_buf_size,
-				flq->max_pg_offset,
-				flq->num_bufs_per_pg,
-				flq->desc_pg_order,
-				div_bits);
-		return -EINVAL;
-	}
-
-	flq->num_pages = (flq->size / flq->num_bufs_per_pg) +
-			((flq->size % flq->num_bufs_per_pg) == 0 ? 0 : 1);
-	flq->num_pages = get_next_powof2(flq->num_pages);
-	/* without this, alloc_idx and recycle_idx
-	 * will toeing each other creating a mess
-	 */
-	if (flq->num_pages < flq->size)
-		flq->num_pages = (flq->num_pages << 1);
-	flq->num_pgs_mask = (flq->num_pages - 1);
-
-	pr_debug("%s: conf_c2h_bufsz = %d, flq_c2h_buf_size = %d, num_bufs_per_pg = %d, num_pages = %d, flq->size = %d",
-			__func__,
-			descq->conf.c2h_bufsz,
-			flq->desc_buf_size,
-			flq->num_bufs_per_pg,
-			flq->num_pages,
-			flq->size);
-
-	pg_sdesc = kzalloc_node(flq->num_pages *
-				(sizeof(struct qdma_sw_pg_sg)),
-				GFP_KERNEL, node);
-
-	if (!pg_sdesc) {
-		pr_err("%s: OOM, sz %d * %ld.\n",
-				__func__,
-				flq->num_pages,
-				(sizeof(struct qdma_sw_pg_sg)));
-		return -ENOMEM;
-	}
-	flq->pg_sdesc = pg_sdesc;
-
-	for (pg_sdesc = flq->pg_sdesc, i = 0;
-			i < flq->num_pages; i++, pg_sdesc++) {
-		rv = flq_fill_page_one(pg_sdesc, dev, node,
-				flq->desc_pg_order, GFP_KERNEL);
-		if (rv < 0) {
-			descq_flq_free_page_resource(descq);
-			return rv;
-		}
-	}
-
-	sdesc = kzalloc_node(flq->size * (sizeof(struct qdma_sw_sg) +
-					  sizeof(struct qdma_sdesc_info)),
-				GFP_KERNEL, node);
-	if (!sdesc) {
-		pr_err("%s: OOM, sz %d * %ld.\n",
-				__func__,
-				flq->size,
-				((sizeof(struct qdma_sw_sg) +
-				sizeof(struct qdma_sdesc_info))));
-		descq_flq_free_page_resource(descq);
-		return -ENOMEM;
-	}
-
-	flq->sdesc = sdesc;
-	flq->sdesc_info = sinfo = (struct qdma_sdesc_info *)(sdesc + flq->size);
-	flq->alloc_idx = 0;
-
-	/* make the flq to be a linked list ring */
-	for (i = 0; i < flq->size; i++, prev = sdesc, sdesc++,
-					sprev = sinfo, sinfo++) {
-		if (prev)
-			prev->next = sdesc;
-		if (sprev)
-			sprev->next = sinfo;
-	}
-
-	/* last entry's next points to the first entry */
-	prev->next = flq->sdesc;
-	sprev->next = flq->sdesc_info;
-
-	for (sdesc = flq->sdesc, i = 0; i < flq->size; i++, sdesc++, desc++) {
-		rv = flq_fill_one(descq, sdesc, desc);
-		if (rv < 0) {
-			descq_flq_free_resource(descq);
-			descq_flq_free_page_resource(descq);
-			return rv;
-		}
-	}
-
-	return 0;
-}
-
-static inline int flq_refill_pages(struct qdma_descq *descq,
-		int count, bool recycle, gfp_t gfp)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct device *dev = &xdev->conf.pdev->dev;
-	int node = dev_to_node(dev);
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	unsigned int n_recycle_index = flq->recycle_idx;
-	/* find the most significant bit number */
-	unsigned int div_bits = flq->desc_pg_shift;
-	struct qdma_sw_pg_sg *pg_sdesc = flq->pg_sdesc;
-	unsigned int free_bufs_in_pg;
-	unsigned int i = 0, j = 0;
-	int rv;
-
-	for (i = 0; i < count; ) {
-		pg_sdesc = flq->pg_sdesc +
-			(n_recycle_index & flq->num_pgs_mask);
-
-		if (!pg_sdesc) {
-			pr_err("pg_sdesc is NULL");
-			return -EINVAL;
-		}
-
-		free_bufs_in_pg = (pg_sdesc->pg_offset >> div_bits);
-		free_bufs_in_pg =
-			min_t(unsigned int, free_bufs_in_pg, count - i);
-		for (j = 0; j < free_bufs_in_pg; j++) {
-			pg_sdesc->pg_offset -= flq->desc_buf_size;
-			if (!recycle && !descq->conf.fp_descq_c2h_packet)
-				put_page(pg_sdesc->pg_base);
-		}
-		i += free_bufs_in_pg;
-		BUG_ON(i > count);
-		if (!pg_sdesc->pg_offset)
-			n_recycle_index++;
-	}
-
-	if (recycle)
-		flq->recycle_idx = n_recycle_index;
-	else {
-		while (1) {
-			pg_sdesc = flq->pg_sdesc +
-				(flq->recycle_idx & flq->num_pgs_mask);
-
-			if (!pg_sdesc) {
-				pr_err("pg_sdesc is NULL");
-				return -EINVAL;
-			}
-
-			/** Stop the allocation when the pg_offset of
-			 * the page is not 0 and
-			 *  recycle index is less than the alloc index
-			 */
-			if (pg_sdesc->pg_offset ||
-				flq->recycle_idx == flq->alloc_idx)
-				break;
-
-			flq_unmap_page_one(pg_sdesc, dev, flq->desc_pg_order);
-			put_page(pg_sdesc->pg_base);
-			rv = flq_fill_page_one(pg_sdesc,
-					dev, node, flq->desc_pg_order, gfp);
-			if (rv < 0)
-				break;
-
-			flq->recycle_idx++;
-		}
-	}
-
-	return 0;
-}
-
-static int qdma_flq_refill(struct qdma_descq *descq, int idx, int count,
-			int recycle, gfp_t gfp)
-{
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	struct qdma_sw_sg *sdesc = flq->sdesc + idx;
-	struct qdma_c2h_desc *desc = flq->desc + idx;
-	struct qdma_sdesc_info *sinfo = flq->sdesc_info + idx;
-	int i;
-	int rv;
-
-	if (!recycle) {
-		rv = flq_refill_pages(descq, count, recycle, gfp);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: flq_refill_pages failed rv %d error",
-					descq->conf.name, rv);
-		}
-	}
-
-	for (i = 0; i < count; i++, idx++, sdesc++, desc++, sinfo++) {
-		if (idx == flq->size) {
-			idx = 0;
-			sdesc = flq->sdesc;
-			desc = flq->desc;
-			sinfo = flq->sdesc_info;
-		}
-
-		if (recycle) {
-			sdesc->len = descq->conf.c2h_bufsz;
-		} else {
-			flq_free_one(sdesc, desc);
-			rv = flq_fill_one(descq, sdesc, desc);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: rv %d error",
-						descq->conf.name, rv);
-				if (rv == -ENOMEM)
-					flq->alloc_fail++;
-				else
-					flq->mapping_err++;
-
-				break;
-			}
-		}
-		sinfo->fbits = 0;
-		descq->avail++;
-	}
-
-	if (list_empty(&descq->work_list) &&
-			list_empty(&descq->pend_list)) {
-		descq->pend_list_empty = 1;
-		if (descq->q_stop_wait)
-			qdma_waitq_wakeup(&descq->pend_list_wq);
-	}
-
-	return i;
-}
-
-/*
- *
- */
-int descq_st_c2h_read(struct qdma_descq *descq, struct qdma_request *req,
-			bool update_pidx, bool refill)
-{
-	struct qdma_sgt_req_cb *cb = qdma_req_cb_get(req);
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	unsigned int pidx = flq->pidx_pend;
-	struct qdma_sw_sg *fsg = flq->sdesc + pidx;
-	struct qdma_sw_sg *tsg = req->sgl;
-	unsigned int fsgcnt = ring_idx_delta(descq->pidx, pidx, flq->size);
-	unsigned int tsgoff = cb->sg_offset;
-	unsigned int foff = 0;
-	int i = 0, j = 0;
-	int rv = 0;
-	unsigned int copied = 0;
-
-	if (!fsgcnt)
-		return 0;
-
-	if (cb->sg_idx) {
-		for (; tsg && j < cb->sg_idx; j++)
-			tsg = tsg->next;
-
-		if (!tsg) {
-			pr_err("tsg error, index %u/%u.\n",
-				cb->sg_idx, req->sgcnt);
-			return -EINVAL;
-		}
-	}
-
-	while ((i < fsgcnt) && tsg) {
-		unsigned int flen = fsg->len;
-		unsigned char *faddr = page_address(fsg->pg) + fsg->offset;
-
-		foff = 0;
-
-		while (flen && tsg) {
-			unsigned int toff = tsg->offset + tsgoff;
-			unsigned int copy = min_t(unsigned int, flen,
-						 tsg->len - tsgoff);
-			u64 *pkt_tx_time =
-			(u64 *)(page_address(fsg->pg) + fsg->offset);
-
-			if (!req->no_memcpy) {
-				memcpy(page_address(tsg->pg) + toff,
-				       faddr, copy);
-				flush_dcache_page(tsg->pg);
-			}
-			if (descq->conf.ping_pong_en &&
-				*pkt_tx_time == descq->ping_pong_tx_time) {
-				u64 latency;
-
-				pr_debug("pkt tx_time=%llu\n", *pkt_tx_time);
-
-				latency = descq->ping_pong_rx_time -
-					*pkt_tx_time;
-
-				// calculate minimum latency
-				if (descq->xdev->ping_pong_lat_min > latency
-				|| descq->xdev->ping_pong_lat_min == 0) {
-					pr_info("ping_pong_lat_min=%llu curr=%llu\n",
-					descq->xdev->ping_pong_lat_min,
-					latency);
-					descq->xdev->ping_pong_lat_min =
-						latency;
-				}
-
-				// calculate max latency
-				if (descq->xdev->ping_pong_lat_max < latency
-				|| descq->xdev->ping_pong_lat_max == 0) {
-					pr_info("ping_pong_lat_max=%llu curr=%llu\n",
-					descq->xdev->ping_pong_lat_max,
-					latency);
-					descq->xdev->ping_pong_lat_max =
-						latency;
-				}
-
-				// sum of latencies for avg
-				descq->xdev->ping_pong_lat_total += latency;
-			} else if (descq->conf.ping_pong_en &&
-				*pkt_tx_time != descq->ping_pong_tx_time) {
-				pr_err("Error: pkt tx=%llu descq->tx_time=%llu %p\n",
-					   *pkt_tx_time,
-					   descq->ping_pong_tx_time,
-					   descq);
-			}
-
-
-			faddr += copy;
-			flen -= copy;
-			foff += copy;
-			tsgoff += copy;
-			copied += copy;
-
-			if (tsgoff == tsg->len) {
-				tsg = tsg->next;
-				tsgoff = 0;
-				j++;
-			}
-		}
-
-		if (foff == fsg->len) {
-			pidx = ring_idx_incr(pidx, 1, descq->conf.rngsz);
-			i++;
-			foff = 0;
-			fsg = fsg->next;
-		}
-	}
-
-	incr_cmpl_desc_cnt(descq, i);
-
-	if (refill && i)
-		qdma_flq_refill(descq, flq->pidx_pend, i, 1, GFP_ATOMIC);
-
-	flq->pidx_pend = ring_idx_incr(flq->pidx_pend, i, flq->size);
-	if (foff) {
-		fsg->offset += foff;
-		fsg->len -= foff;
-	}
-
-	if (i && update_pidx) {
-		i = ring_idx_decr(flq->pidx_pend, 1, flq->size);
-		descq->pidx_info.pidx = i;
-		rv = queue_pidx_update(descq->xdev, descq->conf.qidx,
-				descq->conf.q_type, &descq->pidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to update pidx\n",
-					descq->conf.name);
-			return -EINVAL;
-		}
-	}
-
-	cb->sg_idx = j;
-	cb->sg_offset = tsgoff;
-	cb->left -= copied;
-
-	flq->pkt_dlen -= copied;
-
-	return copied;
-}
-
-static int qdma_c2h_packets_proc_dflt(struct qdma_descq *descq)
-{
-	struct qdma_sgt_req_cb *cb = NULL, *tmp = NULL;
-
-	list_for_each_entry_safe(cb, tmp, &descq->pend_list, list) {
-		int rv;
-
-		/* check for zero length dma */
-		if (!cb->left) {
-			pr_debug("%s, cb 0x%p pending, zero len.\n",
-				descq->conf.name, cb);
-
-			qdma_sgt_req_done(descq, cb, 0);
-			return 0;
-		}
-
-		rv = descq_st_c2h_read(descq, (struct qdma_request *)cb, 0, 0);
-		if (rv < 0) {
-			pr_info("req 0x%p, error %d.\n", cb, rv);
-			qdma_sgt_req_done(descq, cb, rv);
-			continue;
-		}
-
-		if (!cb->left)
-			qdma_sgt_req_done(descq, cb, 0);
-		else
-			break; /* no more data available */
-	}
-
-	return 0;
-}
-
-void cmpt_next(struct qdma_descq *descq)
-{
-	u8 *desc_cmpt_cur = (u8 *)descq->desc_cmpt_cur + descq->cmpt_entry_len;
-
-	descq->desc_cmpt_cur = desc_cmpt_cur;
-	if (unlikely(++descq->cidx_cmpt == descq->conf.rngsz_cmpt)) {
-		descq->cidx_cmpt = 0;
-		descq->color ^= 1;
-		descq->desc_cmpt_cur = descq->desc_cmpt;
-	}
-}
-
-static inline bool is_new_cmpl_entry(struct qdma_descq *descq,
-					struct qdma_ul_cmpt_info *cmpl)
-{
-	return cmpl->f.color == descq->color;
-}
-
-int parse_cmpl_entry(struct qdma_descq *descq, struct qdma_ul_cmpt_info *cmpl)
-{
-	__be64 *cmpt = (__be64 *)descq->desc_cmpt_cur;
-
-	dma_rmb();
-
-#if 0
-	print_hex_dump(KERN_INFO, "cmpl entry ", DUMP_PREFIX_OFFSET,
-			16, 1, (void *)cmpt, descq->cmpt_entry_len,
-			false);
-#endif
-
-	cmpl->entry = cmpt;
-	cmpl->f.format = (cmpt[0] & F_C2H_CMPT_ENTRY_F_FORMAT) ? 1 : 0;
-	cmpl->f.color = (cmpt[0] & F_C2H_CMPT_ENTRY_F_COLOR) ? 1 : 0;
-	cmpl->f.err = (cmpt[0] & F_C2H_CMPT_ENTRY_F_ERR) ? 1 : 0;
-	cmpl->f.eot = (cmpt[0] & F_C2H_CMPT_ENTRY_F_EOT) ? 1 : 0;
-	cmpl->f.desc_used = (cmpt[0] & F_C2H_CMPT_ENTRY_F_DESC_USED) ? 1 : 0;
-	if (!cmpl->f.format && cmpl->f.desc_used) {
-		cmpl->len = (cmpt[0] >> S_C2H_CMPT_ENTRY_LENGTH) &
-				M_C2H_CMPT_ENTRY_LENGTH;
-		/* zero length transfer allowed */
-	} else
-		cmpl->len = 0;
-
-	return 0;
-}
-
-static int get_fl_nr(unsigned int len,
-		unsigned int c2h_bufsz,
-		unsigned int pg_shift, unsigned int pg_mask,
-		unsigned int *last_len)
-{
-	unsigned int l_len = len;
-	int l_fl_nr = 1;
-
-	if ((len & (len-1)) == 0) {
-		/* pr_info("Len is ^2"); */
-		l_fl_nr = len ? ((len + pg_mask) >> pg_shift) : 1;
-		l_len = (len & pg_mask);
-		if (l_len == 0)
-			l_len = c2h_bufsz;
-	} else {
-		/* pr_info("Len is non ^2"); */
-		if (len) {
-			if (len <= c2h_bufsz)
-				l_fl_nr = 1;
-			else {
-				l_fl_nr = 0;
-				while (l_len >= c2h_bufsz) {
-					l_fl_nr++;
-					l_len -= c2h_bufsz;
-				}
-
-				if (l_len)
-					l_fl_nr++;
-				else
-					l_len = c2h_bufsz;
-			}
-		}
-
-	}
-
-	*last_len = l_len;
-	return l_fl_nr;
-}
-
-static int rcv_pkt(struct qdma_descq *descq, struct qdma_ul_cmpt_info *cmpl,
-			unsigned int len)
-{
-	unsigned int pidx = cmpl->pidx;
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	unsigned int pg_shift = flq->desc_pg_shift;
-	unsigned int pg_mask = (1 << pg_shift) - 1;
-	unsigned int rngsz = descq->conf.rngsz;
-	/* zero length still uses one descriptor */
-	unsigned int l_len = 0;
-	int fl_nr = get_fl_nr(len,
-				descq->conf.c2h_bufsz,
-				pg_shift, pg_mask, &l_len);
-	unsigned int last = ring_idx_incr(cmpl->pidx, fl_nr - 1, rngsz);
-	unsigned int next = ring_idx_incr(last, 1, rngsz);
-	struct qdma_sw_sg *sdesc = flq->sdesc + last;
-	unsigned int cidx_next = ring_idx_incr(descq->cidx_cmpt, 1,
-					descq->conf.rngsz_cmpt);
-
-	if (!len)
-		sdesc->len = 0;
-	else
-		sdesc->len = l_len;
-
-	if (descq->avail < fl_nr)
-		return -EBUSY;
-
-	descq->avail -= fl_nr;
-
-
-	if (descq->conf.fp_descq_c2h_packet) {
-		int rv = descq->conf.fp_descq_c2h_packet(descq->q_hndl,
-				descq->conf.quld, len, fl_nr, flq->sdesc + pidx,
-				descq->conf.cmpl_udd_en ?
-				(unsigned char *)cmpl->entry : NULL);
-
-		if (rv < 0)
-			return rv;
-		flq->pidx_pend = next;
-	} else {
-		int i;
-		struct qdma_sdesc_info *sinfo = flq->sdesc_info + pidx;
-
-		for (i = 0; i < fl_nr; i++, sinfo = sinfo->next) {
-			WARN_ON(sinfo->f.valid);
-			sinfo->f.valid = 1;
-			sinfo->cidx = cidx_next;
-		}
-
-		flq->sdesc_info[pidx].f.sop = 1;
-		flq->sdesc_info[last].f.eop = 1;
-
-		flq->pkt_dlen += len;
-		if (descq->conf.cmpl_udd_en)
-			flq->udd_cnt++;
-	}
-	cmpl->pidx = next;
-
-	return 0;
-}
-
-int rcv_udd_only(struct qdma_descq *descq, struct qdma_ul_cmpt_info *cmpl)
-{
-#ifdef XMP_DISABLE_ST_C2H_CMPL
-	__be64 cmpt_entry = cmpl->entry[0];
-#endif
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-
-	pr_debug("%s, rcv udd.\n", descq->conf.name);
-#if 0
-	print_hex_dump(KERN_INFO, "cmpl entry: ", DUMP_PREFIX_OFFSET,
-			16, 1, (void *)cmpl->entry, descq->cmpt_entry_len,
-			false);
-#endif
-
-	/* udd only: no descriptor used */
-	if (descq->conf.fp_descq_c2h_packet) {
-		return descq->conf.fp_descq_c2h_packet(descq->q_hndl,
-				descq->conf.quld, 0, 0, NULL,
-				(unsigned char *)cmpl->entry);
-	}
-#ifdef XMP_DISABLE_ST_C2H_CMPL
-	if ((cmpt_entry & (1 << 20)) > 0) {
-		__be16 pkt_cnt = (cmpt_entry >> 32) & 0xFFFF;
-		__be16 pkt_len = (cmpt_entry >> 48) & 0xFFFF;
-		int i;
-
-		pr_info("pkt %u * %u.\n", pkt_len, pkt_cnt);
-		for (i = 0; i < pkt_cnt; i++) {
-			int rv = rcv_pkt(descq, cmpl, pkt_len);
-
-			if (rv < 0)
-				break;
-		}
-	}
-#endif
-	flq->udd_cnt++;
-
-	return 0;
-}
-
-static void descq_adjust_c2h_cntr_avgs(struct qdma_descq *descq)
-{
-	int i;
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct global_csr_conf *csr_info = &xdev->csr_info;
-	uint8_t latecy_optimized = descq->conf.latency_optimize;
-
-	descq->c2h_pend_pkt_moving_avg =
-		csr_info->c2h_cnt_th[descq->cmpt_cidx_info.counter_idx];
-
-	if (descq->sorted_c2h_cntr_idx == (QDMA_GLOBAL_CSR_ARRAY_SZ - 1))
-		i = xdev->sorted_c2h_cntr_idx[descq->sorted_c2h_cntr_idx];
-	else
-		i = xdev->sorted_c2h_cntr_idx[descq->sorted_c2h_cntr_idx + 1];
-
-	if (latecy_optimized)
-		descq->c2h_pend_pkt_avg_thr_hi = (csr_info->c2h_cnt_th[i] +
-					csr_info->c2h_cnt_th[i]);
-	else
-		descq->c2h_pend_pkt_avg_thr_hi =
-				(descq->c2h_pend_pkt_moving_avg +
-						csr_info->c2h_cnt_th[i]);
-
-	if (descq->sorted_c2h_cntr_idx > 0)
-		i = xdev->sorted_c2h_cntr_idx[descq->sorted_c2h_cntr_idx - 1];
-	else
-		i = xdev->sorted_c2h_cntr_idx[descq->sorted_c2h_cntr_idx];
-	if (latecy_optimized)
-		descq->c2h_pend_pkt_avg_thr_lo = (csr_info->c2h_cnt_th[i] +
-				csr_info->c2h_cnt_th[i]);
-	else
-		descq->c2h_pend_pkt_avg_thr_lo =
-				(descq->c2h_pend_pkt_moving_avg +
-						csr_info->c2h_cnt_th[i]);
-
-	descq->c2h_pend_pkt_avg_thr_hi >>= 1;
-	descq->c2h_pend_pkt_avg_thr_lo >>= 1;
-	pr_debug("q%u: c2h_cntr_idx =  %u %u %u", descq->conf.qidx,
-		descq->cmpt_cidx_info.counter_idx,
-		descq->c2h_pend_pkt_avg_thr_lo,
-		descq->c2h_pend_pkt_avg_thr_hi);
-}
-
-static void descq_incr_c2h_cntr_th(struct qdma_descq *descq)
-{
-	unsigned char i, c2h_cntr_idx;
-	unsigned char c2h_cntr_val_new;
-	unsigned char c2h_cntr_val_curr;
-
-	if (descq->sorted_c2h_cntr_idx ==
-			(QDMA_GLOBAL_CSR_ARRAY_SZ - 1))
-		return;
-	descq->c2h_cntr_monitor_cnt = 0;
-	i = descq->sorted_c2h_cntr_idx;
-	c2h_cntr_idx = descq->xdev->sorted_c2h_cntr_idx[i];
-	c2h_cntr_val_curr = descq->xdev->csr_info.c2h_cnt_th[c2h_cntr_idx];
-	i++;
-	c2h_cntr_idx = descq->xdev->sorted_c2h_cntr_idx[i];
-	c2h_cntr_val_new = descq->xdev->csr_info.c2h_cnt_th[c2h_cntr_idx];
-
-	if ((c2h_cntr_val_new >= descq->c2h_pend_pkt_moving_avg) &&
-		(c2h_cntr_val_new - descq->c2h_pend_pkt_moving_avg) >=
-		(descq->c2h_pend_pkt_moving_avg - c2h_cntr_val_curr))
-		return; /* choosing the closest */
-	/* do not allow c2h c2ntr value go beyond half of cmpt rng sz*/
-	if (c2h_cntr_val_new < (descq->conf.rngsz >> 1)) {
-		descq->cmpt_cidx_info.counter_idx = c2h_cntr_idx;
-		descq->sorted_c2h_cntr_idx = i;
-		descq_adjust_c2h_cntr_avgs(descq);
-	}
-}
-
-static void descq_decr_c2h_cntr_th(struct qdma_descq *descq,
-		unsigned int budget)
-{
-	unsigned char i, c2h_cntr_idx;
-	unsigned char c2h_cntr_val_new;
-	unsigned char c2h_cntr_val_curr;
-
-	if (!descq->sorted_c2h_cntr_idx)
-		return;
-	descq->c2h_cntr_monitor_cnt = 0;
-	i = descq->sorted_c2h_cntr_idx;
-	c2h_cntr_idx = descq->xdev->sorted_c2h_cntr_idx[i];
-	c2h_cntr_val_curr = descq->xdev->csr_info.c2h_cnt_th[c2h_cntr_idx];
-	i--;
-	c2h_cntr_idx = descq->xdev->sorted_c2h_cntr_idx[i];
-
-	c2h_cntr_val_new = descq->xdev->csr_info.c2h_cnt_th[c2h_cntr_idx];
-
-	if ((c2h_cntr_val_new <= descq->c2h_pend_pkt_moving_avg) &&
-		(descq->c2h_pend_pkt_moving_avg - c2h_cntr_val_new) >=
-		(c2h_cntr_val_curr - descq->c2h_pend_pkt_moving_avg))
-		return; /* choosing the closest */
-
-	/* for better performance we do not allow c2h_cnt
-	 * val below budget unless latency optimized
-	 * '-2' is SW work around for HW bug
-	 */
-	if (!descq->conf.latency_optimize &&
-			(c2h_cntr_val_new < (budget - 2)))
-		return;
-
-	descq->cmpt_cidx_info.counter_idx = c2h_cntr_idx;
-
-	descq->sorted_c2h_cntr_idx = i;
-	descq_adjust_c2h_cntr_avgs(descq);
-}
-
-
-#define MAX_C2H_CNTR_STAGNANT_CNT 16
-
-static void descq_adjust_c2h_cntr_th(struct qdma_descq *descq,
-					 unsigned int pend, unsigned int budget)
-{
-	descq->c2h_pend_pkt_moving_avg += pend;
-	descq->c2h_pend_pkt_moving_avg >>= 1; /* average */
-	/* if avg > hi_th, increase the counter
-	 * if avg < lo_th, decrease the counter
-	 */
-	if (descq->c2h_pend_pkt_avg_thr_hi <= descq->c2h_pend_pkt_moving_avg)
-		descq_incr_c2h_cntr_th(descq);
-	else if (descq->c2h_pend_pkt_avg_thr_lo >=
-				descq->c2h_pend_pkt_moving_avg)
-		descq_decr_c2h_cntr_th(descq, budget);
-	else {
-		descq->c2h_cntr_monitor_cnt++;
-		if (descq->c2h_cntr_monitor_cnt == MAX_C2H_CNTR_STAGNANT_CNT) {
-			/* go down on counter value to see if we actually are
-			 * increasing latency by setting
-			 * higher counter threshold
-			 */
-			descq_decr_c2h_cntr_th(descq, budget);
-			descq->c2h_cntr_monitor_cnt = 0;
-		} else
-			return;
-	}
-}
-
-static int descq_cmpl_err_check(struct qdma_descq *descq,
-			 struct qdma_ul_cmpt_info *cmpl)
-{
-	/*
-	 * format = 1 does not have length field, so the driver cannot
-	 * figure out how many descriptor is used
-	 */
-	if (unlikely(cmpl->f.format)) {
-		pr_err("%s: ERR cmpl. entry %u format=1.\n",
-			descq->conf.name, descq->cidx_cmpt);
-		goto err_out;
-	}
-
-	if (unlikely(!cmpl->f.desc_used && !descq->conf.cmpl_udd_en)) {
-		pr_warn("%s, ERR cmpl entry %u, desc_used 0, udd_en 0.\n",
-			descq->conf.name, descq->cidx_cmpt);
-		goto err_out;
-	}
-
-	if (unlikely(cmpl->f.err)) {
-		pr_warn("%s, ERR cmpl entry %u error set\n",
-				descq->conf.name, descq->cidx_cmpt);
-		goto err_out;
-	}
-
-	return 0;
-err_out:
-	descq->err = 1;
-	print_hex_dump(KERN_INFO, "cmpl entry: ", DUMP_PREFIX_OFFSET,
-			16, 1, (void *)cmpl, descq->cmpt_entry_len,
-			false);
-	return -EINVAL;
-
-}
-
-int descq_process_completion_st_c2h(struct qdma_descq *descq, int budget,
-					bool upd_cmpl)
-{
-	struct xlnx_dma_dev *xdev = descq->xdev;
-	struct qdma_c2h_cmpt_cmpl_status *cs =
-			(struct qdma_c2h_cmpt_cmpl_status *)
-			descq->desc_cmpt_cmpl_status;
-	struct qdma_queue_conf *qconf = &descq->conf;
-	unsigned int rngsz_cmpt = qconf->rngsz_cmpt;
-	unsigned int pidx = descq->pidx;
-	unsigned int cidx_cmpt = descq->cidx_cmpt;
-	unsigned int pidx_cmpt = cs->pidx;
-	struct qdma_flq *flq = (struct qdma_flq *)descq->flq;
-	unsigned int pidx_pend = flq->pidx_pend;
-	bool uld_handler = descq->conf.fp_descq_c2h_packet ? true : false;
-	unsigned char is_ul_ext = (qconf->desc_bypass &&
-			qconf->fp_proc_ul_cmpt_entry) ? 1 : 0;
-	int pend, ret = 0;
-	int proc_cnt = 0;
-	int rv = 0;
-	int read_weight = budget;
-
-	/* once an error happens, stop processing of the Q */
-	if (descq->err) {
-		pr_err("%s: err.\n", descq->conf.name);
-		return -EINVAL;
-	}
-
-	dma_rmb();
-	pend = ring_idx_delta(pidx_cmpt, cidx_cmpt, rngsz_cmpt);
-	if (!pend) {
-		/* SW work around where next interrupt could be missed when
-		 * there are no entries as of now
-		 */
-		if (descq->xdev->conf.qdma_drv_mode != POLL_MODE) {
-			rv = queue_cmpt_cidx_update(descq->xdev,
-					descq->conf.qidx,
-					&descq->cmpt_cidx_info);
-			if (unlikely(rv < 0))  {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-		}
-		return -ENODATA;
-	}
-
-#if 0
-	print_hex_dump(KERN_INFO, "cmpl status: ", DUMP_PREFIX_OFFSET,
-				16, 1, (void *)cs, sizeof(*cs),
-				false);
-	pr_info("cmpl status: pidx 0x%x, cidx %x, color %d, int_state 0x%x.\n",
-		cs->pidx, cs->cidx, cs->color_isr_status & 0x1,
-		(cs->color_isr_status >> 1) & 0x3);
-#endif
-
-	flq->pkt_cnt = pend;
-
-	if (!budget || budget > pend)
-		budget = pend;
-
-	while (likely(proc_cnt < budget)) {
-		struct qdma_ul_cmpt_info cmpl;
-		int rv;
-
-		memset(&cmpl, 0, sizeof(struct qdma_ul_cmpt_info));
-		if (is_ul_ext)
-			rv = qconf->fp_proc_ul_cmpt_entry(descq->desc_cmpt_cur,
-							  &cmpl);
-		else
-			rv = parse_cmpl_entry(descq, &cmpl);
-		/* completion entry error, q is halted */
-		if (rv < 0)
-			return rv;
-		rv = descq_cmpl_err_check(descq, &cmpl);
-		if (rv < 0)
-			return rv;
-
-		if (!is_new_cmpl_entry(descq, &cmpl))
-			break;
-
-		cmpl.pidx = pidx;
-
-		if (cmpl.f.desc_used) {
-			rv = rcv_pkt(descq, &cmpl, cmpl.len);
-		} else if (descq->conf.cmpl_udd_en) {
-			/* udd only: no descriptor used */
-			rv = rcv_udd_only(descq, &cmpl);
-		}
-
-		if (rv < 0) /* cannot process now, stop */
-			break;
-
-		pidx = cmpl.pidx;
-
-		cmpt_next(descq);
-		proc_cnt++;
-	}
-
-	flq->pkt_cnt -= proc_cnt;
-
-	if ((xdev->conf.intr_moderation) &&
-			(descq->cmpt_cidx_info.trig_mode ==
-					TRIG_MODE_COMBO)) {
-		pend = ring_idx_delta(cs->pidx, descq->cidx_cmpt, rngsz_cmpt);
-		flq->pkt_cnt = pend;
-
-		/* we dont need interrupt if packets available for next read */
-		if (read_weight && (flq->pkt_cnt > read_weight))
-			descq->cmpt_cidx_info.irq_en = 0;
-		else
-			descq->cmpt_cidx_info.irq_en = 1;
-
-		/* if we use just then at right value of c2h_cntr
-		 * the average goes down as there
-		 * will not be many pend packet.
-		 */
-		if (descq->conf.adaptive_rx)
-			descq_adjust_c2h_cntr_th(descq, pend + proc_cnt,
-						 read_weight);
-	}
-
-	if (proc_cnt) {
-		descq->pidx_cmpt = pidx_cmpt;
-		descq->pidx = pidx;
-		descq->cmpt_cidx_info.wrb_cidx = descq->cidx_cmpt;
-		if (!descq->conf.fp_descq_c2h_packet) {
-			rv = queue_cmpt_cidx_update(descq->xdev,
-				descq->conf.qidx, &descq->cmpt_cidx_info);
-			if (unlikely(rv < 0)) {
-				pr_err("%s: Failed to update cmpt cidx\n",
-						descq->conf.name);
-				return -EINVAL;
-			}
-			qdma_c2h_packets_proc_dflt(descq);
-		}
-
-		flq->pkt_cnt = ring_idx_delta(cs->pidx, descq->cidx_cmpt,
-					      rngsz_cmpt);
-
-		/* some descq entries have been consumed */
-		if (flq->pidx_pend != pidx_pend) {
-			pend = ring_idx_delta(flq->pidx_pend, pidx_pend,
-						flq->size);
-			qdma_flq_refill(descq, pidx_pend, pend,
-					uld_handler ? 0 : 1, GFP_ATOMIC);
-
-			if (upd_cmpl && !descq->q_stop_wait) {
-				pend = ring_idx_decr(flq->pidx_pend, 1,
-						     flq->size);
-				descq->pidx_info.pidx = pend;
-				if (!descq->conf.fp_descq_c2h_packet) {
-					ret = queue_pidx_update(descq->xdev,
-							descq->conf.qidx,
-							descq->conf.q_type,
-							&descq->pidx_info);
-					if (unlikely(ret < 0))  {
-						pr_err("%s: Failed to update pidx\n",
-							descq->conf.name);
-						return -EINVAL;
-					}
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-int qdma_queue_c2h_peek(unsigned long dev_hndl, unsigned long id,
-			unsigned int *udd_cnt, unsigned int *pkt_cnt,
-			unsigned int *data_len)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_flq *flq;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 0);
-	if (!descq) {
-		pr_err("Invalid qid(%ld)", id);
-		return -EINVAL;
-	}
-
-	flq = (struct qdma_flq *)descq->flq;
-	*udd_cnt = flq->udd_cnt;
-	*pkt_cnt = flq->pkt_cnt;
-	*data_len = flq->pkt_dlen;
-
-	return 0;
-}
-
-int qdma_queue_packet_read(unsigned long dev_hndl, unsigned long id,
-			struct qdma_request *req, struct qdma_cmpl_ctrl *cctrl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	struct qdma_descq *descq;
-	struct qdma_sgt_req_cb *cb = NULL;
-	int rv = 0;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (!req) {
-		pr_err("req is NULL");
-		return -EINVAL;
-	}
-	cb = qdma_req_cb_get(req);
-
-	descq = qdma_device_get_descq_by_id(xdev, id, NULL, 0, 1);
-	if (!descq) {
-		pr_err("Invalid qid(%ld)", id);
-		return -EINVAL;
-	}
-
-	if (!descq->conf.st || (descq->conf.q_type != Q_C2H)) {
-		pr_info("%s: st %d, type %d.\n",
-			descq->conf.name, descq->conf.st, descq->conf.q_type);
-		return -EINVAL;
-	}
-
-	if (cctrl) {
-		lock_descq(descq);
-
-		descq->cmpt_cidx_info.trig_mode =
-			descq->conf.cmpl_trig_mode = cctrl->trigger_mode;
-		descq->cmpt_cidx_info.timer_idx =
-			descq->conf.cmpl_timer_idx = cctrl->timer_idx;
-		descq->cmpt_cidx_info.counter_idx =
-			descq->conf.cmpl_cnt_th_idx = cctrl->cnt_th_idx;
-		descq->cmpt_cidx_info.irq_en =
-			descq->conf.cmpl_en_intr = cctrl->cmpl_en_intr;
-		descq->cmpt_cidx_info.wrb_en =
-			descq->conf.cmpl_stat_en = cctrl->en_stat_desc;
-
-		descq->cmpt_cidx_info.wrb_cidx = descq->cidx_cmpt;
-
-		rv = queue_cmpt_cidx_update(descq->xdev,
-				descq->conf.qidx, &descq->cmpt_cidx_info);
-		if (unlikely(rv < 0)) {
-			pr_err("%s: Failed to update cmpt cidx\n",
-					descq->conf.name);
-			unlock_descq(descq);
-			return -EINVAL;
-		}
-
-		unlock_descq(descq);
-	}
-
-	memset(cb, 0, QDMA_REQ_OPAQUE_SIZE);
-
-	qdma_waitq_init(&cb->wq);
-
-	lock_descq(descq);
-	descq_st_c2h_read(descq, req, 1, 1);
-	unlock_descq(descq);
-
-	return req->count - cb->left;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h b/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h
deleted file mode 100755
index 1d6971f..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_st_c2h.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_ST_C2H_H__
-#define __QDMA_ST_C2H_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma st c2h processing
- *
- */
-#include <linux/spinlock_types.h>
-#include <linux/types.h>
-#include "qdma_descq.h"
-#ifdef ERR_DEBUG
-#include "qdma_nl.h"
-#endif
-
-/**
- * @struct - qdma_sdesc_info
- * @brief	qdma descriptor information
- */
-struct qdma_sdesc_info {
-	/** pointer to next descriptor  */
-	struct qdma_sdesc_info *next;
-	/**
-	 * @union - desciptor flags
-	 */
-	union {
-		/** 8 flag bits  */
-		u8 fbits;
-		/**
-		 * @struct - flags
-		 * @brief	desciptor flags
-		 */
-		struct flags {
-			/** is descriptor valid */
-			u8 valid:1;
-			/** start of the packet */
-			u8 sop:1;
-			/** end of the packet */
-			u8 eop:1;
-			/** filler for 5 bits */
-			u8 filler:5;
-		} f;
-	};
-	/** reserved 3 bits */
-	u8 rsvd[3];
-	/** consumer index */
-	unsigned int cidx;
-};
-
-/**
- * struct qdma_sw_pg_sg - qdma page scatter gather request
- *
- */
-struct qdma_sw_pg_sg {
-	/** @pg_base: pointer to current page */
-	struct page *pg_base;
-	/** @pg_dma_base_addr: dma address of the allocated page */
-	dma_addr_t pg_dma_base_addr;
-	/** @pg_offset: page offset for all pages */
-	unsigned int pg_offset;
-};
-
-/**
- * @struct - qdma_flq
- * @brief qdma free list q page allocation book keeping
- */
-struct qdma_flq {
-	/** RO: size of the decriptor */
-	unsigned int size;
-	/** RO: c2h buffer size */
-	unsigned int desc_buf_size;
-	/** RO: number of pages */
-	unsigned int num_pages;
-	/** RO: Mask for number of pages */
-	unsigned int num_pgs_mask;
-	/** RO: number of buffers per page */
-	unsigned int num_bufs_per_pg;
-	/** RO: number of currently allocated page index */
-	unsigned int alloc_idx;
-	/** RO: number of currently recycled page index */
-	unsigned int recycle_idx;
-	/** RO: max page offset */
-	unsigned int max_pg_offset;
-	/** RO: page order */
-	unsigned int buf_pg_mask;
-	/** RO: desc page order */
-	unsigned char desc_pg_order;
-	/** RO: desc page shift */
-	unsigned char desc_pg_shift;
-	/** RO: page shift */
-	unsigned char buf_pg_shift;
-	/** RO: pointer to qdma c2h decriptor */
-	struct qdma_c2h_desc *desc;
-
-	/** RW: total # of udd outstanding */
-	unsigned int udd_cnt;
-	/** RW: total # of packet outstanding */
-	unsigned int pkt_cnt;
-	/** RW: total # of pkt payload length outstanding */
-	unsigned int pkt_dlen;
-	/** RW: # of available Rx buffers */
-	unsigned int avail;
-	/** RW: # of times buffer allocation failed */
-	unsigned long alloc_fail;
-	/** RW: # of RX Buffer DMA Mapping failures */
-	unsigned long mapping_err;
-	/** RW: consumer index */
-	unsigned int cidx;
-	/** RW: producer index */
-	unsigned int pidx;
-	/** RW: pending pidxes */
-	unsigned int pidx_pend;
-	/** RW: Page list */
-	struct qdma_sw_pg_sg *pg_sdesc;
-	/** RW: sw scatter gather list */
-	struct qdma_sw_sg *sdesc;
-	/** RW: sw descriptor info */
-	struct qdma_sdesc_info *sdesc_info;
-};
-
-/*****************************************************************************/
-/**
- * qdma_descq_rxq_read() - read from the rx queue
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	req:		queue request
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_rxq_read(struct qdma_descq *descq, struct qdma_request *req);
-
-/**
- * qdma_descq_dump_cmpt() - dump the completion queue descriptors
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	start:		start completion descriptor index
- * @param[in]	end:		end completion descriptor index
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_descq_dump_cmpt(struct qdma_descq *descq, int start, int end,
-		char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * incr_cmpl_desc_cnt() - update the interrupt cidx
- *
- * @param[in]   descq:      pointer to qdma_descq
- * @param[in]   cnt:        increment value
- *
- *****************************************************************************/
-void incr_cmpl_desc_cnt(struct qdma_descq *descq, unsigned int cnt);
-
-/*****************************************************************************/
-/**
- * descq_flq_free_resource() - handler to free the pages for the request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void descq_flq_free_resource(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * descq_flq_alloc_resource() - handler to allocate the pages for the request
- *
- * @param[in]	descq:		pointer to qdma_descq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int descq_flq_alloc_resource(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * descq_process_completion_st_c2h() - handler to process the st c2h
- *				completion request
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	budget:		number of descriptors to process
- * @param[in]	upd_cmpl:	if update completion required
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int descq_process_completion_st_c2h(struct qdma_descq *descq, int budget,
-					bool upd_cmpl);
-
-/*****************************************************************************/
-/**
- * descq_st_c2h_read() - handler to process the st c2h read request
- *
- * @param[in]	descq:		pointer to qdma_descq
- * @param[in]	req:		pointer to read request
- * @param[in]	update_pidx:		flag to update the request
- * @param[in]	refill:		flag to indicate whether to refill the flq
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int descq_st_c2h_read(struct qdma_descq *descq, struct qdma_request *req,
-			bool update_pidx, bool refill);
-
-#endif /* ifndef __QDMA_ST_C2H_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_thread.c b/QDMA/linux-kernel/driver/libqdma/qdma_thread.c
deleted file mode 100755
index cf96fd2..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_thread.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_thread.h"
-
-#include <linux/kernel.h>
-
-#include "qdma_descq.h"
-#include "thread.h"
-#include "xdev.h"
-
-/* ********************* global variables *********************************** */
-
-static unsigned int thread_cnt;
-/** completion status threads */
-static struct qdma_kthread *cs_threads;
-
-static spinlock_t	qcnt_lock;
-static unsigned int cpu_count;
-static unsigned int *per_cpu_qcnt;
-
-/* ********************* static function declarations *********************** */
-
-static int qdma_thread_cmpl_status_pend(struct list_head *work_item);
-static int qdma_thread_cmpl_status_proc(struct list_head *work_item);
-
-/* ********************* static function definitions ************************ */
-static int qdma_thread_cmpl_status_pend(struct list_head *work_item)
-{
-	struct qdma_descq *descq = list_entry(work_item, struct qdma_descq,
-						cmplthp_list);
-	int pend = 0;
-
-	lock_descq(descq);
-	pend = !list_empty(&descq->pend_list) || !list_empty(&descq->work_list);
-	unlock_descq(descq);
-
-	return pend;
-}
-
-static int qdma_thread_cmpl_status_proc(struct list_head *work_item)
-{
-	struct qdma_descq *descq;
-
-	descq = list_entry(work_item, struct qdma_descq, cmplthp_list);
-	qdma_descq_service_cmpl_update(descq, 0, 1);
-	return 0;
-}
-
-/* ********************* public function definitions ************************ */
-
-void qdma_thread_remove_work(struct qdma_descq *descq)
-{
-	struct qdma_kthread *cmpl_thread;
-	int cpu_idx = cpu_count;
-
-
-	lock_descq(descq);
-	cmpl_thread = descq->cmplthp;
-	descq->cmplthp = NULL;
-
-	if (descq->cpu_assigned) {
-		descq->cpu_assigned = 0;
-		cpu_idx = descq->intr_work_cpu;
-	}
-
-	pr_debug("%s removing from thread %s, %u.\n",
-		descq->conf.name, cmpl_thread ? cmpl_thread->name : "?",
-		cpu_idx);
-
-	unlock_descq(descq);
-
-	if (cpu_idx < cpu_count) {
-		spin_lock(&qcnt_lock);
-		per_cpu_qcnt[cpu_idx]--;
-		spin_unlock(&qcnt_lock);
-	}
-
-	if (cmpl_thread) {
-		lock_thread(cmpl_thread);
-		list_del(&descq->cmplthp_list);
-		cmpl_thread->work_cnt--;
-		unlock_thread(cmpl_thread);
-	}
-}
-
-void qdma_thread_add_work(struct qdma_descq *descq)
-{
-	struct qdma_kthread *thp = cs_threads;
-	unsigned int v = 0;
-	int i, idx = thread_cnt;
-
-	if (descq->xdev->conf.qdma_drv_mode != POLL_MODE) {
-		spin_lock(&qcnt_lock);
-		idx = cpu_count - 1;
-		v = per_cpu_qcnt[idx];
-		for (i = idx - 1; i >= 0  && v; i--) {
-			if (per_cpu_qcnt[i] < v) {
-				idx = i;
-				v = per_cpu_qcnt[i];
-			}
-		}
-
-		per_cpu_qcnt[idx]++;
-		spin_unlock(&qcnt_lock);
-
-		lock_descq(descq);
-		descq->cpu_assigned = 1;
-		descq->intr_work_cpu = idx;
-		unlock_descq(descq);
-
-		pr_debug("%s 0x%p assigned to cpu %u.\n",
-			descq->conf.name, descq, idx);
-
-		return;
-	}
-
-	/* Polled mode only */
-	for (i = 0; i < thread_cnt; i++, thp++) {
-		lock_thread(thp);
-		if (idx == thread_cnt) {
-			v = thp->work_cnt;
-			idx = i;
-		} else if (!thp->work_cnt) {
-			idx = i;
-			unlock_thread(thp);
-			break;
-		} else if (thp->work_cnt < v)
-			idx = i;
-		unlock_thread(thp);
-	}
-
-	thp = cs_threads + idx;
-	lock_thread(thp);
-	list_add_tail(&descq->cmplthp_list, &thp->work_list);
-	descq->intr_work_cpu = idx;
-	thp->work_cnt++;
-	unlock_thread(thp);
-
-	pr_debug("%s 0x%p assigned to cmpl status thread %s,%u.\n",
-		descq->conf.name, descq, thp->name, thp->work_cnt);
-
-	lock_descq(descq);
-	descq->cmplthp = thp;
-	unlock_descq(descq);
-}
-
-int qdma_threads_create(unsigned int num_threads)
-{
-	struct qdma_kthread *thp;
-	int i;
-	int rv;
-
-	if (thread_cnt) {
-		pr_warn("threads already created!");
-		return 0;
-	}
-	spin_lock_init(&qcnt_lock);
-
-	cpu_count = num_online_cpus();
-	per_cpu_qcnt = kzalloc(cpu_count * sizeof(unsigned int), GFP_KERNEL);
-	if (!per_cpu_qcnt)
-		return -ENOMEM;
-
-	thread_cnt = (num_threads == 0) ? cpu_count : num_threads;
-
-	cs_threads = kzalloc(thread_cnt * sizeof(struct qdma_kthread),
-					GFP_KERNEL);
-	if (!cs_threads)
-		return -ENOMEM;
-
-	/* N dma writeback monitoring threads */
-	thp = cs_threads;
-	for (i = 0; i < thread_cnt; i++, thp++) {
-		thp->cpu = i;
-		thp->kth_timeout = 0;
-		rv = qdma_kthread_start(thp, "qdma_cmpl_status_th", i);
-		if (rv < 0)
-			goto cleanup_threads;
-		thp->fproc = qdma_thread_cmpl_status_proc;
-		thp->fpending = qdma_thread_cmpl_status_pend;
-	}
-
-	return 0;
-
-cleanup_threads:
-	kfree(cs_threads);
-	cs_threads = NULL;
-	thread_cnt = 0;
-
-	return rv;
-}
-
-void qdma_threads_destroy(void)
-{
-	int i;
-	struct qdma_kthread *thp;
-
-	if (per_cpu_qcnt) {
-		spin_lock(&qcnt_lock);
-		kfree(per_cpu_qcnt);
-		per_cpu_qcnt = NULL;
-		spin_unlock(&qcnt_lock);
-	}
-
-	if (!thread_cnt)
-		return;
-
-	/* N dma writeback monitoring threads */
-	thp = cs_threads;
-	for (i = 0; i < thread_cnt; i++, thp++)
-		if (thp->fproc)
-			qdma_kthread_stop(thp);
-
-	kfree(cs_threads);
-	cs_threads = NULL;
-	thread_cnt = 0;
-}
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_thread.h b/QDMA/linux-kernel/driver/libqdma/qdma_thread.h
deleted file mode 100755
index 48b2680..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_thread.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef LIBQDMA_QDMA_THREAD_H_
-#define LIBQDMA_QDMA_THREAD_H_
-/**
- * @file
- * @brief This file contains the declarations for qdma thread handlers
- *
- */
-
-/** qdma_descq forward declaration */
-struct qdma_descq;
-
-/*****************************************************************************/
-/**
- * qdma_threads_create() - create qdma threads
- * This functions creates two threads for each cpu in the system or number of
- * number of thread requested by param num_threads and assigns the
- * thread handlers
- * 1: queue processing thread
- * 2: queue completion handler thread
- *
- * @param[in] num_threads - number of threads to be created
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_threads_create(unsigned int num_threads);
-
-/*****************************************************************************/
-/**
- * qdma_threads_destroy() - destroy all the qdma threads created
- *                          during system initialization
- *
- * @return	none
- *****************************************************************************/
-void qdma_threads_destroy(void);
-
-/*****************************************************************************/
-/**
- * qdma_thread_remove_work() - handler to remove the attached work thread
- *
- * @param[in]	descq:	pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void qdma_thread_remove_work(struct qdma_descq *descq);
-
-/*****************************************************************************/
-/**
- * qdma_thread_add_work() - handler to add a work thread
- *
- * @param[in]	descq:	pointer to qdma_descq
- *
- * @return	none
- *****************************************************************************/
-void qdma_thread_add_work(struct qdma_descq *descq);
-
-#endif /* LIBQDMA_QDMA_THREAD_H_ */
diff --git a/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h b/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h
deleted file mode 100755
index ae69938..0000000
--- a/QDMA/linux-kernel/driver/libqdma/qdma_ul_ext.h
+++ /dev/null
@@ -1,99 +0,0 @@
-#ifndef QDMA_UL_EXT_H__
-#define QDMA_UL_EXT_H__
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-/**
- * @file
- * @brief This file provides the interface definitions for bypass extension
- *        modules to be plugged in
- */
-
-#include "libqdma_export.h"
-
-/**
- * struct qdma_q_desc_list - descriptor list
- */
-struct qdma_q_desc_list {
-	/** @desc: pointer to the descriptor */
-	void *desc;
-	/** @next: pointer to the next list element */
-	struct qdma_q_desc_list *next;
-};
-
-/*****************************************************************************/
-/**
- * qdma_sgl_find_offset() - find the sgl offset for the request under process
- *
- * @req: request under process
- * @sg_p: pointer to the entry in the sgl list
- * @sg_offset: offset in the entry of sgl list
- *
- * Return: 0: success; <0: on any error
- *
- *****************************************************************************/
-int qdma_sgl_find_offset(struct qdma_request *req, struct qdma_sw_sg **sg_p,
-		unsigned int *sg_offset);
-
-/*****************************************************************************/
-/**
- * qdma_update_request() - update the request current processed info
- *
- * @q_hndl: handle to the q with which bypass module can request descriptors
- * @req: request under process
- * @num_desc: number of descriptors consumed consumed in the process
- * @data_cnt: amount of data processed in the request
- * @sg_offset: offset in the @sg
- * @sg: next sg to be serviced
- *
- *****************************************************************************/
-void qdma_update_request(void *q_hndl, struct qdma_request *req,
-		unsigned int num_desc,
-		unsigned int data_cnt,
-		unsigned int sg_offset,
-		void *sg);
-
-/*****************************************************************************/
-/**
- * qdma_q_desc_get() - request @desc_cnt number of descriptors for the q
- *                     specified by @q_hndl
- *
- * @q_hndl: handle to the q with which bypass module can request descriptors
- * @desc_cnt: number of descriptors required
- * @desc_list: list of descriptors to be provided for this request
- *
- * Return: 0: success; <0: if number of requested descriptors not available
- *
- *****************************************************************************/
-int qdma_q_desc_get(void *q_hndl, const unsigned int desc_cnt,
-		struct qdma_q_desc_list **desc_list);
-
-/*****************************************************************************/
-/**
- * qdma_q_init_pointers() - update the pidx/cidx pointers of the q specified
- *				by @q_hndl
- *
- * @q_hndl: handle to the q with which bypass module can request descriptors
- *
- * Return: 0: success; <0: on failure
- *
- *****************************************************************************/
-int qdma_q_init_pointers(void *q_hndl);
-
-#endif /* QDMA_UL_EXT_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/thread.c b/QDMA/linux-kernel/driver/libqdma/thread.c
deleted file mode 100755
index d0c0909..0000000
--- a/QDMA/linux-kernel/driver/libqdma/thread.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "thread.h"
-
-#include <linux/kernel.h>
-
-/*
- * kernel thread function wrappers
- */
-int qdma_kthread_dump(struct qdma_kthread *thp, char *buf, int buflen,
-			int detail)
-{
-	int len = 0;
-
-	if (!buf || !buflen)
-		return 0;
-
-	lock_thread(thp);
-	len += snprintf(buf, buflen, "%s, cpu %u, work %u.\n",
-			thp->name, thp->cpu, thp->work_cnt);
-
-	if (detail)
-		;
-
-	unlock_thread(thp);
-
-	buf[len] = '\0';
-	return len;
-}
-
-static inline int xthread_work_pending(struct qdma_kthread *thp)
-{
-	struct list_head *work_item, *next;
-
-	/* any work items assigned to this thread? */
-	if (list_empty(&thp->work_list))
-		return 0;
-
-
-	/* any work item has pending work to do? */
-	list_for_each_safe(work_item, next, &thp->work_list) {
-		if (thp->fpending && thp->fpending(work_item))
-			return 1;
-
-	}
-	return 0;
-}
-
-static inline void xthread_reschedule(struct qdma_kthread *thp)
-{
-	if (thp->kth_timeout) {
-		pr_debug_thread("%s rescheduling for %u seconds",
-				thp->name, thp->kth_timeout);
-		qdma_waitq_wait_event_timeout(
-				thp->waitq, thp->schedule,
-				msecs_to_jiffies(thp->kth_timeout));
-	} else {
-		pr_debug_thread("%s rescheduling", thp->name);
-		qdma_waitq_wait_event(thp->waitq, thp->schedule);
-	}
-}
-
-static int xthread_main(void *data)
-{
-	struct qdma_kthread *thp = (struct qdma_kthread *)data;
-
-	pr_debug_thread("%s UP.\n", thp->name);
-
-	disallow_signal(SIGPIPE);
-
-	if (thp->finit)
-		thp->finit(thp);
-
-
-	while (!kthread_should_stop()) {
-
-		struct list_head *work_item, *next;
-
-		pr_debug_thread("%s interruptible\n", thp->name);
-
-		/* any work to do? */
-		lock_thread(thp);
-		if (!xthread_work_pending(thp)) {
-			unlock_thread(thp);
-			xthread_reschedule(thp);
-			lock_thread(thp);
-		}
-		thp->schedule = 0;
-
-		if (thp->work_cnt) {
-			pr_debug_thread("%s processing %u work items\n",
-					thp->name, thp->work_cnt);
-			/* do work */
-			list_for_each_safe(work_item, next, &thp->work_list) {
-				thp->fproc(work_item);
-			}
-		}
-		unlock_thread(thp);
-		schedule();
-	}
-
-	pr_debug_thread("%s, work done.\n", thp->name);
-
-
-	if (thp->fdone)
-		thp->fdone(thp);
-
-	pr_debug_thread("%s, exit.\n", thp->name);
-	return 0;
-}
-
-int qdma_kthread_start(struct qdma_kthread *thp, char *name, int id)
-{
-	int len;
-
-	if (thp->task) {
-		pr_warn("kthread %s task already running?\n", thp->name);
-		return -EINVAL;
-	}
-
-#ifdef __QDMA_VF__
-	len = snprintf(thp->name, sizeof(thp->name), "%s_vf_%d", name, id);
-	if (len < 0)
-		return -EINVAL;
-#else
-	len = snprintf(thp->name, sizeof(thp->name), "%s%d", name, id);
-	if (len < 0)
-		return -EINVAL;
-#endif
-	thp->id = id;
-
-	spin_lock_init(&thp->lock);
-	INIT_LIST_HEAD(&thp->work_list);
-	qdma_waitq_init(&thp->waitq);
-
-	thp->task = kthread_create_on_node(xthread_main, (void *)thp,
-					cpu_to_node(thp->cpu), "%s", thp->name);
-	if (IS_ERR(thp->task)) {
-		pr_err("kthread %s, create task failed: 0x%lx\n",
-			thp->name, (unsigned long)IS_ERR(thp->task));
-		thp->task = NULL;
-		return -EFAULT;
-	}
-
-	kthread_bind(thp->task, thp->cpu);
-
-	pr_debug_thread("kthread 0x%p, %s, cpu %u, task 0x%p.\n",
-		thp, thp->name, thp->cpu, thp->task);
-
-	wake_up_process(thp->task);
-	return 0;
-}
-
-int qdma_kthread_stop(struct qdma_kthread *thp)
-{
-	int rv;
-
-	if (!thp->task) {
-		pr_debug_thread("kthread %s, already stopped.\n", thp->name);
-		return 0;
-	}
-
-	thp->schedule = 1;
-	rv = kthread_stop(thp->task);
-	if (rv < 0) {
-		pr_warn("kthread %s, stop err %d.\n", thp->name, rv);
-		return rv;
-	}
-
-	pr_debug_thread("kthread %s, 0x%p, stopped.\n", thp->name, thp->task);
-	thp->task = NULL;
-
-	return 0;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/thread.h b/QDMA/linux-kernel/driver/libqdma/thread.h
deleted file mode 100755
index 56346ce..0000000
--- a/QDMA/linux-kernel/driver/libqdma/thread.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XDMA_KTHREAD_H__
-#define __XDMA_KTHREAD_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma kernel threads
- *
- */
-#include <linux/version.h>
-#include <linux/spinlock.h>
-#include <linux/kthread.h>
-#include <linux/cpuset.h>
-#include <linux/signal.h>
-#include "qdma_compat.h"
-
-/**
- * @struct - qdma_kthread
- * @brief	qdma thread book keeping parameters
- */
-struct qdma_kthread {
-	/**  thread lock*/
-	spinlock_t lock;
-	/**  name of the thread */
-	char name[26];
-	/**  cpu number for which the thread associated with */
-	unsigned short cpu;
-	/**  thread id */
-	unsigned short id;
-	/**  thread sleep timeout value */
-	unsigned int kth_timeout;
-	/**  flags for thread */
-	unsigned long flag;
-	/**  thread wait queue */
-	qdma_wait_queue waitq;
-	/* flag to indicate scheduling of thread */
-	unsigned int schedule;
-	/**  kernel task structure associated with thread*/
-	struct task_struct *task;
-	/**  thread work list count */
-	unsigned int work_cnt;
-	/**  thread work list count */
-	struct list_head work_list;
-	/**  thread initialization handler */
-	int (*finit)(struct qdma_kthread *thp);
-	/**  thread pending handler */
-	int (*fpending)(struct list_head *work_item);
-	/**  thread peocessing handler */
-	int (*fproc)(struct list_head *work_item);
-	/**  thread done handler */
-	int (*fdone)(struct qdma_kthread *thp);
-};
-
-/*****************************************************************************/
-/**
- * qdma_kthread_dump() - handler to dump the thread information
- *
- * @param[in]	thp:		pointer to qdma_kthread
- * @param[in]	detail:		flag to indicate whether details required or not
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	length of the buffer
- *****************************************************************************/
-int qdma_kthread_dump(struct qdma_kthread *thp, char *buf, int buflen,
-			int detail);
-
-#ifdef DEBUG_THREADS
-#define lock_thread(thp)	\
-	do { \
-		pr_debug("locking thp %s ...\n", (thp)->name); \
-		spin_lock(&(thp)->lock); \
-	} while (0)
-
-#define unlock_thread(thp)	\
-	do { \
-		pr_debug("unlock thp %s ...\n", (thp)->name); \
-		spin_unlock(&(thp)->lock); \
-	} while (0)
-
-#define qdma_kthread_wakeup(thp)	\
-	do { \
-		pr_debug("signaling thp %s ...\n", (thp)->name); \
-		thp->schedule = 1; \
-		qdma_waitq_wakeup(&thp->waitq); \
-	} while (0)
-
-#define pr_debug_thread(fmt, ...) pr_debug(fmt, __VA_ARGS__)
-
-#else
-/** lock thread macro */
-#define lock_thread(thp)		spin_lock(&(thp)->lock)
-/** un lock thread macro */
-#define unlock_thread(thp)		spin_unlock(&(thp)->lock)
-/** macro to wake up the qdma k thread */
-#define qdma_kthread_wakeup(thp) \
-	do { \
-		thp->schedule = 1; \
-		qdma_waitq_wakeup(&thp->waitq); \
-	} while (0)
-/** pr_debug_thread */
-#define pr_debug_thread(fmt, ...)
-#endif
-
-/*****************************************************************************/
-/**
- * qdma_kthread_start() - handler to start the kernel thread
- *
- * @param[in]	thp:	pointer to qdma_kthread
- * @param[in]	name:	name for the thread
- * @param[in]	id:		thread id
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_kthread_start(struct qdma_kthread *thp, char *name, int id);
-
-/*****************************************************************************/
-/**
- * qdma_kthread_stop() - handler to stop the kernel thread
- *
- * @param[in]	thp:	pointer to qdma_kthread
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_kthread_stop(struct qdma_kthread *thp);
-
-#endif /* #ifndef __XDMA_KTHREAD_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/version.h b/QDMA/linux-kernel/driver/libqdma/version.h
deleted file mode 100755
index 5b6e332..0000000
--- a/QDMA/linux-kernel/driver/libqdma/version.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __LIBQDMA_VERSION_H__
-#define __LIBQDMA_VERSION_H__
-
-#define LIBQDMA_MODULE_NAME	"libqdma"
-#define LIBQDMA_MODULE_DESC	"Xilinx QDMA Library"
-
-#define LIBQDMA_VERSION_MAJOR	2023
-#define LIBQDMA_VERSION_MINOR	2
-#define LIBQDMA_VERSION_PATCH	0
-
-#define LIBQDMA_VERSION_STR	\
-	__stringify(LIBQDMA_VERSION_MAJOR) "." \
-	__stringify(LIBQDMA_VERSION_MINOR) "." \
-	__stringify(LIBQDMA_VERSION_PATCH)
-
-#define LIBQDMA_VERSION  \
-	((LIBQDMA_VERSION_MAJOR)*10000 + \
-	 (LIBQDMA_VERSION_MINOR)*1000 + \
-	  LIBQDMA_VERSION_PATCH)
-
-#endif /* ifndef __LIBQDMA_VERSION_H__ */
diff --git a/QDMA/linux-kernel/driver/libqdma/xdev.c b/QDMA/linux-kernel/driver/libqdma/xdev.c
deleted file mode 100755
index 19880a5..0000000
--- a/QDMA/linux-kernel/driver/libqdma/xdev.c
+++ /dev/null
@@ -1,1535 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-/**
- * @file
- * @brief This file contains the declarations for QDMA PCIe device
- *
- */
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/version.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <linux/errno.h>
-#include <linux/sched.h>
-#include <linux/vmalloc.h>
-#include <linux/delay.h>
-
-#include "qdma_regs.h"
-#include "xdev.h"
-#include "qdma_mbox.h"
-#include "qdma_intr.h"
-#include "qdma_resource_mgmt.h"
-#include "qdma_access_common.h"
-#ifdef DEBUGFS
-#include "qdma_debugfs_dev.h"
-#endif
-#ifdef __XRT__
-#include "qdma_access_errors.h"
-#endif
-
-#ifdef __LIST_NEXT_ENTRY__
-#define list_next_entry(pos, member) \
-	list_entry((pos)->member.next, typeof(*(pos)), member)
-#endif
-
-#ifndef __QDMA_VF__
-#ifndef QDMA_QBASE
-#define QDMA_QBASE 0
-#endif
-#ifndef QDMA_TOTAL_Q
-/**
- * CPM5 supports 4095 Qs & all other designs supports 2048 Qs.
- * Though the number here is given as 2K Qs,
- * actual qmax is extracted from dev cap.
- */
-#define QDMA_TOTAL_Q 2048
-#endif
-#endif
-
-/**
- * qdma device management
- * maintains a list of the qdma devices
- */
-static LIST_HEAD(xdev_list);
-
-/**
- * mutex defined for qdma device management
- */
-static DEFINE_MUTEX(xdev_mutex);
-
-#ifndef list_last_entry
-#define list_last_entry(ptr, type, member) \
-		list_entry((ptr)->prev, type, member)
-#endif
-
-struct qdma_resource_lock {
-	struct list_head node;
-	struct mutex lock;
-};
-
-/*****************************************************************************/
-/**
- * pci_dma_mask_set() - check the pci capability of the dma device
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- *
- *
- * @return	0: on success
- * @return	<0: on failure
- *****************************************************************************/
-static int pci_dma_mask_set(struct pci_dev *pdev)
-{
-	/** 64-bit addressing capability for XDMA? */
-
-	if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) {
-		/** use 64-bit DMA for descriptors */
-		dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
-		/** use 64-bit DMA, 32-bit for consistent */
-	} else if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) {
-		dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
-		/** use 32-bit DMA */
-		dev_info(&pdev->dev, "Using a 32-bit DMA mask.\n");
-	} else {
-		/** use 32-bit DMA */
-		dev_info(&pdev->dev, "No suitable DMA possible.\n");
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-#if KERNEL_VERSION(3, 5, 0) <= LINUX_VERSION_CODE
-static void pci_enable_relaxed_ordering(struct pci_dev *pdev)
-{
-	pcie_capability_set_word(pdev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN);
-}
-
-static void pci_disable_relaxed_ordering(struct pci_dev *pdev)
-{
-	pcie_capability_clear_word(pdev, PCI_EXP_DEVCTL,
-			PCI_EXP_DEVCTL_RELAX_EN);
-}
-
-static void pci_enable_extended_tag(struct pci_dev *pdev)
-{
-	pcie_capability_set_word(pdev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_EXT_TAG);
-}
-
-static void pci_disable_extended_tag(struct pci_dev *pdev)
-{
-	pcie_capability_clear_word(pdev, PCI_EXP_DEVCTL,
-			PCI_EXP_DEVCTL_EXT_TAG);
-}
-
-#else
-static void pci_enable_relaxed_ordering(struct pci_dev *pdev)
-{
-	u16 v;
-	int pos;
-
-	pos = pci_pcie_cap(pdev);
-	if (pos > 0) {
-		pci_read_config_word(pdev, pos + PCI_EXP_DEVCTL, &v);
-		v |= PCI_EXP_DEVCTL_RELAX_EN;
-		pci_write_config_word(pdev, pos + PCI_EXP_DEVCTL, v);
-	}
-}
-
-static void pci_disable_relaxed_ordering(struct pci_dev *pdev)
-{
-	u16 v;
-	int pos;
-
-	pos = pci_pcie_cap(pdev);
-	if (pos > 0) {
-		pci_read_config_word(pdev, pos + PCI_EXP_DEVCTL, &v);
-		v &= ~(PCI_EXP_DEVCTL_RELAX_EN);
-		pci_write_config_word(pdev, pos + PCI_EXP_DEVCTL, v);
-	}
-}
-
-static void pci_enable_extended_tag(struct pci_dev *pdev)
-{
-	u16 v;
-	int pos;
-
-	pos = pci_pcie_cap(pdev);
-	if (pos > 0) {
-		pci_read_config_word(pdev, pos + PCI_EXP_DEVCTL, &v);
-		v |= PCI_EXP_DEVCTL_EXT_TAG;
-		pci_write_config_word(pdev, pos + PCI_EXP_DEVCTL, v);
-	}
-}
-
-static void pci_disable_extended_tag(struct pci_dev *pdev)
-{
-	u16 v;
-	int pos;
-
-	pos = pci_pcie_cap(pdev);
-	if (pos > 0) {
-		pci_read_config_word(pdev, pos + PCI_EXP_DEVCTL, &v);
-		v &= ~(PCI_EXP_DEVCTL_EXT_TAG);
-		pci_write_config_word(pdev, pos + PCI_EXP_DEVCTL, v);
-	}
-}
-#endif
-
-
-#if defined(__QDMA_VF__)
-static void xdev_reset_work(struct work_struct *work)
-{
-	struct xlnx_dma_dev *xdev = container_of(work, struct xlnx_dma_dev,
-								reset_work);
-	struct pci_dev *pdev = xdev->conf.pdev;
-	int rv = 0;
-
-	if (xdev->reset_state == RESET_STATE_RECV_PF_RESET_REQ) {
-
-		qdma_device_offline(pdev, (unsigned long)xdev, XDEV_FLR_ACTIVE);
-		pci_disable_extended_tag(pdev);
-		pci_disable_relaxed_ordering(pdev);
-		pci_release_regions(pdev);
-		pci_disable_device(pdev);
-
-#ifndef __XRT__
-		rv = pci_request_regions(pdev, "qdma-vf");
-		if (rv) {
-			pr_err("cannot obtain PCI resources\n");
-			return;
-		}
-#endif
-
-		rv = pci_enable_device(pdev);
-		if (rv) {
-			pr_err("cannot enable PCI device\n");
-#ifndef __XRT__
-			pci_release_regions(pdev);
-#endif
-			return;
-		}
-
-		/* enable relaxed ordering */
-		pci_enable_relaxed_ordering(pdev);
-
-		/* enable extended tag */
-		pci_enable_extended_tag(pdev);
-
-		/* enable bus master capability */
-		pci_set_master(pdev);
-
-		pci_dma_mask_set(pdev);
-
-		pcie_set_readrq(pdev, 512);
-
-		qdma_device_online(pdev, (unsigned long)xdev, XDEV_FLR_ACTIVE);
-
-		if (xdev->reset_state == RESET_STATE_RECV_PF_RESET_DONE)
-			xdev->reset_state = RESET_STATE_IDLE;
-	}  else if (xdev->reset_state == RESET_STATE_RECV_PF_OFFLINE_REQ) {
-		qdma_device_offline(pdev, (unsigned long)xdev,
-							XDEV_FLR_INACTIVE);
-	}
-}
-#endif
-
-/*****************************************************************************/
-/**
- * xdev_list_first() - handler to return the first xdev entry from the list
- *
- * @return	pointer to first xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_list_first(void)
-{
-	struct xlnx_dma_dev *xdev;
-
-	mutex_lock(&xdev_mutex);
-	xdev = list_first_entry(&xdev_list, struct xlnx_dma_dev, list_head);
-	mutex_unlock(&xdev_mutex);
-
-	return xdev;
-}
-
-/*****************************************************************************/
-/**
- * xdev_list_next() - handler to return the next xdev entry from the list
- *
- * @param[in]	xdev:	pointer to current xdev
- *
- * @return	pointer to next xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_list_next(struct xlnx_dma_dev *xdev)
-{
-	struct xlnx_dma_dev *next;
-
-	mutex_lock(&xdev_mutex);
-	next = list_next_entry(xdev, list_head);
-	mutex_unlock(&xdev_mutex);
-
-	return next;
-}
-
-/*****************************************************************************/
-/**
- * xdev_list_dump() - list the dma device details
- *
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	pointer to next xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-int xdev_list_dump(char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev, *tmp;
-	int len = 0;
-
-	mutex_lock(&xdev_mutex);
-	list_for_each_entry_safe(xdev, tmp, &xdev_list, list_head) {
-		len += snprintf(buf + len, buflen - len,
-				"qdma%05x\t%02x:%02x.%02x\n",
-				xdev->conf.bdf, xdev->conf.pdev->bus->number,
-				PCI_SLOT(xdev->conf.pdev->devfn),
-				PCI_FUNC(xdev->conf.pdev->devfn));
-		if (len >= buflen)
-			break;
-	}
-	mutex_unlock(&xdev_mutex);
-
-	buf[len] = '\0';
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * xdev_list_add() - add a new node to the xdma device lsit
- *
- * @param[in]	xdev:	pointer to current xdev
- *
- * @return	none
- *****************************************************************************/
-static inline void xdev_list_add(struct xlnx_dma_dev *xdev)
-{
-	u32 bdf = 0;
-	struct xlnx_dma_dev *_xdev, *tmp;
-	u32 last_bus = 0;
-	u32 last_dev = 0;
-
-	mutex_lock(&xdev_mutex);
-	bdf = ((xdev->conf.pdev->bus->number << PCI_SHIFT_BUS) |
-			(PCI_SLOT(xdev->conf.pdev->devfn) << PCI_SHIFT_DEV) |
-			PCI_FUNC(xdev->conf.pdev->devfn));
-	xdev->conf.bdf = bdf;
-	list_add_tail(&xdev->list_head, &xdev_list);
-
-	/*
-	 * Iterate through the list of devices. Increment cfg_done, to
-	 * get the mulitplier for initial configuration of queues. A
-	 * '0' indicates queue is already configured. < 0, indicates
-	 * config done using sysfs entry
-	 */
-
-	list_for_each_entry_safe(_xdev, tmp, &xdev_list, list_head) {
-
-		/*are we dealing with a different card?*/
-#ifdef __QDMA_VF__
-		/** for VF check only bus number, as dev number can change
-		 * in a single card
-		 */
-		if (last_bus != _xdev->conf.pdev->bus->number)
-#else
-		if ((last_bus != _xdev->conf.pdev->bus->number) ||
-				(last_dev != PCI_SLOT(_xdev->conf.pdev->devfn)))
-#endif
-			xdev->conf.idx = 0;
-		xdev->conf.idx++;
-		last_bus = _xdev->conf.pdev->bus->number;
-		last_dev = PCI_SLOT(xdev->conf.pdev->devfn);
-	}
-	mutex_unlock(&xdev_mutex);
-}
-
-
-#undef list_last_entry
-/*****************************************************************************/
-/**
- * xdev_list_add() - remove a node from the xdma device lsit
- *
- * @param[in]	xdev:	pointer to current xdev
- *
- * @return	none
- *****************************************************************************/
-static inline void xdev_list_remove(struct xlnx_dma_dev *xdev)
-{
-	mutex_lock(&xdev_mutex);
-	list_del(&xdev->list_head);
-	mutex_unlock(&xdev_mutex);
-}
-
-/*****************************************************************************/
-/**
- * xdev_find_by_pdev() - find the xdev using struct pci_dev
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- *
- * @return	pointer to xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_find_by_pdev(struct pci_dev *pdev)
-{
-	struct xlnx_dma_dev *xdev, *tmp;
-
-	mutex_lock(&xdev_mutex);
-	list_for_each_entry_safe(xdev, tmp, &xdev_list, list_head) {
-		if (xdev->conf.pdev == pdev) {
-			mutex_unlock(&xdev_mutex);
-			return xdev;
-		}
-	}
-	mutex_unlock(&xdev_mutex);
-	return NULL;
-}
-
-/*****************************************************************************/
-/**
- * xdev_find_by_idx() - find the xdev using the index value
- *
- * @param[in]	idx:	index value in the xdev list
- *
- * @return	pointer to xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_find_by_idx(int idx)
-{
-	struct xlnx_dma_dev *xdev, *tmp;
-
-	mutex_lock(&xdev_mutex);
-	list_for_each_entry_safe(xdev, tmp, &xdev_list, list_head) {
-		if (xdev->conf.bdf == idx) {
-			mutex_unlock(&xdev_mutex);
-			return xdev;
-		}
-	}
-	mutex_unlock(&xdev_mutex);
-	return NULL;
-}
-
-/*****************************************************************************/
-/**
- * xdev_check_hndl() - helper function to validate the device handle
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	hndl:	device handle
- *
- * @return	0: success
- * @return	<0: on failure
- *****************************************************************************/
-int xdev_check_hndl(const char *fname, struct pci_dev *pdev, unsigned long hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)hndl;
-
-	if (!pdev)
-		return -EINVAL;
-
-	if (xdev->magic != QDMA_MAGIC_DEVICE) {
-		pr_err("%s xdev->magic %ld  != %ld\n",
-			fname, xdev->magic, QDMA_MAGIC_DEVICE);
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("pci_dev(0x%lx) != pdev(0x%lx)\n",
-				(unsigned long)xdev->conf.pdev,
-				(unsigned long)pdev);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-/**********************************************************************
- * PCI-level Functions
- **********************************************************************/
-
-/*****************************************************************************/
-/**
- * xdev_unmap_bars() - Unmap the BAR regions that had been mapped
- *						earlier using map_bars()
- *
- * @param[in]	xdev:	pointer to current xdev
- * @param[in]	pdev:	pointer to struct pci_dev
- *
- * @return	none
- *****************************************************************************/
-static void xdev_unmap_bars(struct xlnx_dma_dev *xdev, struct pci_dev *pdev)
-{
-	if (xdev->regs) {
-		/* unmap BAR */
-		pci_iounmap(pdev, xdev->regs);
-		/* mark as unmapped */
-		xdev->regs = NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * xdev_map_bars() - map device regions into kernel virtual address space
- *						earlier using map_bars()
- *
- * @param[in]	xdev:	pointer to current xdev
- * @param[in]	pdev:	pointer to struct pci_dev
- *
- * Map the device memory regions into kernel virtual address space after
- * verifying their sizes respect the minimum sizes needed
- *
- * @return	length of the bar on success
- * @return	0 on failure
- *****************************************************************************/
-static int xdev_map_bars(struct xlnx_dma_dev *xdev, struct pci_dev *pdev)
-{
-	int map_len;
-
-	map_len = pci_resource_len(pdev, (int)xdev->conf.bar_num_config);
-	if (map_len > QDMA_MAX_BAR_LEN_MAPPED)
-		map_len = QDMA_MAX_BAR_LEN_MAPPED;
-
-	xdev->regs = pci_iomap(pdev, xdev->conf.bar_num_config, map_len);
-	if (!xdev->regs ||
-		map_len < QDMA_MIN_BAR_LEN_MAPPED) {
-		pr_err("%s unable to map config bar %d.\n", xdev->conf.name,
-				xdev->conf.bar_num_config);
-		return -EINVAL;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * xdev_identify_bars() - identifies the AXI Master Lite bar
- *			and AXI Bridge Master bar
- *
- * @param[in]	xdev:	pointer to current xdev
- * @param[in]	pdev:	pointer to struct pci_dev\
- *
- * @return	0 on success, -ve on failure
- *****************************************************************************/
-static int xdev_identify_bars(struct xlnx_dma_dev *xdev, struct pci_dev *pdev)
-{
-	int bar_idx = 0;
-	int rv = 0;
-	u8 num_bars_present = 0;
-	int bar_id_list[QDMA_BAR_NUM];
-	int bar_id_idx = 0;
-
-	/* Find out the number of bars present in the design */
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		int map_len = 0;
-
-		map_len = pci_resource_len(pdev, bar_idx);
-		if (!map_len)
-			continue;
-
-		bar_id_list[bar_id_idx] = bar_idx;
-		bar_id_idx++;
-		num_bars_present++;
-	}
-
-	if (num_bars_present > 1) {
-
-		/* AXI Master Lite BAR IDENTIFICATION */
-		if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-				(xdev->version_info.device_type ==
-				 QDMA_DEVICE_VERSAL_CPM4))
-			xdev->conf.bar_num_user = DEFAULT_USER_BAR;
-		else {
-#ifndef __QDMA_VF__
-			rv = xdev->hw.qdma_get_user_bar(xdev, 0,
-					xdev->func_id,
-					(uint8_t *)&xdev->conf.bar_num_user);
-#else
-			rv = xdev->hw.qdma_get_user_bar(xdev, 1,
-					xdev->func_id_parent,
-					(uint8_t *)&xdev->conf.bar_num_user);
-#endif
-		}
-
-		if (rv < 0) {
-			pr_err("get AXI Master Lite bar failed with error = %d",
-					rv);
-#ifdef __XRT__
-			/** This change is for XRT application,
-			 * when there is no user BAR in desin
-			 */
-			rv = QDMA_ERR_HWACC_BAR_NOT_FOUND;
-#else
-			return xdev->hw.qdma_get_error_code(rv);
-#endif
-		}
-
-		pr_info("AXI Master Lite BAR %d.\n",
-				xdev->conf.bar_num_user);
-
-		/* AXI Bridge Master BAR IDENTIFICATION */
-		if (num_bars_present > 2) {
-			for (bar_idx = 0; bar_idx < num_bars_present;
-								bar_idx++) {
-				if ((bar_id_list[bar_idx] !=
-						xdev->conf.bar_num_user) &&
-						(bar_id_list[bar_idx] !=
-						xdev->conf.bar_num_config)) {
-					xdev->conf.bar_num_bypass =
-						bar_id_list[bar_idx];
-					pr_info("AXI Bridge Master BAR %d.\n",
-						xdev->conf.bar_num_bypass);
-					break;
-				}
-			}
-		}
-	}
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * xdev_alloc() - allocate the dma device
- *
- * @param[in]	conf:	qdma device configuration
- *
- *
- * @return	pointer to dma device
- * @return	NULL on failure
- *****************************************************************************/
-static struct xlnx_dma_dev *xdev_alloc(struct qdma_dev_conf *conf)
-{
-	struct xlnx_dma_dev *xdev;
-
-	/* allocate zeroed device book keeping structure */
-	xdev = kzalloc(sizeof(struct xlnx_dma_dev), GFP_KERNEL);
-	if (!xdev)
-		return NULL;
-
-	spin_lock_init(&xdev->hw_prg_lock);
-	spin_lock_init(&xdev->lock);
-
-	/* create a driver to device reference */
-	memcpy(&xdev->conf, conf, sizeof(*conf));
-
-	xdev->magic = QDMA_MAGIC_DEVICE;
-
-	/* !! FIXME default to enabled for everything */
-	xdev->dev_cap.flr_present = 1;
-	xdev->dev_cap.st_en = 1;
-	xdev->dev_cap.mm_en = 1;
-	xdev->dev_cap.mm_channel_max = 1;
-
-	return xdev;
-}
-
-#ifndef __QDMA_VF__
-static void qdma_err_mon(struct work_struct *work)
-{
-	struct delayed_work *dwork = container_of(work,
-						struct delayed_work, work);
-	struct xlnx_dma_dev *xdev = container_of(dwork,
-					struct xlnx_dma_dev, err_mon);
-
-	if (!xdev) {
-		pr_err("Invalid xdev");
-		return;
-	}
-	spin_lock(&xdev->err_lock);
-
-	if (xdev->err_mon_cancel == 0) {
-		xdev->hw.qdma_hw_error_process(xdev);
-		schedule_delayed_work(dwork, msecs_to_jiffies(1000));/* 1 sec */
-	}
-	spin_unlock(&xdev->err_lock);
-}
-#endif
-
-
-
-/*****************************************************************************/
-/**
- * qdma_device_offline() - set the dma device in offline mode
- *
- * @param[in]	pdev:		pointer to struct pci_dev
- * @param[in]	dev_hndl:	device handle
- * @param[in]	reset:		0/1 function level reset active or not
- *
- * @return	0: on success
- * @return	<0: on failure
- *****************************************************************************/
-int qdma_device_offline(struct pci_dev *pdev, unsigned long dev_hndl,
-						 int reset)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("Invalid pdev passed: pci_dev(0x%lx) != pdev(0x%lx)\n",
-			(unsigned long)xdev->conf.pdev, (unsigned long)pdev);
-		return -EINVAL;
-	}
-
-	if (xlnx_dma_device_flag_check(xdev, XDEV_FLAG_OFFLINE)) {
-#ifdef __QDMA_VF__
-		if (xdev->workq != NULL) {
-			pr_debug("destroy workq\n");
-			destroy_workqueue(xdev->workq);
-			xdev->workq = NULL;
-		}
-#endif
-		return 0;
-	}
-
-#ifdef __QDMA_VF__
-	if (xdev->reset_state == RESET_STATE_PF_OFFLINE_REQ_PROCESSING) {
-		int retry_cnt = 10;
-
-		while (!xlnx_dma_device_flag_check(xdev, XDEV_FLAG_OFFLINE)) {
-			mdelay(100);
-			if (retry_cnt == 0)
-				break;
-			retry_cnt--;
-		}
-		if (xdev->workq != NULL) {
-			destroy_workqueue(xdev->workq);
-			xdev->workq = NULL;
-		}
-		return 0;
-	}
-#endif
-	/* Canceling the error poll thread which was started
-	 * in the poll mode
-	 */
-#ifndef __QDMA_VF__
-	if ((xdev->conf.master_pf) &&
-		(xdev->conf.qdma_drv_mode == POLL_MODE)) {
-		pr_debug("Cancelling delayed work");
-		spin_lock(&xdev->err_lock);
-		xdev->err_mon_cancel = 1;
-		cancel_delayed_work_sync(&xdev->err_mon);
-		spin_unlock(&xdev->err_lock);
-	}
-#endif
-
-	qdma_device_cleanup(xdev);
-	qdma_device_interrupt_cleanup(xdev);
-	qdma_mbox_stop(xdev);
-	intr_teardown(xdev);
-	xdev->flags &= ~(XDEV_FLAG_IRQ);
-
-	/*
-	 * When the FLR is done to parent PF , it's associated VFs
-	 * and it's resources are no more active. The
-	 * interrupt state of the VF goes bad. That's why switching
-	 * from mbox's interrupt mode to poll mode
-	 */
-	qdma_mbox_poll_start(xdev);
-#ifdef __QDMA_VF__
-	if (reset) {
-		if (xdev->reset_state == RESET_STATE_RECV_PF_RESET_REQ) {
-
-			xdev_sriov_vf_reset_offline(xdev);
-
-			/** Wait for the PF to send the PF Reset Done*/
-			qdma_waitq_wait_event_timeout(xdev->wq,
-				(xdev->reset_state ==
-				 RESET_STATE_RECV_PF_RESET_DONE),
-				10 * QDMA_MBOX_MSG_TIMEOUT_MS);
-
-			if (xdev->reset_state != RESET_STATE_RECV_PF_RESET_DONE)
-				xdev->reset_state = RESET_STATE_INVALID;
-		} else
-			xdev_sriov_vf_offline(xdev, 0);
-
-	} else {
-		if (xdev->reset_state == RESET_STATE_RECV_PF_OFFLINE_REQ) {
-			xdev_sriov_vf_offline(xdev, 0);
-			xdev->reset_state =
-				RESET_STATE_PF_OFFLINE_REQ_PROCESSING;
-		} else {
-			xdev_sriov_vf_offline(xdev, 0);
-			destroy_workqueue(xdev->workq);
-			xdev->workq = NULL;
-		}
-	}
-	qdma_mbox_stop(xdev);
-#elif defined(CONFIG_PCI_IOV)
-	if (!reset) {
-		qdma_pf_trigger_vf_offline((unsigned long)xdev);
-		xdev_sriov_disable(xdev);
-	} else if (xdev->vf_count_online != 0) {
-		qdma_pf_trigger_vf_reset((unsigned long)xdev);
-		qdma_mbox_stop(xdev);
-	}
-
-#endif
-
-	if (reset) {
-		/* Free the allocated resources if FLR process running*/
-		if (xdev->conf.fp_flr_free_resource)
-			xdev->conf.fp_flr_free_resource((unsigned long)xdev);
-	}
-
-	if (xdev->conf.qdma_drv_mode != POLL_MODE)
-		xdev->mbox.rx_poll = 0;
-
-	xdev_flag_set(xdev, XDEV_FLAG_OFFLINE);
-	if (xdev->dev_cap.mailbox_en)
-		qdma_mbox_cleanup(xdev);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_online() - set the dma device in online mode
- *
- * @param[in]	pdev:		pointer to struct pci_dev
- * @param[in]	dev_hndl:	device handle
- * @param[in]	reset:		0/1 function level reset active or not
- *
- * @return	0: on success
- * @return	<0: on failure
- *****************************************************************************/
-int qdma_device_online(struct pci_dev *pdev, unsigned long dev_hndl, int reset)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-	int rv;
-#if !defined(__QDMA_VF__)
-	struct qdma_vf_info *vf;
-#endif
-	if (!xdev) {
-		pr_err("Invalid device handle received");
-		return -EINVAL;
-	}
-
-
-	if (xdev_check_hndl(__func__, pdev, dev_hndl) < 0) {
-		pr_err("Invalid device");
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("pci_dev(0x%lx) != pdev(0x%lx)\n",
-			(unsigned long)xdev->conf.pdev, (unsigned long)pdev);
-	}
-
-#if defined(__QDMA_VF__)
-	pr_info("reset_state = %d", xdev->reset_state);
-	if (reset && xdev->reset_state == RESET_STATE_INVALID) {
-		pr_info("returning");
-		return -EINVAL;
-	}
-#endif
-
-	if (xdev->conf.qdma_drv_mode != POLL_MODE &&
-			xdev->conf.qdma_drv_mode != LEGACY_INTR_MODE) {
-
-		if ((xdev->flags & XDEV_FLAG_IRQ) == 0x0) {
-			rv = intr_setup(xdev);
-			if (rv) {
-				pr_err("Failed to setup interrupts, err %d",
-					rv);
-				return -EINVAL;
-			}
-		}
-		xdev->flags |= XDEV_FLAG_IRQ;
-	}
-
-#ifndef __QDMA_VF__
-	if (xdev->dev_cap.mailbox_en)
-		qdma_mbox_init(xdev);
-#else
-	qdma_mbox_init(xdev);
-	if (!reset) {
-		qdma_waitq_init(&xdev->wq);
-		INIT_WORK(&xdev->reset_work, xdev_reset_work);
-		xdev->workq = create_singlethread_workqueue("Reset Work Queue");
-	}
-#endif
-	rv = qdma_device_init(xdev);
-	if (rv < 0) {
-		pr_warn("qdma_init failed %d.\n", rv);
-		return rv;
-	}
-	xdev_flag_clear(xdev, XDEV_FLAG_OFFLINE);
-#ifdef __QDMA_VF__
-	qdma_mbox_start(xdev);
-	/* PF mbox will start when vf > 0 */
-	rv = xdev_sriov_vf_online(xdev, 0);
-	if (rv < 0)
-		return rv;
-#endif
-	rv = qdma_device_interrupt_setup(xdev);
-	if (rv < 0) {
-		pr_err("Failed to setup device interrupts");
-		return rv;
-	}
-
-	/* Starting a error poll thread in Poll mode */
-#ifndef __QDMA_VF__
-	if ((xdev->conf.master_pf) &&
-			(xdev->conf.qdma_drv_mode == POLL_MODE)) {
-
-		rv = xdev->hw.qdma_hw_error_enable(xdev,
-				xdev->hw.qdma_max_errors);
-		if (rv < 0) {
-			pr_err("Failed to enable error interrupts");
-			return -EINVAL;
-		}
-
-		spin_lock_init(&xdev->err_lock);
-		xdev->err_mon_cancel = 0;
-		INIT_DELAYED_WORK(&xdev->err_mon, qdma_err_mon);
-		schedule_delayed_work(&xdev->err_mon,
-					  msecs_to_jiffies(1000));
-	}
-
-	/**
-	 * Send the RESET_DONE message to VF
-	 */
-	if (reset && xdev->vf_count != 0) {
-		int i = 0;
-
-		vf = (struct qdma_vf_info *)xdev->vf_info;
-
-		if (!vf) {
-			pr_err("Invalid vf handle received");
-			return -EINVAL;
-		}
-
-		qdma_mbox_start(xdev);
-		for (i = 0; i < xdev->vf_count; i++) {
-			struct mbox_msg *m = NULL;
-			u8 vf_count_online = xdev->vf_count_online;
-
-			m = qdma_mbox_msg_alloc();
-			if (!m) {
-				pr_err("Failed to allocate mbox msg\n");
-				return -ENOMEM;
-			}
-			qdma_mbox_compose_pf_reset_done_message(m->raw,
-						xdev->func_id, vf[i].func_id);
-			qdma_mbox_msg_send(xdev, m, 1,
-						QDMA_MBOX_MSG_TIMEOUT_MS);
-
-			qdma_waitq_wait_event_timeout(xdev->wq,
-				(xdev->vf_count_online ==
-				(vf_count_online + 1)),
-				QDMA_MBOX_MSG_TIMEOUT_MS);
-		}
-	}
-
-#endif
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_open() - open the dma device
- *
- * @param[in]	mod_name:	name of the dma device
- * @param[in]	conf:		device configuration
- * @param[in]	dev_hndl:	device handle
- *
- *
- * @return	0: on success
- * @return	<0: on failure
- *****************************************************************************/
-int qdma_device_open(const char *mod_name, struct qdma_dev_conf *conf,
-			unsigned long *dev_hndl)
-{
-	struct pci_dev *pdev = NULL;
-	struct xlnx_dma_dev *xdev = NULL;
-	int rv = 0;
-#ifndef __QDMA_VF__
-	int qbase = QDMA_QBASE;
-	int qmax = QDMA_TOTAL_Q;
-#endif
-
-	*dev_hndl = 0UL;
-
-	if (!mod_name) {
-		pr_err("%s: mod_name is NULL.\n", __func__);
-		return -EINVAL;
-	}
-
-	if (!conf) {
-		pr_err("%s: queue_conf is NULL.\n", mod_name);
-		return -EINVAL;
-	}
-
-	if (conf->qdma_drv_mode > LEGACY_INTR_MODE) {
-		pr_err("%s: driver mode passed in Invalid.\n", mod_name);
-		return -EINVAL;
-	}
-
-	pdev = conf->pdev;
-
-	if (!pdev) {
-		pr_err("%s: pci device NULL.\n", mod_name);
-		return -EINVAL;
-	}
-	pr_info("%s, %02x:%02x.%02x, pdev 0x%p, 0x%x:0x%x.\n",
-		mod_name, pdev->bus->number, PCI_SLOT(pdev->devfn),
-		PCI_FUNC(pdev->devfn), pdev, pdev->vendor, pdev->device);
-
-	xdev = xdev_find_by_pdev(pdev);
-	if (xdev) {
-		pr_warn("%s, device %s already attached!\n",
-			mod_name, dev_name(&pdev->dev));
-		return -EINVAL;
-	}
-
-#ifndef __XRT__
-	rv = pci_request_regions(pdev, mod_name);
-	if (rv) {
-		/* Just info, some other driver may have claimed the device. */
-		dev_info(&pdev->dev, "cannot obtain PCI resources\n");
-		return rv;
-	}
-#endif
-
-	rv = pci_enable_device(pdev);
-	if (rv) {
-		dev_err(&pdev->dev, "cannot enable PCI device\n");
-		goto release_regions;
-	}
-
-	/* enable relaxed ordering */
-	pci_enable_relaxed_ordering(pdev);
-
-	/* enable extended tag */
-	pci_enable_extended_tag(pdev);
-
-	/* enable bus master capability */
-	pci_set_master(pdev);
-
-	rv = pci_dma_mask_set(pdev);
-	if (rv) {
-		pr_err("Failed to set the dma mask");
-		goto disable_device;
-	}
-
-	if (pcie_get_readrq(pdev) < 512)
-		pcie_set_readrq(pdev, 512);
-
-	/* allocate zeroed device book keeping structure */
-	xdev = xdev_alloc(conf);
-	if (!xdev) {
-		pr_err("Failed to allocate xdev");
-		goto disable_device;
-	}
-
-	strncpy(xdev->mod_name, mod_name, QDMA_DEV_NAME_MAXLEN - 1);
-
-	xdev_flag_set(xdev, XDEV_FLAG_OFFLINE);
-	xdev_list_add(xdev);
-
-	rv = snprintf(xdev->conf.name, QDMA_DEV_NAME_MAXLEN,
-		"qdma%05x-p%s",
-		xdev->conf.bdf, dev_name(&xdev->conf.pdev->dev));
-	xdev->conf.name[rv] = '\0';
-
-	/* Mapping bars */
-	rv = xdev_map_bars(xdev, pdev);
-	if (rv) {
-		pr_err("Failed to map the bars");
-		goto unmap_bars;
-	}
-
-	/* Get HW access */
-#ifndef __QDMA_VF__
-	rv = qdma_hw_access_init(xdev, 0, &xdev->hw);
-	if (rv != QDMA_SUCCESS) {
-		rv = -EINVAL;
-		goto unmap_bars;
-	}
-
-	rv = xdev->hw.qdma_get_version(xdev, 0, &xdev->version_info);
-	if (rv != QDMA_SUCCESS) {
-		rv = xdev->hw.qdma_get_error_code(rv);
-		pr_err("Failed to get the HW Version");
-		goto unmap_bars;
-	}
-
-	/* get the device attributes */
-	qdma_device_attributes_get(xdev);
-	qmax = xdev->dev_cap.num_qs;
-	if (pdev->bus->parent)
-		rv = qdma_master_resource_create(pdev->bus->number,
-				pci_bus_max_busnr(pdev->bus->parent), qbase,
-				qmax, &xdev->dma_device_index);
-	else
-		rv = qdma_master_resource_create(pdev->bus->number,
-				pdev->bus->number, qbase,
-				qmax, &xdev->dma_device_index);
-
-	if (rv == -QDMA_ERR_NO_MEM) {
-		pr_err("master_resource_create failed, err = %d", rv);
-		rv = -ENOMEM;
-		goto unmap_bars;
-	}
-#else
-	rv = qdma_hw_access_init(xdev, 1, &xdev->hw);
-	if (rv != QDMA_SUCCESS)
-		goto unmap_bars;
-	rv = xdev->hw.qdma_get_version(xdev, 1, &xdev->version_info);
-	if (rv != QDMA_SUCCESS)
-		goto unmap_bars;
-#endif
-
-	pr_info("Vivado version = %s\n",
-			xdev->version_info.qdma_vivado_release_id_str);
-
-#ifndef __QDMA_VF__
-	rv = xdev->hw.qdma_get_function_number(xdev, &xdev->func_id);
-	if (rv < 0) {
-		pr_err("get function number failed, err = %d", rv);
-		rv = -EINVAL;
-		goto unmap_bars;
-	}
-
-	rv = qdma_dev_qinfo_get(xdev->dma_device_index, xdev->func_id,
-				&xdev->conf.qsets_base,
-				&xdev->conf.qsets_max);
-	if (rv < 0) {
-		rv = qdma_dev_entry_create(xdev->dma_device_index,
-				xdev->func_id);
-		if (rv < 0) {
-			pr_err("Failed to create device entry, err = %d", rv);
-			rv = -ENODEV;
-			goto unmap_bars;
-		}
-	}
-
-	rv = qdma_dev_update(xdev->dma_device_index, xdev->func_id,
-			     xdev->conf.qsets_max, &xdev->conf.qsets_base);
-	if (rv < 0) {
-		pr_err("qdma_dev_update function call failed, err = %d\n", rv);
-		rv = xdev->hw.qdma_get_error_code(rv);
-		goto unmap_bars;
-	}
-
-	if (!xdev->dev_cap.mm_en && !xdev->dev_cap.st_en) {
-		pr_err("None of the modes ( ST or MM) are enabled\n");
-		rv = -EINVAL;
-		goto unmap_bars;
-	}
-#endif
-
-#ifdef __QDMA_VF__
-	if ((conf->qdma_drv_mode != POLL_MODE) &&
-		(xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-		(xdev->version_info.device_type == QDMA_DEVICE_VERSAL_CPM4)) {
-		pr_warn("VF is not supported in %s mode\n",
-				mode_name_list[conf->qdma_drv_mode].name);
-		pr_info("Switching VF to poll mode\n");
-		xdev->conf.qdma_drv_mode = POLL_MODE;
-	}
-#endif
-
-	if ((conf->qdma_drv_mode == LEGACY_INTR_MODE) &&
-			(!xdev->dev_cap.legacy_intr)) {
-		dev_err(&pdev->dev, "Legacy mode interrupts are not supported\n");
-		goto unmap_bars;
-	}
-
-	rv = qdma_device_online(pdev, (unsigned long)xdev, XDEV_FLR_INACTIVE);
-	if (rv < 0) {
-		pr_warn("Failed to set the dma device  online, err = %d", rv);
-		goto cleanup_qdma;
-	}
-
-	rv = xdev_identify_bars(xdev, pdev);
-	if (rv < 0) {
-		pr_err("Failed to identify bars, err %d", rv);
-		goto unmap_bars;
-	}
-
-	memcpy(conf, &xdev->conf, sizeof(*conf));
-
-	pr_info("%s, %05x, pdev 0x%p, xdev 0x%p, ch %u, q %u, vf %u.\n",
-		dev_name(&pdev->dev), xdev->conf.bdf, pdev, xdev,
-		xdev->dev_cap.mm_channel_max, conf->qsets_max, conf->vf_max);
-
-#ifdef DEBUGFS
-	/** time to clean debugfs */
-	dbgfs_dev_init(xdev);
-#endif
-
-	*dev_hndl = (unsigned long)xdev;
-
-	return rv;
-
-cleanup_qdma:
-	qdma_device_offline(pdev, (unsigned long)xdev, XDEV_FLR_INACTIVE);
-
-unmap_bars:
-	xdev_unmap_bars(xdev, pdev);
-	xdev_list_remove(xdev);
-	kfree(xdev);
-
-disable_device:
-	pci_disable_extended_tag(pdev);
-	pci_disable_relaxed_ordering(pdev);
-	pci_disable_device(pdev);
-
-release_regions:
-#ifndef __XRT__
-	pci_release_regions(pdev);
-#endif
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_close() - close the dma device
- *
- * @param[in]	pdev:		pointer to struct pci_dev
- * @param[in]	dev_hndl:	device handle
- *
- * @return	0: on success
- * @return	<0: on failure
- *****************************************************************************/
-int qdma_device_close(struct pci_dev *pdev, unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	if (!dev_hndl) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	if (xdev->conf.pdev != pdev) {
-		pr_err("Invalid pdev passed: pci_dev(0x%lx) != pdev(0x%lx)\n",
-			(unsigned long)xdev->conf.pdev, (unsigned long)pdev);
-		return -EINVAL;
-	}
-
-	qdma_device_offline(pdev, dev_hndl, XDEV_FLR_INACTIVE);
-
-#ifdef DEBUGFS
-	/** time to clean debugfs */
-	dbgfs_dev_exit(xdev);
-#endif
-#ifndef __QDMA_VF__
-	qdma_dev_entry_destroy(xdev->dma_device_index, xdev->func_id);
-	qdma_master_resource_destroy(xdev->dma_device_index);
-#endif
-
-	xdev_unmap_bars(xdev, pdev);
-
-	pci_disable_relaxed_ordering(pdev);
-	pci_disable_extended_tag(pdev);
-#ifndef __XRT__
-	pci_release_regions(pdev);
-#endif
-	pci_disable_device(pdev);
-
-	xdev_list_remove(xdev);
-
-	kfree(xdev);
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_device_get_config() - get the device configuration
- *
- * @param[in]	dev_hndl:	device handle
- * @param[out]	conf:		dma device configuration
- * @param[out]	buf, buflen:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- *
- * @return	none
- *****************************************************************************/
-int qdma_device_get_config(unsigned long dev_hndl, struct qdma_dev_conf *conf,
-					char *buf, int buflen)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		if (buf && buflen)
-			snprintf(buf, buflen, "dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		if (buf && buflen)
-			snprintf(buf, buflen, "Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	memcpy(conf, &xdev->conf, sizeof(*conf));
-
-	if (buf && buflen)
-		snprintf(buf, buflen,
-			"Device %s configuration is stored in conf param",
-			xdev->conf.name);
-
-	return 0;
-}
-
-int qdma_device_clear_stats(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	xdev->total_mm_h2c_pkts = 0;
-	xdev->total_mm_c2h_pkts = 0;
-	xdev->total_st_h2c_pkts = 0;
-	xdev->total_st_c2h_pkts = 0;
-	xdev->ping_pong_lat_max = 0;
-	xdev->ping_pong_lat_min = 0;
-	xdev->ping_pong_lat_total = 0;
-
-	return 0;
-}
-
-int qdma_device_get_mmh2c_pkts(unsigned long dev_hndl,
-				unsigned long long *mmh2c_pkts)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*mmh2c_pkts = xdev->total_mm_h2c_pkts;
-
-	return 0;
-}
-
-int qdma_device_get_mmc2h_pkts(unsigned long dev_hndl,
-				unsigned long long *mmc2h_pkts)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*mmc2h_pkts = xdev->total_mm_c2h_pkts;
-
-	return 0;
-}
-
-int qdma_device_get_sth2c_pkts(unsigned long dev_hndl,
-				unsigned long long *sth2c_pkts)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*sth2c_pkts = xdev->total_st_h2c_pkts;
-
-	return 0;
-}
-
-int qdma_device_get_stc2h_pkts(unsigned long dev_hndl,
-				unsigned long long *stc2h_pkts)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*stc2h_pkts = xdev->total_st_c2h_pkts;
-
-	return 0;
-}
-
-int qdma_device_get_ping_pong_min_lat(unsigned long dev_hndl,
-				unsigned long long *min_lat)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!min_lat) {
-		pr_err("Min Lat is NULL\n");
-		return -EINVAL;
-	}
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*min_lat = xdev->ping_pong_lat_min;
-
-	return 0;
-}
-
-int qdma_device_get_ping_pong_max_lat(unsigned long dev_hndl,
-				unsigned long long *max_lat)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!max_lat) {
-		pr_err("Max Lat is NULL\n");
-		return -EINVAL;
-	}
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*max_lat = xdev->ping_pong_lat_max;
-
-	return 0;
-}
-
-int qdma_device_get_ping_pong_tot_lat(unsigned long dev_hndl,
-				unsigned long long *lat_total)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *) dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!lat_total) {
-		pr_err("Total Lat is NULL\n");
-		return -EINVAL;
-	}
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0) {
-		pr_err("Invalid dev_hndl passed");
-		return -EINVAL;
-	}
-
-	*lat_total = xdev->ping_pong_lat_total;
-
-	return 0;
-}
-/*****************************************************************************/
-/**
- * qdma_device_set_config() - set the device configuration
- *
- * @param[in]	dev_hndl:	device handle
- * @param[in]	conf:		dma device configuration to set
- *
- * @return	0 on success ,<0 on failure
- *****************************************************************************/
-int qdma_device_set_config(unsigned long dev_hndl, struct qdma_dev_conf *conf)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)dev_hndl;
-
-	/** make sure that the dev_hndl passed is Valid */
-	if (!xdev) {
-		pr_err("dev_hndl is NULL");
-		return -EINVAL;
-	}
-
-	if (!conf) {
-		pr_err("conf is NULL");
-		return -EINVAL;
-	}
-
-	if (xdev_check_hndl(__func__, xdev->conf.pdev, dev_hndl) < 0)
-		return -EINVAL;
-
-	memcpy(&xdev->conf, conf, sizeof(*conf));
-
-	return 0;
-}
-
diff --git a/QDMA/linux-kernel/driver/libqdma/xdev.h b/QDMA/linux-kernel/driver/libqdma/xdev.h
deleted file mode 100755
index d79eb2b..0000000
--- a/QDMA/linux-kernel/driver/libqdma/xdev.h
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XDEV_H__
-#define __XDEV_H__
-/**
- * @file
- * @brief This file contains the declarations for QDMA PCIe device
- *
- */
-#include <linux/types.h>
-#include <linux/dma-mapping.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-
-#include "libqdma_export.h"
-#include "qdma_mbox.h"
-#include "qdma_access_errors.h"
-#ifdef DEBUGFS
-#include "qdma_debugfs.h"
-
-extern struct dentry *qdma_debugfs_root;
-#endif
-
-#define DEFAULT_USER_BAR			2
-
-/**
- * QDMA bars
- */
-#define QDMA_BAR_NUM			6
-/**
- * QDMA config bar size - 64MB
- */
-#define QDMA_MAX_BAR_LEN_MAPPED		0x4000000
-/**
- * Min QDMA config bar size - 16K
- */
-#define QDMA_MIN_BAR_LEN_MAPPED		0x4000
-
-/*
- *module_param_array:
- *config_bar=<bus_num(16bits)><pf0_config_bar(4bits)><pf1_config_bar(4bits)>
- *		<pf2_config_bar(4bits)><pf3_config_bar(4bits)>
- *config_bar=<bus_num(16bits)><vf_pf0_config_bar(4bits)>
- *		<vf_pf1_config_bar(4bits)><vf_pf2_config_bar(4bits)>
- *		<vf_pf3_config_bar(4bits)>
- *
- */
-#define BUS_NUM_MASK			0xFFFF0000
-#define BUS_NUM_SHIFT			16
-
-#define PF_DEV_0_MASK			0x0000F000
-#define PF_DEV_0_SHIFT			12
-#define PF_DEV_1_MASK			0x00000F00
-#define PF_DEV_1_SHIFT			8
-#define PF_DEV_2_MASK			0x000000F0
-#define PF_DEV_2_SHIFT			4
-#define PF_DEV_3_MASK			0x0000000F
-#define PF_DEV_3_SHIFT			0
-
-#define VF_PF_IDENTIFIER_MASK	0xF
-#define VF_PF_IDENTIFIER_SHIFT  8
-
-#define QDMA_MAGIC_DEVICE		0xEEEEEEEEUL
-
-enum qdma_pf_devices {
-	PF_DEVICE_0 = 0,
-	PF_DEVICE_1,
-	PF_DEVICE_2,
-	PF_DEVICE_3
-};
-
-/**
- * number of bits to describe the DMA transfer descriptor
- */
-#define QDMA_DESC_BLEN_BITS	28
-/**
- * maximum size of a single DMA transfer descriptor
- */
-#define QDMA_DESC_BLEN_MAX	((1 << (QDMA_DESC_BLEN_BITS)) - 1)
-
-#ifdef __XRT__
-/**
- * number of bits to describe the SOFT DMA transfer descriptor
- */
-#define SOFT_QDMA_DESC_BLEN_BITS   15
-
-/**
- * maximum size of a single SOFT DMA transfer descriptor
- */
-#define SOFT_QDMA_DESC_BLEN_MAX      (1 << (SOFT_QDMA_DESC_BLEN_BITS))
-#endif
-
-/**
- * obtain the 32 most significant (high) bits of a 32-bit or 64-bit address
- */
-#define PCI_DMA_H(addr) ((addr >> 16) >> 16)
-/**
- * obtain the 32 least significant (low) bits of a 32-bit or 64-bit address
- */
-#define PCI_DMA_L(addr) (addr & 0xffffffffUL)
-
-/**
- * Xiling DMA device forward declaration
- */
-struct xlnx_dma_dev;
-
-/* XDMA PCIe device specific book-keeping */
-/**
- * Flag for device offline
- */
-#define XDEV_FLAG_OFFLINE	0x1
-/**
- * Flag for IRQ
- */
-#define XDEV_FLAG_IRQ		0x2
-/**
- * Maximum number of interrupts supported per device
- */
-#define XDEV_NUM_IRQ_MAX	8
-
-/**
- * Macro to indicate FLR flow is active
- */
-#define XDEV_FLR_ACTIVE 1
-/**
- * Macro to indicate FLR flow is not active
- */
-#define XDEV_FLR_INACTIVE 0
-/**
- * interrupt call back function handlers
- */
-typedef irqreturn_t (*f_intr_handler)(int irq_index, int irq, void *dev_id);
-
-/**
- * @struct - intr_coal_conf
- * @brief	interrut coalescing configuration
- */
-struct intr_coal_conf {
-	/**< interrupt vector index */
-	u16 vec_id;
-	/**< number of entries in interrupt ring per vector */
-	u16 intr_rng_num_entries;
-	/**< interrupt ring base address */
-	dma_addr_t intr_ring_bus;
-	union qdma_intr_ring *intr_ring_base;
-	/**< color value indicates the valid entry in the interrupt ring */
-	u8 color;
-	/**< Interrupt cidx info to be written to INTR CIDX register */
-	struct qdma_intr_cidx_reg_info intr_cidx_info;
-};
-
-/**
- * Macros for Hardware Version info
- */
-#define RTL1_VERSION                      0
-#define RTL2_VERSION                      1
-#define VIVADO_RELEASE_2018_3             0
-#define VIVADO_RELEASE_2018_2             1
-
-/**
- * intr_type_list - interrupt types
- */
-enum intr_type_list {
-	INTR_TYPE_ERROR,	/**< error interrupt */
-	INTR_TYPE_USER,		/**< user interrupt */
-	INTR_TYPE_DATA,		/**< data interrupt */
-	INTR_TYPE_MBOX,		/**< mail box interrupt */
-	INTR_TYPE_MAX		/**< max interrupt */
-};
-
-/**
- * reset_state - Keep track of state during FLR
- */
-enum reset_state_t {
-	RESET_STATE_IDLE,
-	RESET_STATE_RECV_PF_RESET_REQ,
-	RESET_STATE_PF_WAIT_FOR_BYES,
-	RESET_STATE_RECV_PF_RESET_DONE,
-	RESET_STATE_RECV_PF_OFFLINE_REQ,
-	RESET_STATE_PF_OFFLINE_REQ_PROCESSING,
-	RESET_STATE_INVALID,
-};
-
-
-/**
- * @struct - intr_vec_map_type
- * @brief	interrupt vector map details
- */
-struct intr_vec_map_type {
-	enum intr_type_list intr_type;	/**< interrupt type */
-	int intr_vec_index;		/**< interrupt vector index */
-	f_intr_handler intr_handler;	/**< interrupt handler */
-};
-
-/**< Interrupt info for MSI-X interrupt vectors per device */
-struct intr_info_t {
-	/**< msix_entry list for all vectors */
-	char msix_name[QDMA_DEV_NAME_MAXLEN + 16];
-	/**< queue list for each interrupt */
-	struct list_head intr_list;
-	/**< number of queues assigned for each interrupt */
-	int intr_list_cnt;
-	/**< interrupt vector map */
-	struct intr_vec_map_type intr_vec_map;
-	/**< interrupt lock per vector */
-	spinlock_t vec_q_list;
-};
-
-/**
- * @struct - xlnx_dma_dev
- * @brief	Xilinx DMA device details
- */
-struct xlnx_dma_dev {
-	unsigned long magic;	/* structure ID for sanity checks */
-	/**< Xilinx DMA device name */
-	char mod_name[QDMA_DEV_NAME_MAXLEN];
-	/**< Board id this device belongs to*/
-	u32 dma_device_index;
-	/**< Keeping track of last updated descq
-	 * Used only in case of auto and intr aggr driver mode
-	 * This is required because HW might prematurely raise interrupt
-	 * without actual new entries in the aggr ring and we need to
-	 * provide some update to the sw_cidx of aggr ring so that
-	 * interrupt gets triggered again
-	 */
-	struct qdma_descq *prev_descq;
-	/**< DMA device configuration */
-	struct qdma_dev_conf conf;
-	/**< csr info */
-	struct global_csr_conf csr_info;
-	/**< sorted c2h counter indexes */
-	uint8_t sorted_c2h_cntr_idx[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/**< DMA device list */
-	struct list_head list_head;
-	/**< DMA device lock to protects concurrent access */
-	spinlock_t lock;
-	/**< DMA device hardware program lock */
-	spinlock_t hw_prg_lock;
-	/**< device flags */
-	unsigned int flags;
-	/**< device capabilities */
-	struct qdma_dev_attributes dev_cap;
-	/**< sriov info */
-	void *vf_info;
-	/**< number of virtual functions */
-	u16 vf_count;
-	/**< number of online virtual functions */
-	u8 vf_count_online;
-#ifdef __QDMA_VF__
-	/** work queue */
-	struct workqueue_struct *workq;
-	/** work_struct to pass work to reset thread */
-	struct work_struct reset_work;
-#endif
-	/** Reset state */
-	enum reset_state_t reset_state;
-	/**< wait q for vf offline */
-	qdma_wait_queue wq;
-	/**< function id */
-	u16 func_id;
-#ifdef __QDMA_VF__
-	/**< parent function id, valid only for virtual function */
-	u16 func_id_parent;
-#else
-	/**< number of physical functions */
-	u8 pf_count;
-#endif
-	/**< PCIe config. bar */
-	void __iomem *regs;
-	/**< number of MSI-X interrupt vectors per device */
-	int num_vecs;
-	/**< msix_entry list for all MSIx vectors associated for device */
-	struct msix_entry *msix;
-	/**< interrupt info list for all MSIx vectors associated for device */
-	struct intr_info_t *dev_intr_info_list;
-	/**< data vector start index */
-	int dvec_start_idx;
-	/**< DMA private device to hold the qdma que details */
-	void *dev_priv;
-	/**< list of interrupt coalescing configuration for each vector */
-	struct intr_coal_conf  *intr_coal_list;
-	/**< legacy interrupt vector */
-	int vector_legacy;
-	/**< error lock */
-	spinlock_t err_lock;
-	/**< flag to indicate the error minitor status */
-	u8 err_mon_cancel;
-	/**< error minitor work handler */
-	struct delayed_work err_mon;
-#ifdef DEBUGFS
-	/** debugfs device root */
-	struct dentry *dbgfs_dev_root;
-	/** debugfs queue root */
-	struct dentry *dbgfs_queues_root;
-	/** debugfs intr ring root */
-	struct dentry *dbgfs_intr_root;
-	/* lock for creating qidx directory */
-	spinlock_t qidx_lock;
-#endif
-
-	/** number of packets processed in pf */
-	struct qdma_mbox mbox;
-	unsigned long long total_mm_h2c_pkts;
-	unsigned long long total_mm_c2h_pkts;
-	unsigned long long total_st_h2c_pkts;
-	unsigned long long total_st_c2h_pkts;
-	/** max ping_pong latency */
-	u64 ping_pong_lat_max;
-	/** min ping_pong latency */
-	u64 ping_pong_lat_min;
-	/** avg ping_pong latency */
-	u64 ping_pong_lat_total;
-	/**< for upper layer calling function */
-	unsigned int dev_ulf_extra[0];
-
-	/* qdma_hw_access structure */
-	struct qdma_hw_access hw;
-	/* qdma_hw_version_info structure */
-	struct qdma_hw_version_info version_info;
-};
-
-struct qdma_vf_info {
-	unsigned short func_id;
-	unsigned short qbase;
-	unsigned short qmax;
-	unsigned short filler;
-};
-
-/*****************************************************************************/
-/**
- * xlnx_dma_device_flag_check() - helper function to check the flag status
- *
- * @param[in]	xdev:	pointer to xilinx dma device
- * @param[in]	f:	flag value
- *
- *
- * @return	1 if the flag is on
- * @return	0 if the flag is off
- *****************************************************************************/
-static inline int xlnx_dma_device_flag_check(struct xlnx_dma_dev *xdev,
-					unsigned int f)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&xdev->lock, flags);
-	if (xdev->flags & f) {
-		spin_unlock_irqrestore(&xdev->lock, flags);
-		return 1;
-	}
-	spin_unlock_irqrestore(&xdev->lock, flags);
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * xlnx_dma_device_flag_test_n_set() - helper function to test n set the flag
- *
- * @param[in]	xdev:	pointer to xilinx dma device
- * @param[in]	f:	flag value
- *
- *
- * @return	1 if the flag is already enabled
- * @return	0 if the flag is off
- *****************************************************************************/
-static inline int xlnx_dma_device_flag_test_n_set(struct xlnx_dma_dev *xdev,
-					 unsigned int f)
-{
-	unsigned long flags;
-	int rv = 0;
-
-	spin_lock_irqsave(&xdev->lock, flags);
-	if (xdev->flags & f)
-		rv = 1;
-	else
-		xdev->flags |= f;
-	spin_unlock_irqrestore(&xdev->lock, flags);
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * xdev_flag_set() - helper function to set the device flag
- *
- * @param[in]	xdev:	pointer to xilinx dma device
- * @param[in]	f:	flag value
- *
- *
- * @return	none
- *****************************************************************************/
-static inline void xdev_flag_set(struct xlnx_dma_dev *xdev, unsigned int f)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&xdev->lock, flags);
-	xdev->flags |= f;
-	spin_unlock_irqrestore(&xdev->lock, flags);
-}
-
-/*****************************************************************************/
-/**
- * xlnx_dma_device_flag_test_n_set() - helper function to clear the device flag
- *
- * @param[in]	xdev:	pointer to xilinx dma device
- * @param[in]	f:	flag value
- *
- * @return	none
- *****************************************************************************/
-static inline void xdev_flag_clear(struct xlnx_dma_dev *xdev, unsigned int f)
-{
-	unsigned long flags;
-
-	spin_lock_irqsave(&xdev->lock, flags);
-	xdev->flags &= ~f;
-	spin_unlock_irqrestore(&xdev->lock, flags);
-}
-
-/*****************************************************************************/
-/**
- * xdev_find_by_pdev() - find the xdev using struct pci_dev
- *
- * @param[in]	pdev:	pointer to struct pci_dev
- *
- * @return	pointer to xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_find_by_pdev(struct pci_dev *pdev);
-
-/*****************************************************************************/
-/**
- * xdev_find_by_idx() - find the xdev using the index value
- *
- * @param[in]	idx:	index value in the xdev list
- *
- * @return	pointer to xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_find_by_idx(int idx);
-
-/*****************************************************************************/
-/**
- * xdev_list_first() - handler to return the first xdev entry from the list
- *
- * @return	pointer to first xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_list_first(void);
-
-/*****************************************************************************/
-/**
- * xdev_list_next() - handler to return the next xdev entry from the list
- *
- * @param[in]	xdev:	pointer to current xdev
- *
- * @return	pointer to next xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-struct xlnx_dma_dev *xdev_list_next(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * xdev_list_dump() - list the dma device details
- *
- * @param[in]	buflen:		length of the input buffer
- * @param[out]	buf:		message buffer
- *
- * @return	pointer to next xlnx_dma_dev on success
- * @return	NULL on failure
- *****************************************************************************/
-int xdev_list_dump(char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * xdev_check_hndl() - helper function to validate the device handle
- *
- * @param[in]	fname:		device name
- * @param[in]	pdev:	pointer to struct pci_dev
- * @param[in]	hndl:	device handle
- *
- * @return	0: success
- * @return	EINVAL: on failure
- *****************************************************************************/
-int xdev_check_hndl(const char *fname,
-			struct pci_dev *pdev, unsigned long hndl);
-
-
-#ifdef __QDMA_VF__
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_offline() - API to set the virtual function to offline mode
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- *
- * @return	0: success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_vf_offline(struct xlnx_dma_dev *xdev, u16 func_id);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_reset_offline() - API to set the virtual function to
- *				offline mode in FLR flow initiated by PF
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	0: success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_vf_reset_offline(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_online() - API to set the virtual function to online mode
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- *
- * @return	0: success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_vf_online(struct xlnx_dma_dev *xdev, u16 func_id);
-#elif defined(CONFIG_PCI_IOV)
-/* SR-IOV */
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_online() - API to disable the virtual function
- *
- * @param[in]	xdev:		pointer to xdev
- *
- * @return	none
- *****************************************************************************/
-void xdev_sriov_disable(struct xlnx_dma_dev *xdev);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_online() - API to enable the virtual function
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- *
- * @return	number of vfs enabled on success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_enable(struct xlnx_dma_dev *xdev, int num_vfs);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_offline() - API to set the virtual function to offline mode
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- *
- * @return	none
- *****************************************************************************/
-void xdev_sriov_vf_offline(struct xlnx_dma_dev *xdev, u16 func_id);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_offline() - API to set the virtual function to offline mode
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- *
- * @return	0: success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_vf_online(struct xlnx_dma_dev *xdev, u16 func_id);
-
-/*****************************************************************************/
-/**
- * xdev_sriov_vf_offline() - API to configure the fmap for virtual function
- *
- * @param[in]	xdev:		pointer to xdev
- * @param[in]	func_id:	function identifier
- * @param[in]	qbase:		queue start
- * @param[in]	qmax:		queue max
- *
- * @return	0: success
- * @return	-1: on failure
- *****************************************************************************/
-int xdev_sriov_vf_fmap(struct xlnx_dma_dev *xdev, u16 func_id,
-			unsigned short qbase, unsigned short qmax);
-
-#define xdev_sriov_vf_reset_offline(xdev)
-#else
-/** dummy declaration for xdev_sriov_disable()
- *  When virtual function is not enabled
- */
-#define xdev_sriov_disable(xdev)
-/** dummy declaration for xdev_sriov_enable()
- *  When virtual function is not enabled
- */
-#define xdev_sriov_enable(xdev, num_vfs)
-/** dummy declaration for xdev_sriov_vf_offline()
- *  When virtual function is not enabled
- */
-#define xdev_sriov_vf_offline(xdev, func_id)
-/** dummy declaration for xdev_sriov_vf_online()
- *  When virtual function is not enabled
- */
-#define xdev_sriov_vf_online(xdev, func_id)
-#define xdev_sriov_vf_reset_offline(xdev)
-#endif
-
-#endif /* XDMA_LIB_H */
diff --git a/QDMA/linux-kernel/driver/make_rules/common_flags.mk b/QDMA/linux-kernel/driver/make_rules/common_flags.mk
deleted file mode 100755
index 69bebde..0000000
--- a/QDMA/linux-kernel/driver/make_rules/common_flags.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-#Build flags common to xdma/qdma
-
-ifeq ($(VF),1)
-   EXTRA_FLAGS += -D__QDMA_VF__
-   PFVF_TYPE = -vf
-else
-   PFVF_TYPE = -pf
-endif
-
diff --git a/QDMA/linux-kernel/driver/make_rules/distro_check.mk b/QDMA/linux-kernel/driver/make_rules/distro_check.mk
deleted file mode 100755
index 4689147..0000000
--- a/QDMA/linux-kernel/driver/make_rules/distro_check.mk
+++ /dev/null
@@ -1,132 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-#
-# distro. checks
-# uses the same variables calculated from kernel_check.mk
-#
-
-distro :=
-dmajor :=
-dminor :=
-
-# kernel.org rc kernels
-#ifneq ($(shell echo $(kextraversion) | $(grep) -c 'git'),0)
-#  distro := GIT
-#  dmajor :=
-#  dminor :=
-#endif # kernel.org
-
-ifneq ($(shell $(grep) -c 'RHEL' $(VERSION_H)),0)
-  distro := RHEL
-#  distro_vmajor := $(shell $(grep) 'RHEL_MAJOR' $(VERSION_H) | cut -d' ' -f3)
-#  distro_vminor := $(shell $(grep) 'RHEL_MINOR' $(VERSION_H) | cut -d' ' -f3)
-  dmajor := $(word 3, $(shell $(grep) 'RHEL_MAJOR' $(VERSION_H)))
-  dminor := $(word 3, $(shell $(grep) 'RHEL_MINOR' $(VERSION_H)))
-  ifeq ($(dmajor),)
-    ifeq ($(dminor),)
-      $(error ERROR! RHEL distro version NOT specified, check version.h.)
-    endif
-  endif
-  ifeq ($(shell [ $(dmajor) -lt 5 ] && echo 1),1)
-    $(error ERROR! Unsupported RHEL version $(dmajor).$(dminor).)
-  endif
-  ifeq ($(dmajor),5)
-    ifeq ($(shell [ $(dmajor) -lt 4 ] && echo 1),1)
-      $(error ERROR! Unsupported RHEL version $(dmajor).$(dminor).)
-    endif
-  endif
-endif # RHEL 
-
-# SLES does not provide any release macros like RHEL. So we are
-# setting Makefile flags for SLES releases based on the version 
-# and patchlevel obtained from /etc/SuSE-release file
-ifneq ($(wildcard /etc/SuSE-release),)
-  distro := SLES
-  dmajor := $(shell cat /etc/SuSE-release | grep VERSION | awk '{print $$3}')
-  dminor := $(shell cat /etc/SuSE-release | grep PATCHLEVEL | awk '{print $$3}')
-endif
-
-$(info "distro=$(distro), dmajor=$(dmajor) dminor=$(dminor) ")
-
-# assume this is kernel.org kernels
-ifeq ($(distro),)
-  ifeq ($(kseries),2.6)
-    ifeq ($(shell [ $(ksublevel) -ge 32 ] && echo 1),1)
-      distro := GIT
-    else
-      $(error kernel version $(kbaseversion)$(kextraversion) NOT supported.)
-      $(      kernel.org Requires >= 2.6.32.)
-    endif
-  endif
-
-  ifeq ($(kversion),3)
-    ifeq ($(shell [ $(kpatchlevel) -ge 1 ] && echo 1),1)
-      distro := GIT
-    else
-      $(error kernel version $(kbaseversion)$(kextraversion) NOT supported.)
-      $(      kernel.org Requires >= 3.1.)
-    endif
-  endif
-
-  ifeq ($(kversion),4)
-      distro := GIT
-  endif
-
-  ifeq ($(kversion),5)
-      distro := GIT
-  endif
-
-  ifeq ($(kversion),6)
-      distro := GIT
-  endif
-endif # assume kernel.org kernels
-
-ifeq ($(distro),)
-  $(error kernel version $(kbaseversion)$(kextraversion) NOT supported.)
-  $(      kernel.org Requires >= 2.6.35.)
-endif
-
-FLAGS += -D$(distro)$(dmajor)SP$(dminor)
-FLAGS += -D$(distro)$(dmajor)
-# special case for SLES 11
-ifeq ($(distro),SLES)
-  ifeq ($(dmajor),11)
-    ifeq ($(shell test $(dminor) -ge 1; echo $$?),0)
-      FLAGS += -DSLES_RELEASE_11_1
-    endif
-    ifeq ($(shell test $(dminor) -ge 2; echo $$?),0)
-      FLAGS += -DSLES_RELEASE_11_2
-    endif
-    ifeq ($(shell test $(dminor) -ge 3; echo $$?),0)
-      FLAGS += -DSLES_RELEASE_11_3
-    endif
-    ifeq ($(shell test $(dminor) -ge 4; echo $$?),0)
-      FLAGS += -DSLES_RELEASE_11_4
-    endif
-  else
-    FLAGS += -D$(distro)_RELEASE_$(dmajor)_$(dminor)
-  endif
-endif
-
-$(info $(kbaseversion)$(kextraversion): $(distro),$(dmajor),$(dminor), $(FLAGS))
-
-export distro
-export dmajor
-export dminor
diff --git a/QDMA/linux-kernel/driver/make_rules/kernel_check.mk b/QDMA/linux-kernel/driver/make_rules/kernel_check.mk
deleted file mode 100755
index ab2b369..0000000
--- a/QDMA/linux-kernel/driver/make_rules/kernel_check.mk
+++ /dev/null
@@ -1,351 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-# Kernel directories.
-KERNELRELEASE := $(shell uname -r)
-
-# If KSRC=<path> is specified on the command line, KOBJ=<path> must
-# also be specified. This is to avoid mixups if the kernel object path
-# differs from the source path. A shortcut (KSRC=KOBJ) is to use KDIR.
-ifeq ($(KDIR),)
-  ifeq ($(KSRC),)
-    ifneq ($(KOBJ),)
-      $(warning When using KOBJ=<path>, the KSRC=<path> must also be defined.)
-      $(warning Use KDIR=<path> when KSRC and KOBJ are the same.)
-      $(error ERROR: kernel source path not specified)
-    endif
-  else
-    ifeq ($(KOBJ),)
-      $(warning When using KSRC=<path>, the KOBJ=<path> must also be defined.)
-      $(warning Use KDIR=<path> when KSRC and KOBJ are the same.)
-      $(error ERROR: KOBJ path not specified)
-    endif
-  endif
-else
-  override KSRC := $(KDIR)
-  override KOBJ := $(KDIR)
-endif
-
-# Only if KSRC/KOBJ were not defined on the command line.
-KSRC ?= $(wildcard /lib/modules/$(KERNELRELEASE)/source)
-KOBJ ?= $(wildcard /lib/modules/$(KERNELRELEASE)/build)
-KINC  = $(KSRC)/include
-
-#$(warning KDIR: $(KDIR).)
-
-ifeq ($(KSRC),)
-   KSRC = $(KOBJ)
-endif
-
-# Define kernel files.
-VERSION_H  := $(KOBJ)/include/linux/version.h
-AUTOCONF_H := $(KOBJ)/include/generated/autoconf.h
-UTSRELEASE_H  := $(KOBJ)/include/generated/utsrelease.h
-
-ifeq ($(wildcard $(VERSION_H)),)
-  VERSION_H := $(KOBJ)/include/generated/uapi/linux/version.h
-endif
-ifeq ($(wildcard $(AUTOCONF_H)),)
-  AUTOCONF_H := $(KOBJ)/include/linux/autoconf.h
-endif
-ifeq ($(wildcard $(UTSRELEASE_H)),)
-  UTSRELEASE_H := $(KOBJ)/include/linux/utsrelease.h
-endif
-#ifeq ($(wildcard $(UTSRELEASE_H)),)
-#  $(error NO utsrelease)
-#endif
-
-# Define architecture and target(for RPM).
-ARCH := $(shell uname -m)
-target := $(ARCH)
-override ARCH := $(shell echo $(ARCH) | sed 's/i.86/i386/')
-ifeq ($(USER_ARCH),)
-
-  ifeq ($(ARCH),ppc64le)
-    ifeq ($(wildcard $(KOBJ)/arch/$(ARCH)),)
-      override ARCH := powerpc
-    endif
-  endif
-
-  ifeq ($(ARCH),ppc64)
-    # Check if the kernel wants ppc64 or powerpc.
-    ifeq ($(wildcard $(KOBJ)/arch/$(ARCH)),)
-      override ARCH := powerpc
-    endif
-  endif
-else
-  # Honor the value of ARCH if specified by user.
-  override ARCH := $(USER_ARCH)
-endif
-
-# Functions.
-define path_check
-$(if $(wildcard $(1)),$(1),)
-endef
-define reverse_sort
-$(shell echo -e `echo "$(strip $(1))" |\
-                 sed 's/[[:space:]]/\\\n/g'` | sort -r)
-endef
-define version_code
-$(shell let x=`sed '/^\#define[[:space:]]*LINUX_VERSION_CODE/!d;\
-                    s/.*LINUX_VERSION_CODE[[:space:]]*//' < $(1)\
-               2>/dev/null`;\
-        let a="$$x >> 16";\
-        let x="$$x - ($$a << 16)";\
-        let b="$$x >> 8";\
-        let x="$$x - ($$b << 8)";\
-        echo "$$a $$b $$x")
-endef
-
-# Checks for kernel source and object directories.
-ifeq ($(call path_check,$(KSRC)),)
-  $(warning Be sure the kernel source is properly installed or \
-            try specifying the kernel source tree using 'make KSRC=<path>')
-  $(error ERROR: missing kernel source)
-endif
-ifeq ($(call path_check,$(KOBJ)),)
-  $(warning Try specifying the kernel build tree using 'make KOBJ=<path>'.)
-  $(error ERROR: missing kernel build)
-endif
-
-# Check kernel source and build directories are somewhat likely to be correct.
-ifneq ($(notdir $(wildcard $(KSRC)/Makefile)),Makefile)
-  $(warning There seems to be a problem with the kernel \
-            source [$(KSRC)] directory.)
-  $(error ERROR: missing kernel Makefile)
-endif
-ifneq ($(notdir $(wildcard $(KOBJ)/Makefile)),Makefile)
-  $(warning There seems to be a problem with the kernel \
-            build [$(KOBJ)] directory.)
-  $(error ERROR: missing kernel Makefile)
-endif
-
-# Get kernel version code info.
-KERNELVERSION := $(strip $(call version_code,$(VERSION_H)))
-ifneq ($(words $(KERNELVERSION)), 3)
-  $(error ERROR: unexpected kernel version \
-          '$(shell echo $(KERNELVERSION) | sed 's/[[:space:]]/./g')')
-endif
-
-# Define kernel version details.
-kversion       := $(word 1, $(KERNELVERSION))
-kpatchlevel    := $(word 2, $(KERNELVERSION))
-ksublevel      := $(word 3, $(KERNELVERSION))
-
-# The kernel base version, excluding the EXTRAVERSION string.
-kbaseversion   := $(kversion).$(kpatchlevel).$(ksublevel)
-
-# The kernel series version.
-kseries        := $(kversion).$(kpatchlevel)
-
-# Fix for variation of Module.symvers naming (thanks 2.6.17!).
-# I need to know the file name of the module symver generated by the kernel
-# during an external module build (MODPOST). Also used for kernels that don't
-# automatically generate the module symver file during MODPOST (2.6.0-2.6.17?).
-ifeq ($(shell $(grep) -c '^modulesymfile[[:space:]]*:\?=' \
-                $(KSRC)/scripts/Makefile.modpost),1)
-  modulesymfile := $(shell $(grep) '^modulesymfile[[:space:]]*:\?=' \
-                             $(KSRC)/scripts/Makefile.modpost)
-  kernelsymfile := $(shell $(grep) '^kernelsymfile[[:space:]]*:\?=' \
-                             $(KSRC)/scripts/Makefile.modpost)
-else
-  ifeq ($(shell $(grep) -c '^symverfile[[:space:]]*:\?=' \
-                $(KSRC)/scripts/Makefile.modpost),1)
-    symverfile    := $(shell $(grep) '^symverfile[[:space:]]*:\?=' \
-                             $(KSRC)/scripts/Makefile.modpost)
-    kernelsymfile := $(subst symverfile,kernelsymfile,$(symverfile))
-  endif
-endif
-modulesymfile ?= $(symverfile)
-ifeq ($(modulesymfile),)
-  $(warning The parsing of $(KSRC)/scripts/Makefile.modpost \
-            is not making sense.)
-  $(error ERROR cannot determine module symvers file)
-endif
-
-# Gnu make (3.80) bug #1516, $(eval ...) inside conditionals causes errors.
-# This is fixed in v3.81 and some v3.80 (RHEL4/5) but not on SLES10.
-# Workaround: include a separate makefile that does the eval.
-ifeq ($(shell echo '$(modulesymfile)' | $(grep) -c '^[[:alnum:]_]\+[[:space:]]*:\?=[[:space:]]*.\+'),1)
-  $(shell echo '$$(eval $$(modulesymfile))' > eval.mak)
-  include eval.mak
-else
-  modulesymfile =
-endif
-ifeq ($(shell echo '$(kernelsymfile)' | $(grep) -c '^[[:alnum:]_]\+[[:space:]]*:\?=[[:space:]]*.\+'),1)
-  $(shell echo '$$(eval $$(kernelsymfile))' > eval.mak)
-  include eval.mak
-else
-  kernelsymfile =
-endif
-modulesymfile := $(notdir $(modulesymfile))
-kernelsymfile := $(notdir $(kernelsymfile))
-$(shell [ -f eval.mak ] && /bin/rm -f eval.mak)
-
-ifneq ($(words $(modulesymfile)),1)
-  $(warning The parsing of $(KSRC)/scripts/Makefile.modpost \
-            is not making sense.)
-  $(warning You can try passing 'modulesymfile=Module.symvers' or \
-            similar to make.)
-  $(error ERROR cannot determine module symvers file)
-endif
-
-
-# Check for configured kernel.
-ifeq ($(wildcard $(AUTOCONF_H)),)
-  $(warning The kernel is not properly configured, try running \
-            'make menuconfig' on your kernel.)
-  $(error ERROR: kernel missing autoconf.h)
-endif
-# Check for built kernel.
-ifeq ($(wildcard $(VERSION_H)),)
-  $(warning The kernel has not been compiled. Try building your kernel \
-            before building this driver.)
-  $(error ERROR: kernel missing version.h)
-endif
-
-# Check that kernel supports modules.
-ifneq ($(shell $(grep) -c '^\#define[[:space:]]\+CONFIG_MODULES[[:space:]]\+1' $(AUTOCONF_H)),1)
-  $(warning The kernel has not been configured for module support.)
-  $(warning Try configuring the kernel to allow external modules and \
-            recompile.)
-  $(error ERROR: kernel CONFIG_MODULES not defined)
-endif
-
-# Get kernel UTS_RELEASE info.
-ifneq ($(wildcard $(UTSRELEASE_H)),)
-  ifneq ($(shell $(grep) -c '^\#define[[:space:]]\+UTS_RELEASE' \
-                  $(UTSRELEASE_H)),0)
-    utsrelease := $(UTSRELEASE_H)
-  endif
-else
-  ifneq ($(wildcard $(KOBJ)/include/linux/version.h),)
-    ifneq ($(shell $(grep) -c '^\#define[[:space:]]\+UTS_RELEASE' \
-                    $(KOBJ)/include/linux/version.h),0)
-      utsrelease := $(KOBJ)/include/linux/version.h
-    endif
-  endif
-endif
-ifeq ($(utsrelease),)
-  $(error ERROR: cannot locate kernel UTS_RELEASE)
-endif
-# Getting the UTS_RELEASE on RHEL3 had problems due to the multiple defines
-# within the file. I can run this file through the C pre-processor and get 
-# the actual UTS_RELEASE definition. This has only been tested on gcc, other
-# compilers may not work.
-utsrelease := $(strip $(shell $(CC) -E -dM -I $(KSRC)/include $(utsrelease) \
-                        2>/dev/null| sed '/^\#define[[:space:]]*UTS_RELEASE/!d;\
-		                          s/^\#define UTS_RELEASE[[:space:]]*"//;\
-					  s/"//g'))
-
-# The kernel local version string if defined in config.
-klocalversion  := $(shell sed '/^CONFIG_LOCALVERSION=/!d;\
-                               s/^CONFIG_LOCALVERSION="//;s/"//g'\
-                            2>/dev/null < $(KOBJ)/.config)
-# The complete kernel EXTRAVERSION string.
-kextraversion  := $(subst $(kbaseversion),,$(utsrelease))
-# The full kernel version should be the same as uts_release.
-kernelversion  := $(utsrelease)
-
-# The kernel EXTRAVERSION creates a unique problem, especially since
-# kernel versioning extended into the EXTRAVERSION and distributions 
-# add strings such as smp, largesmp, xen, etc or when additional minor
-# version numbers are appended.
-# Some code that we supply is dependent on the kernel version and
-# parts of the EXTRAVERSION, but not dependent on some of the additional
-# flags. This requires that I have a list of kernel version strings that
-# could map to the source version we require. For example, if the
-# kernel version is 2.6.9-67.ELsmp, we only care about the "2.6.9-67"
-# part, therefore, I need to split the EXTRAVERSION accordingly.
-# Another problem is when a user builds their own kernel, say 2.6.21.4
-# and adds an additional string to EXTRAVERSION. The EXTRAVERSION is
-# now ".4-custom" and I have to parse this with hopes of extracting
-# only the ".4" part, resulting in the needed "2.6.21.4" version.
-# Adding a BUGFIX version (int) field would be very helpfull!
-
-# EXTRAVERSION as defined only in the Makefile.
-extraversion1 := $(strip $(shell sed '/^EXTRAVERSION/!d;\
-                                      s/^EXTRAVERSION[[:space:]]*=//;s/"//g'\
-                                    < $(KSRC)/Makefile 2>/dev/null))
-# SLES9 likes to put make code in their EXTRAVERSION define. Let the
-# variables expand out to nothing, because the code will cause problems.
-extraversion1 := $(shell echo $(extraversion1))
-# EXTRAVERSION without local version.
-extraversion2 := $(strip $(subst $(klocalversion),,$(kextraversion)))
-# EXTRAVERSION with only the kernel .version (hopefully).
-extraversion3 := $(strip $(shell echo $(kextraversion) |\
-				  sed 's/\(^\.[0-9]*\).*/\1/'))
-# EXTRAVERSION without the Redhat EL tag.
-extraversion4 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\.EL.*//i'))
-# EXTRAVERSION with the Redhat EL tag, but nothing else after.
-extraversion5 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\(\.EL\).*/\1/i'))
-# EXTRAVERSION with the Redhat EL tag, including a number (el5).
-extraversion6 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\(\.EL[[:digit:]]*\).*/\1/i'))
-# EXTRAVERSION without the Redhat hotfix/update kernel version number.
-extraversion7 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\(.*\-[[:digit:]]*\)\..*\(\.EL\).*/\1\2/i'))
-# EXTRAVERSION without the Redhat hotfix/update kernel version number with Redhat EL tag, including the number (el5).
-extraversion8 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\(.*\-[[:digit:]]*\)\..*\(\.EL[[:digit:]]\).*/\1\2/i'))
-# EXTRAVERSION with only the RHEL distro version
-extraversion9 := $(strip $(shell echo $(kextraversion) |\
-			          sed 's/\(.*\-[[:digit:]]*\)\..*\.EL[[:digit:]].*/\1/i'))
-
-# All known EXTRAVERSION strings, duplicates removed.
-extraversions  := $(strip $(sort $(kextraversion) \
-			         $(extraversion1) \
-			         $(extraversion2) \
-			         $(extraversion3) \
-			         $(extraversion4) \
-			         $(extraversion5) \
-			         $(extraversion6) \
-			         $(extraversion7) \
-			         $(extraversion8) \
-			         $(extraversion9)))
-
-# List of all possible kernel version names for target kernel.
-all_kernels    := $(sort $(kbaseversion) \
-		         $(foreach a,$(extraversions),$(kbaseversion)$(a)))
-
-# A reverse ordered list. This is used primarily to search source code
-# directory names to match the target kernel version.
-kversions := $(call reverse_sort, $(all_kernels))
-
-# Special cases for 2.4 series kernels.
-ifeq ($(kseries),2.4)
-  $(error ERROR:  2.4 kernel NOT supported.)
-endif
-# Note: Define only FLAGS here. These will convert to CFLAGS in the sub-make.
-# If the environment variable FLAGS is defined with make, things will break,
-# use CFLAGS instead.
-# General compiler flags.
-# Kernel version 3.3+ moved include/asm to include/generated, which breaks
-# outbox kernel drivers. Fix to include the new generated without code change.
-ifeq ($(kversion),3)
-  ifeq ($(shell [ $(kpatchlevel) -gt 2 ] && echo 1),1)
-    override CARCH := $(ARCH)
-    ifeq ($(CARCH),x86_64)
-      override CARCH := x86
-    endif
-    FLAGS += -I$(KSRC)/arch/$(CARCH)/include/generated
-  endif
-endif
diff --git a/QDMA/linux-kernel/driver/src/Makefile b/QDMA/linux-kernel/driver/src/Makefile
deleted file mode 100755
index 1b5b9bd..0000000
--- a/QDMA/linux-kernel/driver/src/Makefile
+++ /dev/null
@@ -1,147 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-SHELL = /bin/bash
-
-export topdir
-export bin_dir
-
-# The top-level makefile defines required variables and flags.
-ifneq ($(shell [[ $(MAKELEVEL) -ge 1 ]] && echo 1),1)
-  $(error Please use the top-level Makefile to build this driver)
-endif
-
-ifneq ($(wildcard /etc/lsb-release),)
-  ifneq ($(shell $(grep) "Ubuntu" /etc/lsb-release),)
-    FLAGS += -DUBUNTU_VERSION_CODE
-  endif
-endif
-
-include $(srcdir)/../make_rules/common_flags.mk
-
-$(info srcdir = $(srcdir).)
-$(info KSRC = $(KSRC).)
-$(info VF = $(VF).)
-$(info CROSS_COMPILE_FLAG = $(CROSS_COMPILE_FLAG).)
-$(info ARCH = $(ARCH).)
-
-
-MOD_NAME := qdma$(PFVF_TYPE)
-
-EXTRA_CFLAGS += -DLINUX -D__KERNEL__ -DMODULE -O2 -pipe -Wall -Werror
-EXTRA_CFLAGS += $(FLAGS) $(CPPFLAGS) $(EXTRA_FLAGS)
-EXTRA_CFLAGS += -I$(srcdir)/../include
-EXTRA_CFLAGS += -I$(KSRC)/../include
-EXTRA_CFLAGS += -I$(srcdir)/../libqdma/qdma_access/qdma_soft_access
-EXTRA_CFLAGS += -I$(srcdir)/../libqdma/qdma_access/eqdma_soft_access
-EXTRA_CFLAGS += -I$(srcdir)/../libqdma/qdma_access/eqdma_cpm5_access
-EXTRA_CFLAGS += -I$(srcdir)/../libqdma/qdma_access/qdma_cpm4_access
-EXTRA_CFLAGS += -I.
-
-# linux >= 3.13 genl_ops become part of the genl_family. And although
-# genl_register_family_with_ops() is still retained until kernel 4.10,
-# its prototype changed from a extern function to a define.
-#
-ifneq ($(shell $(grep) -c 'int genl_register_family_with_ops' $(KINC)/net/genetlink.h),0)
-  ccflags-y += -D__GENL_REG_FAMILY_OPS_FUNC__
-endif
-
-# linux <= 3.13 pci_msix_vec_count is not defined.
-#
-ifeq ($(shell $(grep) -c 'int pci_msix_vec_count' $(KINC)/linux/pci.h),0)
-  ccflags-y += -D__PCI_MSI_VEC_COUNT__
-endif
-
-# linux < 3.13 list_next_entry is not defined.
-#
-ifeq ($(shell $(grep) -c 'list_next_entry' $(KINC)/linux/list.h),0)
-  ccflags-y += -D__LIST_NEXT_ENTRY__
-endif
-
-# linux < 3.18.13 READ_ONCE is not defined.
-#
-ifneq ($(shell $(grep) -c 'READ_ONCE' $(KINC)/linux/compiler.h),0)
-  ccflags-y += -D__READ_ONCE_DEFINED__
-endif
-
-$(info EXTRA_FLAGS = $(EXTRA_FLAGS).)
-$(info ccflags-y = $(ccflags-y).)
-#EXTRA_CFLAGS += -DDEBUG
-
-#For Kernel Images > 4.9.199 with CONFIG_STACK_VALIDATION=y and GCC version > 8 compiler throws spurious warnings
-#related to sibling calls and frame pointer save/setup. To supress these warnings
-#enable the OBJECT_FILES_NON_STANDARD option below
-#If in case, the flag name changes in future linux kernel releases, please refer
-#https://github.com/torvalds/linux/blob/master/tools/objtool/Documentation/stack-validation.txt
-#to get the correct flag name
-#OBJECT_FILES_NON_STANDARD := y
-
-ifneq ($(modulesymfile),)
-  override symverfile = symverfile="$(topdir)/$(modulesymfile) \
-					-o $(drvdir)/$(modulesymfile)"
-else
-  override symverfile =
-endif
-
-DRV_OBJS := nl.o cdev.o qdma_mod.o
-
-LIBQDMA_OBJS := libqdma/qdma_mbox.o libqdma/qdma_intr.o libqdma/qdma_st_c2h.o \
-	libqdma/qdma_thread.o libqdma/libqdma_export.o libqdma/qdma_context.o \
-	libqdma/qdma_sriov.o libqdma/qdma_platform.o libqdma/qdma_descq.o libqdma/qdma_regs.o \
-	libqdma/qdma_debugfs.o libqdma/qdma_debugfs_dev.o libqdma/qdma_debugfs_queue.o \
-	libqdma/libqdma_config.o libqdma/qdma_device.o libqdma/xdev.o libqdma/thread.o
-
-QDMA_ACCESS_OBJS := libqdma/qdma_access/qdma_mbox_protocol.o libqdma/qdma_access/qdma_list.o \
-	libqdma/qdma_access/qdma_access_common.o libqdma/qdma_access/qdma_resource_mgmt.o \
-	libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_access.o \
-	libqdma/qdma_access/qdma_cpm4_access/qdma_cpm4_reg_dump.o \
-	libqdma/qdma_access/qdma_soft_access/qdma_soft_access.o \
-	libqdma/qdma_access/eqdma_soft_access/eqdma_soft_access.o \
-	libqdma/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.o \
-	libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_access.o \
-	libqdma/qdma_access/eqdma_cpm5_access/eqdma_cpm5_reg_dump.o
-
-
-
-obj-m += $(MOD_NAME).o
-$(MOD_NAME)-objs += $(DRV_OBJS)
-$(MOD_NAME)-objs += $(LIBQDMA_OBJS)
-$(MOD_NAME)-objs += $(QDMA_ACCESS_OBJS)
-
-ifeq ($(ARCH),aarch64)
-    ARCH=arm64
-endif
-
-.PHONY: bin
-bin:
-	@mkdir -p -m 755 $(bin_dir)
-	@rm -f $(MOD_NAME).ko $(bin_dir)/$(MOD_NAME).ko
-ifeq ($(CROSS_COMPILE_FLAG),)
-	@$(MAKE) symverfile=$(symverfile) KBUILD_EXTRA_SYMBOLS=$(extra_symb) -C $(KOBJ) M=$(shell pwd) modules
-else
-	@$(MAKE) symverfile=$(symverfile) KBUILD_EXTRA_SYMBOLS=$(extra_symb) -C $(KOBJ)  CROSS_COMPILE=$(CROSS_COMPILE_FLAG) SUBDIRS=$(shell pwd) modules
-endif
-	@cp $(MOD_NAME).ko $(bin_dir)
-
-.PHONY: clean
-clean:
-	@-/bin/rm -rf *.ko* ?odule* .tmp_versions *.mod.* *.o *.o.* .*.o.* .*.cmd
-	@-/bin/rm -rf */*.o */*.o.* */.*.o.* */.*.cmd
-	@-/bin/rm -rf $(bin_dir)/*.ko
-	@-/bin/rm -f $(srcdir)/drv/libqdma
diff --git a/QDMA/linux-kernel/driver/src/cdev.c b/QDMA/linux-kernel/driver/src/cdev.c
deleted file mode 100755
index bd7d681..0000000
--- a/QDMA/linux-kernel/driver/src/cdev.c
+++ /dev/null
@@ -1,819 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "cdev.h"
-
-#include <asm/cacheflush.h>
-#include <linux/device.h>
-#include <linux/errno.h>
-#include <linux/fs.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/slab.h>
-#include <linux/types.h>
-#include <linux/uaccess.h>
-#include <linux/slab.h>
-#include <linux/aio.h>
-#include <linux/sched.h>
-#include <linux/wait.h>
-#include <linux/kthread.h>
-#include <linux/version.h>
-#if KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-#include <linux/uio.h>
-#endif
-
-#include "qdma_mod.h"
-#include "libqdma/xdev.h"
-
-/*
- * @struct - xlnx_phy_dev
- * @brief	xilinx board device data members
- */
-struct xlnx_phy_dev {
-	struct list_head list_head;	/**< board list */
-	unsigned int major;	/**< major number per board */
-	unsigned int device_bus;	/**< PCIe device bus number per board */
-	unsigned int dma_device_index;
-};
-
-static LIST_HEAD(xlnx_phy_dev_list);
-static DEFINE_MUTEX(xlnx_phy_dev_mutex);
-
-struct cdev_async_io {
-	ssize_t res2;
-	unsigned long req_count;
-	unsigned long cmpl_count;
-	unsigned long err_cnt;
-	struct qdma_io_cb *qiocb;
-	struct qdma_request **reqv;
-	struct kiocb *iocb;
-	struct work_struct wrk_itm;
-};
-
-enum qdma_cdev_ioctl_cmd {
-	QDMA_CDEV_IOCTL_NO_MEMCPY,
-	QDMA_CDEV_IOCTL_CMDS
-};
-
-static struct class *qdma_class;
-static struct kmem_cache *cdev_cache;
-
-static ssize_t cdev_gen_read_write(struct file *file, char __user *buf,
-		size_t count, loff_t *pos, bool write);
-static void unmap_user_buf(struct qdma_io_cb *iocb, bool write);
-static inline void iocb_release(struct qdma_io_cb *iocb);
-
-static inline void xlnx_phy_dev_list_remove(struct xlnx_phy_dev *phy_dev)
-{
-	if (!phy_dev)
-		return;
-
-	mutex_lock(&xlnx_phy_dev_mutex);
-	list_del(&phy_dev->list_head);
-	mutex_unlock(&xlnx_phy_dev_mutex);
-}
-
-static inline void xlnx_phy_dev_list_add(struct xlnx_phy_dev *phy_dev)
-{
-	if (!phy_dev)
-		return;
-
-	mutex_lock(&xlnx_phy_dev_mutex);
-	list_add_tail(&phy_dev->list_head, &xlnx_phy_dev_list);
-	mutex_unlock(&xlnx_phy_dev_mutex);
-}
-
-static int qdma_req_completed(struct qdma_request *req,
-		       unsigned int bytes_done, int err)
-{
-	struct qdma_io_cb *qiocb = container_of(req,
-						struct qdma_io_cb,
-						req);
-	struct cdev_async_io *caio = NULL;
-	bool free_caio = false;
-	ssize_t res, res2;
-
-
-	if (qiocb) {
-		caio = (struct cdev_async_io *)qiocb->private;
-	} else {
-		pr_err("Invalid Data structure. Probable memory corruption");
-		return -EINVAL;
-	}
-
-	if (!caio) {
-		pr_err("Invalid Data structure. Probable memory corruption");
-		return -EINVAL;
-	}
-
-	unmap_user_buf(qiocb, req->write);
-	iocb_release(qiocb);
-	caio->res2 |= (err < 0) ? err : 0;
-	if (caio->res2)
-		caio->err_cnt++;
-	caio->cmpl_count++;
-	if (caio->cmpl_count == caio->req_count) {
-		res = caio->cmpl_count - caio->err_cnt;
-		res2 = caio->res2;
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(9, 0) < RHEL_RELEASE_CODE
-		caio->iocb->ki_complete(caio->iocb, res);
-#elif RHEL_RELEASE_VERSION(8, 0) < RHEL_RELEASE_CODE
-		caio->iocb->ki_complete(caio->iocb, res, res2);
-#else
-		aio_complete(caio->iocb, res, res2);
-#endif
-#else
-#if KERNEL_VERSION(5, 16, 0) <= LINUX_VERSION_CODE
-		caio->iocb->ki_complete(caio->iocb, res);
-#elif KERNEL_VERSION(4, 1, 0) <= LINUX_VERSION_CODE
-		caio->iocb->ki_complete(caio->iocb, res, res2);
-#else
-		aio_complete(caio->iocb, res, res2);
-#endif
-#endif
-		kfree(caio->qiocb);
-		free_caio = true;
-	}
-	if (free_caio)
-		kmem_cache_free(cdev_cache, caio);
-
-	return 0;
-}
-
-/*
- * character device file operations
- */
-static int cdev_gen_open(struct inode *inode, struct file *file)
-{
-	struct qdma_cdev *xcdev = container_of(inode->i_cdev, struct qdma_cdev,
-						cdev);
-	file->private_data = xcdev;
-
-	if (xcdev->fp_open_extra)
-		return xcdev->fp_open_extra(xcdev);
-
-	return 0;
-}
-
-static int cdev_gen_close(struct inode *inode, struct file *file)
-{
-	struct qdma_cdev *xcdev = (struct qdma_cdev *)file->private_data;
-
-	if (xcdev && xcdev->fp_close_extra)
-		return xcdev->fp_close_extra(xcdev);
-
-	return 0;
-}
-
-static loff_t cdev_gen_llseek(struct file *file, loff_t off, int whence)
-{
-	struct qdma_cdev *xcdev = (struct qdma_cdev *)file->private_data;
-
-	loff_t newpos = 0;
-
-	switch (whence) {
-	case 0: /* SEEK_SET */
-		newpos = off;
-		break;
-	case 1: /* SEEK_CUR */
-		newpos = file->f_pos + off;
-		break;
-	case 2: /* SEEK_END, @TODO should work from end of address space */
-		newpos = UINT_MAX + off;
-		break;
-	default: /* can't happen */
-		return -EINVAL;
-	}
-	if (newpos < 0)
-		return -EINVAL;
-	file->f_pos = newpos;
-
-	pr_debug("%s: pos=%lld\n", xcdev->name, (signed long long)newpos);
-
-	return newpos;
-}
-
-static long cdev_gen_ioctl(struct file *file, unsigned int cmd,
-			unsigned long arg)
-{
-	struct qdma_cdev *xcdev = (struct qdma_cdev *)file->private_data;
-
-	switch (cmd) {
-	case QDMA_CDEV_IOCTL_NO_MEMCPY:
-		get_user(xcdev->no_memcpy, (unsigned char *)arg);
-		return 0;
-	default:
-		break;
-	}
-	if (xcdev->fp_ioctl_extra)
-		return xcdev->fp_ioctl_extra(xcdev, cmd, arg);
-
-	pr_err("%s ioctl NOT supported.\n", xcdev->name);
-	return -EINVAL;
-}
-
-/*
- * cdev r/w
- */
-static inline void iocb_release(struct qdma_io_cb *iocb)
-{
-	if (iocb->pages)
-		iocb->pages = NULL;
-	kfree(iocb->sgl);
-	iocb->sgl = NULL;
-	iocb->buf = NULL;
-}
-
-static void unmap_user_buf(struct qdma_io_cb *iocb, bool write)
-{
-	int i;
-
-	if (!iocb->pages || !iocb->pages_nr)
-		return;
-
-	for (i = 0; i < iocb->pages_nr; i++) {
-		if (iocb->pages[i]) {
-			if (!write)
-				set_page_dirty(iocb->pages[i]);
-			put_page(iocb->pages[i]);
-		} else
-			break;
-	}
-
-	if (i != iocb->pages_nr)
-		pr_err("sgl pages %d/%u.\n", i, iocb->pages_nr);
-
-	iocb->pages_nr = 0;
-}
-
-static int map_user_buf_to_sgl(struct qdma_io_cb *iocb, bool write)
-{
-	unsigned long len = iocb->len;
-	char *buf = iocb->buf;
-	struct qdma_sw_sg *sg;
-	unsigned int pg_off = offset_in_page(buf);
-	unsigned int pages_nr = (len + pg_off + PAGE_SIZE - 1) >> PAGE_SHIFT;
-	int i;
-	int rv;
-
-	if (len == 0)
-		pages_nr = 1;
-	if (pages_nr == 0)
-		return -EINVAL;
-
-	iocb->pages_nr = 0;
-	sg = kmalloc(pages_nr * (sizeof(struct qdma_sw_sg) +
-			sizeof(struct page *)), GFP_KERNEL);
-	if (!sg) {
-		pr_err("sgl allocation failed for %u pages", pages_nr);
-		return -ENOMEM;
-	}
-	memset(sg, 0, pages_nr * (sizeof(struct qdma_sw_sg) +
-			sizeof(struct page *)));
-	iocb->sgl = sg;
-
-	iocb->pages = (struct page **)(sg + pages_nr);
-	rv = get_user_pages_fast((unsigned long)buf, pages_nr, 1/* write */,
-				iocb->pages);
-	/* No pages were pinned */
-	if (rv < 0) {
-		pr_err("unable to pin down %u user pages, %d.\n",
-			pages_nr, rv);
-		goto err_out;
-	}
-	/* Less pages pinned than wanted */
-	if (rv != pages_nr) {
-		pr_err("unable to pin down all %u user pages, %d.\n",
-			pages_nr, rv);
-		iocb->pages_nr = rv;
-		rv = -EFAULT;
-		goto err_out;
-	}
-
-	for (i = 1; i < pages_nr; i++) {
-		if (iocb->pages[i - 1] == iocb->pages[i]) {
-			pr_err("duplicate pages, %d, %d.\n",
-				i - 1, i);
-			iocb->pages_nr = pages_nr;
-			rv = -EFAULT;
-			goto err_out;
-		}
-	}
-
-	sg = iocb->sgl;
-	for (i = 0; i < pages_nr; i++, sg++) {
-		unsigned int offset = offset_in_page(buf);
-		unsigned int nbytes = min_t(unsigned int, PAGE_SIZE - offset,
-						len);
-		struct page *pg = iocb->pages[i];
-
-		flush_dcache_page(pg);
-
-		sg->next = sg + 1;
-		sg->pg = pg;
-		sg->offset = offset;
-		sg->len = nbytes;
-		sg->dma_addr = 0UL;
-
-		buf += nbytes;
-		len -= nbytes;
-	}
-
-	iocb->sgl[pages_nr - 1].next = NULL;
-	iocb->pages_nr = pages_nr;
-	return 0;
-
-err_out:
-	unmap_user_buf(iocb, write);
-	iocb_release(iocb);
-
-	return rv;
-}
-
-static ssize_t cdev_gen_read_write(struct file *file, char __user *buf,
-		size_t count, loff_t *pos, bool write)
-{
-	struct qdma_cdev *xcdev = (struct qdma_cdev *)file->private_data;
-	struct qdma_io_cb iocb;
-	struct qdma_request *req = &iocb.req;
-	ssize_t res = 0;
-	int rv;
-	unsigned long qhndl;
-
-	if (!xcdev) {
-		pr_err("file 0x%p, xcdev NULL, 0x%p,%llu, pos %llu, W %d.\n",
-			file, buf, (u64)count, (u64)*pos, write);
-		return -EINVAL;
-	}
-
-	if (!xcdev->fp_rw) {
-		pr_err("file 0x%p, %s, NO rw, 0x%p,%llu, pos %llu, W %d.\n",
-			file, xcdev->name, buf, (u64)count, (u64)*pos, write);
-		return -EINVAL;
-	}
-
-	qhndl = write ? xcdev->h2c_qhndl : xcdev->c2h_qhndl;
-
-	pr_debug("%s, priv 0x%lx: buf 0x%p,%llu, pos %llu, W %d.\n",
-		xcdev->name, qhndl, buf, (u64)count, (u64)*pos,
-		write);
-
-	memset(&iocb, 0, sizeof(struct qdma_io_cb));
-	iocb.buf = buf;
-	iocb.len = count;
-	rv = map_user_buf_to_sgl(&iocb, write);
-	if (rv < 0)
-		return rv;
-
-	req->sgcnt = iocb.pages_nr;
-	req->sgl = iocb.sgl;
-	req->write = write ? 1 : 0;
-	req->dma_mapped = 0;
-	req->udd_len = 0;
-	req->ep_addr = (u64)*pos;
-	req->count = count;
-	req->timeout_ms = 10 * 1000;	/* 10 seconds */
-	req->fp_done = NULL;		/* blocking */
-	req->h2c_eot = 1;		/* set to 1 for STM tests */
-
-	res = xcdev->fp_rw(xcdev->xcb->xpdev->dev_hndl, qhndl, req);
-
-	unmap_user_buf(&iocb, write);
-	iocb_release(&iocb);
-
-	return res;
-}
-
-static ssize_t cdev_gen_write(struct file *file, const char __user *buf,
-				size_t count, loff_t *pos)
-{
-	return cdev_gen_read_write(file, (char *)buf, count, pos, 1);
-}
-
-static ssize_t cdev_gen_read(struct file *file, char __user *buf,
-				size_t count, loff_t *pos)
-{
-	return cdev_gen_read_write(file, (char *)buf, count, pos, 0);
-}
-
-static ssize_t cdev_aio_write(struct kiocb *iocb, const struct iovec *io,
-				unsigned long count, loff_t pos)
-{
-	struct qdma_cdev *xcdev =
-		(struct qdma_cdev *)iocb->ki_filp->private_data;
-	struct cdev_async_io *caio;
-	int rv = 0;
-	unsigned long i;
-	unsigned long qhndl;
-
-	if (!xcdev) {
-		pr_err("file 0x%p, xcdev NULL, %llu, pos %llu, W %d.\n",
-				iocb->ki_filp, (u64)count, (u64)pos, 1);
-		return -EINVAL;
-	}
-
-	if (!xcdev->fp_rw) {
-		pr_err("No Read write handler assigned\n");
-		return -EINVAL;
-	}
-
-	caio = kmem_cache_alloc(cdev_cache, GFP_KERNEL);
-	if (!caio) {
-		pr_err("Failed to allocate caio");
-		return -ENOMEM;
-	}
-	memset(caio, 0, sizeof(struct cdev_async_io));
-	caio->qiocb = kzalloc(count * (sizeof(struct qdma_io_cb) +
-			sizeof(struct qdma_request *)), GFP_KERNEL);
-	if (!caio->qiocb) {
-		pr_err("failed to allocate qiocb");
-		return -ENOMEM;
-	}
-
-	caio->reqv = (struct qdma_request **)(caio->qiocb + count);
-	for (i = 0; i < count; i++) {
-		caio->qiocb[i].private = caio;
-		caio->reqv[i] = &(caio->qiocb[i].req);
-		caio->qiocb[i].buf = io[i].iov_base;
-		caio->qiocb[i].len = io[i].iov_len;
-		rv = map_user_buf_to_sgl(&(caio->qiocb[i]), true);
-		if (rv < 0)
-			break;
-
-		caio->reqv[i]->write = 1;
-		caio->reqv[i]->sgcnt = caio->qiocb[i].pages_nr;
-		caio->reqv[i]->sgl = caio->qiocb[i].sgl;
-		caio->reqv[i]->dma_mapped = false;
-		caio->reqv[i]->udd_len = 0;
-		caio->reqv[i]->ep_addr = (u64)pos;
-		pos += io[i].iov_len;
-		caio->reqv[i]->no_memcpy = xcdev->no_memcpy ? 1 : 0;
-		caio->reqv[i]->count = io->iov_len;
-		caio->reqv[i]->timeout_ms = 10 * 1000;	/* 10 seconds */
-		caio->reqv[i]->fp_done = qdma_req_completed;
-
-	}
-	if (i > 0) {
-		iocb->private = caio;
-		caio->iocb = iocb;
-		caio->req_count = i;
-		qhndl = xcdev->h2c_qhndl;
-		rv = xcdev->fp_aiorw(xcdev->xcb->xpdev->dev_hndl, qhndl,
-				     caio->req_count, caio->reqv);
-		if (rv >= 0)
-			rv = -EIOCBQUEUED;
-	} else {
-		pr_err("failed with %d for %lu reqs", rv, caio->req_count);
-		kfree(caio->qiocb);
-		kmem_cache_free(cdev_cache, caio);
-	}
-
-	return rv;
-}
-
-static ssize_t cdev_aio_read(struct kiocb *iocb, const struct iovec *io,
-						unsigned long count, loff_t pos)
-{
-	struct qdma_cdev *xcdev =
-		(struct qdma_cdev *)iocb->ki_filp->private_data;
-	struct cdev_async_io *caio;
-	int rv = 0;
-	unsigned long i;
-	unsigned long qhndl;
-
-	if (!xcdev) {
-		pr_err("file 0x%p, xcdev NULL, %llu, pos %llu, W %d.\n",
-				iocb->ki_filp, (u64)count, (u64)pos, 1);
-		return -EINVAL;
-	}
-
-	if (!xcdev->fp_rw) {
-		pr_err("No Read write handler assigned\n");
-		return -EINVAL;
-	}
-
-	caio = kmem_cache_alloc(cdev_cache, GFP_KERNEL);
-	if (!caio) {
-		pr_err("failed to allocate qiocb");
-		return -ENOMEM;
-	}
-	memset(caio, 0, sizeof(struct cdev_async_io));
-	caio->qiocb = kzalloc(count * (sizeof(struct qdma_io_cb) +
-			sizeof(struct qdma_request *)), GFP_KERNEL);
-	if (!caio->qiocb) {
-		pr_err("failed to allocate qiocb");
-		return -ENOMEM;
-	}
-
-	caio->reqv = (struct qdma_request **)(caio->qiocb + count);
-	for (i = 0; i < count; i++) {
-		caio->qiocb[i].private = caio;
-		caio->reqv[i] = &(caio->qiocb[i].req);
-		caio->qiocb[i].buf = io[i].iov_base;
-		caio->qiocb[i].len = io[i].iov_len;
-		rv = map_user_buf_to_sgl(&(caio->qiocb[i]), false);
-		if (rv < 0)
-			break;
-
-		caio->reqv[i]->write = 0;
-		caio->reqv[i]->sgcnt = caio->qiocb[i].pages_nr;
-		caio->reqv[i]->sgl = caio->qiocb[i].sgl;
-		caio->reqv[i]->dma_mapped = false;
-		caio->reqv[i]->udd_len = 0;
-		caio->reqv[i]->ep_addr = (u64)pos;
-		pos += io[i].iov_len;
-		caio->reqv[i]->no_memcpy = xcdev->no_memcpy ? 1 : 0;
-		caio->reqv[i]->count = io->iov_len;
-		caio->reqv[i]->timeout_ms = 10 * 1000;	/* 10 seconds */
-		caio->reqv[i]->fp_done = qdma_req_completed;
-	}
-	if (i > 0) {
-		iocb->private = caio;
-		caio->iocb = iocb;
-		caio->req_count = i;
-		qhndl = xcdev->c2h_qhndl;
-		rv = xcdev->fp_aiorw(xcdev->xcb->xpdev->dev_hndl, qhndl,
-				     caio->req_count, caio->reqv);
-		if (rv >= 0)
-			rv = -EIOCBQUEUED;
-	} else {
-		pr_err("failed with %d for %lu reqs", rv, caio->req_count);
-		kfree(caio->qiocb);
-		kmem_cache_free(cdev_cache, caio);
-	}
-
-	return rv;
-}
-
-#if KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-static ssize_t cdev_write_iter(struct kiocb *iocb, struct iov_iter *io)
-{
-	return cdev_aio_write(iocb, io->iov, io->nr_segs, iocb->ki_pos);
-}
-
-static ssize_t cdev_read_iter(struct kiocb *iocb, struct iov_iter *io)
-{
-	return cdev_aio_read(iocb, io->iov, io->nr_segs, iocb->ki_pos);
-}
-#endif
-
-static const struct file_operations cdev_gen_fops = {
-	.owner = THIS_MODULE,
-	.open = cdev_gen_open,
-	.release = cdev_gen_close,
-	.write = cdev_gen_write,
-#if KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-	.write_iter = cdev_write_iter,
-#else
-	.aio_write = cdev_aio_write,
-#endif
-	.read = cdev_gen_read,
-#if KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-	.read_iter = cdev_read_iter,
-#else
-	.aio_read = cdev_aio_read,
-#endif
-	.unlocked_ioctl = cdev_gen_ioctl,
-	.llseek = cdev_gen_llseek,
-};
-
-/*
- * xcb: per pci device character device control info.
- * xcdev: per queue character device
- */
-void qdma_cdev_destroy(struct qdma_cdev *xcdev)
-{
-
-	if (!xcdev) {
-		pr_err("xcdev is NULL.\n");
-		return;
-	}
-	pr_debug("destroying cdev %p", xcdev);
-
-	if (xcdev->sys_device)
-		device_destroy(qdma_class, xcdev->cdevno);
-
-	cdev_del(&xcdev->cdev);
-
-	kfree(xcdev);
-}
-
-int qdma_cdev_create(struct qdma_cdev_cb *xcb, struct pci_dev *pdev,
-			struct qdma_queue_conf *qconf, unsigned int minor,
-			unsigned long qhndl, struct qdma_cdev **xcdev_pp,
-			char *ebuf, int ebuflen)
-{
-	struct qdma_cdev *xcdev;
-	int rv;
-	unsigned long *priv_data;
-
-	xcdev = kzalloc(sizeof(struct qdma_cdev) + strlen(qconf->name) + 1,
-			GFP_KERNEL);
-	if (!xcdev) {
-		pr_err("%s failed to allocate cdev %lu.\n",
-		       qconf->name, sizeof(struct qdma_cdev));
-		if (ebuf && ebuflen) {
-			rv = snprintf(ebuf, ebuflen,
-				"%s failed to allocate cdev %lu.\n",
-				qconf->name, sizeof(struct qdma_cdev));
-			ebuf[rv] = '\0';
-
-		}
-		return -ENOMEM;
-	}
-
-	xcdev->cdev.owner = THIS_MODULE;
-	xcdev->xcb = xcb;
-	priv_data = (qconf->q_type == Q_C2H) ?
-			&xcdev->c2h_qhndl : &xcdev->h2c_qhndl;
-	*priv_data = qhndl;
-	xcdev->dir_init = (1 << qconf->q_type);
-	strcpy(xcdev->name, qconf->name);
-
-	xcdev->minor = minor;
-	if (xcdev->minor >= xcb->cdev_minor_cnt) {
-		pr_err("%s: no char dev. left.\n", qconf->name);
-		if (ebuf && ebuflen) {
-			rv = snprintf(ebuf, ebuflen, "%s cdev no cdev left.\n",
-					qconf->name);
-			ebuf[rv] = '\0';
-		}
-		rv = -ENOSPC;
-		goto err_out;
-	}
-	xcdev->cdevno = MKDEV(xcb->cdev_major, xcdev->minor);
-
-	cdev_init(&xcdev->cdev, &cdev_gen_fops);
-
-	/* bring character device live */
-	rv = cdev_add(&xcdev->cdev, xcdev->cdevno, 1);
-	if (rv < 0) {
-		pr_err("cdev_add failed %d, %s.\n", rv, xcdev->name);
-		if (ebuf && ebuflen) {
-			int l = snprintf(ebuf, ebuflen,
-					"%s cdev add failed %d.\n",
-					qconf->name, rv);
-			ebuf[l] = '\0';
-		}
-		goto err_out;
-	}
-
-	/* create device on our class */
-	if (qdma_class) {
-		xcdev->sys_device = device_create(qdma_class, &(pdev->dev),
-				xcdev->cdevno, NULL, "%s", xcdev->name);
-		if (IS_ERR(xcdev->sys_device)) {
-			rv = PTR_ERR(xcdev->sys_device);
-			pr_err("%s device_create failed %d.\n",
-				xcdev->name, rv);
-			if (ebuf && ebuflen) {
-				int l = snprintf(ebuf, ebuflen,
-						"%s device_create failed %d.\n",
-						qconf->name, rv);
-				ebuf[l] = '\0';
-			}
-			goto del_cdev;
-		}
-	}
-
-	xcdev->fp_rw = qdma_request_submit;
-	xcdev->fp_aiorw = qdma_batch_request_submit;
-
-	*xcdev_pp = xcdev;
-	return 0;
-
-del_cdev:
-	cdev_del(&xcdev->cdev);
-
-err_out:
-	kfree(xcdev);
-	return rv;
-}
-
-/*
- * per device initialization & cleanup
- */
-void qdma_cdev_device_cleanup(struct qdma_cdev_cb *xcb)
-{
-	if (!xcb->cdev_major)
-		return;
-
-	xcb->cdev_major = 0;
-}
-
-int qdma_cdev_device_init(struct qdma_cdev_cb *xcb)
-{
-	dev_t dev;
-	int rv;
-	struct xlnx_phy_dev *phy_dev, *tmp, *new_phy_dev;
-	struct xlnx_dma_dev *xdev = NULL;
-
-	spin_lock_init(&xcb->lock);
-
-	xcb->cdev_minor_cnt = QDMA_MINOR_MAX;
-
-	if (xcb->cdev_major) {
-		pr_warn("major %d already exist.\n", xcb->cdev_major);
-		return -EINVAL;
-	}
-
-	/* Check if same bus id device is added in global list
-	 * If found then assign same major number
-	 */
-	mutex_lock(&xlnx_phy_dev_mutex);
-	xdev = (struct xlnx_dma_dev *)xcb->xpdev->dev_hndl;
-	list_for_each_entry_safe(phy_dev, tmp, &xlnx_phy_dev_list, list_head) {
-		if (phy_dev->device_bus == xcb->xpdev->pdev->bus->number &&
-			phy_dev->dma_device_index == xdev->dma_device_index) {
-			xcb->cdev_major = phy_dev->major;
-			mutex_unlock(&xlnx_phy_dev_mutex);
-			return 0;
-		}
-	}
-	mutex_unlock(&xlnx_phy_dev_mutex);
-
-	/* allocate a dynamically allocated char device node */
-	rv = alloc_chrdev_region(&dev, 0, xcb->cdev_minor_cnt,
-			QDMA_CDEV_CLASS_NAME);
-	if (rv) {
-		pr_err("unable to allocate cdev region %d.\n", rv);
-		return rv;
-	}
-	xcb->cdev_major = MAJOR(dev);
-
-	new_phy_dev = kzalloc(sizeof(struct xlnx_phy_dev), GFP_KERNEL);
-	if (!new_phy_dev) {
-		pr_err("unable to allocate xlnx_dev.\n");
-		return -ENOMEM;
-	}
-
-	new_phy_dev->major = xcb->cdev_major;
-	new_phy_dev->device_bus = xcb->xpdev->pdev->bus->number;
-	new_phy_dev->dma_device_index = xdev->dma_device_index;
-	xlnx_phy_dev_list_add(new_phy_dev);
-
-	return 0;
-}
-
-/*
- * driver-wide Initialization & cleanup
- */
-
-int qdma_cdev_init(void)
-{
-	qdma_class = class_create(THIS_MODULE, QDMA_CDEV_CLASS_NAME);
-	if (IS_ERR(qdma_class)) {
-		pr_err("%s: failed to create class 0x%lx.",
-			QDMA_CDEV_CLASS_NAME, (unsigned long)qdma_class);
-		qdma_class = NULL;
-		return -ENODEV;
-	}
-	/* using kmem_cache_create to enable sequential cleanup */
-	cdev_cache = kmem_cache_create("cdev_cache",
-					sizeof(struct cdev_async_io),
-					0,
-					SLAB_HWCACHE_ALIGN,
-					NULL);
-	if (!cdev_cache) {
-		pr_err("failed to allocate cdev_cache\n");
-		return -ENOMEM;
-	}
-
-	return 0;
-}
-
-void qdma_cdev_cleanup(void)
-{
-	struct xlnx_phy_dev *phy_dev, *tmp;
-
-	list_for_each_entry_safe(phy_dev, tmp, &xlnx_phy_dev_list, list_head) {
-		unregister_chrdev_region(MKDEV(phy_dev->major, 0),
-				QDMA_MINOR_MAX);
-		xlnx_phy_dev_list_remove(phy_dev);
-		kfree(phy_dev);
-	}
-
-	kmem_cache_destroy(cdev_cache);
-	if (qdma_class)
-		class_destroy(qdma_class);
-
-}
diff --git a/QDMA/linux-kernel/driver/src/cdev.h b/QDMA/linux-kernel/driver/src/cdev.h
deleted file mode 100755
index 371e528..0000000
--- a/QDMA/linux-kernel/driver/src/cdev.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_CDEV_H__
-#define __QDMA_CDEV_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma pcie kernel module
- *
- */
-#include <linux/cdev.h>
-#include "version.h"
-#include <linux/spinlock_types.h>
-
-#include "libqdma/libqdma_export.h"
-#include <linux/workqueue.h>
-
-/** QDMA character device class name */
-#define QDMA_CDEV_CLASS_NAME  DRV_MODULE_NAME
-/** QDMA character device max minor number to support 4k queues */
-#define QDMA_MINOR_MAX (4096)
-
-/* per pci device control */
-/**
- * @struct - qdma_cdev_cb
- * @brief	QDMA character device call back data
- */
-struct qdma_cdev_cb {
-	/** pointer to xilinx pcie device */
-	struct xlnx_pci_dev *xpdev;
-	/** character device lock  */
-	spinlock_t lock;
-	/** character device major number  */
-	int cdev_major;
-	/** character device minor number count  */
-	int cdev_minor_cnt;
-};
-
-/**
- * @struct - qdma_cdev
- * @brief	QDMA character device book keeping parameters
- */
-struct qdma_cdev {
-	/** lsit of qdma character devices */
-	struct list_head list_head;
-	/** minor number */
-	int minor;
-	/** character device number */
-	dev_t cdevno;
-	/** pointer to qdma character device call back data */
-	struct qdma_cdev_cb *xcb;
-	/** pointer to kernel device(struct device) */
-	struct device *sys_device;
-	/** pointer to kernel cdev(struct cdev) */
-	struct cdev cdev;
-	/** c2h queue handle */
-	unsigned long c2h_qhndl;
-	/** hec queue handle */
-	unsigned long h2c_qhndl;
-	/** direction */
-	unsigned short dir_init;
-	/* flag to indicate if memcpy is required */
-	unsigned char no_memcpy;
-	/** call back function for open a device */
-	int (*fp_open_extra)(struct qdma_cdev *xcdev);
-	/** call back function for close a device */
-	int (*fp_close_extra)(struct qdma_cdev *xcdev);
-	/** call back function to handle ioctl message */
-	long (*fp_ioctl_extra)(struct qdma_cdev *xcdev, unsigned int cmd,
-			unsigned long arg);
-	/** call back function to handle read write request*/
-	ssize_t (*fp_rw)(unsigned long dev_hndl, unsigned long qhndl,
-			struct qdma_request *req);
-	ssize_t (*fp_aiorw)(unsigned long dev_hndl, unsigned long qhndl,
-			unsigned long count, struct qdma_request **reqv);
-	/** name of the character device*/
-	char name[0];
-};
-
-/**
- * @struct - qdma_io_cb
- * @brief	QDMA character device io call back book keeping parameters
- */
-struct qdma_io_cb {
-	void *private;
-	/** user buffer */
-	void __user *buf;
-	/** length of the user buffer */
-	size_t len;
-	/** page number */
-	unsigned int pages_nr;
-	/** scatter gather list */
-	struct qdma_sw_sg *sgl;
-	/** pages allocated to accommodate the scatter gather list */
-	struct page **pages;
-	/** qdma request */
-	struct qdma_request req;
-};
-
-/*****************************************************************************/
-/**
- * qdma_cdev_destroy() - handler to destroy the character device
- *
- * @param[in]	xcdev: pointer to character device
- *
- * @return	none
- *****************************************************************************/
-void qdma_cdev_destroy(struct qdma_cdev *xcdev);
-
-/*****************************************************************************/
-/**
- * qdma_cdev_create() - handler to create a character device
- *
- * @param[in]	xcb:	pointer to qdma character device call back data
- * @param[in]	pdev: pointer to struct pci_dev
- * @param[in]	qconf: queue configurations
- * @param[in]	minor: character device minor number
- * @param[in]	ebuflen:	buffer length
- * @param[in]	qhndl: queue handle
- * @param[out]	xcdev_pp: pointer to struct qdma_cdev
- * @param[out]	ebuf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_cdev_create(struct qdma_cdev_cb *xcb, struct pci_dev *pdev,
-			struct qdma_queue_conf *qconf, unsigned int minor,
-			unsigned long qhndl, struct qdma_cdev **xcdev_pp,
-			char *ebuf, int ebuflen);
-
-/*****************************************************************************/
-/**
- * qdma_cdev_device_cleanup() - handler to clean up a character device
- *
- * @param[in]	xcb: pointer to qdma character device call back data
- *
- * @return	none
- *****************************************************************************/
-void qdma_cdev_device_cleanup(struct qdma_cdev_cb *xcb);
-
-/*****************************************************************************/
-/**
- * qdma_cdev_device_init() - handler to initialize a character device
- *
- * @param[in]	xcb: pointer to qdma character device call back data
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_cdev_device_init(struct qdma_cdev_cb *xcb);
-
-/*****************************************************************************/
-/**
- * qdma_cdev_cleanup() - character device cleanup handler
- *
- *****************************************************************************/
-void qdma_cdev_cleanup(void);
-
-/*****************************************************************************/
-/**
- * qdma_cdev_init() - character device initialization handler
- *
- *****************************************************************************/
-int qdma_cdev_init(void);
-
-#endif /* ifndef __QDMA_CDEV_H__ */
diff --git a/QDMA/linux-kernel/driver/src/nl.c b/QDMA/linux-kernel/driver/src/nl.c
deleted file mode 100755
index 5a3da36..0000000
--- a/QDMA/linux-kernel/driver/src/nl.c
+++ /dev/null
@@ -1,2902 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <linux/version.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <net/genetlink.h>
-
-#include "libqdma/libqdma_export.h"
-#include "qdma_mod.h"
-#include "qdma_nl.h"
-#include "nl.h"
-#include "version.h"
-
-#define QDMA_C2H_DEFAULT_BUF_SZ (4096)
-#define DUMP_LINE_SZ			(81)
-#define QDMA_Q_DUMP_MAX_QUEUES	(100)
-#define QDMA_Q_DUMP_LINE_SZ	(25 * 1024)
-#define QDMA_Q_LIST_LINE_SZ	(200)
-
-static int xnl_dev_list(struct sk_buff *skb2, struct genl_info *info);
-
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(8, 3) > RHEL_RELEASE_CODE
-static struct nla_policy xnl_policy[XNL_ATTR_MAX] = {
-	[XNL_ATTR_GENMSG] =		{ .type = NLA_NUL_STRING },
-
-	[XNL_ATTR_DRV_INFO] =		{ .type = NLA_NUL_STRING },
-
-	[XNL_ATTR_DEV_IDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_BUS] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_DEV] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_FUNC] =		{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_CFG_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_USR_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_QSET_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_QSET_QBASE] =	{ .type = NLA_U32 },
-
-	[XNL_ATTR_VERSION_INFO] =	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_DEVICE_TYPE]	=	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_IP_TYPE]	=	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_DEV_NUMQS] =          { .type = NLA_U32 },
-	[XNL_ATTR_DEV_NUM_PFS] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_CHANNEL_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MAILBOX_ENABLE] = { .type = NLA_U32 },
-	[XNL_ATTR_DEV_FLR_PRESENT] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_ST_ENABLE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_ENABLE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_CMPT_ENABLE] =	{ .type = NLA_U32 },
-
-	[XNL_ATTR_REG_BAR_NUM] =	{ .type = NLA_U32 },
-	[XNL_ATTR_REG_ADDR] =		{ .type = NLA_U32 },
-	[XNL_ATTR_REG_VAL] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_QIDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_NUM_Q] =		{ .type = NLA_U32 },
-	[XNL_ATTR_QFLAG] =		{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_DESC_SIZE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_SW_DESC_SIZE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_QRNGSZ_IDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_C2H_BUFSZ_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_TIMER_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_CNTR_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_MM_CHANNEL] =		{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_TRIG_MODE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_ENTRIES_CNT] =	{ .type = NLA_U32 },
-	[XNL_ATTR_RANGE_START] =	{ .type = NLA_U32 },
-	[XNL_ATTR_RANGE_END] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_INTR_VECTOR_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_GL_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_FLOW_ID] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_SLR_ID] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_TDEST] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_DEV_STM_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_Q_STATE]   =		{ .type = NLA_U32 },
-	[XNL_ATTR_ERROR]   =		{ .type = NLA_U32 },
-	[XNL_ATTR_PING_PONG_EN]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV]		=	{ .type = NLA_BINARY,
-					  .len = QDMA_DEV_ATTR_STRUCT_SIZE, },
-	[XNL_ATTR_GLOBAL_CSR]		=	{ .type = NLA_BINARY,
-				.len = QDMA_DEV_GLOBAL_CSR_STRUCT_SIZE, },
-#ifdef ERR_DEBUG
-	[XNL_ATTR_QPARAM_ERR_INFO] =    { .type = NLA_U32 },
-#endif
-};
-#endif
-#else
-#if ((KERNEL_VERSION(5, 2, 0) > LINUX_VERSION_CODE) || (LINUX_VERSION_CODE > \
-		KERNEL_VERSION(5, 9, 0)))
-static struct nla_policy xnl_policy[XNL_ATTR_MAX] = {
-	[XNL_ATTR_GENMSG] =		{ .type = NLA_NUL_STRING },
-
-	[XNL_ATTR_DRV_INFO] =		{ .type = NLA_NUL_STRING },
-
-	[XNL_ATTR_DEV_IDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_BUS] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_DEV] =		{ .type = NLA_U32 },
-	[XNL_ATTR_PCI_FUNC] =		{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_CFG_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_USR_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_QSET_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_QSET_QBASE] =	{ .type = NLA_U32 },
-
-	[XNL_ATTR_VERSION_INFO] =	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_DEVICE_TYPE]	=	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_IP_TYPE]	=	{ .type = NLA_NUL_STRING },
-	[XNL_ATTR_DEV_NUMQS] =          { .type = NLA_U32 },
-	[XNL_ATTR_DEV_NUM_PFS] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_CHANNEL_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MAILBOX_ENABLE] = { .type = NLA_U32 },
-	[XNL_ATTR_DEV_FLR_PRESENT] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_ST_ENABLE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_ENABLE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_MM_CMPT_ENABLE] =	{ .type = NLA_U32 },
-
-	[XNL_ATTR_REG_BAR_NUM] =	{ .type = NLA_U32 },
-	[XNL_ATTR_REG_ADDR] =		{ .type = NLA_U32 },
-	[XNL_ATTR_REG_VAL] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_CSR_INDEX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_CSR_COUNT] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_QIDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_NUM_Q] =		{ .type = NLA_U32 },
-	[XNL_ATTR_QFLAG] =		{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_DESC_SIZE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_SW_DESC_SIZE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_QRNGSZ_IDX] =		{ .type = NLA_U32 },
-	[XNL_ATTR_C2H_BUFSZ_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_TIMER_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_CNTR_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_MM_CHANNEL] =		{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_TRIG_MODE] =	{ .type = NLA_U32 },
-	[XNL_ATTR_CMPT_ENTRIES_CNT] =	{ .type = NLA_U32 },
-	[XNL_ATTR_RANGE_START] =	{ .type = NLA_U32 },
-	[XNL_ATTR_RANGE_END] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_INTR_VECTOR_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_INTR_VECTOR_START_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_INTR_VECTOR_END_IDX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_RSP_BUF_LEN] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_GL_MAX] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_FLOW_ID] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_SLR_ID] =	{ .type = NLA_U32 },
-	[XNL_ATTR_PIPE_TDEST] =		{ .type = NLA_U32 },
-
-	[XNL_ATTR_DEV_STM_BAR] =	{ .type = NLA_U32 },
-	[XNL_ATTR_Q_STATE]   =		{ .type = NLA_U32 },
-	[XNL_ATTR_ERROR]   =		{ .type = NLA_U32 },
-	[XNL_ATTR_PING_PONG_EN]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_APERTURE_SZ]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATMAX1]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATMAX2]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATAVG1]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV_STAT_PING_PONG_LATAVG2]   =	{ .type = NLA_U32 },
-	[XNL_ATTR_DEV]		=	{ .type = NLA_BINARY,
-					  .len = QDMA_DEV_ATTR_STRUCT_SIZE, },
-	[XNL_ATTR_GLOBAL_CSR]		=	{ .type = NLA_BINARY,
-				.len = QDMA_DEV_GLOBAL_CSR_STRUCT_SIZE, },
-#ifdef ERR_DEBUG
-	[XNL_ATTR_QPARAM_ERR_INFO] =    { .type = NLA_U32 },
-#endif
-};
-#endif
-#endif
-
-static int xnl_respond_buffer_cmpt(struct genl_info *info, char *buf,
-		int buflen, int error, long int cmpt_entries);
-
-static int xnl_dev_info(struct sk_buff *, struct genl_info *);
-static int xnl_dev_version_capabilities(struct sk_buff *skb2,
-		struct genl_info *info);
-static int xnl_dev_stat(struct sk_buff *, struct genl_info *);
-static int xnl_dev_stat_clear(struct sk_buff *, struct genl_info *);
-static int xnl_q_list(struct sk_buff *, struct genl_info *);
-static int xnl_q_add(struct sk_buff *, struct genl_info *);
-static int xnl_q_start(struct sk_buff *, struct genl_info *);
-static int xnl_q_stop(struct sk_buff *, struct genl_info *);
-static int xnl_q_del(struct sk_buff *, struct genl_info *);
-static int xnl_q_dump(struct sk_buff *, struct genl_info *);
-static int xnl_q_dump_desc(struct sk_buff *, struct genl_info *);
-static int xnl_q_dump_cmpt(struct sk_buff *, struct genl_info *);
-static int xnl_config_reg_dump(struct sk_buff *, struct genl_info *);
-static int xnl_q_read_pkt(struct sk_buff *, struct genl_info *);
-static int xnl_q_read_udd(struct sk_buff *, struct genl_info *);
-static int xnl_q_cmpt_read(struct sk_buff *, struct genl_info *);
-static int xnl_intr_ring_dump(struct sk_buff *, struct genl_info *);
-static int xnl_register_read(struct sk_buff *, struct genl_info *);
-static int xnl_register_write(struct sk_buff *, struct genl_info *);
-static int xnl_get_global_csr(struct sk_buff *skb2, struct genl_info *info);
-static int xnl_get_queue_state(struct sk_buff *, struct genl_info *);
-static int xnl_config_reg_info_dump(struct sk_buff *, struct genl_info *);
-
-#ifdef TANDEM_BOOT_SUPPORTED
-static int xnl_en_st(struct sk_buff *skb2, struct genl_info *info);
-#endif
-
-#ifdef ERR_DEBUG
-static int xnl_err_induce(struct sk_buff *skb2, struct genl_info *info);
-#endif
-
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(8, 3) > RHEL_RELEASE_CODE
-#define GENL_OPS_POLICY
-#endif
-#else
-#if ((KERNEL_VERSION(5, 2, 0) > LINUX_VERSION_CODE) || (LINUX_VERSION_CODE > \
-		KERNEL_VERSION(5, 9, 0)))
-#define GENL_OPS_POLICY
-#endif
-#endif
-
-#ifdef GENL_OPS_POLICY
-static struct genl_ops xnl_ops[] = {
-	{
-		.cmd = XNL_CMD_DEV_LIST,
-		.policy = xnl_policy,
-		.doit = xnl_dev_list,
-	},
-	{
-		.cmd = XNL_CMD_DEV_CAP,
-		.policy = xnl_policy,
-		.doit = xnl_dev_version_capabilities,
-	},
-	{
-		.cmd = XNL_CMD_DEV_INFO,
-		.policy = xnl_policy,
-		.doit = xnl_dev_info,
-	},
-	{
-		.cmd = XNL_CMD_DEV_STAT,
-		.policy = xnl_policy,
-		.doit = xnl_dev_stat,
-	},
-	{
-		.cmd = XNL_CMD_DEV_STAT_CLEAR,
-		.policy = xnl_policy,
-		.doit = xnl_dev_stat_clear,
-	},
-	{
-		.cmd = XNL_CMD_Q_LIST,
-		.policy = xnl_policy,
-		.doit = xnl_q_list,
-	},
-	{
-		.cmd = XNL_CMD_Q_ADD,
-		.policy = xnl_policy,
-		.doit = xnl_q_add,
-	},
-	{
-		.cmd = XNL_CMD_Q_START,
-		.policy = xnl_policy,
-		.doit = xnl_q_start,
-	},
-	{
-		.cmd = XNL_CMD_Q_STOP,
-		.policy = xnl_policy,
-		.doit = xnl_q_stop,
-	},
-	{
-		.cmd = XNL_CMD_Q_DEL,
-		.policy = xnl_policy,
-		.doit = xnl_q_del,
-	},
-	{
-		.cmd = XNL_CMD_Q_DUMP,
-		.policy = xnl_policy,
-		.doit = xnl_q_dump,
-	},
-	{
-		.cmd = XNL_CMD_Q_DESC,
-		.policy = xnl_policy,
-		.doit = xnl_q_dump_desc,
-	},
-	{
-		.cmd = XNL_CMD_REG_DUMP,
-		.policy = xnl_policy,
-		.doit = xnl_config_reg_dump,
-	},
-	{
-		.cmd = XNL_CMD_REG_INFO_READ,
-		.policy = xnl_policy,
-		.doit = xnl_config_reg_info_dump,
-	},
-	{
-		.cmd = XNL_CMD_Q_CMPT,
-		.policy = xnl_policy,
-		.doit = xnl_q_dump_cmpt,
-	},
-	{
-		.cmd = XNL_CMD_Q_UDD,
-		.policy = xnl_policy,
-		.doit = xnl_q_read_udd,
-	},
-	{
-		.cmd = XNL_CMD_Q_RX_PKT,
-		.policy = xnl_policy,
-		.doit = xnl_q_read_pkt,
-	},
-	{
-		.cmd = XNL_CMD_Q_CMPT_READ,
-		.policy = xnl_policy,
-		.doit = xnl_q_cmpt_read,
-	},
-	{
-		.cmd = XNL_CMD_INTR_RING_DUMP,
-		.policy = xnl_policy,
-		.doit = xnl_intr_ring_dump,
-	},
-	{
-		.cmd = XNL_CMD_REG_RD,
-		.policy = xnl_policy,
-		.doit = xnl_register_read,
-	},
-	{
-		.cmd = XNL_CMD_REG_WRT,
-		.policy = xnl_policy,
-		.doit = xnl_register_write,
-	},
-	{
-		.cmd = XNL_CMD_GLOBAL_CSR,
-		.policy = xnl_policy,
-		.doit = xnl_get_global_csr,
-	},
-	{
-		.cmd = XNL_CMD_GET_Q_STATE,
-		.policy = xnl_policy,
-		.doit = xnl_get_queue_state,
-	},
-
-#ifdef TANDEM_BOOT_SUPPORTED
-	{
-		.cmd = XNL_CMD_EN_ST,
-		.policy = xnl_policy,
-		.doit = xnl_en_st,
-	},
-#endif
-
-#ifdef ERR_DEBUG
-	{
-		.cmd = XNL_CMD_Q_ERR_INDUCE,
-		.policy = xnl_policy,
-		.doit = xnl_err_induce,
-	}
-#endif
-};
-#else
-static struct genl_ops xnl_ops[] = {
-	{
-		.cmd = XNL_CMD_DEV_LIST,
-		.doit = xnl_dev_list,
-	},
-	{
-		.cmd = XNL_CMD_DEV_CAP,
-		.doit = xnl_dev_version_capabilities,
-	},
-	{
-		.cmd = XNL_CMD_DEV_INFO,
-		.doit = xnl_dev_info,
-	},
-	{
-		.cmd = XNL_CMD_DEV_STAT,
-		.doit = xnl_dev_stat,
-	},
-	{
-		.cmd = XNL_CMD_DEV_STAT_CLEAR,
-		.doit = xnl_dev_stat_clear,
-	},
-	{
-		.cmd = XNL_CMD_Q_LIST,
-		.doit = xnl_q_list,
-	},
-	{
-		.cmd = XNL_CMD_Q_ADD,
-		.doit = xnl_q_add,
-	},
-	{
-		.cmd = XNL_CMD_Q_START,
-		.doit = xnl_q_start,
-	},
-	{
-		.cmd = XNL_CMD_Q_STOP,
-		.doit = xnl_q_stop,
-	},
-	{
-		.cmd = XNL_CMD_Q_DEL,
-		.doit = xnl_q_del,
-	},
-	{
-		.cmd = XNL_CMD_Q_DUMP,
-		.doit = xnl_q_dump,
-	},
-	{
-		.cmd = XNL_CMD_Q_DESC,
-		.doit = xnl_q_dump_desc,
-	},
-	{
-		.cmd = XNL_CMD_REG_DUMP,
-		.doit = xnl_config_reg_dump,
-	},
-	{
-		.cmd = XNL_CMD_REG_INFO_READ,
-		.doit = xnl_config_reg_info_dump,
-	},
-	{
-		.cmd = XNL_CMD_Q_CMPT,
-		.doit = xnl_q_dump_cmpt,
-	},
-	{
-		.cmd = XNL_CMD_Q_UDD,
-		.doit = xnl_q_read_udd,
-	},
-	{
-		.cmd = XNL_CMD_Q_RX_PKT,
-		.doit = xnl_q_read_pkt,
-	},
-	{
-		.cmd = XNL_CMD_Q_CMPT_READ,
-		.doit = xnl_q_cmpt_read,
-	},
-	{
-		.cmd = XNL_CMD_INTR_RING_DUMP,
-		.doit = xnl_intr_ring_dump,
-	},
-	{
-		.cmd = XNL_CMD_REG_RD,
-		.doit = xnl_register_read,
-	},
-	{
-		.cmd = XNL_CMD_REG_WRT,
-		.doit = xnl_register_write,
-	},
-	{
-		.cmd = XNL_CMD_GLOBAL_CSR,
-		.doit = xnl_get_global_csr,
-	},
-	{
-		.cmd = XNL_CMD_GET_Q_STATE,
-		.doit = xnl_get_queue_state,
-	},
-
-#ifdef TANDEM_BOOT_SUPPORTED
-	{
-		.cmd = XNL_CMD_EN_ST,
-		.doit = xnl_en_st,
-	},
-#endif
-
-#ifdef ERR_DEBUG
-	{
-		.cmd = XNL_CMD_Q_ERR_INDUCE,
-		.doit = xnl_err_induce,
-	}
-#endif
-};
-#endif
-
-static struct genl_family xnl_family = {
-#ifdef GENL_ID_GENERATE
-	.id = GENL_ID_GENERATE,
-#endif
-	.hdrsize = 0,
-#ifdef __QDMA_VF__
-	.name = XNL_NAME_VF,
-#else
-	.name = XNL_NAME_PF,
-#endif
-#ifndef __GENL_REG_FAMILY_OPS_FUNC__
-	.ops = xnl_ops,
-	.n_ops = ARRAY_SIZE(xnl_ops),
-#endif
-	.maxattr = XNL_ATTR_MAX - 1,
-};
-
-static struct sk_buff *xnl_msg_alloc(enum xnl_op_t op, int min_sz,
-				void **hdr, struct genl_info *info)
-{
-	struct sk_buff *skb;
-	void *p;
-	unsigned long sz = min_sz < NLMSG_GOODSIZE ? NLMSG_GOODSIZE : min_sz;
-
-	skb = genlmsg_new(sz, GFP_KERNEL);
-	if (!skb) {
-		pr_err("failed to allocate skb %lu.\n", sz);
-		return NULL;
-	}
-
-	p = genlmsg_put(skb, 0, info->snd_seq + 1, &xnl_family, 0, op);
-	if (!p) {
-		pr_err("skb too small.\n");
-		nlmsg_free(skb);
-		return NULL;
-	}
-
-	*hdr = p;
-	return skb;
-}
-
-static inline int xnl_msg_add_attr_str(struct sk_buff *skb,
-					enum xnl_attr_t type, char *s)
-{
-	int rv;
-
-	rv = nla_put_string(skb, type, s);
-	if (rv != 0) {
-		pr_err("nla_put_string return %d.\n", rv);
-		return -EINVAL;
-	}
-	return 0;
-}
-
-static inline int xnl_msg_add_attr_data(struct sk_buff *skb,
-		enum xnl_attr_t type, void *s, unsigned int len)
-{
-	int rv;
-
-	rv = nla_put(skb, type, len, s);
-	if (rv != 0) {
-		pr_err("nla_put return %d.\n", rv);
-		return -EINVAL;
-	}
-	return 0;
-}
-
-
-static inline int xnl_msg_add_attr_uint(struct sk_buff *skb,
-					enum xnl_attr_t type, u32 v)
-{
-	int rv;
-
-	rv = nla_put_u32(skb, type, v);
-	if (rv != 0) {
-		pr_err("nla add dev_idx failed %d.\n", rv);
-		return -EINVAL;
-	}
-	return 0;
-}
-
-static inline int xnl_msg_send(struct sk_buff *skb_tx, void *hdr,
-				struct genl_info *info)
-{
-	int rv;
-
-	genlmsg_end(skb_tx, hdr);
-
-	rv = genlmsg_unicast(genl_info_net(info), skb_tx, info->snd_portid);
-	if (rv)
-		pr_err("send portid %d failed %d.\n", info->snd_portid, rv);
-
-	return 0;
-}
-
-#ifdef DEBUG
-static int xnl_dump_attrs(struct genl_info *info)
-{
-	int i;
-
-	pr_info("snd_seq 0x%x, portid 0x%x.\n",
-		info->snd_seq, info->snd_portid);
-#if 0
-	print_hex_dump_bytes("nlhdr", DUMP_PREFIX_OFFSET, info->nlhdr,
-			sizeof(struct nlmsghdr));
-	pr_info("\n"); {
-	print_hex_dump_bytes("genlhdr", DUMP_PREFIX_OFFSET, info->genlhdr,
-			sizeof(struct genlmsghdr));
-	pr_info("\n");
-#endif
-
-	pr_info("nlhdr: len %u, type %u, flags 0x%x, seq 0x%x, pid %u.\n",
-		info->nlhdr->nlmsg_len,
-		info->nlhdr->nlmsg_type,
-		info->nlhdr->nlmsg_flags,
-		info->nlhdr->nlmsg_seq,
-		info->nlhdr->nlmsg_pid);
-	pr_info("genlhdr: cmd 0x%x %s, version %u, reserved 0x%x.\n",
-		info->genlhdr->cmd, xnl_op_str[info->genlhdr->cmd],
-		info->genlhdr->version,
-		info->genlhdr->reserved);
-
-	for (i = 0; i < XNL_ATTR_MAX; i++) {
-		struct nlattr *na = info->attrs[i];
-
-		if (na) {
-#if ((KERNEL_VERSION(5, 2, 0) > LINUX_VERSION_CODE) || (LINUX_VERSION_CODE > \
-		KERNEL_VERSION(5, 9, 0)))
-			if (xnl_policy[i].type == NLA_NUL_STRING) {
-#else
-			if (1) {
-#endif
-
-				char *s = (char *)nla_data(na);
-
-				if (s)
-					pr_info("attr %d, %s, str %s.\n",
-						i, xnl_attr_str[i], s);
-				else
-					pr_info("attr %d, %s, str NULL.\n",
-						i, xnl_attr_str[i]);
-
-			} else {
-				u32 v = nla_get_u32(na);
-
-				pr_info("attr %s, u32 0x%x.\n",
-					xnl_attr_str[i], v);
-			}
-		}
-	}
-
-	return 0;
-}
-#else
-#define xnl_dump_attrs(info)
-#endif
-
-static int xnl_respond_buffer_cmpt(struct genl_info *info, char *buf,
-		int buflen, int error, long int cmpt_entries)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	int rv;
-
-	skb = xnl_msg_alloc(info->genlhdr->cmd, buflen, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	rv = xnl_msg_add_attr_str(skb, XNL_ATTR_GENMSG, buf);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		nlmsg_free(skb);
-		return rv;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_ERROR, error);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		nlmsg_free(skb);
-		return rv;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_CMPT_ENTRIES_CNT,
-			cmpt_entries);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		nlmsg_free(skb);
-		return rv;
-	}
-
-	rv = xnl_msg_send(skb, hdr, info);
-
-	return rv;
-}
-
-int xnl_respond_buffer(struct genl_info *info, char *buf, int buflen, int error)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	int rv;
-
-	skb = xnl_msg_alloc(info->genlhdr->cmd, buflen, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	rv = xnl_msg_add_attr_str(skb, XNL_ATTR_GENMSG, buf);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		nlmsg_free(skb);
-		return rv;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_ERROR, error);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		nlmsg_free(skb);
-		return rv;
-	}
-
-	rv = xnl_msg_send(skb, hdr, info);
-
-	return rv;
-}
-
-static int xnl_respond_data(struct genl_info *info, void *buf, int buflen)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	int rv;
-
-	skb = xnl_msg_alloc(info->genlhdr->cmd, buflen, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	rv = xnl_msg_add_attr_data(skb, XNL_ATTR_GLOBAL_CSR, buf, buflen);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_data() failed: %d", rv);
-		return rv;
-	}
-
-	rv = xnl_msg_send(skb, hdr, info);
-	return rv;
-}
-
-static char *xnl_mem_alloc(int l, struct genl_info *info)
-{
-	char ebuf[XNL_ERR_BUFLEN];
-	char *buf = kmalloc(l, GFP_KERNEL);
-	int rv;
-
-	if (buf) {
-		memset(buf, 0, l);
-		return buf;
-	}
-
-	pr_err("xnl OOM %d.\n", l);
-
-	rv = snprintf(ebuf, XNL_ERR_BUFLEN, "ERR! xnl OOM %d.\n", l);
-
-	xnl_respond_buffer(info, ebuf, XNL_ERR_BUFLEN, rv);
-
-	return NULL;
-}
-
-static struct xlnx_pci_dev *xnl_rcv_check_xpdev(struct genl_info *info)
-{
-	u32 idx;
-	struct xlnx_pci_dev *xpdev;
-	char err[XNL_ERR_BUFLEN];
-	int rv = 0;
-
-	if (info == NULL)
-		return NULL;
-
-	if (!info->attrs[XNL_ATTR_DEV_IDX]) {
-		snprintf(err, sizeof(err),
-			"command %s missing attribute XNL_ATTR_DEV_IDX",
-			xnl_op_str[info->genlhdr->cmd]);
-		rv = -EINVAL;
-		goto respond_error;
-	}
-
-	idx = nla_get_u32(info->attrs[XNL_ATTR_DEV_IDX]);
-
-	xpdev = xpdev_find_by_idx(idx, err, sizeof(err));
-	if (!xpdev) {
-		rv = -EINVAL;
-		/* err buffer populated by xpdev_find_by_idx*/
-		goto respond_error;
-	}
-
-	return xpdev;
-
-respond_error:
-	xnl_respond_buffer(info, err, strlen(err), rv);
-	return NULL;
-}
-
-static int qconf_get(struct qdma_queue_conf *qconf, struct genl_info *info,
-			char *err, int errlen, unsigned char *is_qp)
-{
-	u32 f = 0;
-
-	if (!qconf || !info)
-		return -EINVAL;
-
-	if (!info->attrs[XNL_ATTR_QFLAG]) {
-		snprintf(err, errlen, "Missing attribute 'XNL_ATTR_QFLAG'\n");
-		goto respond_error;
-	}
-	f = nla_get_u32(info->attrs[XNL_ATTR_QFLAG]);
-	if ((f & XNL_F_QMODE_ST) && (f & XNL_F_QMODE_MM)) {
-		snprintf(err, errlen, "ERR! Both ST and MM mode set.\n");
-		goto respond_error;
-	} else if (!(f & XNL_F_QMODE_ST) && !(f & XNL_F_QMODE_MM)) {
-		/* default to MM */
-		f |= XNL_F_QMODE_MM;
-	}
-
-	if (!(f & XNL_F_QDIR_H2C) &&
-			!(f & XNL_F_QDIR_C2H) && !(f & XNL_F_Q_CMPL)) {
-		/* default to H2C */
-		f |= XNL_F_QDIR_H2C;
-	}
-
-	memset(qconf, 0, sizeof(*qconf));
-	qconf->st = (f & XNL_F_QMODE_ST) ? 1 : 0;
-
-	if (f & XNL_F_QDIR_H2C)
-		qconf->q_type = Q_H2C;
-	else if (f & XNL_F_QDIR_C2H)
-		qconf->q_type = Q_C2H;
-	else
-		qconf->q_type = Q_CMPT;
-
-	*is_qp = ((f & XNL_F_QDIR_BOTH) == XNL_F_QDIR_BOTH) ? 1 : 0;
-
-	if (!info->attrs[XNL_ATTR_QIDX]) {
-		snprintf(err, errlen, "Missing attribute 'XNL_ATTR_QIDX'");
-		goto respond_error;
-	}
-	qconf->qidx = nla_get_u32(info->attrs[XNL_ATTR_QIDX]);
-	if (qconf->qidx == XNL_QIDX_INVALID)
-		qconf->qidx = QDMA_QUEUE_IDX_INVALID;
-
-	return 0;
-
-respond_error:
-
-	xnl_respond_buffer(info, err, strlen(err), 0);
-	return -EINVAL;
-}
-
-static struct xlnx_qdata *xnl_rcv_check_qidx(struct genl_info *info,
-				struct xlnx_pci_dev *xpdev,
-				struct qdma_queue_conf *qconf, char *buf,
-				int buflen)
-{
-	char ebuf[XNL_ERR_BUFLEN];
-	struct xlnx_qdata *qdata = xpdev_queue_get(xpdev, qconf->qidx,
-					qconf->q_type, 1, ebuf, XNL_ERR_BUFLEN);
-
-	if (!qdata) {
-		snprintf(ebuf,
-			XNL_ERR_BUFLEN,
-			"ERR! qidx %u invalid.\n",
-			qconf->qidx);
-		xnl_respond_buffer(info, ebuf, XNL_ERR_BUFLEN, 0);
-	}
-
-	return qdata;
-}
-
-static int xnl_chk_attr(enum xnl_attr_t xnl_attr, struct genl_info *info,
-				unsigned short qidx, char *buf, int buflen)
-{
-	int rv = 0;
-
-	if (!info->attrs[xnl_attr]) {
-		if (buf) {
-			rv += snprintf(buf, buflen,
-				"Missing attribute %s for qidx = %u\n",
-				xnl_attr_str[xnl_attr],
-				qidx);
-		}
-		rv = -1;
-	}
-
-	return rv;
-}
-
-static void xnl_extract_extra_config_attr(struct genl_info *info,
-					struct qdma_queue_conf *qconf)
-{
-	u32 f = nla_get_u32(info->attrs[XNL_ATTR_QFLAG]);
-
-	qconf->desc_bypass = (f & XNL_F_DESC_BYPASS_EN) ? 1 : 0;
-	qconf->pfetch_bypass = (f & XNL_F_PFETCH_BYPASS_EN) ? 1 : 0;
-	qconf->pfetch_en = (f & XNL_F_PFETCH_EN) ? 1 : 0;
-	qconf->wb_status_en = (f & XNL_F_CMPL_STATUS_EN) ? 1 : 0;
-	qconf->cmpl_status_acc_en = (f & XNL_F_CMPL_STATUS_ACC_EN) ? 1 : 0;
-	qconf->cmpl_status_pend_chk = (f & XNL_F_CMPL_STATUS_PEND_CHK) ? 1 : 0;
-	qconf->fetch_credit = (f & XNL_F_FETCH_CREDIT) ? 1 : 0;
-	qconf->cmpl_stat_en = (f & XNL_F_CMPL_STATUS_DESC_EN) ? 1 : 0;
-	qconf->cmpl_en_intr = (f & XNL_F_C2H_CMPL_INTR_EN) ? 1 : 0;
-	qconf->cmpl_udd_en = (f & XNL_F_CMPL_UDD_EN) ? 1 : 0;
-	qconf->cmpl_ovf_chk_dis = (f & XNL_F_CMPT_OVF_CHK_DIS) ? 1 : 0;
-
-	if (qconf->q_type == Q_CMPT)
-		qconf->cmpl_udd_en = 1;
-
-	if (xnl_chk_attr(XNL_ATTR_QRNGSZ_IDX, info, qconf->qidx, NULL, 0) == 0)
-		qconf->desc_rng_sz_idx = qconf->cmpl_rng_sz_idx =
-				nla_get_u32(info->attrs[XNL_ATTR_QRNGSZ_IDX]);
-	if (xnl_chk_attr(XNL_ATTR_C2H_BUFSZ_IDX, info,
-			qconf->qidx, NULL, 0) == 0)
-		qconf->c2h_buf_sz_idx =
-			nla_get_u32(info->attrs[XNL_ATTR_C2H_BUFSZ_IDX]);
-	if (xnl_chk_attr(XNL_ATTR_CMPT_TIMER_IDX, info,
-			qconf->qidx, NULL, 0) == 0)
-		qconf->cmpl_timer_idx =
-			nla_get_u32(info->attrs[XNL_ATTR_CMPT_TIMER_IDX]);
-	if (xnl_chk_attr(XNL_ATTR_CMPT_CNTR_IDX, info,
-			qconf->qidx, NULL, 0) == 0)
-		qconf->cmpl_cnt_th_idx =
-			nla_get_u32(info->attrs[XNL_ATTR_CMPT_CNTR_IDX]);
-	if (xnl_chk_attr(XNL_ATTR_MM_CHANNEL, info, qconf->qidx, NULL, 0) == 0)
-		qconf->mm_channel =
-			nla_get_u32(info->attrs[XNL_ATTR_MM_CHANNEL]);
-	if (xnl_chk_attr(XNL_ATTR_CMPT_DESC_SIZE,
-				info, qconf->qidx, NULL, 0) == 0)
-		qconf->cmpl_desc_sz =
-			nla_get_u32(info->attrs[XNL_ATTR_CMPT_DESC_SIZE]);
-	if (xnl_chk_attr(XNL_ATTR_SW_DESC_SIZE,
-				info, qconf->qidx, NULL, 0) == 0)
-		qconf->sw_desc_sz =
-			nla_get_u32(info->attrs[XNL_ATTR_SW_DESC_SIZE]);
-	if (xnl_chk_attr(XNL_ATTR_PING_PONG_EN,
-					 info, qconf->qidx, NULL, 0) == 0)
-		qconf->ping_pong_en = 1;
-	if (xnl_chk_attr(XNL_ATTR_APERTURE_SZ,
-					 info, qconf->qidx, NULL, 0) == 0)
-		qconf->aperture_size =
-			nla_get_u32(info->attrs[XNL_ATTR_APERTURE_SZ]);
-	if (xnl_chk_attr(XNL_ATTR_CMPT_TRIG_MODE, info,
-				qconf->qidx, NULL, 0) == 0)
-		qconf->cmpl_trig_mode =
-			nla_get_u32(info->attrs[XNL_ATTR_CMPT_TRIG_MODE]);
-	else
-		qconf->cmpl_trig_mode = 1;
-}
-
-static int xnl_dev_list(struct sk_buff *skb2, struct genl_info *info)
-{
-	char *buf;
-	int rv;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MAX, info);
-	if (!buf)
-		return -ENOMEM;
-
-	rv = xpdev_list_dump(buf, XNL_RESP_BUFLEN_MAX);
-	if (rv < 0) {
-		pr_err("xpdev_list_dump() failed: %d", rv);
-		goto free_msg_buff;
-	}
-
-	rv = xnl_respond_buffer(info, buf, strlen(buf), rv);
-
-free_msg_buff:
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_dev_info(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	struct xlnx_pci_dev *xpdev;
-	struct pci_dev *pdev;
-	struct qdma_dev_conf conf;
-	int rv;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-	pdev = xpdev->pdev;
-
-	rv = qdma_device_get_config(xpdev->dev_hndl, &conf, NULL, 0);
-	if (rv < 0)
-		return rv;
-
-	skb = xnl_msg_alloc(XNL_CMD_DEV_INFO, 0, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_PCI_BUS,
-				pdev->bus->number);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_PCI_DEV,
-				PCI_SLOT(pdev->devfn));
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_PCI_FUNC,
-				PCI_FUNC(pdev->devfn));
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_CFG_BAR,
-				conf.bar_num_config);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_USR_BAR,
-				conf.bar_num_user);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_QSET_MAX, conf.qsets_max);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_QSET_QBASE,
-			conf.qsets_base);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_send(skb, hdr, info);
-
-	return rv;
-
-free_skb:
-	nlmsg_free(skb);
-	return rv;
-}
-
-static int xnl_dev_version_capabilities(struct sk_buff *skb2,
-		struct genl_info *info)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_version_info ver_info;
-	struct qdma_dev_attributes dev_attr;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	int buflen = XNL_RESP_BUFLEN_MIN;
-	int rv = 0;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-
-	skb = xnl_msg_alloc(XNL_CMD_DEV_CAP, 0, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	rv = qdma_device_version_info(xpdev->dev_hndl, &ver_info);
-	if (rv < 0) {
-		pr_err("qdma_device_version_info() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = qdma_device_capabilities_info(xpdev->dev_hndl, &dev_attr);
-	if (rv < 0) {
-		pr_err("qdma_device_capabilities_info() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = snprintf(buf + rv, buflen,
-			"=============Hardware Version============\n\n");
-	rv += snprintf(buf + rv, buflen - rv,
-			"RTL Version         : %s\n", ver_info.rtl_version_str);
-	rv += snprintf(buf + rv,
-			buflen - rv,
-			"Vivado ReleaseID    : %s\n",
-			ver_info.vivado_release_str);
-	rv += snprintf(buf + rv,
-			buflen - rv,
-			"QDMA Device Type    : %s\n",
-			ver_info.device_type_str);
-
-	rv += snprintf(buf + rv,
-			buflen - rv,
-			"QDMA IP Type    : %s\n",
-			ver_info.ip_str);
-
-	rv += snprintf(buf + rv,
-			buflen - rv,
-			"============Software Version============\n\n");
-	rv += snprintf(buf + rv,
-			buflen - rv,
-			"qdma driver version : %s\n\n",
-			DRV_MODULE_VERSION);
-
-	rv = xnl_msg_add_attr_str(skb, XNL_ATTR_VERSION_INFO, buf);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_str(skb, XNL_ATTR_DEVICE_TYPE,
-			ver_info.device_type_str);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_str(skb, XNL_ATTR_IP_TYPE, ver_info.ip_str);
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_str() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_MM_ENABLE, dev_attr.mm_en);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_ST_ENABLE, dev_attr.st_en);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_MM_CMPT_ENABLE,
-			dev_attr.mm_cmpt_en);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_NUMQS,
-			dev_attr.num_qs);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_NUM_PFS, dev_attr.num_pfs);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_MM_CHANNEL_MAX,
-			dev_attr.mm_channel_max);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_MAILBOX_ENABLE,
-			dev_attr.mailbox_en);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_FLR_PRESENT,
-			dev_attr.flr_present);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEBUG_EN,
-			dev_attr.debug_mode);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DESC_ENGINE_MODE,
-			dev_attr.desc_eng_mode);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		goto free_skb;
-	}
-
-	rv = xnl_msg_add_attr_data(skb, XNL_ATTR_DEV,
-			(void *)&dev_attr, sizeof(struct qdma_dev_attributes));
-	if (rv != 0) {
-		pr_err("xnl_msg_add_attr_data() failed: %d", rv);
-		return rv;
-	}
-
-	rv = xnl_msg_send(skb, hdr, info);
-	return rv;
-
-free_skb:
-	nlmsg_free(skb);
-	return rv;
-}
-
-static int xnl_dev_stat(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	struct xlnx_pci_dev *xpdev;
-	int rv;
-	unsigned long long mmh2c_pkts = 0;
-	unsigned long long mmc2h_pkts = 0;
-	unsigned long long sth2c_pkts = 0;
-	unsigned long long stc2h_pkts = 0;
-	unsigned long long min_ping_pong_lat = 0;
-	unsigned long long max_ping_pong_lat = 0;
-	unsigned long long total_ping_pong_lat = 0;
-	unsigned long long avg_ping_pong_lat = 0;
-	unsigned int pkts;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-
-	skb = xnl_msg_alloc(XNL_CMD_DEV_STAT, 0, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	qdma_device_get_mmh2c_pkts(xpdev->dev_hndl, &mmh2c_pkts);
-	qdma_device_get_mmc2h_pkts(xpdev->dev_hndl, &mmc2h_pkts);
-	qdma_device_get_sth2c_pkts(xpdev->dev_hndl, &sth2c_pkts);
-	qdma_device_get_stc2h_pkts(xpdev->dev_hndl, &stc2h_pkts);
-	qdma_device_get_ping_pong_min_lat(xpdev->dev_hndl,
-							&min_ping_pong_lat);
-	qdma_device_get_ping_pong_max_lat(xpdev->dev_hndl,
-							&max_ping_pong_lat);
-	qdma_device_get_ping_pong_tot_lat(xpdev->dev_hndl,
-							&total_ping_pong_lat);
-
-	pkts = mmh2c_pkts;
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_MMH2C_PKTS1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (mmh2c_pkts >> 32);
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_MMH2C_PKTS2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = mmc2h_pkts;
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_MMC2H_PKTS1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (mmc2h_pkts >> 32);
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_MMC2H_PKTS2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = sth2c_pkts;
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_STH2C_PKTS1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (sth2c_pkts >> 32);
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_STH2C_PKTS2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = stc2h_pkts;
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_STC2H_PKTS1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (stc2h_pkts >> 32);
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_DEV_STAT_STC2H_PKTS2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = min_ping_pong_lat;
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (min_ping_pong_lat >> 32);
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = min_ping_pong_lat;
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMIN1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (min_ping_pong_lat >> 32);
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMIN2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = max_ping_pong_lat;
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMAX1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (max_ping_pong_lat >> 32);
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATMAX2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-
-	if (stc2h_pkts != 0)
-		avg_ping_pong_lat = total_ping_pong_lat / stc2h_pkts;
-	else
-		pr_err("No C2H packets to calculate avg\n");
-
-	pkts = avg_ping_pong_lat;
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATAVG1, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	pkts = (avg_ping_pong_lat >> 32);
-	rv = xnl_msg_add_attr_uint(skb,
-				XNL_ATTR_DEV_STAT_PING_PONG_LATAVG2, pkts);
-	if (rv < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-	rv = xnl_msg_send(skb, hdr, info);
-
-	return rv;
-}
-
-static int xnl_dev_stat_clear(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	int rv;
-	char *buf;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MIN, info);
-	if (!buf)
-		return -ENOMEM;
-
-	qdma_device_clear_stats(xpdev->dev_hndl);
-
-	buf[0] = '\0';
-
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MAX, 0);
-
-	kfree(buf);
-	return rv;
-}
-
-
-
-static int xnl_get_queue_state(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	struct xlnx_qdata *qdata;
-	int rv = 0;
-	unsigned char is_qp;
-	unsigned int q_flags;
-	struct sk_buff *skb;
-	void *hdr;
-	struct qdma_q_state qstate;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	skb = xnl_msg_alloc(XNL_CMD_DEV_STAT, 0, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev) {
-		nlmsg_free(skb);
-		return -EINVAL;
-	}
-
-	rv = qconf_get(&qconf, info, buf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0) {
-		nlmsg_free(skb);
-		return -EINVAL;
-	}
-	if (is_qp)
-		return -EINVAL;
-
-	qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-				XNL_RESP_BUFLEN_MIN);
-	if (!qdata) {
-		nlmsg_free(skb);
-		return -EINVAL;
-	}
-
-	rv = qdma_get_queue_state(xpdev->dev_hndl, qdata->qhndl, &qstate,
-			buf, XNL_RESP_BUFLEN_MIN);
-	if (rv < 0) {
-		xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MAX, rv);
-		nlmsg_free(skb);
-		pr_err("qdma_get_queue_state() failed: %d", rv);
-		return rv;
-	}
-
-	q_flags = 0;
-
-	if (qstate.st)
-		q_flags |= XNL_F_QMODE_ST;
-	else
-		q_flags |= XNL_F_QMODE_MM;
-
-
-	if (qstate.q_type == Q_C2H)
-		q_flags |= XNL_F_QDIR_C2H;
-	else if (qstate.q_type == Q_H2C)
-		q_flags |= XNL_F_QDIR_H2C;
-	else
-		q_flags |= XNL_F_Q_CMPL;
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_QFLAG, q_flags);
-	if (rv < 0) {
-		nlmsg_free(skb);
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_QIDX, qstate.qidx);
-	if (rv < 0) {
-		nlmsg_free(skb);
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-
-	rv = xnl_msg_add_attr_uint(skb, XNL_ATTR_Q_STATE, qstate.qstate);
-	if (rv < 0) {
-		nlmsg_free(skb);
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return rv;
-	}
-
-
-	rv = xnl_msg_send(skb, hdr, info);
-
-	return rv;
-
-}
-
-static int xnl_q_list(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	char *buf;
-	int rv = 0;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	struct qdma_queue_conf qconf;
-	unsigned char is_qp;
-	uint32_t qmax = 0;
-	uint32_t buflen = 0, max_buflen = 0;
-	struct qdma_queue_count q_count;
-	unsigned int qidx, num_q;
-	struct xlnx_qdata *qdata;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MIN, info);
-	if (!buf)
-		return -ENOMEM;
-	buflen = XNL_RESP_BUFLEN_MIN;
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	qidx = qconf.qidx;
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	rv = qdma_get_queue_count(xpdev->dev_hndl, &q_count, buf, buflen);
-	if (rv < 0) {
-		rv += snprintf(buf, XNL_RESP_BUFLEN_MIN,
-					   "Failed to get queue count\n");
-		goto send_rsp;
-	}
-
-	qmax = q_count.h2c_qcnt + q_count.c2h_qcnt;
-	if (!qmax) {
-		rv += snprintf(buf, 8, "Zero Qs\n\n");
-		goto send_rsp;
-	}
-
-	qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf, buflen);
-	if (!qdata)
-		goto send_rsp;
-
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	if (num_q > QDMA_Q_DUMP_MAX_QUEUES) {
-		pr_err("Can not dump more than %d queues\n",
-			   QDMA_Q_DUMP_MAX_QUEUES);
-		rv += snprintf(buf, 40, "Can not dump more than %d queues\n",
-				QDMA_Q_DUMP_MAX_QUEUES);
-		goto send_rsp;
-	}
-
-	kfree(buf);
-	max_buflen = (num_q * 2 * QDMA_Q_LIST_LINE_SZ);
-	buf = xnl_mem_alloc(max_buflen, info);
-	if (!buf)
-		return -ENOMEM;
-
-	buflen = max_buflen;
-	rv = qdma_queue_list(xpdev->dev_hndl, qidx, num_q, buf, buflen);
-	if (rv < 0) {
-		pr_err("qdma_queue_list() failed: %d", rv);
-		goto send_rsp;
-	}
-
-send_rsp:
-	rv = xnl_respond_buffer(info, buf, max_buflen, rv);
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_q_add(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev = NULL;
-	struct qdma_queue_conf qconf;
-	char *buf, *cur, *end;
-	int rv = 0;
-	int rv2 = 0;
-	unsigned char is_qp;
-	unsigned int num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-	cur = buf;
-	end = buf + buf_len;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl))) {
-		pr_info("0 sized Qs\n");
-		rv += snprintf(cur, end - cur, "Zero Qs\n");
-		goto send_resp;
-	}
-	rv = qconf_get(&qconf, info, cur, end - cur, &is_qp);
-	if (rv < 0)
-		goto free_buf;
-
-	qidx = qconf.qidx;
-
-	rv = xnl_chk_attr(XNL_ATTR_NUM_Q, info, qidx, cur, end - cur);
-	if (rv < 0)
-		goto send_resp;
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(cur, end - cur, "Invalid q type received");
-		goto send_resp;
-	}
-
-	dir = qconf.q_type;
-	for (i = 0; i < num_q; i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-add_q:
-		if (qidx != QDMA_QUEUE_IDX_INVALID)
-			qconf.qidx = qidx + i;
-		rv = xpdev_queue_add(xpdev, &qconf, cur, end - cur);
-		if (rv < 0) {
-			pr_err("xpdev_queue_add() failed: %d\n", rv);
-			goto send_resp;
-		}
-		cur = buf + strlen(buf);
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto add_q;
-			}
-		}
-	}
-/* Suppress Q additions prints if num_q's greater than 2048.
- * And print only consolidated Q's added, to overcome attr failure.
- * TODO: This is a workaround. Need to comeup with proper fix.
- */
-	if (num_q > 2048) {
-		memset(buf, 0, strlen(buf) + 1);
-		snprintf(buf, 25, "Added %u Queues.\n", i);
-	} else {
-		cur += snprintf(cur, end - cur, "Added %u Queues.\n", i);
-	}
-
-send_resp:
-	rv2 = xnl_respond_buffer(info, buf, strlen(buf), rv);
-free_buf:
-	kfree(buf);
-	return rv < 0 ? rv : rv2;
-}
-
-static int xnl_q_buf_idx_get(struct xlnx_pci_dev *xpdev)
-{
-	struct global_csr_conf csr;
-	int i, rv;
-
-	memset(&csr, 0, sizeof(struct global_csr_conf));
-	rv = qdma_global_csr_get(xpdev->dev_hndl, 0,
-				 QDMA_GLOBAL_CSR_ARRAY_SZ,
-				 &csr);
-	if (rv < 0)
-		return 0;
-
-	for (i = 0; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++) {
-		if (csr.c2h_buf_sz[i] == QDMA_C2H_DEFAULT_BUF_SZ)
-			return i;
-	}
-
-	return 0;
-}
-
-static int xnl_q_start(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct qdma_queue_conf qconf_old;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	struct xlnx_qdata *qdata;
-	int rv = 0;
-	unsigned char is_qp;
-	unsigned short num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-	unsigned char is_bufsz_idx = 1;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl))) {
-		rv += snprintf(buf, 8, "Zero Qs\n");
-		goto send_resp;
-	}
-	rv = qconf_get(&qconf, info, buf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		goto send_resp;
-
-	qidx = qconf.qidx;
-
-	rv = xnl_chk_attr(XNL_ATTR_NUM_Q, info, qidx, buf, XNL_RESP_BUFLEN_MIN);
-	if (rv < 0)
-		goto send_resp;
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	xnl_extract_extra_config_attr(info, &qconf);
-
-	if (qconf.st && (qconf.q_type == Q_CMPT)) {
-		rv += snprintf(buf, 40, "MM CMPL is valid only for MM Mode");
-		goto send_resp;
-	}
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	if (!info->attrs[XNL_ATTR_C2H_BUFSZ_IDX])
-		is_bufsz_idx = 0;
-
-	if (!info->attrs[XNL_ATTR_MM_CHANNEL])
-		qconf.mm_channel = 0;
-
-	dir = qconf.q_type;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-reconfig:
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-					XNL_RESP_BUFLEN_MIN);
-		if (!qdata)
-			goto send_resp;
-		rv = qdma_queue_get_config(xpdev->dev_hndl, qdata->qhndl,
-				&qconf_old, buf, XNL_RESP_BUFLEN_MIN);
-		if (rv < 0)
-			goto send_resp;
-
-		if (qconf.q_type != Q_CMPT) {
-			if (qconf_old.st && qconf_old.q_type && !is_bufsz_idx)
-				qconf.c2h_buf_sz_idx = xnl_q_buf_idx_get(xpdev);
-		}
-		rv = qdma_queue_config(xpdev->dev_hndl, qdata->qhndl,
-				&qconf, buf, XNL_RESP_BUFLEN_MIN);
-		if (rv < 0) {
-			pr_err("qdma_queue_config failed: %d", rv);
-			goto send_resp;
-		}
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto reconfig;
-			}
-		}
-	}
-
-	rv = xpdev_nl_queue_start(xpdev, info, is_qp, qconf.q_type,
-			qidx, num_q);
-	if (rv < 0) {
-		snprintf(buf, XNL_RESP_BUFLEN_MIN, "qdma%05x OOM.\n",
-			xpdev->idx);
-		goto send_resp;
-	}
-
-	return 0;
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MIN, rv);
-
-	return rv;
-}
-
-static int xnl_q_stop(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	struct xlnx_qdata *qdata;
-	int rv = 0, rv2 = 0;
-	unsigned char is_qp;
-	unsigned short num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl))) {
-		rv += snprintf(buf, 8, "Zero Qs\n");
-		goto send_resp;
-	}
-	rv = qconf_get(&qconf, info, buf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		goto send_resp;
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		return -1;
-	}
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	qidx = qconf.qidx;
-	dir = qconf.q_type;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-stop_q:
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-					XNL_RESP_BUFLEN_MIN);
-		if (!qdata)
-			goto send_resp;
-		rv = qdma_queue_stop(xpdev->dev_hndl, qdata->qhndl,
-				     buf, XNL_RESP_BUFLEN_MIN);
-		if (rv < 0) {
-			pr_err("qdma_queue_stop() failed: %d", rv);
-			goto send_resp;
-		}
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto stop_q;
-			}
-		}
-	}
-	rv2 = snprintf(buf + rv, XNL_RESP_BUFLEN_MIN - rv,
-				  "Stopped Queues %u -> %u.\n", qidx, i - 1);
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MIN, rv);
-	return rv;
-}
-
-static int xnl_q_del(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	int rv = 0, rv2 = 0;
-	unsigned char is_qp;
-	unsigned short num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl))) {
-		rv += snprintf(buf, 8, "Zero Qs\n");
-		goto send_resp;
-	}
-	rv = qconf_get(&qconf, info, buf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		goto send_resp;
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		return -1;
-	}
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	qidx = qconf.qidx;
-
-	dir = qconf.q_type;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-del_q:
-		qconf.qidx = i;
-		rv = xpdev_queue_delete(xpdev, qconf.qidx, qconf.q_type,
-					buf, XNL_RESP_BUFLEN_MIN);
-		if (rv < 0) {
-			pr_err("xpdev_queue_delete() failed: %d", rv);
-			goto send_resp;
-		}
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto del_q;
-			}
-		}
-	}
-	rv2 = snprintf(buf + rv, XNL_RESP_BUFLEN_MIN - rv,
-				  "Deleted Queues %u -> %u.\n", qidx, i - 1);
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MIN, rv);
-	return rv;
-}
-
-static int xnl_config_reg_dump(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	char *buf;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	int rv = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	qdma_config_reg_dump(xpdev->dev_hndl, buf, buf_len);
-
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_config_reg_info_dump
-	(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	char *buf;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	int rv = 0;
-	uint32_t reg_addr = 0;
-	uint32_t num_regs = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	if (info->attrs[XNL_ATTR_REG_ADDR])
-		reg_addr =  nla_get_u32(info->attrs[XNL_ATTR_REG_ADDR]);
-
-	if (info->attrs[XNL_ATTR_NUM_REGS])
-		num_regs =  nla_get_u32(info->attrs[XNL_ATTR_NUM_REGS]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	qdma_config_reg_info_dump(xpdev->dev_hndl,
-				reg_addr, num_regs, buf, buf_len);
-
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-
-static int xnl_q_dump(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct xlnx_qdata *qdata;
-	char *buf;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	int rv;
-	unsigned char is_qp;
-	unsigned int num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	unsigned int buf_idx = 0;
-	char banner[DUMP_LINE_SZ];
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		kfree(buf);
-		return -1;
-	}
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	if (num_q > QDMA_Q_DUMP_MAX_QUEUES) {
-		pr_err("Can not dump more than %d queues\n",
-			   QDMA_Q_DUMP_MAX_QUEUES);
-		rv += snprintf(buf, 40, "Can not dump more than %d queues\n",
-				QDMA_Q_DUMP_MAX_QUEUES);
-		goto send_resp;
-	}
-	kfree(buf);
-	buf_len = (num_q * QDMA_Q_DUMP_LINE_SZ);
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	qidx = qconf.qidx;
-	dir = qconf.q_type;
-
-	for (i = 0; i < DUMP_LINE_SZ - 5; i++)
-		snprintf(banner + i, DUMP_LINE_SZ - 5, "*");
-
-	for (i = qidx; i < (qidx + num_q); i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-
-dump_q:
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf + buf_idx,
-					buf_len - buf_idx);
-		if (!qdata)
-			goto send_resp;
-
-		buf_idx += snprintf(buf + buf_idx,
-				DUMP_LINE_SZ, "\n%s", banner);
-
-		buf_idx += snprintf(buf + buf_idx, buf_len - buf_idx,
-#ifndef __QDMA_VF__
-				"\n%40s qdma%05x %s QID# %u\n",
-#else
-				"\n%40s qdmavf%05x %s QID# %u\n",
-#endif
-				"Context Dump for",
-				  xpdev->idx,
-				  q_type_list[qconf.q_type].name,
-				  qconf.qidx);
-
-		buf_idx += snprintf(buf + buf_idx,
-				buf_len - buf_idx, "\n%s\n", banner);
-
-		rv = qdma_queue_dump(xpdev->dev_hndl, qdata->qhndl,
-				     buf + buf_idx,
-				     buf_len - buf_idx);
-		buf_idx = strlen(buf);
-		if (rv < 0) {
-			pr_err("qdma_queue_dump() failed: %d", rv);
-			goto send_resp;
-		}
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto dump_q;
-			}
-		}
-	}
-	rv = snprintf(buf + buf_idx, buf_len - buf_idx,
-		      "Dumped Queues %u -> %u.\n", qidx, i - 1);
-	buf_idx += rv;
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_q_dump_desc(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct xlnx_qdata *qdata;
-	u32 v1;
-	u32 v2;
-	char *buf;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	int rv;
-	unsigned char is_qp;
-	unsigned int num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	unsigned int buf_idx = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	v1 = nla_get_u32(info->attrs[XNL_ATTR_RANGE_START]);
-	v2 = nla_get_u32(info->attrs[XNL_ATTR_RANGE_END]);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl)))
-		return 0;
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf) {
-		rv = snprintf(ebuf, XNL_RESP_BUFLEN_MIN,
-				"%s OOM %d.\n",
-				__func__, buf_len);
-		xnl_respond_buffer(info, ebuf, XNL_RESP_BUFLEN_MIN, rv);
-		return -ENOMEM;
-	}
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		return -1;
-	}
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	qidx = qconf.qidx;
-	dir = qconf.q_type;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		qconf.q_type = dir;
-dump_q:
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf + buf_idx,
-					buf_len - buf_idx);
-		if (!qdata)
-			goto send_resp;
-		rv = qdma_queue_dump_desc(xpdev->dev_hndl,
-					qdata->qhndl, v1, v2,
-					buf + buf_idx, buf_len - buf_idx);
-		buf_idx = strlen(buf);
-
-		if (rv < 0) {
-			pr_err("qdma_queue_dump_desc() failed: %d", rv);
-			goto send_resp;
-		}
-		if (is_qp && (dir == qconf.q_type)) {
-			qconf.q_type = (~qconf.q_type) & 0x1;
-			goto dump_q;
-		}
-	}
-
-	rv = snprintf(buf + buf_idx, buf_len - buf_idx,
-		      "Dumped descs of queues %u -> %u.\n",
-		      qidx, i - 1);
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_q_dump_cmpt(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct xlnx_qdata *qdata;
-	u32 v1;
-	u32 v2;
-	char *buf;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	int rv;
-	unsigned char is_qp;
-	unsigned int num_q;
-	unsigned int i;
-	unsigned short qidx;
-	unsigned char dir;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	unsigned int buf_idx = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	v1 = nla_get_u32(info->attrs[XNL_ATTR_RANGE_START]);
-	v2 = nla_get_u32(info->attrs[XNL_ATTR_RANGE_END]);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (unlikely(!qdma_get_qmax(xpdev->dev_hndl)))
-		return 0;
-
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf) {
-		rv = snprintf(ebuf, XNL_RESP_BUFLEN_MIN,
-				"%s OOM %d.\n",
-				__func__, buf_len);
-		xnl_respond_buffer(info, ebuf, XNL_RESP_BUFLEN_MIN, rv);
-		return -ENOMEM;
-	}
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		return -1;
-	}
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-
-	if (qconf.q_type > Q_CMPT) {
-		pr_err("Invalid q type received");
-		rv += snprintf(buf, 40, "Invalid q type received");
-		goto send_resp;
-	}
-
-	qidx = qconf.qidx;
-
-	dir = qconf.q_type;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		if (qconf.q_type != Q_CMPT)
-			qconf.q_type = dir;
-dump_q:
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf + buf_idx,
-					buf_len - buf_idx);
-		if (!qdata)
-			goto send_resp;
-		rv = qdma_queue_dump_cmpt(xpdev->dev_hndl,
-					qdata->qhndl, v1, v2,
-					buf + buf_idx, buf_len - buf_idx);
-		buf_idx = strlen(buf);
-		if (rv < 0) {
-			pr_err("qdma_queue_dump_cmpt() failed: %d", rv);
-			goto send_resp;
-		}
-		if (qconf.q_type != Q_CMPT) {
-			if (is_qp && (dir == qconf.q_type)) {
-				qconf.q_type = (~qconf.q_type) & 0x1;
-				goto dump_q;
-			}
-		}
-	}
-	rv = snprintf(buf + buf_idx, buf_len - buf_idx,
-		      "Dumped descs of queues %u -> %u.\n",
-		      qidx, i - 1);
-	buf_idx += rv;
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_q_read_udd(struct sk_buff *skb2, struct genl_info *info)
-{
-	int rv = 0;
-	struct qdma_queue_conf qconf;
-	char *buf;
-	unsigned char is_qp;
-	struct xlnx_pci_dev *xpdev;
-	struct xlnx_qdata *qdata;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MAX, info);
-	if (!buf)
-		return -ENOMEM;
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev) {
-		kfree(buf);
-		return -EINVAL;
-	}
-
-	rv = qconf_get(&qconf, info, buf, XNL_RESP_BUFLEN_MAX, &is_qp);
-	if (rv < 0)
-		goto send_resp;
-
-	qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-			XNL_RESP_BUFLEN_MAX);
-	if (!qdata)
-		goto send_resp;
-
-	rv = qdma_descq_get_cmpt_udd(xpdev->dev_hndl, qdata->qhndl,  buf,
-			XNL_RESP_BUFLEN_MAX);
-	if (rv < 0)
-		goto send_resp;
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_q_cmpt_read(struct sk_buff *skb2, struct genl_info *info)
-{
-	int rv = 0, err = 0;
-	struct qdma_queue_conf qconf;
-	char *buf = NULL;
-	unsigned char is_qp = 0;
-	struct xlnx_pci_dev *xpdev = NULL;
-	struct xlnx_qdata *qdata = NULL;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-	u32 num_entries = 0;
-	u8 *cmpt_entries = NULL, *cmpt_entry_list = NULL;
-	u32 cmpt_entry_len = 0;
-	u32 count = 0, diff_len = 0;
-	struct qdma_queue_conf qconf_attr;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	rv = qconf_get(&qconf, info, buf, buf_len, &is_qp);
-	if (rv < 0)
-		goto send_resp;
-
-	qconf.q_type = Q_CMPT;
-	qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf, buf_len);
-	if (!qdata)
-		goto send_resp;
-
-	rv = qdma_queue_get_config(xpdev->dev_hndl, qdata->qhndl,
-			&qconf_attr, buf, buf_len);
-	if (rv < 0)
-		goto send_resp;
-
-	rv = qdma_descq_read_cmpt_data(xpdev->dev_hndl,
-					qdata->qhndl,
-					&num_entries,
-					&cmpt_entries,
-					buf,
-					buf_len);
-	if (rv < 0)
-		goto free_cmpt;
-
-	if (num_entries != 0) {
-		memset(buf, '\0', buf_len);
-		cmpt_entry_list = cmpt_entries;
-		cmpt_entry_len = 8 << qconf_attr.cmpl_desc_sz;
-		for (count = 0; count < num_entries; count++) {
-			hex_dump_to_buffer(cmpt_entry_list, cmpt_entry_len,
-						32, 4, buf + diff_len,
-						buf_len - diff_len, 0);
-			diff_len = strlen(buf);
-			if (cmpt_entry_len > 32) {
-				diff_len += snprintf(buf + diff_len,
-						buf_len - diff_len,
-						" ");
-				hex_dump_to_buffer(cmpt_entry_list + 32,
-						cmpt_entry_len,
-						32, 4, buf + diff_len,
-						buf_len - diff_len, 0);
-				diff_len = strlen(buf);
-			}
-			buf[diff_len++] = '\n';
-			cmpt_entry_list += cmpt_entry_len;
-		}
-	}
-
-free_cmpt:
-	kfree(cmpt_entries);
-send_resp:
-	err = rv;
-	rv = xnl_respond_buffer_cmpt(info, buf, buf_len,
-					err, num_entries);
-	kfree(buf);
-	return rv;
-}
-
-
-#ifdef ERR_DEBUG
-static int xnl_err_induce(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct xlnx_qdata *qdata;
-	char *buf;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	unsigned char is_qp;
-	int rv;
-	u32 err;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MAX, info);
-	if (!buf) {
-		rv = snprintf(ebuf, XNL_RESP_BUFLEN_MIN, "%s OOM %d.\n",
-				__func__, XNL_RESP_BUFLEN_MAX);
-		xnl_respond_buffer(info, ebuf, XNL_RESP_BUFLEN_MIN, rv);
-		return -ENOMEM;
-	}
-
-	qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-				XNL_RESP_BUFLEN_MIN);
-	if (!qdata)
-		goto send_resp;
-	err = nla_get_u32(info->attrs[XNL_ATTR_QPARAM_ERR_INFO]);
-
-	if (qdma_queue_set_err_induction(xpdev->dev_hndl, qdata->qhndl, err,
-					 buf, XNL_RESP_BUFLEN_MAX)) {
-		rv += snprintf(buf + rv, XNL_RESP_BUFLEN_MAX,
-					 "Failed to set induce err\n");
-		goto send_resp;
-	}
-	rv += snprintf(buf + rv, XNL_RESP_BUFLEN_MAX,
-				  "queue error induced\n");
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MAX, rv);
-
-	kfree(buf);
-	return rv;
-}
-#endif
-
-static int xnl_q_read_pkt(struct sk_buff *skb2, struct genl_info *info)
-{
-#if 0
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_queue_conf qconf;
-	struct xlnx_qdata *qdata;
-	char *buf;
-	char ebuf[XNL_RESP_BUFLEN_MIN];
-	int rv;
-	unsigned char is_qp;
-	unsigned int num_q;
-	unsigned int i;
-	unsigned short qidx;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	rv = qconf_get(&qconf, info, ebuf, XNL_RESP_BUFLEN_MIN, &is_qp);
-	if (rv < 0)
-		return rv;
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf) {
-		rv = snprintf(ebuf, XNL_RESP_BUFLEN_MIN,
-				"%s OOM %d.\n",
-				__func__, buf_len);
-		xnl_respond_buffer(info, ebuf, XNL_RESP_BUFLEN_MIN, rv);
-		return -ENOMEM;
-	}
-
-	if (!info->attrs[XNL_ATTR_NUM_Q]) {
-		pr_warn("Missing attribute 'XNL_ATTR_NUM_Q'");
-		return -1;
-	}
-	num_q = nla_get_u32(info->attrs[XNL_ATTR_NUM_Q]);
-
-	qidx = qconf.qidx;
-	for (i = qidx; i < (qidx + num_q); i++) {
-		qconf.q_type = 1;
-		qconf.qidx = i;
-		qdata = xnl_rcv_check_qidx(info, xpdev, &qconf, buf,
-						buf_len);
-		if (!qdata)
-			goto send_resp;
-		rv = qdma_queue_dump_rx_packet(xpdev->dev_hndl, qdata->qhndl,
-						buf, buf_len);
-		if (rv < 0) {
-			pr_err("qdma_queue_dump_rx_packet) failed: %d", rv);
-			goto send_resp;
-		}
-	}
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-#endif
-	pr_info("NOT supported.\n");
-	return -EINVAL;
-}
-
-static int xnl_intr_ring_dump(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	char *buf;
-	unsigned int vector_idx = 0;
-	int start_idx = 0, end_idx = 0;
-	int rv = 0;
-	int buf_len = XNL_RESP_BUFLEN_MAX;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	if (!info->attrs[XNL_ATTR_INTR_VECTOR_IDX]) {
-		pr_warn("Missing attribute 'XNL_ATTR_INTR_VECTOR_IDX'");
-		return -1;
-	}
-	vector_idx = nla_get_u32(info->attrs[XNL_ATTR_INTR_VECTOR_IDX]);
-	start_idx = nla_get_u32(info->attrs[XNL_ATTR_INTR_VECTOR_START_IDX]);
-	end_idx = nla_get_u32(info->attrs[XNL_ATTR_INTR_VECTOR_END_IDX]);
-
-	if (info->attrs[XNL_ATTR_RSP_BUF_LEN])
-		buf_len =  nla_get_u32(info->attrs[XNL_ATTR_RSP_BUF_LEN]);
-
-	buf = xnl_mem_alloc(buf_len, info);
-	if (!buf)
-		return -ENOMEM;
-
-	if (xpdev->idx == 0) {
-		if (vector_idx == 0) {
-			rv += snprintf(buf + rv, buf_len,
-				"vector_idx %u is for error interrupt\n",
-				vector_idx);
-			goto send_resp;
-		} else if (vector_idx == 1) {
-			rv += snprintf(buf + rv, buf_len,
-				"vector_idx %u is for user interrupt\n",
-				vector_idx);
-			goto send_resp;
-		}
-	} else {
-		if (vector_idx == 0) {
-			rv += snprintf(buf + rv, buf_len,
-				"vector_idx %u is for user interrupt\n",
-				vector_idx);
-			goto send_resp;
-		}
-	}
-
-	rv = qdma_intr_ring_dump(xpdev->dev_hndl,
-					vector_idx, start_idx,
-					end_idx, buf, buf_len);
-	if (rv < 0) {
-		pr_err("qdma_intr_ring_dump() failed: %d", rv);
-		goto send_resp;
-	}
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, buf_len, rv);
-
-	kfree(buf);
-	return rv;
-}
-
-static int xnl_register_read(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct sk_buff *skb;
-	void *hdr;
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_dev_conf conf;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	unsigned int bar_num = 0, reg_addr = 0;
-	uint32_t reg_val = 0;
-	int rv = 0, err = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	rv = qdma_device_get_config(xpdev->dev_hndl, &conf, NULL, 0);
-	if (rv < 0)
-		return rv;
-
-	skb = xnl_msg_alloc(XNL_CMD_REG_RD, 0, &hdr, info);
-	if (!skb)
-		return -ENOMEM;
-
-	if (!info->attrs[XNL_ATTR_REG_BAR_NUM]) {
-		pr_warn("Missing attribute 'XNL_ATTR_REG_BAR_NUM'");
-		return -EINVAL;
-	}
-
-	if (!info->attrs[XNL_ATTR_REG_ADDR]) {
-		pr_warn("Missing attribute 'XNL_ATTR_REG_ADDR'");
-		return -EINVAL;
-	}
-
-	bar_num = nla_get_u32(info->attrs[XNL_ATTR_REG_BAR_NUM]);
-	reg_addr = nla_get_u32(info->attrs[XNL_ATTR_REG_ADDR]);
-
-	if (bar_num == conf.bar_num_config) {
-		rv = qdma_device_read_config_register(xpdev->dev_hndl,
-				reg_addr, &reg_val);
-		if (rv < 0) {
-			pr_err("Config bar register read failed with error = %d\n",
-					rv);
-			return rv;
-		}
-	} else if (bar_num == conf.bar_num_user) {
-		rv = qdma_device_read_user_register(xpdev, reg_addr, &reg_val);
-		if (rv < 0) {
-			pr_err("AXI Master Lite bar register read failed with error = %d\n",
-					rv);
-			return rv;
-		}
-	} else if (bar_num == conf.bar_num_bypass) {
-		rv = qdma_device_read_bypass_register(xpdev,
-				reg_addr, &reg_val);
-		if (rv < 0) {
-			pr_err("AXI Bridge Master bar register read failed with error = %d\n",
-					rv);
-			return rv;
-		}
-	} else {
-		rv += snprintf(buf + rv, XNL_RESP_BUFLEN_MIN,
-				"Invalid bar number\n");
-		goto send_resp;
-	}
-
-	err = xnl_msg_add_attr_uint(skb, XNL_ATTR_REG_VAL, reg_val);
-	if (err < 0) {
-		pr_err("xnl_msg_add_attr_uint() failed: %d", rv);
-		return err;
-	}
-
-	err = xnl_msg_send(skb, hdr, info);
-	return err;
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MIN, err);
-	nlmsg_free(skb);
-	return rv;
-}
-
-static int xnl_register_write(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct qdma_dev_conf conf;
-	char buf[XNL_RESP_BUFLEN_MIN];
-	unsigned int bar_num = 0, reg_addr = 0;
-	uint32_t reg_val = 0;
-	int rv = 0;
-
-	if (info == NULL)
-		return 0;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	rv = qdma_device_get_config(xpdev->dev_hndl, &conf, NULL, 0);
-	if (rv < 0)
-		return rv;
-
-	if (!info->attrs[XNL_ATTR_REG_BAR_NUM]) {
-		pr_warn("Missing attribute 'XNL_ATTR_REG_BAR_NUM'");
-		return -EINVAL;
-	}
-
-	if (!info->attrs[XNL_ATTR_REG_ADDR]) {
-		pr_warn("Missing attribute 'XNL_ATTR_REG_ADDR'");
-		return -EINVAL;
-	}
-
-	if (!info->attrs[XNL_ATTR_REG_VAL]) {
-		pr_warn("Missing attribute 'XNL_ATTR_REG_VAL'");
-		return -EINVAL;
-	}
-
-	bar_num = nla_get_u32(info->attrs[XNL_ATTR_REG_BAR_NUM]);
-	reg_addr = nla_get_u32(info->attrs[XNL_ATTR_REG_ADDR]);
-	reg_val = nla_get_u32(info->attrs[XNL_ATTR_REG_VAL]);
-
-	if (bar_num == conf.bar_num_config) {
-		rv = qdma_device_write_config_register(xpdev->dev_hndl,
-				reg_addr, reg_val);
-		if (rv < 0) {
-			pr_err("Config bar register write failed with error = %d\n",
-					rv);
-			return rv;
-		}
-	} else if (bar_num == conf.bar_num_user) {
-		rv = qdma_device_write_user_register(xpdev, reg_addr, reg_val);
-		if (rv < 0) {
-			pr_err("AXI Master Lite bar register write failed with error = %d\n",
-					rv);
-			return rv;
-		}
-
-	} else if (bar_num == conf.bar_num_bypass) {
-		rv = qdma_device_write_bypass_register(xpdev,
-				reg_addr, reg_val);
-		if (rv < 0) {
-			pr_err("AXI Bridge Master bar register write failed with error = %d\n",
-					rv);
-			return rv;
-		}
-	} else {
-		rv += snprintf(buf + rv, XNL_RESP_BUFLEN_MIN,
-					 "Invalid bar number\n");
-		goto send_resp;
-	}
-
-
-send_resp:
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MIN, rv);
-	return rv;
-}
-
-static int xnl_get_global_csr(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct global_csr_conf *csr;
-	struct xlnx_pci_dev *xpdev;
-	int rv;
-	u8 index = 0, count = 0;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return 0;
-
-	csr = kmalloc(sizeof(struct global_csr_conf), GFP_KERNEL);
-	if (!csr)
-		return -ENOMEM;
-
-	if (!info->attrs[XNL_ATTR_CSR_INDEX]) {
-		pr_warn("Missing attribute 'XNL_ATTR_CSR_INDEX'");
-		kfree(csr);
-		return -EINVAL;
-	}
-
-	if (!info->attrs[XNL_ATTR_CSR_COUNT]) {
-		pr_warn("Missing attribute 'XNL_ATTR_CSR_COUNT'");
-		kfree(csr);
-		return -EINVAL;
-	}
-
-	index = nla_get_u32(info->attrs[XNL_ATTR_CSR_INDEX]);
-	count = nla_get_u32(info->attrs[XNL_ATTR_CSR_COUNT]);
-
-	rv = qdma_global_csr_get(xpdev->dev_hndl, index, count, csr);
-	if (rv < 0) {
-		pr_err("qdma_global_csr_get() failed: %d", rv);
-		goto free_msg_buff;
-	}
-
-	rv = xnl_respond_data(info,
-		(void *)csr, sizeof(struct global_csr_conf));
-
-free_msg_buff:
-	kfree(csr);
-	return rv;
-}
-
-#ifdef TANDEM_BOOT_SUPPORTED
-static int xnl_en_st(struct sk_buff *skb2, struct genl_info *info)
-{
-	struct xlnx_pci_dev *xpdev;
-	int rv;
-	char *buf;
-
-	if (info == NULL)
-		return -EINVAL;
-
-	xnl_dump_attrs(info);
-
-	xpdev = xnl_rcv_check_xpdev(info);
-	if (!xpdev)
-		return -EINVAL;
-	buf = xnl_mem_alloc(XNL_RESP_BUFLEN_MIN, info);
-	if (!buf)
-		return -ENOMEM;
-
-	qdma_init_st_ctxt(xpdev->dev_hndl, buf, XNL_RESP_BUFLEN_MAX);
-	rv = xnl_respond_buffer(info, buf, XNL_RESP_BUFLEN_MAX, 0);
-
-	kfree(buf);
-	return rv;
-}
-#endif
-
-int xlnx_nl_init(void)
-{
-	int rv;
-#ifdef __GENL_REG_FAMILY_OPS_FUNC__
-	rv = genl_register_family_with_ops(&xnl_family,
-			xnl_ops, ARRAY_SIZE(xnl_ops));
-#else
-	rv = genl_register_family(&xnl_family);
-#endif
-	if (rv)
-		pr_err("genl_register_family failed %d.\n", rv);
-
-	return rv;
-}
-
-void  xlnx_nl_exit(void)
-{
-	int rv;
-
-	rv = genl_unregister_family(&xnl_family);
-	if (rv)
-		pr_err("genl_unregister_family failed %d.\n", rv);
-}
diff --git a/QDMA/linux-kernel/driver/src/nl.h b/QDMA/linux-kernel/driver/src/nl.h
deleted file mode 100755
index e1d4024..0000000
--- a/QDMA/linux-kernel/driver/src/nl.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_DRV_NL_H__
-#define __QDMA_DRV_NL_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma netlink helper
- * funnctions kernel module
- *
- */
-#define pr_fmt(fmt)     KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include <net/genetlink.h>
-
-/*****************************************************************************/
-/**
- * xnl_respond_buffer() - send a netlink string message
- *
- * @param[in]	nl_info:	pointer to netlink genl_info
- * @param[in]	buf:		string buffer
- * @param[in]	buflen:		length of the string buffer
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int xnl_respond_buffer(struct genl_info *info, char *buf, int buflen,
-		int error);
-
-int xlnx_nl_init(void);
-void  xlnx_nl_exit(void);
-
-#endif /* ifndef __QDMA_DRV_NL_H__ */
diff --git a/QDMA/linux-kernel/driver/src/pci_ids.h b/QDMA/linux-kernel/driver/src/pci_ids.h
deleted file mode 100755
index 61a3da1..0000000
--- a/QDMA/linux-kernel/driver/src/pci_ids.h
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XDMA_PCI_ID_H__
-#define __XDMA_PCI_ID_H__
-/**
- * @file
- * @brief This file contains the list of pcie devices supported for qdma driver
- *
- */
-
-/**
- * list of pcie devices supported for qdma driver
- */
-static const struct pci_device_id pci_ids[] = {
-
-#ifdef __QDMA_VF__
-	/** Gen 1 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xa011), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa111), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa211), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa311), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xa012), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa112), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa212), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa312), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xa014), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa114), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa214), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa314), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xa018), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa118), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa218), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa318), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xa01f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa11f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa21f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa31f), },	/** VF on PF 3 */
-
-	/** Gen 2 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xa021), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa121), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa221), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa321), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xa022), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa122), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa222), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa322), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xa024), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa124), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa224), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa324), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xa028), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa128), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa228), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa328), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xa02f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa12f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa22f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa32f), },	/** VF on PF 3 */
-
-	/** Gen 3 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xa031), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa131), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa231), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa331), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xa032), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa132), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa232), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa332), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xa034), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa134), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa234), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa334), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xa038), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa138), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa238), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa338), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xa03f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa13f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa23f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa33f), },	/** VF on PF 3 */
-
-	/** Gen 4 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xa041), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa141), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa241), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa341), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xa042), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa142), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa242), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa342), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xa044), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa144), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa244), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa344), },	/** VF on PF 3 */
-	{ PCI_DEVICE(0x10ee, 0xa444), },	/** VF on PF 4 */
-	{ PCI_DEVICE(0x10ee, 0xa544), },	/** VF on PF 5 */
-	{ PCI_DEVICE(0x10ee, 0xa644), },	/** VF on PF 6 */
-	{ PCI_DEVICE(0x10ee, 0xa744), },	/** VF on PF 7 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xa048), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xa148), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xa248), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xa348), },	/** VF on PF 3 */
-
-	/** Gen 1 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xc011), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc111), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc211), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc311), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xc012), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc112), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc212), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc312), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xc014), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc114), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc214), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc314), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xc018), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc118), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc218), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc318), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xc01f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc11f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc21f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc31f), },	/** VF on PF 3 */
-
-	/** Gen 2 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xc021), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc121), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc221), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc321), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xc022), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc122), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc222), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc322), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xc024), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc124), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc224), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc324), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xc028), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc128), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc228), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc328), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xc02f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc12f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc22f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc32f), },	/** VF on PF 3 */
-
-	/** Gen 3 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xc031), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc131), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc231), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc331), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xc032), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc132), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc232), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc332), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xc034), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc134), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc234), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc334), },	/** VF on PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xc038), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc138), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc238), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc338), },	/** VF on PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xc03f), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc13f), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc23f), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc33f), },	/** VF on PF 3 */
-
-	/** Gen 4 VF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xc041), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc141), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc241), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc341), },	/** VF on PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xc042), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc142), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc242), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc342), },	/** VF on PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xc044), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc144), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc244), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc344), },	/** VF on PF 3 */
-	{ PCI_DEVICE(0x10ee, 0xc444), },	/** VF on PF 4 */
-	{ PCI_DEVICE(0x10ee, 0xc544), },	/** VF on PF 5 */
-	{ PCI_DEVICE(0x10ee, 0xc644), },	/** VF on PF 6 */
-	{ PCI_DEVICE(0x10ee, 0xc744), },	/** VF on PF 7 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xc048), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc148), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc248), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc348), },	/** VF on PF 3 */
-
-	/** Gen 5 VF */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xc058), },	/** VF on PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xc158), },	/** VF on PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xc258), },	/** VF on PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xc358), },	/** VF on PF 3 */
-#else
-	/** Gen 1 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0x9011), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9111), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9211), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9311), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0x9012), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9112), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9212), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9312), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0x9014), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9114), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9214), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9314), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0x9018), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9118), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9218), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9318), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0x901f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x911f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x921f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x931f), },	/** PF 3 */
-
-	/** Gen 2 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0x9021), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9121), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9221), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9321), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0x9022), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9122), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9222), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9322), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0x9024), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9124), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9224), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9324), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0x9028), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9128), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9228), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9328), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0x902f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x912f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x922f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x932f), },	/** PF 3 */
-
-	/** Gen 3 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0x9031), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9131), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9231), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9331), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0x9032), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9132), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9232), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9332), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0x9034), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9134), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9234), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9334), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0x9038), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9138), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9238), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9338), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0x903f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x913f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x923f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x933f), },	/** PF 3 */
-	/* { PCI_DEVICE(0x10ee, 0x6a9f), }, */       /** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x6aa0), },	/** PF 1 */
-
-	/** Gen 4 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0x9041), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9141), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9241), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9341), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0x9042), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9142), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9242), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9342), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0x9044), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9144), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9244), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9344), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0x9048), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0x9148), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0x9248), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0x9348), },	/** PF 3 */
-
-	/** Gen 1 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xb011), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb111), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb211), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb311), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xb012), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb112), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb212), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb312), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xb014), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb114), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb214), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb314), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xb018), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb118), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb218), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb318), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xb01f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb11f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb21f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb31f), },	/** PF 3 */
-
-	/** Gen 2 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xb021), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb121), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb221), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb321), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xb022), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb122), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb222), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb322), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xb024), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb124), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb224), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb324), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xb028), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb128), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb228), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb328), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xb02f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb12f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb22f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb32f), },	/** PF 3 */
-
-	/** Gen 3 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xb031), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb131), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb231), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb331), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xb032), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb132), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb232), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb332), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xb034), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb134), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb234), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb334), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xb038), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb138), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb238), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb338), },	/** PF 3 */
-	/** PCIe lane width x16 */
-	{ PCI_DEVICE(0x10ee, 0xb03f), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb13f), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb23f), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb33f), },	/** PF 3 */
-
-	/** Gen 4 PF */
-	/** PCIe lane width x1 */
-	{ PCI_DEVICE(0x10ee, 0xb041), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb141), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb241), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb341), },	/** PF 3 */
-	/** PCIe lane width x2 */
-	{ PCI_DEVICE(0x10ee, 0xb042), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb142), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb242), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb342), },	/** PF 3 */
-	/** PCIe lane width x4 */
-	{ PCI_DEVICE(0x10ee, 0xb044), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb144), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb244), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb344), },	/** PF 3 */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xb048), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb148), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb248), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb348), },	/** PF 3 */
-
-	/** Gen 5 PF */
-	/** PCIe lane width x8 */
-	{ PCI_DEVICE(0x10ee, 0xb058), },	/** PF 0 */
-	{ PCI_DEVICE(0x10ee, 0xb158), },	/** PF 1 */
-	{ PCI_DEVICE(0x10ee, 0xb258), },	/** PF 2 */
-	{ PCI_DEVICE(0x10ee, 0xb358), },	/** PF 3 */
-#endif
-
-	{0,}
-};
-
-/** module device table */
-MODULE_DEVICE_TABLE(pci, pci_ids);
-
-#endif /* ifndef __XDMA_PCI_ID_H__ */
diff --git a/QDMA/linux-kernel/driver/src/qdma_mod.c b/QDMA/linux-kernel/driver/src/qdma_mod.c
deleted file mode 100755
index 11791f9..0000000
--- a/QDMA/linux-kernel/driver/src/qdma_mod.c
+++ /dev/null
@@ -1,1927 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#define pr_fmt(fmt)	KBUILD_MODNAME ":%s: " fmt, __func__
-
-#include "qdma_mod.h"
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/pci.h>
-#include <linux/aer.h>
-#include <linux/vmalloc.h>
-
-#include "nl.h"
-#include "libqdma/xdev.h"
-
-/* include early, to verify it depends only on the headers above */
-#include "version.h"
-
-#define QDMA_DEFAULT_TOTAL_Q 2048
-
-static char version[] =
-	DRV_MODULE_DESC " v" DRV_MODULE_VERSION "\n";
-
-MODULE_AUTHOR("Xilinx, Inc.");
-MODULE_DESCRIPTION(DRV_MODULE_DESC);
-MODULE_VERSION(DRV_MODULE_VERSION);
-MODULE_LICENSE("Dual BSD/GPL");
-
-static char mode[500] = {0};
-module_param_string(mode, mode, sizeof(mode), 0);
-MODULE_PARM_DESC(mode, "Load the driver in different modes, dflt is auto mode, format is \"<bus_num>:<pf_num>:<mode>\" and multiple comma separated entries can be specified");
-
-static char config_bar[500] = {0};
-module_param_string(config_bar, config_bar, sizeof(config_bar), 0);
-MODULE_PARM_DESC(config_bar, "specify the config bar number, dflt is 0, format is \"<bus_num>:<pf_num>:<bar_num>\" and multiple comma separated entries can be specified");
-
-static char master_pf[500] = {0};
-module_param_string(master_pf, master_pf, sizeof(master_pf), 0);
-MODULE_PARM_DESC(master_pf, "specify the master_pf, dflt is 0, format is \"<bus_num>:<master_pf>\" and multiple comma separated entries can be specified");
-
-static unsigned int num_threads;
-module_param(num_threads, uint, 0644);
-MODULE_PARM_DESC(num_threads,
-"Number of threads to be created each for request and writeback processing");
-
-
-#include "pci_ids.h"
-
-/*
- * xpdev helper functions
- */
-static LIST_HEAD(xpdev_list);
-static DEFINE_MUTEX(xpdev_mutex);
-
-static int xpdev_qdata_realloc(struct xlnx_pci_dev *xpdev, unsigned int qmax);
-
-static int xpdev_map_bar(struct xlnx_pci_dev *xpdev,
-		void __iomem **regs, u8 bar_num);
-static void xpdev_unmap_bar(struct xlnx_pci_dev *xpdev, void __iomem **regs);
-
-#ifdef __QDMA_VF__
-void qdma_flr_resource_free(unsigned long dev_hndl);
-#endif
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show the intr_rngsz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   intr_rngsz configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the intr_rngsz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t show_intr_rngsz(struct device *dev,
-	struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len;
-	unsigned int rngsz = 0;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	rngsz = qdma_get_intr_rngsz(xpdev->dev_hndl);
-	len = scnprintf(buf, PAGE_SIZE, "%u\n", rngsz);
-	if (len <= 0)
-		pr_err("copying rngsz to buffer failed with err: %d\n", len);
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to set the intr_rngsz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   intr_rngsz configuration value
- * @buf :   buffer to hold the configured value
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the intr_rngsz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t set_intr_rngsz(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-	struct xlnx_pci_dev *xpdev;
-	unsigned int rngsz = 0;
-	int err = 0;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	err = kstrtouint(buf, 0, &rngsz);
-	if (err < 0) {
-		pr_err("failed to set interrupt ring size\n");
-		return err;
-	}
-
-
-	err = qdma_set_intr_rngsz(xpdev->dev_hndl, (u32)rngsz);
-	return err ? err : count;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show the qmax configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   qmax configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the qmax
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t show_qmax(struct device *dev,
-	struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len;
-	unsigned int qmax = 0;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	qmax = qdma_get_qmax(xpdev->dev_hndl);
-	len = scnprintf(buf, PAGE_SIZE, "%u\n", qmax);
-	if (len <= 0)
-		pr_err("copying qmax to buf failed with err: %d\n", len);
-
-	return len;
-}
-
-#ifndef __QDMA_VF__
-static ssize_t set_qmax(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-	struct xlnx_pci_dev *xpdev;
-	unsigned int qmax = 0;
-	int err = 0;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-	err = kstrtouint(buf, 0, &qmax);
-	if (err < 0) {
-		pr_err("failed to set qmax to %d\n", qmax);
-		return err;
-	}
-	err = qdma_set_qmax(xpdev->dev_hndl, -1, qmax);
-
-	if (!err)
-		xpdev_qdata_realloc(xpdev, qmax);
-
-	return err ? err : count;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show the cmpl_status_acc configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   cmpl_status_acc configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the cmpl_status_acc
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t show_cmpl_status_acc(struct device *dev,
-	struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len;
-	unsigned int cmpl_status_acc = 0;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	cmpl_status_acc = qdma_get_wb_intvl(xpdev->dev_hndl);
-	len = scnprintf(buf, PAGE_SIZE,
-			"%u\n", cmpl_status_acc);
-	if (len <= 0)
-		pr_err("copying cmpl status acc value to buf failed with err: %d\n",
-				len);
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to set the cmpl_status_acc configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   cmpl_status_acc configuration value
- * @buf :   buffer to hold the configured value
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the cmpl_status_acc
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t set_cmpl_status_acc(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-#ifdef QDMA_CSR_REG_UPDATE
-	struct pci_dev *pdev = to_pci_dev(dev);
-	struct xlnx_pci_dev *xpdev;
-	unsigned int cmpl_status_acc = 0;
-	int err = 0;
-
-	if (!pdev)
-		return -EINVAL;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	err = kstrtoint(buf, 0, &cmpl_status_acc);
-	if (err < 0) {
-		pr_err("failed to set cmpl status accumulator to %d\n",
-				cmpl_status_acc);
-		return err;
-	}
-
-	err = qdma_set_cmpl_status_acc(xpdev->dev_hndl, cmpl_status_acc);
-	return err ? err : count;
-#else
-	pr_warn("QDMA CSR completion status accumulation update is not allowed\n");
-	return -EPERM;
-#endif
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show the buf_sz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   buf_sz configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the buf_sz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-
-static ssize_t show_c2h_buf_sz(struct device *dev,
-		struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len = 0;
-	int i;
-	unsigned int c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	qdma_get_buf_sz(xpdev->dev_hndl, c2h_buf_sz);
-
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%u", c2h_buf_sz[0]);
-	for (i = 1; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		len += scnprintf(buf + len,
-					PAGE_SIZE - len, " %u", c2h_buf_sz[i]);
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%s", "\n\0");
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to set the buf_sz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   buf_sz configuration value
- * @buf :   buffer to hold the configured value
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the buf_sz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-
-static ssize_t set_c2h_buf_sz(struct device *dev,
-		struct device_attribute *attr, const char *buf, size_t count)
-{
-#ifdef QDMA_CSR_REG_UPDATE
-	struct pci_dev *pdev = to_pci_dev(dev);
-	struct xlnx_pci_dev *xpdev;
-	int err = 0;
-	char *s = (char *)buf, *p = NULL;
-	const char *tc = " ";   /* token character here is a "space" */
-	unsigned int c2h_buf_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-	int i = 0;
-
-	if (!pdev)
-		return -EINVAL;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	/* First read the values in to the register
-	 * This helps to restore the values of entries if
-	 * user configures lesser than 16 values
-	 */
-	qdma_get_buf_sz(xpdev->dev_hndl, c2h_buf_sz);
-
-	while (((p = strsep(&s, tc)) != NULL) &&
-			(i < QDMA_GLOBAL_CSR_ARRAY_SZ)) {
-		if (*p == 0)
-			continue;
-
-		err = kstrtoint(p, 0, &c2h_buf_sz[i]);
-		if (err < 0)
-			goto input_err;
-
-		i++;
-	}
-
-	if (p) {
-		/*
-		 * check if the number of entries are more than 16 !
-		 * if yes, ignore the extra values
-		 */
-		pr_warn("Found more than 16 buffer size entries. Ignoring extra entries\n");
-	}
-
-	err = qdma_set_buf_sz(xpdev->dev_hndl, c2h_buf_sz);
-
-input_err:
-	return err ? err : count;
-#else
-	pr_warn("QDMA CSR C2H buffer size update is not allowed\n");
-	return -EPERM;
-#endif
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show the ring_sz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   ring_sz configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the ring_sz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-
-static ssize_t show_glbl_rng_sz(struct device *dev,
-	struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	struct xlnx_dma_dev *xdev = NULL;
-	int len = 0;
-	int i;
-	unsigned int glbl_ring_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-	qdma_get_ring_sizes(xdev, 0, QDMA_GLOBAL_CSR_ARRAY_SZ, glbl_ring_sz);
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%u", glbl_ring_sz[0]);
-	for (i = 1; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		len += scnprintf(buf + len,
-					PAGE_SIZE - len,
-					" %u", glbl_ring_sz[i]);
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%s", "\n\0");
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to set the glbl_ring_sz configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   buf_sz configuration value
- * @buf :   buffer to hold the configured value
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the glbl_ring_sz
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-
-static ssize_t set_glbl_rng_sz(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-#ifdef QDMA_CSR_REG_UPDATE
-	struct pci_dev *pdev = to_pci_dev(dev);
-	struct xlnx_pci_dev *xpdev;
-	int err = 0;
-	char *s = (char *)buf, *p = NULL;
-	const char *tc = " ";   /* token character here is a "space" */
-	unsigned int glbl_ring_sz[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-	int i = 0;
-
-	if (!pdev)
-		return -EINVAL;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	/* First read the values in to the register
-	 * This helps to restore the values of entries if
-	 * user configures lesser than 16 values
-	 */
-	qdma_get_glbl_rng_sz(xpdev->dev_hndl, glbl_ring_sz);
-
-	while (((p = strsep(&s, tc)) != NULL) &&
-			(i < QDMA_GLOBAL_CSR_ARRAY_SZ)) {
-		if (*p == 0)
-			continue;
-
-		err = kstrtoint(p, 0, &glbl_ring_sz[i]);
-		if (err < 0)
-			goto input_err;
-
-		i++;
-	}
-
-	if (p) {
-		/*
-		 * check if the number of entries are more than 16 !
-		 * if yes, ignore the extra values
-		 */
-		pr_warn("Found more than 16 ring size entries. Ignoring extra entries");
-	}
-
-	err = qdma_set_glbl_rng_sz(xpdev->dev_hndl, glbl_ring_sz);
-
-input_err:
-	return err ? err : count;
-#else
-	pr_warn("QDMA CSR global ring size update is not allowed\n");
-	return -EPERM;
-#endif
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show global csr c2h_timer_cnt configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   c2h_timer_cnt configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the global csr c2h_timer_cnt
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t show_c2h_timer_cnt(struct device *dev,
-	struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len = 0;
-	int i;
-	unsigned int c2h_timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	qdma_get_timer_cnt(xpdev->dev_hndl, c2h_timer_cnt);
-
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%u", c2h_timer_cnt[0]);
-	for (i = 1; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		len += scnprintf(buf + len,
-					PAGE_SIZE - len,
-					" %u", c2h_timer_cnt[i]);
-	len += scnprintf(buf + len, PAGE_SIZE - len, "%s", "\n\0");
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * set_c2h_timer_cnt() -  handler to set global csr c2h_timer_cnt config
- *
- * @dev :   PCIe device handle
- * @attr:   c2h_timer_cnt configuration value
- * @buf :   buffer containing new configuration
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the global csr c2h_timer_cnt
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t set_c2h_timer_cnt(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-#ifdef QDMA_CSR_REG_UPDATE
-	struct pci_dev *pdev = to_pci_dev(dev);
-	struct xlnx_pci_dev *xpdev;
-	int err = 0;
-	char *s = (char *)buf, *p = NULL;
-	const char *tc = " ";	/* token character here is a "space" */
-	unsigned int c2h_timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-	int i = 0;
-
-	if (!pdev)
-		return -EINVAL;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	/* First read the values in to the register
-	 * This helps to restore the values of entries if
-	 * user configures lesser than 16 values
-	 */
-	qdma_get_timer_cnt(xpdev->dev_hndl, c2h_timer_cnt);
-
-	while (((p = strsep(&s, tc)) != NULL) &&
-			(i < QDMA_GLOBAL_CSR_ARRAY_SZ)) {
-		if (*p == 0)
-			continue;
-
-		err = kstrtoint(p, 0, &c2h_timer_cnt[i]);
-		if (err < 0)
-			goto input_err;
-
-		if (c2h_timer_cnt[i] > 255) {
-			pr_warn("timer cnt at index %d is %d - out of range [0-255]\n",
-				i, c2h_timer_cnt[i]);
-			err = -EINVAL;
-			goto input_err;
-		}
-		i++;
-	}
-
-	if (p) {
-		/*
-		 * check if the number of entries are more than 16 !
-		 * if yes, ignore the extra values
-		 */
-		pr_warn("Found more than 16 timer entries. Ignoring extra entries\n");
-	}
-	err = qdma_set_timer_cnt(xpdev->dev_hndl, c2h_timer_cnt);
-
-input_err:
-	return err ? err : count;
-#else
-	pr_warn("QDMA CSR C2H timer counter update is not allowed\n");
-	return -EPERM;
-#endif
-}
-
-/*****************************************************************************/
-/**
- * funcname() -  handler to show global csr c2h_cnt_th_ configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   c2h_cnt_th configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to show the global csr c2h_cnt_th
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t show_c2h_cnt_th(struct device *dev,
-			struct device_attribute *attr, char *buf)
-{
-	struct xlnx_pci_dev *xpdev;
-	int len = 0;
-	int i;
-	unsigned int c2h_cnt_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	qdma_get_cnt_thresh(xpdev->dev_hndl, c2h_cnt_th);
-
-	len += scnprintf(buf + len,
-				PAGE_SIZE - len, "%u", c2h_cnt_th[0]);
-	for (i = 1; i < QDMA_GLOBAL_CSR_ARRAY_SZ; i++)
-		len += scnprintf(buf + len,
-				PAGE_SIZE - len, " %u", c2h_cnt_th[i]);
-	len += scnprintf(buf + len,
-				PAGE_SIZE - len, "%s", "\n\0");
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * set_c2h_cnt_th() -  handler to set global csr c2h_cnt_th configuration
- *
- * @dev :   PCIe device handle
- * @attr:   c2h_cnt_th configuration value
- * @buf :   buffer containing new configuration
- * @count : the number of bytes of data in the buffer
- *
- * Handler function to set the global csr c2h_cnt_th
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-static ssize_t set_c2h_cnt_th(struct device *dev,
-	struct device_attribute *attr, const char *buf, size_t count)
-{
-#ifdef QDMA_CSR_REG_UPDATE
-	struct pci_dev *pdev = to_pci_dev(dev);
-	struct xlnx_pci_dev *xpdev;
-	int err = 0;
-	char *s = (char *)buf, *p = NULL;
-	const char *tc = " ";	/* token character here is a "space" */
-	unsigned int c2h_cnt_th[QDMA_GLOBAL_CSR_ARRAY_SZ] = {0};
-	int i = 0;
-
-	if (!pdev)
-		return -EINVAL;
-
-	xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!xpdev)
-		return -EINVAL;
-
-	/* First read the values in to the register
-	 * This helps to restore the values of entries if
-	 * user configures lesser than 16 values
-	 */
-	qdma_get_cnt_thresh(xpdev->dev_hndl, c2h_cnt_th);
-
-	while (((p = strsep(&s, tc)) != NULL) &&
-			(i < QDMA_GLOBAL_CSR_ARRAY_SZ)) {
-		if (*p == 0)
-			continue;
-
-		err = kstrtoint(p, 0, &c2h_cnt_th[i]);
-		if (err < 0)
-			goto input_err;
-
-		if (c2h_cnt_th[i] > 255) {
-			pr_warn("counter threshold at index %d is %d - out of range [0-255]\n",
-				i, c2h_cnt_th[i]);
-			err = -EINVAL;
-			goto input_err;
-		}
-		i++;
-	}
-
-	if (p) {
-		/*
-		 * check if the number of entries are more than 16 !
-		 * if yes, ignore the extra values
-		 */
-		pr_warn("Found more than 16 counter entries. Ignoring extra entries\n");
-	}
-	err = qdma_set_cnt_thresh(xpdev->dev_hndl, c2h_cnt_th);
-
-input_err:
-	return err ? err : count;
-#else
-	pr_warn("QDMA CSR C2H counter threshold update is not allowed\n");
-	return -EPERM;
-#endif
-}
-#else /** For VF #ifdef __QDMA_VF__ */
-/*****************************************************************************/
-/**
- * funcname() -  handler to set the qmax configuration value
- *
- * @dev :   PCIe device handle
- * @attr:   qmax configuration value
- * @buf :   buffer to hold the configured value
- *
- * Handler function to set the qmax
- *
- * @note    none
- *
- * Return:  Returns length of the buffer on success, <0 on failure
- *
- *****************************************************************************/
-
-static ssize_t set_qmax(struct device *dev,
-		struct device_attribute *attr, const char *buf, size_t count)
-{
-	struct xlnx_pci_dev *_xpdev;
-	unsigned int qmax = 0;
-	int err = 0;
-
-	_xpdev = (struct xlnx_pci_dev *)dev_get_drvdata(dev);
-	if (!_xpdev)
-		return -EINVAL;
-
-	err = kstrtouint(buf, 0, &qmax);
-	if (err < 0) {
-		pr_err("Failed to set qmax\n");
-		return err;
-	}
-
-	err = qdma_vf_qconf(_xpdev->dev_hndl, qmax);
-	if (err < 0)
-		return err;
-
-	if (!err) {
-		pr_debug("Succesfully reconfigured qdmavf%05x\n", _xpdev->idx);
-		xpdev_qdata_realloc(_xpdev, qmax);
-	}
-
-	return err ? err : count;
-}
-#endif
-
-static DEVICE_ATTR(qmax, S_IWUSR | S_IRUGO, show_qmax, set_qmax);
-static DEVICE_ATTR(intr_rngsz, S_IWUSR | S_IRUGO,
-			show_intr_rngsz, set_intr_rngsz);
-#ifndef __QDMA_VF__
-static DEVICE_ATTR(buf_sz, S_IWUSR | S_IRUGO,
-		show_c2h_buf_sz, set_c2h_buf_sz);
-static DEVICE_ATTR(glbl_rng_sz, S_IWUSR | S_IRUGO,
-		show_glbl_rng_sz, set_glbl_rng_sz);
-static DEVICE_ATTR(c2h_timer_cnt, S_IWUSR | S_IRUGO,
-			show_c2h_timer_cnt, set_c2h_timer_cnt);
-static DEVICE_ATTR(c2h_cnt_th, S_IWUSR | S_IRUGO,
-			show_c2h_cnt_th, set_c2h_cnt_th);
-static DEVICE_ATTR(cmpl_status_acc, S_IWUSR | S_IRUGO,
-		show_cmpl_status_acc, set_cmpl_status_acc);
-#endif
-
-static struct attribute *pci_device_attrs[] = {
-		&dev_attr_qmax.attr,
-		&dev_attr_intr_rngsz.attr,
-		NULL,
-};
-
-static struct attribute *pci_master_device_attrs[] = {
-		&dev_attr_qmax.attr,
-		&dev_attr_intr_rngsz.attr,
-#ifndef __QDMA_VF__
-		&dev_attr_buf_sz.attr,
-		&dev_attr_glbl_rng_sz.attr,
-		&dev_attr_c2h_timer_cnt.attr,
-		&dev_attr_c2h_cnt_th.attr,
-		&dev_attr_cmpl_status_acc.attr,
-#endif
-		NULL,
-};
-
-static struct attribute_group pci_device_attr_group = {
-		.name  = "qdma",
-		.attrs = pci_device_attrs,
-
-};
-
-static struct attribute_group pci_master_device_attr_group = {
-		.name  = "qdma",
-		.attrs = pci_master_device_attrs,
-
-};
-
-static inline void xpdev_list_remove(struct xlnx_pci_dev *xpdev)
-{
-	mutex_lock(&xpdev_mutex);
-	list_del(&xpdev->list_head);
-	mutex_unlock(&xpdev_mutex);
-}
-
-static inline void xpdev_list_add(struct xlnx_pci_dev *xpdev)
-{
-	mutex_lock(&xpdev_mutex);
-	list_add_tail(&xpdev->list_head, &xpdev_list);
-	mutex_unlock(&xpdev_mutex);
-}
-
-int xpdev_list_dump(char *buf, int buflen)
-{
-	struct xlnx_pci_dev *xpdev, *tmp;
-	char *cur = buf;
-	char *const end = buf + buflen;
-	int base_end = 0;
-	int qmax_val = 0;
-
-	if (!buf || !buflen)
-		return -EINVAL;
-
-	mutex_lock(&xpdev_mutex);
-	list_for_each_entry_safe(xpdev, tmp, &xpdev_list, list_head) {
-		struct pci_dev *pdev;
-		struct qdma_dev_conf conf;
-		int rv;
-
-		rv = qdma_device_get_config(xpdev->dev_hndl, &conf, NULL, 0);
-		if (rv < 0) {
-			cur += snprintf(cur, cur - end,
-			"ERR! unable to get device config for idx %05x\n",
-			xpdev->idx);
-			if (cur >= end)
-				goto handle_truncation;
-			break;
-		}
-
-		pdev = conf.pdev;
-
-		base_end = (int)(conf.qsets_base + conf.qsets_max - 1);
-		if (base_end < 0)
-			base_end = 0;
-		qmax_val = conf.qsets_max;
-
-		if (qmax_val) {
-			cur += snprintf(cur, end - cur,
-#ifdef __QDMA_VF__
-					"qdmavf%05x\t%s\tmax QP: %d, %d~%d\n",
-#else
-					"qdma%05x\t%s\tmax QP: %d, %d~%d\n",
-#endif
-					xpdev->idx, dev_name(&pdev->dev),
-					qmax_val, conf.qsets_base,
-					base_end);
-		} else {
-			cur += snprintf(cur, end - cur,
-#ifdef __QDMA_VF__
-					"qdmavf%05x\t%s\tmax QP: 0, -~-\n",
-#else
-					"qdma%05x\t%s\tmax QP: 0, -~-\n",
-#endif
-					xpdev->idx, dev_name(&pdev->dev));
-		}
-		if (cur >= end)
-			goto handle_truncation;
-	}
-	mutex_unlock(&xpdev_mutex);
-
-	return cur - buf;
-
-handle_truncation:
-	mutex_unlock(&xpdev_mutex);
-	pr_warn("ERR! str truncated. req=%lu, avail=%u", cur - buf, buflen);
-	*buf = '\0';
-	return cur - buf;
-}
-
-/**
- * Function to find the first PF device available in the card
- */
-static bool is_first_pfdev(u8 bus_number)
-{
-	struct xlnx_pci_dev *_xpdev, *tmp;
-
-	mutex_lock(&xpdev_mutex);
-	if (list_empty(&xpdev_list)) {
-		mutex_unlock(&xpdev_mutex);
-		return 1;
-	}
-
-	list_for_each_entry_safe(_xpdev, tmp, &xpdev_list, list_head) {
-		struct pci_dev *pdev = _xpdev->pdev;
-		/** find first bus and device are matching */
-		if (pdev->bus->number == bus_number) {
-			mutex_unlock(&xpdev_mutex);
-			/** if func matches, it returns 1, else 0*/
-			return 0;
-		}
-	}
-	mutex_unlock(&xpdev_mutex);
-
-	return 1;
-}
-/*****************************************************************************/
-/**
- * extract_mod_param() - extract the device mode and config bar per function
- *
- * @param[in]	pdev:		pcie device
- * @param[in]	qdma_drv_mod_param_type:		mod param type
- *
- * @return	device mode
- *****************************************************************************/
-static u8 extract_mod_param(struct pci_dev *pdev,
-		enum qdma_drv_mod_param_type param_type)
-{
-	char p[600];
-	char *ptr, *mod;
-
-	u8 dev_fn = PCI_FUNC(pdev->devfn);
-#ifdef __QDMA_VF__
-	u16 device_id = pdev->device;
-#endif
-
-
-	/* Fetch param specified in the module parameter */
-	ptr = p;
-	if (param_type == DRV_MODE) {
-		if (mode[0] == '\0')
-			return 0;
-		strncpy(p, mode, sizeof(p) - 1);
-	} else if (param_type == CONFIG_BAR) {
-		if (config_bar[0] == '\0')
-			return 0;
-		strncpy(p, config_bar, sizeof(p) - 1);
-	} else if (param_type == MASTER_PF) {
-		if (master_pf[0] == '\0')
-			return is_first_pfdev(pdev->bus->number);
-		strncpy(p, master_pf, sizeof(p) - 1);
-	} else {
-		pr_err("Invalid module param type received\n");
-		return -EINVAL;
-	}
-
-	while ((mod = strsep(&ptr, ","))) {
-		unsigned int bus_num, func_num, param = 0;
-		int fields;
-
-		if (!strlen(mod))
-			continue;
-
-		if (param_type == MASTER_PF) {
-			fields = sscanf(mod, "%x:%x", &bus_num, &param);
-
-			if (fields != 2) {
-				pr_warn("invalid mode string \"%s\"\n", mod);
-				continue;
-			}
-
-			if ((bus_num == pdev->bus->number) &&
-					(dev_fn == param))
-				return 1;
-		} else {
-			fields = sscanf(mod, "%x:%x:%x",
-					&bus_num, &func_num, &param);
-
-			if (fields != 3) {
-				pr_warn("invalid mode string \"%s\"\n", mod);
-				continue;
-			}
-
-#ifndef __QDMA_VF__
-			if ((bus_num == pdev->bus->number) &&
-					(func_num == dev_fn))
-				return param;
-#else
-			if ((bus_num == pdev->bus->number) &&
-				(((device_id >> VF_PF_IDENTIFIER_SHIFT) &
-					VF_PF_IDENTIFIER_MASK) == func_num))
-				return param;
-#endif
-		}
-	}
-
-	return 0;
-}
-
-struct xlnx_pci_dev *xpdev_find_by_idx(unsigned int idx, char *buf, int buflen)
-{
-	struct xlnx_pci_dev *xpdev, *tmp;
-
-	mutex_lock(&xpdev_mutex);
-	list_for_each_entry_safe(xpdev, tmp, &xpdev_list, list_head) {
-		if (xpdev->idx == idx) {
-			mutex_unlock(&xpdev_mutex);
-			return xpdev;
-		}
-	}
-	mutex_unlock(&xpdev_mutex);
-
-	if (buf && buflen)
-		snprintf(buf, buflen, "NO device found at index %05x!\n", idx);
-
-	return NULL;
-}
-
-struct xlnx_qdata *xpdev_queue_get(struct xlnx_pci_dev *xpdev,
-			unsigned int qidx, u8 q_type, bool check_qhndl,
-			char *ebuf, int ebuflen)
-{
-	struct xlnx_qdata *qdata;
-
-	if (qidx >= xpdev->qmax) {
-		pr_debug("qdma%05x QID %u too big, %05x.\n",
-			xpdev->idx, qidx, xpdev->qmax);
-		if (ebuf && ebuflen) {
-			snprintf(ebuf, ebuflen, "QID %u too big, %u.\n",
-					 qidx, xpdev->qmax);
-		}
-		return NULL;
-	}
-
-	qdata = xpdev->qdata + qidx;
-	if (q_type == Q_C2H)
-		qdata += xpdev->qmax;
-	if (q_type == Q_CMPT)
-		qdata += (2 * xpdev->qmax);
-
-	if (check_qhndl && (!qdata->qhndl && !qdata->xcdev)) {
-		pr_debug("qdma%05x QID %u NOT configured.\n", xpdev->idx, qidx);
-		if (ebuf && ebuflen) {
-			snprintf(ebuf, ebuflen,
-					"QID %u NOT configured.\n", qidx);
-		}
-
-		return NULL;
-	}
-
-	return qdata;
-}
-
-int xpdev_queue_delete(struct xlnx_pci_dev *xpdev, unsigned int qidx, u8 q_type,
-			char *ebuf, int ebuflen)
-{
-	struct xlnx_qdata *qdata = xpdev_queue_get(xpdev, qidx, q_type, 1, ebuf,
-						ebuflen);
-	int rv = 0;
-
-	if (!qdata)
-		return -EINVAL;
-
-	if (q_type != Q_CMPT) {
-		if (!qdata->xcdev)
-			return -EINVAL;
-	}
-
-	if (qdata->qhndl != QDMA_QUEUE_IDX_INVALID)
-		rv = qdma_queue_remove(xpdev->dev_hndl, qdata->qhndl,
-					ebuf, ebuflen);
-	else
-		pr_err("qidx %u/%u, type %d, qhndl invalid.\n",
-			qidx, xpdev->qmax, q_type);
-	if (rv < 0)
-		goto exit;
-
-	if (q_type != Q_CMPT) {
-		spin_lock(&xpdev->cdev_lock);
-		qdata->xcdev->dir_init &= ~(1 << (q_type ? 1 : 0));
-		spin_unlock(&xpdev->cdev_lock);
-
-		if (!qdata->xcdev->dir_init)
-			qdma_cdev_destroy(qdata->xcdev);
-	}
-
-	memset(qdata, 0, sizeof(*qdata));
-exit:
-	return rv;
-}
-
-#if KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-static void xpdev_queue_delete_all(struct xlnx_pci_dev *xpdev)
-{
-	int i;
-
-	for (i = 0; i < xpdev->qmax; i++) {
-		xpdev_queue_delete(xpdev, i, 0, NULL, 0);
-		xpdev_queue_delete(xpdev, i, 1, NULL, 0);
-	}
-}
-#endif
-
-int xpdev_queue_add(struct xlnx_pci_dev *xpdev, struct qdma_queue_conf *qconf,
-			char *ebuf, int ebuflen)
-{
-	struct xlnx_qdata *qdata;
-	struct qdma_cdev *xcdev = NULL;
-	struct xlnx_qdata *qdata_tmp;
-	struct qdma_dev_conf dev_config;
-	u8 dir;
-	unsigned long qhndl;
-	int rv;
-
-	rv = qdma_queue_add(xpdev->dev_hndl, qconf, &qhndl, ebuf, ebuflen);
-	if (rv < 0)
-		return rv;
-
-	pr_debug("qdma%05x idx %u, st %d, q_type %s, added, qhndl 0x%lx.\n",
-		xpdev->idx, qconf->qidx, qconf->st,
-		q_type_list[qconf->q_type].name, qhndl);
-
-	qdata = xpdev_queue_get(xpdev, qconf->qidx, qconf->q_type, 0, ebuf,
-				ebuflen);
-	if (!qdata) {
-		pr_err("q added 0x%lx, get failed, idx 0x%x.\n",
-			qhndl, qconf->qidx);
-		return rv;
-	}
-
-	if (qconf->q_type != Q_CMPT) {
-		dir = (qconf->q_type == Q_C2H) ? 0 : 1;
-		spin_lock(&xpdev->cdev_lock);
-		qdata_tmp = xpdev_queue_get(xpdev, qconf->qidx,
-				dir, 0, NULL, 0);
-		if (qdata_tmp) {
-			/* only 1 cdev per queue pair */
-			if (qdata_tmp->xcdev) {
-				unsigned long *priv_data;
-
-				qdata->qhndl = qhndl;
-				qdata->xcdev = qdata_tmp->xcdev;
-				priv_data = (qconf->q_type == Q_C2H) ?
-						&qdata->xcdev->c2h_qhndl :
-						&qdata->xcdev->h2c_qhndl;
-				*priv_data = qhndl;
-				qdata->xcdev->dir_init |= (1 << qconf->q_type);
-
-				spin_unlock(&xpdev->cdev_lock);
-				return 0;
-			}
-		}
-		spin_unlock(&xpdev->cdev_lock);
-	}
-
-	rv = qdma_device_get_config(xpdev->dev_hndl, &dev_config, NULL, 0);
-	if (rv < 0) {
-		pr_err("Failed to get conf for qdma device '%05x'\n",
-				xpdev->idx);
-		return rv;
-	}
-
-	/* always create the cdev
-	 * Give HW QID as minor number with qsets_base calculation
-	 */
-	if (qconf->q_type != Q_CMPT) {
-		rv = qdma_cdev_create(&xpdev->cdev_cb, xpdev->pdev, qconf,
-				(dev_config.qsets_base + qconf->qidx),
-				qhndl, &xcdev, ebuf, ebuflen);
-
-		qdata->xcdev = xcdev;
-	}
-
-	qdata->qhndl = qhndl;
-
-	return rv;
-}
-
-static void nl_work_handler_q_start(struct work_struct *work)
-{
-	struct xlnx_nl_work *nl_work = container_of(work, struct xlnx_nl_work,
-						work);
-	struct xlnx_pci_dev *xpdev = nl_work->xpdev;
-	struct xlnx_nl_work_q_ctrl *qctrl = &nl_work->qctrl;
-	unsigned int qidx = qctrl->qidx;
-	u8 is_qp = qctrl->is_qp;
-	u8 q_type = qctrl->q_type;
-	int i;
-	char *ebuf = nl_work->buf;
-	int rv = 0;
-
-	for (i = 0; i < qctrl->qcnt; i++, qidx++) {
-		struct xlnx_qdata *qdata;
-
-q_start:
-		qdata = xpdev_queue_get(xpdev, qidx, q_type, 1, ebuf,
-					nl_work->buflen);
-		if (!qdata) {
-			pr_err("%s, idx %u, q_type %s, get failed.\n",
-				dev_name(&xpdev->pdev->dev), qidx,
-				q_type_list[q_type].name);
-			snprintf(ebuf, nl_work->buflen,
-				"Q idx %u, q_type %s, get failed.\n",
-				qidx, q_type_list[q_type].name);
-			goto send_resp;
-		}
-
-		rv = qdma_queue_start(xpdev->dev_hndl, qdata->qhndl, ebuf,
-				      nl_work->buflen);
-		if (rv < 0) {
-			pr_err("%s, idx %u, q_type %s, start failed %d.\n",
-				dev_name(&xpdev->pdev->dev), qidx,
-				q_type_list[q_type].name, rv);
-			snprintf(ebuf, nl_work->buflen,
-				"Q idx %u, q_type %s, start failed %d.\n",
-				qidx, q_type_list[q_type].name, rv);
-			goto send_resp;
-		}
-		if (qctrl->q_type != Q_CMPT) {
-			if (is_qp && q_type == qctrl->q_type) {
-				q_type = !qctrl->q_type;
-				goto q_start;
-			}
-
-			q_type = qctrl->q_type;
-		}
-	}
-
-	snprintf(ebuf, nl_work->buflen,
-		 "%u Queues started, idx %u ~ %u.\n",
-		qctrl->qcnt, qctrl->qidx, qidx - 1);
-
-send_resp:
-	nl_work->q_start_handled = 1;
-	nl_work->ret = rv;
-	wake_up_interruptible(&nl_work->wq);
-}
-
-static struct xlnx_nl_work *xpdev_nl_work_alloc(struct xlnx_pci_dev *xpdev)
-{
-	struct xlnx_nl_work *nl_work;
-
-	/* allocate work struct */
-	nl_work = kzalloc(sizeof(*nl_work), GFP_ATOMIC);
-	if (!nl_work) {
-		pr_err("qdma%05x %s: OOM.\n",
-			xpdev->idx, dev_name(&xpdev->pdev->dev));
-		return NULL;
-	}
-
-	nl_work->xpdev = xpdev;
-
-	return nl_work;
-}
-
-int xpdev_nl_queue_start(struct xlnx_pci_dev *xpdev, void *nl_info, u8 is_qp,
-			u8 q_type, unsigned short qidx, unsigned short qcnt)
-{
-	struct xlnx_nl_work *nl_work = xpdev_nl_work_alloc(xpdev);
-	struct xlnx_nl_work_q_ctrl *qctrl;
-	char ebuf[XNL_EBUFLEN];
-	int rv = 0;
-
-	if (!nl_work)
-		return -ENOMEM;
-
-	qctrl = &nl_work->qctrl;
-	qctrl->is_qp = is_qp;
-	qctrl->q_type = q_type;
-	qctrl->qidx = qidx;
-	qctrl->qcnt = qcnt;
-
-	INIT_WORK(&nl_work->work, nl_work_handler_q_start);
-	init_waitqueue_head(&nl_work->wq);
-	nl_work->q_start_handled = 0;
-	nl_work->buf = ebuf;
-	nl_work->buflen = XNL_EBUFLEN;
-	queue_work(xpdev->nl_task_wq, &nl_work->work);
-	wait_event_interruptible(nl_work->wq, nl_work->q_start_handled);
-	rv = nl_work->ret;
-	kfree(nl_work);
-	xnl_respond_buffer(nl_info, ebuf, strlen(ebuf), rv);
-
-	return rv;
-}
-
-static void xpdev_free(struct xlnx_pci_dev *p)
-{
-	xpdev_list_remove(p);
-
-	if (p->nl_task_wq)
-		destroy_workqueue(p->nl_task_wq);
-
-	kfree(p->qdata);
-	kfree(p);
-}
-
-static int xpdev_qdata_realloc(struct xlnx_pci_dev *xpdev, unsigned int qmax)
-{
-	if (!xpdev)
-		return -EINVAL;
-
-	kfree(xpdev->qdata);
-	xpdev->qdata = NULL;
-
-	if (!qmax)
-		return 0;
-	xpdev->qdata = kzalloc(qmax * 3 * sizeof(struct xlnx_qdata),
-			       GFP_KERNEL);
-	if (!xpdev->qdata) {
-		pr_err("OMM, xpdev->qdata, sz %u.\n", qmax);
-		return -ENOMEM;
-	}
-	xpdev->qmax = qmax;
-
-	return 0;
-}
-
-static struct xlnx_pci_dev *xpdev_alloc(struct pci_dev *pdev, unsigned int qmax)
-{
-	int sz = sizeof(struct xlnx_pci_dev);
-	struct xlnx_pci_dev *xpdev = kzalloc(sz, GFP_KERNEL);
-	char name[80];
-
-	if (!xpdev) {
-		xpdev = vmalloc(sz);
-		if (xpdev)
-			memset(xpdev, 0, sz);
-	}
-
-	if (!xpdev) {
-		pr_err("OMM, qmax %u, sz %u.\n", qmax, sz);
-		return NULL;
-	}
-	spin_lock_init(&xpdev->cdev_lock);
-	xpdev->pdev = pdev;
-	xpdev->qmax = qmax;
-	xpdev->idx = 0xFF;
-	if (qmax && (xpdev_qdata_realloc(xpdev, qmax) < 0))
-		goto free_xpdev;
-
-	snprintf(name, 80, "qdma_%s_nl_wq", dev_name(&pdev->dev));
-	xpdev->nl_task_wq = create_singlethread_workqueue(name);
-	if (!xpdev->nl_task_wq) {
-		pr_err("%s failed to allocate nl_task_wq.\n",
-				dev_name(&pdev->dev));
-		goto free_xpdev;
-	}
-
-	xpdev_list_add(xpdev);
-	return xpdev;
-
-free_xpdev:
-	xpdev_free(xpdev);
-	return NULL;
-}
-
-static int xpdev_map_bar(struct xlnx_pci_dev *xpdev,
-		void __iomem **regs, u8 bar_num)
-{
-	int map_len;
-
-	/* map the AXI Master Lite bar */
-	map_len = pci_resource_len(xpdev->pdev, (int)bar_num);
-	if (map_len > QDMA_MAX_BAR_LEN_MAPPED)
-		map_len = QDMA_MAX_BAR_LEN_MAPPED;
-
-	*regs = pci_iomap(xpdev->pdev, bar_num, map_len);
-	if (!(*regs)) {
-		pr_err("unable to map bar %d.\n", bar_num);
-		return -ENOMEM;
-	}
-
-	return 0;
-}
-
-static void xpdev_unmap_bar(struct xlnx_pci_dev *xpdev, void __iomem **regs)
-{
-	/* unmap BAR */
-	if (*regs) {
-		pci_iounmap(xpdev->pdev, *regs);
-		/* mark as unmapped */
-		*regs = NULL;
-	}
-}
-
-int qdma_device_read_user_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 *value)
-{
-	struct xlnx_dma_dev *xdev = NULL;
-	int rv = 0;
-
-	if (!xpdev)
-		return -EINVAL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	if (xdev->conf.bar_num_user < 0) {
-		pr_err("AXI Master Lite bar is not present\n");
-		return -EINVAL;
-	}
-
-	/* map the AXI Master Lite bar */
-	rv = xpdev_map_bar(xpdev, &xpdev->user_bar_regs,
-			xdev->conf.bar_num_user);
-	if (rv < 0)
-		return rv;
-
-	*value = readl(xpdev->user_bar_regs + reg_addr);
-
-	/* unmap the AXI Master Lite bar after accessing it */
-	xpdev_unmap_bar(xpdev, &xpdev->user_bar_regs);
-
-	return 0;
-}
-
-int qdma_device_write_user_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 value)
-{
-	struct xlnx_dma_dev *xdev = NULL;
-	int rv = 0;
-
-	if (!xpdev)
-		return -EINVAL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	if (xdev->conf.bar_num_user < 0) {
-		pr_err("AXI Master Lite bar is not present\n");
-		return -EINVAL;
-	}
-
-	/* map the AXI Master Lite bar */
-	rv = xpdev_map_bar(xpdev, &xpdev->user_bar_regs,
-			xdev->conf.bar_num_user);
-	if (rv < 0)
-		return rv;
-
-
-	writel(value, xpdev->user_bar_regs + reg_addr);
-
-	/* unmap the AXI Master Lite bar after accessing it */
-	xpdev_unmap_bar(xpdev, &xpdev->user_bar_regs);
-
-	return 0;
-}
-
-int qdma_device_read_bypass_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 *value)
-{
-	struct xlnx_dma_dev *xdev = NULL;
-	int rv = 0;
-
-	if (!xpdev)
-		return -EINVAL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	if (xdev->conf.bar_num_bypass < 0) {
-		pr_err("AXI Bridge Master bar is not present\n");
-		return -EINVAL;
-	}
-
-	/* map the AXI Bridge Master bar */
-	rv = xpdev_map_bar(xpdev, &xpdev->bypass_bar_regs,
-			xdev->conf.bar_num_bypass);
-	if (rv < 0)
-		return rv;
-
-	*value = readl(xpdev->bypass_bar_regs + reg_addr);
-
-	/* unmap the AXI Bridge Master bar after accessing it */
-	xpdev_unmap_bar(xpdev, &xpdev->bypass_bar_regs);
-
-	return 0;
-}
-
-int qdma_device_write_bypass_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 value)
-{
-	struct xlnx_dma_dev *xdev = NULL;
-	int rv = 0;
-
-	if (!xpdev)
-		return -EINVAL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	if (xdev->conf.bar_num_bypass < 0) {
-		pr_err("AXI Bridge Master bar is not present\n");
-		return -EINVAL;
-	}
-
-	/* map the AXI Bridge Master bar */
-	rv = xpdev_map_bar(xpdev, &xpdev->bypass_bar_regs,
-			xdev->conf.bar_num_bypass);
-	if (rv < 0)
-		return rv;
-
-	writel(value, xpdev->bypass_bar_regs + reg_addr);
-
-	/* unmap the AXI Bridge Master bar after accessing it */
-	xpdev_unmap_bar(xpdev, &xpdev->bypass_bar_regs);
-
-	return 0;
-}
-
-static int probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
-{
-	struct qdma_dev_conf conf;
-	struct xlnx_pci_dev *xpdev = NULL;
-	unsigned long dev_hndl;
-	int rv;
-#ifdef __x86_64__
-	pr_info("%s: func 0x%x, p/v %d/%d,0x%p.\n",
-		dev_name(&pdev->dev), PCI_FUNC(pdev->devfn),
-		pdev->is_physfn, pdev->is_virtfn, pdev->physfn);
-#endif
-	memset(&conf, 0, sizeof(conf));
-
-	conf.qdma_drv_mode = (enum qdma_drv_mode)extract_mod_param(pdev,
-			DRV_MODE);
-	conf.vf_max = 0;	/* enable via sysfs */
-
-#ifndef __QDMA_VF__
-	conf.master_pf = extract_mod_param(pdev, MASTER_PF);
-	if (conf.master_pf)
-		pr_info("Configuring '%02x:%02x:%x' as master pf\n",
-				pdev->bus->number,
-				PCI_SLOT(pdev->devfn),
-				PCI_FUNC(pdev->devfn));
-
-#endif /* #ifdef __QDMA_VF__ */
-	pr_info("Driver is loaded in %s(%d) mode\n",
-				mode_name_list[conf.qdma_drv_mode].name,
-				conf.qdma_drv_mode);
-
-	if (conf.qdma_drv_mode == LEGACY_INTR_MODE)
-		intr_legacy_init();
-
-	conf.intr_rngsz = QDMA_INTR_COAL_RING_SIZE;
-	conf.pdev = pdev;
-
-	/* initialize all the bar numbers with -1 */
-	conf.bar_num_config = -1;
-	conf.bar_num_user = -1;
-	conf.bar_num_bypass = -1;
-
-	conf.bar_num_config = extract_mod_param(pdev, CONFIG_BAR);
-	conf.qsets_max = 0;
-	conf.qsets_base = -1;
-	conf.msix_qvec_max = 32;
-	conf.user_msix_qvec_max = 1;
-#ifdef __QDMA_VF__
-	conf.fp_flr_free_resource = qdma_flr_resource_free;
-#endif
-	if (conf.master_pf)
-		conf.data_msix_qvec_max = 5;
-	else
-		conf.data_msix_qvec_max = 6;
-
-	rv = qdma_device_open(DRV_MODULE_NAME, &conf, &dev_hndl);
-	if (rv < 0)
-		return rv;
-
-	xpdev = xpdev_alloc(pdev, conf.qsets_max);
-	if (!xpdev) {
-		rv = -EINVAL;
-		goto close_device;
-	}
-
-	xpdev->dev_hndl = dev_hndl;
-	xpdev->idx = conf.bdf;
-
-	xpdev->cdev_cb.xpdev = xpdev;
-	rv = qdma_cdev_device_init(&xpdev->cdev_cb);
-	if (rv < 0)
-		goto close_device;
-
-	/* Create the files for attributes in sysfs */
-	if (conf.master_pf) {
-		rv = sysfs_create_group(&pdev->dev.kobj,
-				&pci_master_device_attr_group);
-		if (rv < 0)
-			goto close_device;
-	} else {
-		rv = sysfs_create_group(&pdev->dev.kobj,
-				&pci_device_attr_group);
-		if (rv < 0)
-			goto close_device;
-	}
-
-	dev_set_drvdata(&pdev->dev, xpdev);
-
-	return 0;
-
-close_device:
-	qdma_device_close(pdev, dev_hndl);
-
-	if (xpdev)
-		xpdev_free(xpdev);
-
-	return rv;
-}
-
-static void xpdev_device_cleanup(struct xlnx_pci_dev *xpdev)
-{
-	struct xlnx_qdata *qdata = xpdev->qdata;
-	struct xlnx_qdata *qmax = qdata + (xpdev->qmax * 2); /* h2c and c2h */
-
-	for (; qdata != qmax; qdata++) {
-		if (qdata->xcdev) {
-			/* if either h2c(1) or c2h(2) bit set, but not both */
-			if (qdata->xcdev->dir_init == 1 ||
-				qdata->xcdev->dir_init == 2) {
-				qdma_cdev_destroy(qdata->xcdev);
-			} else { /* both bits are set so remove one */
-				spin_lock(&xpdev->cdev_lock);
-				qdata->xcdev->dir_init >>= 1;
-				spin_unlock(&xpdev->cdev_lock);
-			}
-		}
-		memset(qdata, 0, sizeof(*qdata));
-	}
-}
-
-static void remove_one(struct pci_dev *pdev)
-{
-	struct xlnx_dma_dev *xdev = NULL;
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-
-	if (!xpdev) {
-		pr_info("%s NOT attached.\n", dev_name(&pdev->dev));
-		return;
-	}
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	pr_info("%s pdev 0x%p, xdev 0x%p, hndl 0x%lx, qdma%05x.\n",
-		dev_name(&pdev->dev), pdev, xpdev, xpdev->dev_hndl, xpdev->idx);
-
-	if (xdev->conf.master_pf)
-		sysfs_remove_group(&pdev->dev.kobj,
-				&pci_master_device_attr_group);
-	else
-		sysfs_remove_group(&pdev->dev.kobj, &pci_device_attr_group);
-
-	qdma_cdev_device_cleanup(&xpdev->cdev_cb);
-
-	xpdev_device_cleanup(xpdev);
-
-	qdma_device_close(pdev, xpdev->dev_hndl);
-
-	xpdev_free(xpdev);
-
-	dev_set_drvdata(&pdev->dev, NULL);
-}
-
-#if defined(CONFIG_PCI_IOV) && !defined(__QDMA_VF__)
-static int sriov_config(struct pci_dev *pdev, int num_vfs)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-	int total_vfs = pci_sriov_get_totalvfs(pdev);
-
-	if (!xpdev) {
-		pr_info("%s NOT attached.\n", dev_name(&pdev->dev));
-		return -EINVAL;
-	}
-
-	pr_debug("%s pdev 0x%p, xdev 0x%p, hndl 0x%lx, qdma%05x.\n",
-		dev_name(&pdev->dev), pdev, xpdev, xpdev->dev_hndl, xpdev->idx);
-
-	if (num_vfs > total_vfs) {
-		pr_info("%s, clamp down # of VFs %d -> %d.\n",
-			dev_name(&pdev->dev), num_vfs, total_vfs);
-		num_vfs = total_vfs;
-	}
-
-	return qdma_device_sriov_config(pdev, xpdev->dev_hndl, num_vfs);
-}
-#endif
-
-static pci_ers_result_t qdma_error_detected(struct pci_dev *pdev,
-					pci_channel_state_t state)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-
-	switch (state) {
-	case pci_channel_io_normal:
-		return PCI_ERS_RESULT_CAN_RECOVER;
-	case pci_channel_io_frozen:
-		pr_warn("dev 0x%p,0x%p, frozen state error, reset controller\n",
-			pdev, xpdev);
-		pci_disable_device(pdev);
-		return PCI_ERS_RESULT_NEED_RESET;
-	case pci_channel_io_perm_failure:
-		pr_warn("dev 0x%p,0x%p, failure state error, req. disconnect\n",
-			pdev, xpdev);
-		return PCI_ERS_RESULT_DISCONNECT;
-	}
-	return PCI_ERS_RESULT_NEED_RESET;
-}
-
-static pci_ers_result_t qdma_slot_reset(struct pci_dev *pdev)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-
-	if (!xpdev) {
-		pr_info("%s NOT attached.\n", dev_name(&pdev->dev));
-		return PCI_ERS_RESULT_DISCONNECT;
-	}
-
-	pr_info("0x%p restart after slot reset\n", xpdev);
-	if (pci_enable_device_mem(pdev)) {
-		pr_info("0x%p failed to renable after slot reset\n", xpdev);
-		return PCI_ERS_RESULT_DISCONNECT;
-	}
-
-	pci_set_master(pdev);
-	pci_restore_state(pdev);
-	pci_save_state(pdev);
-
-	return PCI_ERS_RESULT_RECOVERED;
-}
-
-static void qdma_error_resume(struct pci_dev *pdev)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-
-	if (!xpdev) {
-		pr_info("%s NOT attached.\n", dev_name(&pdev->dev));
-		return;
-	}
-
-	pr_info("dev 0x%p,0x%p.\n", pdev, xpdev);
-#ifdef RHEL_RELEASE_VERSION
-#if RHEL_RELEASE_VERSION(8, 3) > RHEL_RELEASE_CODE
-	pci_cleanup_aer_uncorrect_error_status(pdev);
-#else
-	pci_aer_clear_nonfatal_status(pdev);
-#endif
-#else
-#if KERNEL_VERSION(5, 7, 0) <= LINUX_VERSION_CODE
-	pci_aer_clear_nonfatal_status(pdev);
-#else
-	pci_cleanup_aer_uncorrect_error_status(pdev);
-#endif
-#endif
-}
-
-
-#ifdef __QDMA_VF__
-void qdma_flr_resource_free(unsigned long dev_hndl)
-{
-	struct xlnx_dma_dev *xdev = (struct xlnx_dma_dev *)(dev_hndl);
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&xdev->conf.pdev->dev);
-
-	xpdev_device_cleanup(xpdev);
-	xdev->conf.qsets_max = 0;
-	xdev->conf.qsets_base = -1;
-}
-#endif
-
-#if KERNEL_VERSION(4, 13, 0) <= LINUX_VERSION_CODE
-static void qdma_reset_prepare(struct pci_dev *pdev)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-	struct xlnx_dma_dev *xdev = NULL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-	pr_info("%s pdev 0x%p, xdev 0x%p, hndl 0x%lx, qdma%05x.\n",
-		dev_name(&pdev->dev), pdev, xpdev, xpdev->dev_hndl, xpdev->idx);
-
-	qdma_device_offline(pdev, xpdev->dev_hndl, XDEV_FLR_ACTIVE);
-
-	/* FLR setting is required for Versal Hard IP */
-	if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-			(xdev->version_info.device_type ==
-			 QDMA_DEVICE_VERSAL_CPM4))
-		qdma_device_flr_quirk_set(pdev, xpdev->dev_hndl);
-	xpdev_queue_delete_all(xpdev);
-	xpdev_device_cleanup(xpdev);
-	xdev->conf.qsets_max = 0;
-	xdev->conf.qsets_base = -1;
-
-	if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-			(xdev->version_info.device_type ==
-			 QDMA_DEVICE_VERSAL_CPM4))
-		qdma_device_flr_quirk_check(pdev, xpdev->dev_hndl);
-}
-
-static void qdma_reset_done(struct pci_dev *pdev)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-
-	pr_info("%s pdev 0x%p, xdev 0x%p, hndl 0x%lx, qdma%05x.\n",
-		dev_name(&pdev->dev), pdev, xpdev, xpdev->dev_hndl, xpdev->idx);
-	qdma_device_online(pdev, xpdev->dev_hndl, XDEV_FLR_ACTIVE);
-}
-
-#elif KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-static void qdma_reset_notify(struct pci_dev *pdev, bool prepare)
-{
-	struct xlnx_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);
-	struct xlnx_dma_dev *xdev = NULL;
-
-	xdev = (struct xlnx_dma_dev *)(xpdev->dev_hndl);
-
-	pr_info("%s prepare %d, pdev 0x%p, xdev 0x%p, hndl 0x%lx, qdma%05x.\n",
-		dev_name(&pdev->dev), prepare, pdev, xpdev, xpdev->dev_hndl,
-		xpdev->idx);
-
-	if (prepare) {
-		qdma_device_offline(pdev, xpdev->dev_hndl, XDEV_FLR_ACTIVE);
-		/* FLR setting is not required for 2018.3 IP */
-		if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-				(xdev->version_info.device_type ==
-				 QDMA_DEVICE_VERSAL_CPM4))
-			qdma_device_flr_quirk_set(pdev, xpdev->dev_hndl);
-		xpdev_queue_delete_all(xpdev);
-		xpdev_device_cleanup(xpdev);
-		xdev->conf.qsets_max = 0;
-		xdev->conf.qsets_base = -1;
-
-		if ((xdev->version_info.ip_type == QDMA_VERSAL_HARD_IP) &&
-				(xdev->version_info.device_type ==
-				 QDMA_DEVICE_VERSAL_CPM4))
-			qdma_device_flr_quirk_check(pdev, xpdev->dev_hndl);
-	} else
-		qdma_device_online(pdev, xpdev->dev_hndl, XDEV_FLR_ACTIVE);
-}
-#endif
-static const struct pci_error_handlers qdma_err_handler = {
-	.error_detected	= qdma_error_detected,
-	.slot_reset	= qdma_slot_reset,
-	.resume		= qdma_error_resume,
-#if KERNEL_VERSION(4, 13, 0) <= LINUX_VERSION_CODE
-	.reset_prepare  = qdma_reset_prepare,
-	.reset_done     = qdma_reset_done,
-#elif KERNEL_VERSION(3, 16, 0) <= LINUX_VERSION_CODE
-	.reset_notify   = qdma_reset_notify,
-#endif
-};
-
-static struct pci_driver pci_driver = {
-	.name = DRV_MODULE_NAME,
-	.id_table = pci_ids,
-	.probe = probe_one,
-	.remove = remove_one,
-/*	.shutdown = shutdown_one, */
-#if defined(CONFIG_PCI_IOV) && !defined(__QDMA_VF__)
-	.sriov_configure = sriov_config,
-#endif
-	.err_handler = &qdma_err_handler,
-};
-
-static int __init qdma_mod_init(void)
-{
-	int rv;
-
-	pr_info("%s", version);
-
-	rv = libqdma_init(num_threads, NULL);
-	if (rv < 0)
-		return rv;
-
-	rv = xlnx_nl_init();
-	if (rv < 0)
-		return rv;
-
-	rv = qdma_cdev_init();
-	if (rv < 0)
-		return rv;
-
-	return pci_register_driver(&pci_driver);
-}
-
-static void __exit qdma_mod_exit(void)
-{
-	/* unregister this driver from the PCI bus driver */
-	pci_unregister_driver(&pci_driver);
-
-	xlnx_nl_exit();
-
-	qdma_cdev_cleanup();
-
-	libqdma_exit();
-}
-
-module_init(qdma_mod_init);
-module_exit(qdma_mod_exit);
diff --git a/QDMA/linux-kernel/driver/src/qdma_mod.h b/QDMA/linux-kernel/driver/src/qdma_mod.h
deleted file mode 100755
index 3cd04a5..0000000
--- a/QDMA/linux-kernel/driver/src/qdma_mod.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_MODULE_H__
-#define __QDMA_MODULE_H__
-/**
- * @file
- * @brief This file contains the declarations for qdma pcie kernel module
- *
- */
-#include <linux/types.h>
-#include <linux/pci.h>
-#include <linux/workqueue.h>
-#include <net/genetlink.h>
-
-#include "libqdma/libqdma_export.h"
-#include "cdev.h"
-
-
-/**
- * enum qdma_drv_mod_param_type - Indicate the module parameter type
- *
- * QDMA PF/VF drivers takes module parameters mode and config bar is the same
- * format, This enum is unsed to identify the parameter type
- *
- */
-enum qdma_drv_mod_param_type {
-	/** @DRV_MODE : Driver mode mod param */
-	DRV_MODE,
-	/** @CONFIG_BAR : Config Bar mod param */
-	CONFIG_BAR,
-	/** @MASTER_PF : Master PF mod param */
-	MASTER_PF,
-};
-
-/**
- * @struct - xlnx_qdata
- * @brief	queue data variables send while read/write request
- */
-struct xlnx_qdata {
-	unsigned long qhndl;		/**< Queue handle */
-	struct qdma_cdev *xcdev;	/**< qdma character device details */
-};
-
-#define XNL_EBUFLEN     256
-struct xlnx_nl_work_q_ctrl {
-	unsigned short qidx;
-	unsigned short qcnt;
-	u8 is_qp:1;
-	u8 q_type:2;
-};
-
-struct xlnx_nl_work {
-	struct work_struct work;
-	struct xlnx_pci_dev *xpdev;
-	wait_queue_head_t wq;
-	unsigned int q_start_handled;
-	unsigned int buflen;
-	char *buf;
-	struct xlnx_nl_work_q_ctrl qctrl;
-	int ret;
-};
-
-/**
- * @struct - xlnx_pci_dev
- * @brief	xilinx pcie device data members
- */
-struct xlnx_pci_dev {
-	struct list_head list_head;	/**< device list */
-	struct pci_dev *pdev;		/**< pointer to struct pci_dev */
-	unsigned long dev_hndl;		/**< device handle*/
-	struct workqueue_struct *nl_task_wq; /**< netlink request work queue */
-	struct qdma_cdev_cb cdev_cb;	/**< character device call back data*/
-	spinlock_t cdev_lock;		/**< character device lock*/
-	unsigned int qmax;		/**< max number of queues for device*/
-	unsigned int idx;		/**< device index*/
-	void __iomem *user_bar_regs;	/**< PCIe AXI Master Lite bar */
-	void __iomem *bypass_bar_regs;  /**< PCIe AXI Bridge Master bar*/
-	struct xlnx_qdata *qdata;	/**< queue data*/
-};
-
-/*****************************************************************************/
-/**
- * xpdev_list_dump() - list the qdma devices
- *
- * @param[in]	buflen:		buffer length
- * @param[out]	buf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int xpdev_list_dump(char *buf, int buflen);
-
-/*****************************************************************************/
-/**
- * xpdev_find_by_idx() - qdma pcie kernel module api to
- *						find the qdma device by index
- *
- * @param[in]	idx:		qdma device index
- * @param[in]	buflen:		buffer length
- * @param[out]	buf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: pointer to xlnx_pci_dev
- * @return	NULL: failure
- *****************************************************************************/
-struct xlnx_pci_dev *xpdev_find_by_idx(unsigned int idx, char *buf,
-			int buflen);
-
-/*****************************************************************************/
-/**
- * xpdev_queue_get() - qdma pcie kernel module api to get a queue information
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	qidx:		queue index
- * @param[in]	c2h:		flag to indicate the queue direction (c2h/h2c)
- * @param[in]	check_qhndl:	flag for validating the data
- * @param[in]	ebuflen:	buffer length
- * @param[out]	ebuf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: queue information
- * @return	NULL: failure
- *****************************************************************************/
-struct xlnx_qdata *xpdev_queue_get(struct xlnx_pci_dev *xpdev,
-			unsigned int qidx, u8 q_type, bool check_qhndl,
-			char *ebuf, int ebuflen);
-
-/*****************************************************************************/
-/**
- * xpdev_queue_add() - qdma pcie kernel module api to add a queue
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	qconf:		queue configuration
- * @param[in]	ebuflen:	buffer length
- * @param[out]	ebuf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int xpdev_queue_add(struct xlnx_pci_dev *xpdev, struct qdma_queue_conf *qconf,
-			char *ebuf, int ebuflen);
-
-/*****************************************************************************/
-/**
- * xpdev_queue_delete() - qdma pcie kernel module api to delete a queue
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	qidx:		queue index
- * @param[in]	c2h:		flag to indicate the queue direction (c2h/h2c)
- * @param[in]	ebuflen:	buffer length
- * @param[out]	ebuf:
- *			error message buffer, can be NULL/0 (i.e., optional)
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int xpdev_queue_delete(struct xlnx_pci_dev *xpdev, unsigned int qidx,
-		u8 q_type, char *ebuf, int ebuflen);
-
-int xpdev_nl_queue_start(struct xlnx_pci_dev *xpdev, void *nl_info, u8 is_qp,
-			u8 q_type, unsigned short qidx, unsigned short qcnt);
-
-/*****************************************************************************/
-/**
- * qdma_device_read_user_register() - read AXI Master Lite bar register
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	reg_addr:	register address
- * @param[out]	value:	pointer to hold the register value
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_read_user_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 *value);
-
-/*****************************************************************************/
-/**
- * qdma_device_write_user_register() - write AXI Master Lite bar register
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	reg_addr:	register address
- * @param[in]	value:		register value to be written
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_write_user_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 value);
-
-/*****************************************************************************/
-/**
- * qdma_device_read_bypass_register() - read AXI Bridge Master bar register
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	reg_addr:	register address
- * @param[out]	value:	pointer to hold the register value
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_read_bypass_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 *value);
-
-/*****************************************************************************/
-/**
- * qdma_device_write_bypass_register() - write AXI Bridge Master bar register
- *
- * @param[in]	xpdev:		pointer to xlnx_pci_dev
- * @param[in]	reg_addr:	register address
- * @param[in]	value:		register value to be written
- *
- * @return	0: success
- * @return	<0: failure
- *****************************************************************************/
-int qdma_device_write_bypass_register(struct xlnx_pci_dev *xpdev,
-		u32 reg_addr, u32 value);
-
-#endif /* ifndef __QDMA_MODULE_H__ */
diff --git a/QDMA/linux-kernel/driver/src/version.h b/QDMA/linux-kernel/driver/src/version.h
deleted file mode 100755
index 5727428..0000000
--- a/QDMA/linux-kernel/driver/src/version.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * This file is part of the Xilinx DMA IP Core driver for Linux
- *
- * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
- * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __QDMA_VERSION_H__
-#define __QDMA_VERSION_H__
-
-#include "libqdma/version.h"
-
-#ifdef __QDMA_VF__
-#define DRV_MODULE_NAME		"qdma-vf"
-#define DRV_MODULE_DESC		"Xilinx QDMA VF Reference Driver"
-#else
-#define DRV_MODULE_NAME		"qdma-pf"
-#define DRV_MODULE_DESC		"Xilinx QDMA PF Reference Driver"
-#endif /* #ifdef __QDMA_VF__ */
-#define DRV_MODULE_RELDATE	"Sept 2023"
-
-#define DRV_MOD_MAJOR		2023
-#define DRV_MOD_MINOR		2
-#define DRV_MOD_PATCHLEVEL	0
-
-#define DRV_MODULE_VERSION      \
-	__stringify(DRV_MOD_MAJOR) "." \
-	__stringify(DRV_MOD_MINOR) "." \
-	__stringify(DRV_MOD_PATCHLEVEL) "." \
-	__stringify(LIBQDMA_VERSION_PATCH) "." \
-
-#define DRV_MOD_VERSION_NUMBER  \
-	((DRV_MOD_MAJOR)*10000 + (DRV_MOD_MINOR)*1000 + DRV_MOD_PATCHLEVEL)
-
-#endif /* ifndef __QDMA_VERSION_H__ */
diff --git a/QDMA/linux-kernel/license.txt b/QDMA/linux-kernel/license.txt
deleted file mode 100755
index 8eac7fb..0000000
--- a/QDMA/linux-kernel/license.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
diff --git a/QDMA/linux-kernel/scripts/datafile_16bit_pattern.bin b/QDMA/linux-kernel/scripts/datafile_16bit_pattern.bin
deleted file mode 100755
index 1b50cdd57bcc0fb5c0e6ae027560cd03062b5434..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 262144
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%0AY
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%0DZ-II4u-93Hx%-yqh&)q$L
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
B9peB1

diff --git a/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt b/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt
deleted file mode 100755
index 15469ad..0000000
--- a/QDMA/linux-kernel/scripts/license-for-datafile_16bit_pattern.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * THIS BINARY FILE IS GENERATED FROM XILINX TOOLS AND IS AVAILABLE EXCLUSIVELY IN BINARY FORMAT.
- *
- * Copyright © 2022 Xilinx, Inc.
- *
- * Redistribution and use in binary form only, without modification, is permitted provided that the following conditions are met:
- *
- * Redistributions 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.
- * The name of Xilinx, Inc. may not be used to endorse or promote products redistributed with this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED BY XILINX, INC. "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 XILINX, INC. 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.
- */
\ No newline at end of file
diff --git a/QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh b/QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh
deleted file mode 100755
index c66cb1a..0000000
--- a/QDMA/linux-kernel/scripts/qdma_generate_conf_file.sh
+++ /dev/null
@@ -1,121 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-#!/bin/bash
-#
-# Simple script to generate conf file for module params.
-# 
-
-
-function print_help() {
-	echo ""
-	echo "Usage : $0 <bus_num> <num_pfs> <mode> <config_bar> <master_pf>"
-	echo "Ex : $0 0x06 4 0 0 0"
-	echo "<bus_num> : PF Bus Number"
-	echo ""
-	echo "<num_pfs> : Number of PFs supported, Default - 4"
-	echo ""
-	echo "<mode> : Mode, Default - 0 (Auto)"	
-	echo ""
-	echo "<config_bar> : Config Bar number, Default - 0"	
-	echo ""
-	echo "<master_pf> : Master PF, Default - 0"
-	echo ""
-	echo ""
-    echo ""
-    exit 1
-}
-
-if [ $# -lt 1 ]; then
-	echo "Invalid arguements."
-	print_help
-	exit;
-fi;
-
-bus_num=$1
-num_pfs=4
-mode=0
-config_bar=0
-master_pf=0
-
-if [ ! -z $2 ]; then
-	num_pfs=$2
-fi
-
-if [ ! -z $3 ]; then 
-	mode=$3
-fi
-
-if [ ! -z $4 ]; then 
-	config_bar=$4
-fi
-
-if [ ! -z $5 ]; then 
-	master_pf=$5
-fi
-
-generate_conf()
-{
-	conf_file="qdma.conf"
-	echo -n "options qdma-pf mode=" > conf_file
-	for ((j = 0; j < ${num_pfs}; j++))
-	do
-		echo -n "${bus_num}:${j}:${mode}" >> conf_file
-		if [ $j != $((${num_pfs} - 1)) ]; then
-			echo -n "," >> conf_file
-		fi	
-	done
-	echo -e "" >> conf_file
-	echo -n "options qdma-pf config_bar=" >> conf_file
-	for ((j = 0; j < ${num_pfs}; j++))
-	do
-		echo -n "${bus_num}:${j}:${config_bar}" >> conf_file
-		if [ $j != $((${num_pfs} - 1)) ]; then
-			echo -n "," >> conf_file
-		fi	 
-	done
-	echo -e "" >> conf_file
-	echo -n "options qdma-pf master_pf=${bus_num}:${master_pf}" >> conf_file
-	
-	echo -e "" >> conf_file
-	echo -n "options qdma-vf mode=" >> conf_file
-	for ((j = 0; j < ${num_pfs}; j++))
-	do
-		echo -n "${bus_num}:${j}:${mode}" >> conf_file
-		if [ $j != $((${num_pfs} - 1)) ]; then
-			echo -n "," >> conf_file
-		fi	
-	done
-	echo -e "" >> conf_file
-	echo -n "options qdma-vf config_bar=" >> conf_file
-	for ((j = 0; j < ${num_pfs}; j++))
-	do
-		echo -n "${bus_num}:${j}:${config_bar}" >> conf_file
-		if [ $j != $((${num_pfs} - 1)) ]; then
-			echo -n "," >> conf_file
-		fi	 
-	done
-	
-	rm -rf /etc/modprobe.d/qdma.conf
-	cp conf_file /etc/modprobe.d/qdma.conf
-	rm -rf conf_file
-}
-
-generate_conf
diff --git a/QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh b/QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh
deleted file mode 100755
index 1692277..0000000
--- a/QDMA/linux-kernel/scripts/qdma_run_test_mm_vf.sh
+++ /dev/null
@@ -1,162 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-#!/bin/bash
-#
-# Simple run script to test QDMA in VF AXI-MM mode.
-# 
-# VF AXI-MM Transfer
-#	- H2C operation is performed to send data to BRAM on the FPGA. 
-#	- C2H operation is performed to reads data from BRAM.
-#       -   C2H data is stored in a local file 'out_mm0_$qid', which will be compared to original file for correctness. 
-
-################################################
-# User Configurable Parameters
-################################################
-iteration=$1 # [Optional] Iterations 
-size=$2 # [Optional] Size per payload packet
-
-################################################
-# Hard Coded Parameters
-################################################
-q_per_vf=1
-vf=00080
-size_max=4096
-host_adr_high=0
-infile='./datafile_16bit_pattern.bin'
-
-
-################################################
-# Input check
-################################################
-if [ "$1" == "-h" ]; then
-	echo "Example: qdma_run_test_st_vf.sh [iteration] [size(in byte)]"
-	echo "Example: qdma_run_test_st_vf.sh This will run VF MM test in random mode"
-        exit
-fi
-
-if [ -z $2 ] || [ $# -eq 0 ] ; then
-	echo "Run VF MM test in random mode"
-	sleep 3
-fi
-
-if [ -z $iteration ]; then
-	iteration=1 
-fi
-
-if [ ! -z $size ]; then 
-	f_size=1
-else
-   	f_size=0
-fi
-
-#################################################
-# Helper Functions
-################################################
-
-function randomize_tx_params() {
-        #random host address 
-	if [ $host_adr_high -ne 0 ]; then
-		hst_adr1=$RANDOM
-		hst_adr1=$((hst_adr1 % host_adr_high))
-	else
-		hst_adr1=0
-	fi
-
-	# byte size
-	size=$RANDOM
-        if [ $size -eq 0 ]; then
-		size=$(($RANDOM % 64 + 1)) ## for random number between 1 and 64
-        else
-		size=$((size % $size_max))
-        fi
-
-	# Correct if size is odd	
-	even=$((size%2))	
-        if [ $even -eq 1 ];then
-		size=$((size+1))
-        fi
-}
-
-
-function queue_start() {
-	echo "---- Queue Start $2 ----"
-	dma-ctl qdma$1 q add idx $2 mode $3 dir bi
-	dma-ctl qdma$1 q start idx $2 dir bi
-}
-
-function cleanup_queue() {
-	echo "---- Queue Clean up $2 ----"
-        dma-ctl qdma$1 q stop idx $2 dir bi
-        dma-ctl qdma$1 q del idx $2 dir bi
-}
-
-vfs=`dma-ctl dev list | grep qdmavf | cut -d'	' -f1`;
-
-echo "**** AXI-MM Start ****"
-for vfsdev in $vfs;do
-	vf="${vfsdev#*f}"
-	q_per_vf="$(dma-ctl dev list |grep qdmavf$vf | cut -d ' ' -f 3 | cut -d ',' -f 1 | xargs)"
-
-	for ((i=0; i< $q_per_vf; i++)) do
-	# Setup for Queues
-	qid=$i
-	dev_mm_c2h="/dev/qdmavf$vf-MM-$qid"
-	dev_mm_h2c="/dev/qdmavf$vf-MM-$qid"
-        loop=1
-
-		out_mm="out_mm0_"$qid
-		# Open the Queue for AXI-MM streaming interface.
-		queue_start vf$vf $qid mm
-
-		while [ "$loop" -le $iteration ]
-		do
-			# Determine if DMA is targeted @ random host address
-			if [ $f_size -eq 1 ]; then
-				hst_adr1=0
-			else
-				randomize_tx_params
-			fi
-
-			# H2C transfer 
-			dma-to-device -d $dev_mm_h2c -f $infile -s $size -o $hst_adr1
-
-			# C2H transfer
-			dma-from-device -d $dev_mm_c2h -f $out_mm -s $size -o $hst_adr1
-
-			# Compare file for correctness
-			cmp $out_mm $infile -n $size
-
-			if [ $? -eq 1 ]; then
-				echo "#### Test ERROR. Queue $qid data did not match ####"
-				exit 1
-			else
-				echo "**** Test pass. Queue $qid"
-			fi
-
-			wait
-
-			((loop++))
-		done
-		# Close the Queues
-		cleanup_queue vf$vf $qid
-	done
-done
-echo "**** AXI-MM completed ****"
diff --git a/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh b/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh
deleted file mode 100755
index f49bead..0000000
--- a/QDMA/linux-kernel/scripts/qdma_run_test_pf.sh
+++ /dev/null
@@ -1,508 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-#!/bin/bash
-#
-# Simple run script to test QDMA in AXI-MM and AXI-St mode.
-# 
-# AXI-MM Transfer
-#	First H2C operation is performed for 1KBytes, this will write 1Kbytes of data to BRAM on card side. 
-#	Then C2H operation is performed for 1KBytes. DMA reads data from BRAM and will transfer
-#	to local file 'out_mm0_0', which will be compared to original file for correctness. 
-#
-# AXI-ST H2C Transfer
-#	for H2C Streaming transfer data needs to be a per-defined data. 16 bit incremental data. 
-#	Data file is provided with the script. 
-#	H2C operation is performed, Data is read from Host memory and send to Card side. There is a data checker
-#	on the card side which will check the data for correctness and will log the result in a register.
-#	Script then read the register to check for results.
-#	
-#
-# AXI-ST C2H Transfer
-#	For C2H operation there is a data generator on the Card side which needs to be setup to generate data.
-#	Qid, transfer length and number of paket are written before C2H transfer. Then 
-#	C2H transfer is started by writing to register. C2H operation is completed and the data is written to 'out_st0_0"
-#	file which then is compared to a per-defined data file. The data generator will only generate pre-defined 
-#	data, so data comparison will need to be done with 'datafile_16bit_pattern.bin' file only.
-#
-# 
-
-
-function print_help() {
-	echo ""
-	echo "Usage : $0 <bdf> <qid_start> <num_qs> <desc_bypass_en> <pftch_en> <pfetch_bypass_en> <flr_on>"
-	echo "Ex : $0 06000 0 4 1 1 1 1"
-	echo "<bdf> : PF Bus device function in bbddf format ex:06000"
-	echo ""
-	echo "<qid_start> : qid start"
-	echo ""
-	echo "<num_qs> : number of queue from qid_start"	
-	echo "           Default - 04 "
-	echo ""
-	echo "<desc_byapss_en> : Enable desc bypass"
-	echo "           Default - 0 "
-	echo ""
-	echo "<pftch_en> : Enable prefetch"
-	echo "           Default - 0 "
-	echo ""
-	echo "<pftch_bypass_en> : Enable prefetch bypass"
-	echo "           Default - 0 "
-	echo ""
-	echo "<flr_on> : Apply Function Level Reset"
-	echo "           Default - 0 "
-	echo ""
-	echo ""
-    echo ""
-    exit 1
-}
-
-if [ $# -lt 2 ]; then
-	echo "Invalid arguements."
-	print_help
-	exit;
-fi;
-
-pf=$1
-qid_start=$2
-num_qs=4
-desc_byp=0
-pftch=0
-pftch_byp=0
-flr_on=0
-
-if [ ! -z $3 ]; then
-	num_qs=$3
-fi
-
-if [ ! -z $4 ]; then #if arg4 is there byp enable
-	desc_byp=$4
-fi
-
-if [ ! -z $5 ]; then #if arg5 is there pfetch enable
-	pftch=$5
-fi
-
-if [ ! -z $6 ]; then #if arg6 is there pfetch byp enable
-	pftch_byp=$6
-fi
-if [ ! -z $6 ]; then #if arg7 is there FLR enable
-	flr_on=$7
-fi
-
-echo "$pf $qid_start $num_qs $desc_byp $pftch $pftch_byp"
-size=1024
-num_pkt=1 #number of packets not more then 64
-infile='./datafile_16bit_pattern.bin'
-declare -a bypass_mode_lst=(NO_BYPASS_MODE DESC_BYPASS_MODE CACHE_BYPASS_MODE SIMPLE_BYPASS_MODE)
-
-
-function get_dev () {
-	pf_list="$(dma-ctl dev list | grep qdma | grep -v qdmavf)"
-	echo "$pf_list"
-	while read -r line; do
-		IFS=$'\t ,~' read -r -a array <<< "$line"	
-		qdmabdf=${array[0]}
-		bdf_array+=("${qdmabdf#*a}")
-		full_bdf_array+=("${array[1]}")
-		num_queue_per_pf+=("${array[4]}")
-		qbase_array+=("${array[5]}")
- 	done <<< "$pf_list"
-
-}
-
-function set_flr() { 
-	echo "Applying function level reset"
-	for pf_bdf in ${bdf_array[@]}; do
-		pci_bus=${pf_bdf:0:2}
-		pci_device=${pf_bdf:2:2}
-		pci_func=${pf_bdf:4:1}
-		echo "echo 1 > /sys/bus/pci/devices/0000\:${pci_bus}\:${pci_device}.${pci_func}/reset"
-		echo 1 > /sys/bus/pci/devices/0000\:${pci_bus}\:${pci_device}.${pci_func}/reset
-	done
-}
-
-function set_bypass_mode() {
-	dev=$1
-	mode=$2
-	dir=$3
-	bypass=$4
-    local reg_val=0x00;
-	
-    if [ $mode == mm ]; then
-    	case $dir in
-    		h2c)
-	        	if [ $bypass == DESC_BYPASS_MODE ]; then
-	        		echo "setting DESC_BYPASS_MODE for ${mode}-$dir"
-	        		reg_val=0x1;
-	        	else
-	        		reg_val=0x0;
-	        	fi
-
-        		;;
-    		c2h)
-	        	if [ $bypass == DESC_BYPASS_MODE ]; then
-	        		echo "setting DESC_BYPASS_MODE for ${mode}-$dir"
-	        		reg_val=0x2;
-	        	else
-	        		reg_val=0x0;
-	        	fi
-
-	        	;;
-    		bi)
-	        	if [ $bypass == DESC_BYPASS_MODE ]; then
-	        		echo "setting DESC_BYPASS_MODE for ${mode}-$dir"
-	        		reg_val=0x3;
-	        	else
-	        		reg_val=0x0;
-				fi
-	        	;;
-        esac
-    else
-        case $dir in
-			h2c)
-				case $bypass in
-					CACHE_BYPASS_MODE)
-						echo "setting CACHE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x1;
-						;;
-					SIMPLE_BYPASS_MODE)
-						echo "setting SIMPLE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x1;
-						;;
-					*)
-						echo "setting NO_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x00;
-						;;
-					esac
-				;;
-			c2h)
-				case $bypass in
-					CACHE_BYPASS_MODE)
-						echo "setting CACHE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x2;
-						;;
-					SIMPLE_BYPASS_MODE)
-						echo "setting SIMPLE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x4;
-						;;
-					*)
-						echo "setting NO_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x00;
-						;;
-				esac
-				;;
-			bi)
-				case $bypass in
-					CACHE_BYPASS_MODE)
-						echo "setting CACHE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x3;
-						;;
-					SIMPLE_BYPASS_MODE)
-						echo "setting SIMPLE_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x5;
-						;;
-					*)
-						echo "setting NO_BYPASS_MODE for ${mode}-$dir"
-						reg_val=0x00;
-						;;
-				esac
-				;;
-		esac
-	fi
-    dma-ctl qdma$dev reg write bar 2 0x90 $reg_val
-}
-
-function get_bypass_mode() {
-	byp_mode=0
-	if [ $1 == mm ]; then
-		if [ $desc_byp -eq 1 ]; then
-			byp_mode=1
-		fi
-	else
-		if [ $desc_byp -eq 1 ] && [ $pftch_byp -eq 0 ]; then
-			byp_mode=2
-		elif [ $desc_byp -eq 1 ] && [ $pftch_byp -eq 1 ]; then
-			byp_mode=3
-		fi
-	fi
-	echo $byp_mode
-}
-
-function queue_start() {
-	echo "setting up qdma$1-$3-$2"
-	dma-ctl qdma$1 q add idx $2 mode $3 dir $4 >> ./run_pf.log 2>&1
-	if [ $? -ne 0 ]; then
-		echo "q add failed for qdma$1-$3-$2"
-		return
-	fi
-	bypass_mode=$(get_bypass_mode $3 $4)
-	set_bypass_mode $1 $3 $4 ${bypass_mode_lst[${bypass_mode}]}
-	if [ $3 == mm -o $4 == h2c ]; then
-		if [ $desc_byp -eq 1 ]; then
-			dma-ctl qdma$1 q start idx $2 dir $4 desc_bypass_en >> ./run_pf.log 2>&1
-		else
-			dma-ctl qdma$1 q start idx $2 dir $4 >> ./run_pf.log 2>&1
-		fi
-	else
-		if [ $desc_byp -eq 1 ] && [ $pftch -eq 0 ]; then
-			if [ $pftch_byp -eq 0 ]; then
-				dma-ctl qdma$1 q start idx $2 dir $4 desc_bypass_en >> ./run_pf.log 2>&1
-			else
-				dma-ctl qdma$1 q start idx $2 dir $4 desc_bypass_en pfetch_bypass_en >> ./run_pf.log 2>&1
-			fi
-		elif [ $desc_byp -eq 1 ] && [ $pftch -eq 1 ]; then
-			if [ $pftch_byp -eq 0 ]; then
-				dma-ctl qdma$1 q start idx $2 dir $4 desc_bypass_en pfetch_en >> ./run_pf.log 2>&1
-			else
-				dma-ctl qdma$1 q start idx $2 dir $4 desc_bypass_en pfetch_en pfetch_bypass_en >> ./run_pf.log 2>&1
-			fi
-		elif [ $desc_byp -eq 0 ] && [ $pftch -eq 1 ] ; then #
-			if [ $pftch_byp -eq 0 ]; then
-				dma-ctl qdma$1 q start idx $2 dir $4 pfetch_en >> ./run_pf.log 2>&1
-			else
-				echo "Invalid case of bypass mode" >> ./run_pf.log 2>&1
-				dma-ctl qdma$1 q del idx $2 dir bi >> ./run_pf.log 2>&1
-				return 1
-			fi
-		else
-			if [ $pftch_byp -eq 0 ]; then
-				dma-ctl qdma$1 q start idx $2 dir $4>> ./run_pf.log 2>&1
-			else
-				echo "Invalid case of bypass mode" >> ./run_pf.log 2>&1
-				dma-ctl qdma$1 q del idx $2 dir bi >> ./run_pf.log 2>&1
-				return 1
-			fi	
-		fi
-	fi
-	if [ $? -ne 0 ]; then
-		echo "q start failed for qdma$1-$3-$2-$4"
-		dma-ctl qdma$1 q del idx $2 dir bi >> ./run_pf.log 2>&1
-		return $?
-	fi
-	
-	
-	return 0
-}
-
-function cleanup_queue() {
-	echo "cleaning up qdma$1-$3-$2"
-        dma-ctl qdma$1 q stop idx $2 dir $4 >> ./run_pf.log 2>&1
-        dma-ctl qdma$1 q del idx $2 dir $4 >> ./run_pf.log 2>&1
-
-}
-
-
-# Find AXI Master Lite bar
-function get_user_bar () {
-        local pf_bdf=$1
-	tmp=`dma-ctl qdma$pf_bdf reg read bar 0 0x10C | grep "0x10c" | cut -d '=' -f2 | cut -d 'x' -f2 | cut -d '.' -f1`
-	bar_ext=$(printf '%x\n' "$(( 0x$tmp & 0x00000f ))")
-
-	if [ $bar_ext -eq 2 ]; then
-		usr_bar=1
-	elif [ $bar_ext -eq 4 ];then
-		usr_bar=2
-	fi
-}
-
-
-function run_mm_h2c_c2h () {
-	for pf_bdf in ${bdf_array[@]}; do 
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-		echo "AXI-MM for Func $pf_bdf Start" 2>&1 | tee -a ./run_pf.log
-		get_user_bar $pf_bdf
-		for ((i=$qid_start; i < (($qid_start + $num_qs)); i++)); do
-			# Setup for Queues
-			qid=$i
-			dev_mm_c2h="/dev/qdma$pf_bdf-MM-$qid"
-			dev_mm_h2c="/dev/qdma$pf_bdf-MM-$qid"
-
-			out_mm="/tmp/out_mm"$pf_bdf"_"$qid
-			# Open the Queue for AXI-MM streaming interface.
-			queue_start $pf_bdf $qid mm bi
-			if [ $? -ne 0 ]; then
-				echo "q setup for qdma$pf_bdf-MM-$qid failed"
-				continue
-			fi
-			echo "setup for qdma$pf_bdf-MM-$qid done"
-			# H2C transfer 
-			dma-to-device -d $dev_mm_h2c -f $infile -s $size >> ./run_pf.log 2>&1
-
-			# C2H transfer
-			dma-from-device -d $dev_mm_c2h -f $out_mm -s $size >> ./run_pf.log 2>&1
-			
-			# Compare file for correctness
-			cmp $out_mm $infile -n $size
-			if [ $? -eq 1 ]; then
-				echo "#### Test ERROR. Queue $qid data did not match ####"
-				dma-ctl qdma$pf_bdf q dump idx $qid >> ./run_pf.log 2>&1
-				dma-ctl qdma$pf_bdf reg dump >> ./run_pf.log 2>&1
-			else
-				echo "**** Test pass. Queue $qid"
-			fi
-			# Close the Queues
-			cleanup_queue $pf_bdf $qid st bi
-			echo "-----------------------------------------------"
-		done
-		echo "AXI-MM for Func $pf_bdf End" 2>&1 | tee -a ./run_pf.log
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-	done
-}
-
-
-
-function run_st_h2c () {
-
-	# AXI-ST H2C transfer
-	for pf_bdf in "${bdf_array[@]}"; do 
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-		echo "AXI-ST H2C for Func $pf_bdf Start" 2>&1 | tee -a ./run_pf.log
-		get_user_bar $pf_bdf
-		for ((i=$qid_start; i < (($qid_start + $num_qs)); i++)); do
-			# Setup for Queues
-			qid=$i
-			queue_start $pf_bdf $qid st h2c # open the Queue for AXI-ST streaming interface.
-
-			dev_st_h2c="/dev/qdma$pf_bdf-ST-$qid"
-
-			# Clear H2C match from previous runs. this register is in card side.
-			# MAtch clear register is on offset 0x0C 
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x0C 0x1 >> ./run_pf.log 2>&1 # clear h2c Match register.
-
-			# do H2C Transfer
-			dma-to-device -d $dev_st_h2c -f $infile -s $size >> ./run_pf.log 2>&1
-
-			if [ $? -ne 0 ]; then
-				echo "#### ERROR Test failed. Transfer failed ####"
-				cleanup_queue $pf_bdf $qid st h2c
-				continue
-			fi
-			# check for H2C data match. MAtch register is in offset 0x10.
-			pass=`dma-ctl qdma$pf_bdf reg read bar $usr_bar 0x10 | grep "0x10" | cut -d '=' -f2 | cut -d 'x' -f2 | cut -d '.' -f1`
-			# convert hex to bin
-			code=`echo $pass | tr 'a-z' 'A-Z'`
- 	 		val=`echo "obase=2; ibase=16; $code" | bc`
-			check=1
-			if [ $(($val & $check)) -eq 1 ];then
-				echo "*** Test passed for Queue $qid"
-			else
-				echo "#### ERROR Test failed. pattern did not match ####"
-				dma-ctl qdma$pf_bdf q dump idx $qid >> ./run_pf.log 2>&1
-				dma-ctl qdma$pf_bdf reg dump >> ./run_pf.log 2>&1
-			fi
-			cleanup_queue $pf_bdf $qid st h2c
-			echo "-----------------------------------------------"
-		done
-		echo "AXI-ST H2C for Func $pf_bdf End" 2>&1 | tee -a ./run_pf.log
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-	done
-
-}
-
-function run_st_c2h () {
-	local pf=0
-
-	for pf_bdf in "${bdf_array[@]}"; do 
-
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-		echo "AXI-ST C2H for Func $pf_bdf Start" 2>&1 | tee -a ./run_pf.log
-
-		get_user_bar $pf_bdf
-
-		for ((i=$qid_start; i < (($qid_start + $num_qs)); i++)); do
-			# Setup for Queues
-			qid=$i
-			out_st="/tmp/out_st"$pf_bdf"_"$qid
-
-			# Each PF is assigned with 32 Queues. PF0 has queue 0 to 31, PF1 has 32 to 63 
-			# Write QID in offset 0x00 
-			hw_qid=$(($qid + ${qbase_array[$pf]} ))
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x0 $hw_qid  >> ./run_pf.log 2>&1
-
-			# open the Queue for AXI-ST streaming interface.
-			queue_start $pf_bdf $qid st c2h
-	
-			dev_st_c2h="/dev/qdma$pf_bdf-ST-$qid"
-			let "tsize= $size*$num_pkt" # if more packets are requested.
-
-			# Write transfer size to offset 0x04
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x4 $size >> ./run_pf.log 2>&1
-	
-			# Write number of packets to offset 0x20
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x20 $num_pkt >> ./run_pf.log 2>&1 
-
-			# Write to offset 0x80 bit [1] to trigger C2H data generator. 
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x08 2 >> ./run_pf.log 2>&1
-
-			# do C2H transfer 
-			dma-from-device -d $dev_st_c2h -f $out_st -s $tsize >> ./run_pf.log 2>&1
-			if [ $? -ne 0 ]; then
-				echo "#### ERROR Test failed. Transfer failed ####"
-				cleanup_queue $pf_bdf $qid st c2h
-				continue
-			fi
-	
-			cmp $out_st $infile -n $tsize
-			if [ $? -ne 0 ]; then
-				echo "#### Test ERROR. Queue $2 data did not match ####" 
-				dma-ctl qdma$pf_bdf q dump idx $qid dir c2h >> ./run_pf.log 2>&1
-				dma-ctl qdma$pf_bdf reg dump >> ./run_pf.log 2>&1
-			else
-				echo "**** Test pass. Queue $qid"
-			fi
-			# Close the Queues
-			dma-ctl qdma$pf_bdf reg write bar $usr_bar 0x08 0x22 >> ./run_pf.log 2>&1
-			var=`dma-ctl qdma$pf_bdf reg read bar $usr_bar 0x18 | sed 's/.*= //' | sed 's/.*x//' | cut -d. -f1`
-			j=0
-			while [ "$j" -lt "2" ]
-			do
-				j=$[$j+1]
-				if [ $var -eq "1" ]
-				then 
-					break
-				else
-					sleep 1
-				fi
-			done
-			cleanup_queue $pf_bdf $qid st c2h
-			echo "-----------------------------------------------"
-		done
-		pf=$((pf+1));
-		echo "AXI-ST C2H for Func $pf_bdf End" 2>&1 | tee -a ./run_pf.log
-		echo "***********************************************" 2>&1 | tee -a ./run_pf.log
-	done
-}
-
-
-echo "###############################################################" > "run_pf.log"
-echo "QDMA Test on All PFs Starts" >> "run_pf.log"
-echo "###############################################################" >> "run_pf.log"
-
-get_dev
-if [ $flr_on -ne 0 ]; then
-	set_flr
-fi
-run_mm_h2c_c2h 
-run_st_h2c
-run_st_c2h
-
-exit 0
-
-
diff --git a/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh b/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh
deleted file mode 100755
index 754a408..0000000
--- a/QDMA/linux-kernel/scripts/qdma_run_test_st_vf.sh
+++ /dev/null
@@ -1,229 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-#!/bin/bash
-# Simple run script to test QDMA in VF AXI-ST mode.
-# 
-# VF AXI-ST Transfer
-#	- H2C operation is performed to send data to BRAM on the FPGA. 
-#	- C2H operation is performed to reads data from BRAM.
-#       -   C2H data is stored in a local file 'out_st_$qid', which will be compared to original file for correctness. 
-
-
-################################################
-# User Configurable Parameters
-################################################
-
-iteration=$1 # [Optional] iterations of C2H tests
-size=$2 # [Optional] Size per payload packet
-num_pkt=$3 # [Optional] number of payload packet
-
-################################################
-# Hard Coded Parameters
-################################################
-usr_bar=2 # For VF, DMA BAR is bar 0. AXI Master Lite(User BAR) is bar 2.
-vf=00080
-size_max=4096
-host_adr_high=0
-infile='./datafile_16bit_pattern.bin'
-logfile="loopback$1_$2.log"
-
-################################################
-# Input check
-################################################
-if [ -z $iteration ]; then
-	iteration=1 
-fi
-
-if [ ! -z $size ]; then 
-	f_size=1
-else
-   	f_size=0
-fi
-
-if [ -z $num_pkt ]; then
-	num_pkt=1
-fi
-
-#################################################
-# Helper Functions
-################################################
-function randomize_tx_params() {
-	#random host address 
-	if [ $host_adr_high -ne 0 ]; then
-		hst_adr1=$RANDOM
-		hst_adr1=$((hst_adr1 % host_adr_high))
-	else
-		hst_adr1=0
-	fi
-
-	# byte size
-	size=$RANDOM
-	if [ $size -eq 0 ]; then
-		size=$(($RANDOM % 64 + 1)) ## for random number between 1 and 64
-  	else
-		size=$((size % $size_max))
-	fi
-
-	# Correct if size is odd	
-  	even=$((size%2))	
-  	if [ $even -eq 1 ];then
-		size=$((size+1))
-  	fi
-}
-
-function queue_start() {
-	echo "---- Queue Start $2 ----"
-	dma-ctl qdma$1 q add idx $2 dir h2c mode $3 
-	dma-ctl qdma$1 q start idx $2 dir h2c 
-	dma-ctl qdma$1 q add idx $2 dir c2h mode $3
-	dma-ctl qdma$1 q start idx $2 dir c2h 
-}
-
-function cleanup_queue() {
-	echo "---- Queue Clean up $2 ----"
-	dma-ctl qdma$1 q stop idx $2 dir h2c 
-	dma-ctl qdma$1 q del idx $2 dir h2c 
-	dma-ctl qdma$1 q stop idx $2 dir c2h 
-	dma-ctl qdma$1 q del idx $2 dir c2h 
-}
-
-# Get a list of available devices
-vfs="$(dma-ctl dev list | grep qdmavf | cut -d '	' -f1)"
-echo "############################# AXI-ST Start #################################"
-
-for vfsdev in $vfs; do
-
-	vf="${vfsdev#*f}"
-	q_per_vf="$(dma-ctl dev list |grep qdmavf$vf | cut -d ' ' -f 3 | cut -d ',' -f 1 | xargs)"
-	hw_qbase="$(dma-ctl dev list |grep qdmavf$vf|cut -d',' -f 2 | cut -d '~' -f 1|xargs)"
-
-	for ((i=0; i<$q_per_vf; i++)) do
-
-		# Setup for Queues
-		qid=$i
-	  hw_qid=$((qid+hw_qbase))
-		dev_st_c2h="/dev/qdmavf$vf-ST-$qid"
-		dev_st_h2c="/dev/qdmavf$vf-ST-$qid"
-		out="out_st_$qid"
-		loop=1
-
-		# Open the Queue for AXI-ST streaming interface.
-		queue_start vf$vf $qid st > /dev/null
-
-		while [ "$loop" -le $iteration ]
-		do
-			# Determine if DMA is targeted @ random host address
-			if [ $f_size -eq 1 ]; then
-				hst_adr1=0
-			else
-				randomize_tx_params
-			fi
-
-			# if more packets are requested.
-			let "tsize= $size*$num_pkt"
-
-			echo ""
-			echo "########################################################################################"
-			echo "#############  H2C ST LOOP $loop : dev=$dev_st_h2c qid=$qid hw_qid=$hw_qid"
-			echo "#############               transfer_size=$tsize pkt_size=$size pkt_count=$num_pkt hst_adr=$hst_adr1"
-			echo "########################################################################################"
-
-			#clear match bit before each H2C ST transfer
-			dma-ctl qdmavf$vf reg write bar $usr_bar 0x0c 0x01
-
-			# H2C transfer 
-			dma-to-device -d $dev_st_h2c -f $infile -s $tsize -o $hst_adr1 &
-			re=$?
-
-			wait
-
-			# Check match bit and QID
-			hwqid_match=$(dma-ctl qdmavf$vf reg read bar $usr_bar 0x10 | grep "0x10" | cut -d '=' -f2 | cut -d 'x' -f2 | cut -d '.' -f1)
-			code=`echo $hwqid_match | tr 'a-z' 'A-Z'`
-			val=`echo "obase=2; ibase=16; $code" | bc`
-			if [ $(($val & 0x1)) -ne 1 ];then
-				echo "### ERROR: QID MATCH is $hwqid_match "$hw_qid_hex"1"
-				re=-1
-			fi               
-
-			if [ $re == 0 ]; then 
-				echo "######################################################"
-				echo "##############   VF H2C ST PASS QID $qid ################"
-				echo "######################################################"
-			else
-				echo "#### ERROR: VF H2C ST FAIL"
-			fi
-
-			echo ""
-			echo "########################################################################################"
-			echo "#############  C2H ST LOOP $loop : dev=$dev_st_c2h qid=$qid hw_qid=$hw_qid"
-			echo "#############               transfer_size=$tsize pkt_size=$size pkt_count=$num_pkt hst_adr=$hst_adr1"
-			echo "########################################################################################"
-
-		  dma-ctl qdmavf$vf reg write bar $usr_bar 0x0 $hw_qid  # for Queue 0
-		  dma-ctl qdmavf$vf reg write bar $usr_bar 0x4 $size
-		  dma-ctl qdmavf$vf reg write bar $usr_bar 0x20 $num_pkt #number of packets
-		  dma-ctl qdmavf$vf reg write bar $usr_bar 0x08 2 # Must set C2H start before starting transfer
-
-			dma-from-device -d $dev_st_c2h -f $out -o $hst_adr1 -s $tsize &
-
-			wait
-
-			#Check if files is there.
-			if [ ! -f $out ]; then
-				echo " #### ERROR: Queue $qid output file does not exists ####"
-				echo " #### ERROR: Queue $qid output file does not exists ####" >> $logfile
-				cleanup_queue vf$vf $qid st
-				exit -1
-			fi
-
-			# check files size
-			filesize=$(stat -c%s "$out")
-			if [ $filesize -gt $tsize ]; then
-				echo "#### ERROR: Queue $qid output file size does not match, filesize= $filesize ####"
-				echo "#### ERROR: Queue $qid output file size does not match, filesize= $filesize ####" >> $logfile
-				cleanup_queue vf$vf $qid st
-				exit -1 
-			fi
-
-		  #compare file
-		  cmp $out $infile -n $tsize
-		  if [ $? -eq 1 ]; then
-			  echo "#### Test ERROR. Queue $qid data did not match ####" 
-			  echo "#### Test ERROR. Queue $qid data did not match ####" >> $logfile
-			  dma-ctl qdmavf$vf q dump idx $qid mode st dir c2h
-			  dma-ctl qdmavf$vf reg dump
-			  cleanup_queue vf$vf $qid st
-			  exit -1
-		  else
-        echo "######################################################"
-			  echo "##############   VF C2H ST PASS QID $qid ################"
-        echo "######################################################"
-		  fi
-		  wait
-		   ((loop++))
-		done
-		cleanup_queue vf$vf $qid st > /dev/null
-  done
-done
-echo "########################## AXI-ST completed ###################################"
-exit 0
-
diff --git a/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh b/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh
deleted file mode 100755
index 4d7fed1..0000000
--- a/QDMA/linux-kernel/scripts/qdma_vf_auto_tst.sh
+++ /dev/null
@@ -1,102 +0,0 @@
-#/*
-# * This file is part of the Xilinx DMA IP Core driver for Linux
-# *
-# * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
-# * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
-# *
-# * This source code is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope that it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * The full GNU General Public License is included in this distribution in
-# * the file called "COPYING".
-# */
-
-
-#!/bin/bash
-#
-# Simple script to automate the VF regression testing using gtest framework
-# 
-# This script will insert the module, configure the qmax_vfs, and instantiate
-# vfs on each PF one at a time. After instantiating the VFs, it will trigger
-# qdma_test regression test suite for VF only.
-# 
-# Inputs: 
-#	MODULE_TOP_DIR= Top directory for qdma linux module
-#	GTEST_TOP_DIR= Top directory for gtest regression test suite
-#	MASTER_PF_PCI_BDF= BDF For master PF.
-
-MODULE_DIR=$1
-GTEST_DIR=$2
-qdma_mod=$MODULE_DIR/build/qdma.ko
-qdma_mod_vf=$MODULE_DIR/build/qdma_vf.ko
-gtest_bin=$GTEST_DIR/build/src/qdma_test
-#busdev="0000:05:00"
-master_pf=0000:$3
-busdev=${master_pf%.*}
-mod_param_arr=("mode=1" "mode=2" "mode=3")
-vfs_cnt=(64 60 60 68)
-qmax_vfs=1024
-
-RED='\033[0;31m'
-NC='\033[0m'
-
-prep_test_env () {
-	rmmod qdma
-	rmmod qdma_vf
-	sleep 2
-	insmod $qdma_mod $1
-	insmod $qdma_mod_vf
-	sleep 2
-	if [ ! -f /sys/bus/pci/devices/$master_pf/qdma/qmax_vfs ];then
-		echo -e "${RED} Aborting, no /sys/bus/pci/devices/$master_pf/qdma/qmax_vfs found.${NC}"
-		exit -4
-	fi
-	echo $qmax_vfs > /sys/bus/pci/devices/$master_pf/qdma/qmax_vfs
-	echo $3 > /sys/bus/pci/devices/$busdev.$2/sriov_numvfs
-	ret=$?
-	echo 
-	echo "**********************************"
-	echo "******Doing QDMA VF Tests *******"
-	echo "**********************************"
-	echo
-	echo PF=$2, VF=$3, qmax_vfs=$qmax_vfs
-	echo module_param=$1
-	echo 
-	dma-ctl dev list
-
-	return $ret
-}
-
-if [ $# -lt 3 ];then
-	echo  -e "${RED}Aborting. Invalid usgae. Try $0 <MODULE_TOP_DIR> <GTEST_TOP_DIR> <MASTER_PF_PCI_BDF>. ${NC}"
-	exit -1
-fi
-
-if [ ! -f $qdma_mod ] || [ ! -f $qdma_mod_vf ];then 
-	echo -e "${RED}Aborting. Missing qdma drivers at $MODULE_DIR${NC}"
-	exit -2
-fi
-
-if [ ! -f $gtest_bin ];then 
-	echo -e "${RED}Aborting. Missing qdma_test at $GTEST_DIR${NC}"
-	exit -3
-fi
-
-for fn in `seq 0 3`;do
-	for params in "${mod_param_arr[@]}";do
-		prep_test_env "$params" $fn ${vfs_cnt[$fn]}
-		ret=$?
-		if [ $ret -ne 0 ];then
-			echo -e "${RED}FAILED VF tests, Aborting${NC}"
-			exit -1
-		fi
-		sleep 3
-		$gtest_bin --gtest_filter="*VF*"
-	done
-done
diff --git a/QDMA/windows/QDMA.sln b/QDMA/windows/QDMA.sln
deleted file mode 100644
index 0ad42df..0000000
--- a/QDMA/windows/QDMA.sln
+++ /dev/null
@@ -1,69 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.27130.2010
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "utilities", "utilities", "{94F05E27-A247-49D0-87D9-9EA67085F512}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "drivers", "drivers", "{AE056764-B26E-440F-A803-22D4287DC633}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{63917B3A-5853-4882-BB78-1A4367A87B62}"
-	ProjectSection(SolutionItems) = preProject
-		README.md = README.md
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QDMA Reference Driver", "sys\drv\qdma_generic.vcxproj", "{B446331B-DD9E-40DD-958A-8D7A1AACA454}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dma-arw", "apps\dma-arw\dma_arw.vcxproj", "{4898E717-0B00-487F-9F88-C95D61116871}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dma-rw", "apps\dma-rw\dma_rw.vcxproj", "{F7C376CA-92F6-4484-B737-8670222CE79F}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dma-ctl", "apps\dma-ctl\dmactl.vcxproj", "{620A4D4D-5D14-41BA-909B-011FF03A25FD}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libqdma", "sys\libqdma\libqdma.vcxproj", "{359143E6-933A-49CC-806C-C5376E1809A4}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Debug|x64.ActiveCfg = Debug|x64
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Debug|x64.Build.0 = Debug|x64
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Debug|x64.Deploy.0 = Debug|x64
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Release|x64.ActiveCfg = Release|x64
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Release|x64.Build.0 = Release|x64
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454}.Release|x64.Deploy.0 = Release|x64
-		{4898E717-0B00-487F-9F88-C95D61116871}.Debug|x64.ActiveCfg = Debug|x64
-		{4898E717-0B00-487F-9F88-C95D61116871}.Debug|x64.Build.0 = Debug|x64
-		{4898E717-0B00-487F-9F88-C95D61116871}.Release|x64.ActiveCfg = Release|x64
-		{4898E717-0B00-487F-9F88-C95D61116871}.Release|x64.Build.0 = Release|x64
-		{F7C376CA-92F6-4484-B737-8670222CE79F}.Debug|x64.ActiveCfg = Debug|x64
-		{F7C376CA-92F6-4484-B737-8670222CE79F}.Debug|x64.Build.0 = Debug|x64
-		{F7C376CA-92F6-4484-B737-8670222CE79F}.Release|x64.ActiveCfg = Release|x64
-		{F7C376CA-92F6-4484-B737-8670222CE79F}.Release|x64.Build.0 = Release|x64
-		{620A4D4D-5D14-41BA-909B-011FF03A25FD}.Debug|x64.ActiveCfg = Debug|x64
-		{620A4D4D-5D14-41BA-909B-011FF03A25FD}.Debug|x64.Build.0 = Debug|x64
-		{620A4D4D-5D14-41BA-909B-011FF03A25FD}.Release|x64.ActiveCfg = Release|x64
-		{620A4D4D-5D14-41BA-909B-011FF03A25FD}.Release|x64.Build.0 = Release|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Debug|x64.ActiveCfg = Debug|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Debug|x64.Build.0 = Debug|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Debug|x64.Deploy.0 = Debug|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Release|x64.ActiveCfg = Release|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Release|x64.Build.0 = Release|x64
-		{359143E6-933A-49CC-806C-C5376E1809A4}.Release|x64.Deploy.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{B446331B-DD9E-40DD-958A-8D7A1AACA454} = {AE056764-B26E-440F-A803-22D4287DC633}
-		{4898E717-0B00-487F-9F88-C95D61116871} = {94F05E27-A247-49D0-87D9-9EA67085F512}
-		{F7C376CA-92F6-4484-B737-8670222CE79F} = {94F05E27-A247-49D0-87D9-9EA67085F512}
-		{620A4D4D-5D14-41BA-909B-011FF03A25FD} = {94F05E27-A247-49D0-87D9-9EA67085F512}
-		{359143E6-933A-49CC-806C-C5376E1809A4} = {AE056764-B26E-440F-A803-22D4287DC633}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {C455ECA0-8379-4737-AE1C-A9D89747A2E2}
-	EndGlobalSection
-EndGlobal
diff --git a/QDMA/windows/README.md b/QDMA/windows/README.md
deleted file mode 100644
index 414fde4..0000000
--- a/QDMA/windows/README.md
+++ /dev/null
@@ -1,266 +0,0 @@
-# Xilinx QDMA Driver (Windows)
-
-This project contains the driver and user-space software for the Xilinx PCIe Multi-Queue DMA Subsystem IP.
-
-_____________________________________________________________________________
-Contents
-
-1.   Directory Structure
-2.   Dependencies
-3.   Building from Source
-     3.1   From Visual Studio
-     3.2   From Command Line
-4.   Driver Installation
-5.   Test Utilities
-     5.1 dma-arw
-     5.2 dma-rw
-     5.3 dma-ctl
-6.   Known Issues
-7.   References
-_____________________________________________________________________________
-
-
-1.  Directory Structure:
-
-    <project_root>/
-    |__ build/                - Generated directory containing build output binaries.
-    |__ apps/                 - Contains application source code which demonstrates the usage of QDMA driver.
-    |  |__ dma-arw/           - Asynchrnous Read/Write PCIe BARs of QDMA IP or perform tx/rx DMA transfers.
-    |  |__ dma-rw/            - Synchronous Read/Write PCIe BARs of QDMA IP or perform tx/rx DMA transfers.
-    |  |__ dma-ctl/           - DMA queues control and configuration for DMA transfers.
-    |__ docs/                 - QDMA documentation
-    |__ sys/                  - Contains the QDMA driver source code.
-    |__ README.md             - This file.
-    |__ QDMA.sln              - Visual Studio Solution.
-
-2.  Dependencies
-
-    * Windows 10 target machine
-    * Windows 10 development machine
-    * Windows Driver Development Kit 10.0.17134.0 (or later)
-    * Visual Studio 2017
-
-3.  Building from Source
-
-    3.1 From Visual Studio
-    ----------------------
-
-        The Windows driver and sample applications can be built using Visual Studio.
-        1. Open the *QDMA.sln* solution.
-        2. Select the appropriate *Build Configuration* (Debug/Release) from the menu bar.
-        2. Click *Build* from the menu bar.
-        3. Click *Build Solution*.
-
-        This driver project settings currently support 64bit Windows 10 OS.
-        In order to target a different Windows OS, go to the driver project *Properties->Driver Settings->General* and change *Target OS Version* to the desired OS.
-
-        Also *Release* and *Debug* build configurations exist and are configurable via the *Configuration Manager*.
-
-        The compiled build products can then be found in the *build/x64/`CONFIG`/* folder. This folder contains three folders:
-        - *bin/* contains sample and test applications
-        - *libqdma/* contains libqdma static library
-        - *sys/* contains the driver
-
-    3.2 From Command Line
-    ---------------------
-
-        1. Open *Developer Command Prompt for VS2017*
-        2. Change directory to the project root directory
-        3. Run the following command:
-
-                msbuild /t:clean /t:build QDMA.sln
-
-        4. The build should run and display the following
-
-                Build succeeded.
-                    0 Warning(s)
-                    0 Error(s)
-
-                Time Elapsed 00:01:05.55
-
-        For more information on building Windows drivers visit the [MSDN website][ref4].
-
-4.  Driver Installation
-
-    The easiest way to install the driver is via Windows' *Device Manager*
-    (_Control Panel->System->Device Manager_).
-
-    _**Note**: The driver does not provide a certified signature and uses a test signature instead.
-    Please be aware that, depending on your target operating system, you may need to enable test-signed drivers in your windows boot configuration
-    in order to enable installation of this driver. See [MSDN website][ref5] for further information._
-
-    1. Open the *Device Manager*
-    2. Initially the device will be displayed as a *PCI Serial Port* or *PCI Memory Controller*.
-    3. Right-Click on the device and select *Update Driver Software* and
-       select the folder of the built QDMA driver (typically *build/x64/`CONFIG`/sys/QDMA/* (where `CONFIG` is *Debug* or *Release*).
-    4. If prompted about unverified driver publisher, select *Install this driver software anyway*.
-    5. *Xilinx Drivers -> Xilinx PCIe Multi-Queue DMA* should now be visible in the *Device Manager*
-
-5.  Test Utilities
-
-    The Xilinx dma-arw and dma-rw are test utilities can perform the following functions
-
-    AXI-MM
-        - H2C/C2H AXI-MM transfer.
-
-    AXI-ST-H2C
-        - Enables the user to perform AXI-ST H2C transfers and checks data for correctness.
-
-    AXI-ST-C2H
-        - Enables the user to perform AXI-ST C2H transfers and checks data for correctness.
-
-    register access
-        - read a register space
-        - write to a register space
-    5.1 dma-arw
-    -----------
-        e.g.
-        1. Get the dma-arw help
-            > dma-arw -h
-                dma-arw usage:
-                dma-arw -v  : prints the version information
-
-                dma-arw qdma<N> mode <0 | 1> <DEVNODE> <read|write> <ADDR> [OPTIONS] [DATA]
-
-                - qdma<N>   : unique qdma device name (<N> is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No)
-                - mode      : 0 : this mode uses ReadFile and WriteFile async implementation
-                            : 1 : this mode uses ReadFileEx and WriteFileEx async implementation
-                - DEVNODE   : One of: queue_mm_ | queue_st_*
-                              where the * is a numeric wildcard (0 - 511for queue).
-                - ADDR      : The target offset address of the read/write operation.
-                              Applicable only for control, user, queue_mm device nodes.
-                              Can be in hex or decimal.
-                - OPTIONS   :
-                              -a set alignment requirement for host-side buffer (default: PAGE_SIZE)
-                              -b open file as binary
-                              -f use contents of file as input or write output into file.
-                              -l length of data to read/write (default: 4 bytes or whole file if '-f' flag is used)
-                - DATA      : Space separated bytes (big endian) in decimal or hex,
-                              e.g.: 17 34 51 68
-                              or:   0x11 0x22 0x33 0x44
-        2. Read/Write four bytes from AXI-MM at zeroth offset on queue zero of PF 0
-            > dma-arw qdma17000 mode 0 queue_mm_0 read 0 -l 4
-            > dma-arw qdma17000 mode 0 queue_mm_0 write 0 0xA 0xB 0XC 0xD
-            > dma-arw qdma17000 mode 1 queue_mm_0 read 0 -l 4
-            > dma-arw qdma17000 mode 1 queue_mm_0 write 0 0xA 0xB 0XC 0xD
-
-        3. Read four bytes from AXI-ST-H2C on queue zero
-            > dma-arw qdma17000 mode 0 queue_st_0 read -l 4
-            > dma-arw qdma17000 mode 1 queue_st_0 read -l 4
-
-        4. Write four bytes to AXI-ST-C2H on queue zero
-            > dma-arw qdma17000 mode 0 queue_st_0 write -l 4
-            > dma-arw qdma17000 mode 1 queue_st_0 write -l 4
-
-        5. Read/Write four bytes from control register space at zeroth offset
-            > dma-arw qdma17000 mode 0 control read 0 -l 4
-            > dma-arw qdma17000 mode 0 control write 0 0xA 0xB 0XC 0xD
-            > dma-arw qdma17000 mode 1 control read 0 -l 4
-            > dma-arw qdma17000 mode 1 control write 0 0xA 0xB 0XC 0xD
-
-    5.2 dma-rw
-    -----------
-        e.g.
-        1. Get the dma-rw help
-            > dma-rw -h
-                dma-rw usage:
-                dma-rw -v  : prints the version information
-
-                dma-rw qdma<N> <DEVNODE> <read|write> <ADDR> [OPTIONS] [DATA]
-
-                - qdma<N>   : unique qdma device name (<N> is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No)
-                - DEVNODE   : One of: control | user | queue_mm_ | queue_st_*
-                              where the * is a numeric wildcard (0 - 511for queue).
-                - ADDR      : The target offset address of the read/write operation.
-                              Applicable only for control, user, queue_mm device nodes.
-                              Can be in hex or decimal.
-                - OPTIONS   :
-                              -a set alignment requirement for host-side buffer (default: PAGE_SIZE)
-                              -b open file as binary
-                              -f use contents of file as input or write output into file.
-                              -l length of data to read/write (default: 4 bytes or whole file if '-f' flag is used)
-                - DATA      : Space separated bytes (big endian) in decimal or hex,
-                              e.g.: 17 34 51 68
-                              or:   0x11 0x22 0x33 0x44
-        2. Read/Write four bytes from AXI-MM at zeroth offset on queue zero of PF 0
-            > dma-rw qdma17000 queue_mm_0 read 0 -l 4
-            > dma-rw qdma17000 queue_mm_0 write 0 0xA 0xB 0XC 0xD
-
-        3. Read four bytes from AXI-ST-H2C on queue zero
-            > dma-rw qdma17000 queue_st_0 read -l 4
-
-        4. Write four bytes to AXI-ST-C2H on queue zero
-            > dma-rw qdma17000 queue_st_0 write -l 4
-
-        5. Read/Write four bytes from control register space at zeroth offset
-            > dma-rw qdma17000 control read 0 -l 4
-            > dma-rw qdma17000 control write 0 0xA 0xB 0XC 0xD
-
-    5.3 dma-ctl
-    ------------
-        The Xilinx dma-ctl is a helper utility can perform the following functions for a given PF
-
-        Add/Start/Stop/Delete/State queues
-            - can add and start a queue
-            - can stop and delete a queue
-            - can retrieve and show the state of a queue
-
-        Dump the CSR registers Information
-            - List all the CSR registers and its values
-
-        Provide the HW and SW capabilities Information
-
-        e.g.:
-        1. Get the dma-ctl help
-            > dma-ctl -h
-                usage: dma-ctl [dev | qdma<N>] [operation]
-                       dma-ctl -h - Prints this help
-                       dma-ctl -v - Prints the version information
-
-                dev [operation] : system wide FPGA operations
-                     list       : list all qdma functions
-
-                qdma<N> [operation]     : per QDMA FPGA operations
-                    <N>         : N is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No
-                    csr <dump>
-                         dump   : Dump QDMA CSR Information
-
-                    devinfo     : lists the Hardware and Software version and capabilities
-
-                    queue <add|start|stop|delete|listall>
-                           add mode <mm|st> qid <N> [en_mm_cmpl] idx_h2c_ringsz <0:15> idx_c2h_ringsz <0:15>
-                               [idx_c2h_timer <0:15>] [idx_c2h_th <0:15>] [idx_c2h_bufsz <0:15>] [cmptsz <0|1|2|3>] - add a queue
-                               [trigmode <every|usr_cnt|usr|usr_tmr|usr_tmr_cnt>] [sw_desc_sz <3>] [desc_bypass_en] [pfch_en] [pfch_bypass_en]
-                               [cmpl_ovf_dis]
-                           start qid <N> - start a single queue
-                           stop qid <N> - stop a single queue
-                           delete qid <N> - delete a queue
-                           state qid <N> - print the state of the queue
-                           dump qid <N> dir <h2c|c2h> desc <start> <end> - dump desc ring entries <start> to <end>
-                           dump qid <N> cmpt <start> <end> - dump completion ring entries <start> to <end>
-                           dump qid <N> ctx dir <h2c|c2h> - dump context information of <qid>
-                           cmpt_read qid <N> - Read the completion data
-                    intring dump vector <N> <start_idx> <end_idx> - interrupt ring dump for vector number <N>
-                                                                    for intrrupt entries :<start_idx> --- <end_idx>
-                    reg dump - register dump
-
-        2. Get the qdma devices list
-            > dma-ctl dev list
-                qdma17000	0000:17:00:0	maxQP: 512, 0~511
-                qdma17001	0000:17:00:1	maxQP: 512, 512~1023
-                qdma17002	0000:17:00:2	maxQP: 512, 1024~1535
-                qdma17003	0000:17:00:3	maxQP: 512, 1536~2047
-
-
-6.  Known Issues
-
-    * Driver installation gives warning due to test signature.
-    * Driver is not fully tuned to achieve maximum IP performance
-
-7.  References
-
-    [ref1]: https://www.xilinx.com/products/intellectual-property/pcie-dma.html
-    [ref2]: https://www.xilinx.com/support/documentation/ip_documentation/qdma/v3_0/pg302-qdma.pdf
-    [ref3]: https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
-    [ref4]: https://msdn.microsoft.com/en-us/windows/hardware/drivers/develop/building-a-driver
-    [ref5]: https://msdn.microsoft.com/en-us/windows/hardware/drivers/install/the-testsigning-boot-configuration-option
\ No newline at end of file
diff --git a/QDMA/windows/RELEASE b/QDMA/windows/RELEASE
deleted file mode 100644
index 936e10d..0000000
--- a/QDMA/windows/RELEASE
+++ /dev/null
@@ -1,76 +0,0 @@
-Release: 2020.2
-================
-
-This release is validated on QDMA4.0 2020.2 based example design and
-QDMA3.1 2019.2 patch based example design.
-
-QDMA Windows driver is supported in poll mode by default
-
-SUPPORTED FEATURES:
-===================
-2019.1 Features
----------------
-- Support for AXI4 Memory Mapped(MM) and AXI4 Streaming(ST) Interfaces
-- Supports only Physical Functions(PFs)
-- 2048 queues Sets (512 queues for each PF)
-	- 2048 H2C(host-to-card) Descriptor rings
-	- 2048 C2H (card-to-host) Descriptor rings
-	- 2048 Completion rings
-- Interrupts
-	- Up to 8 MSI-X vectors per Function
-	- Interrupt Aggregation with single ring per PF
-- Driver can be loaded in
-	- Poll mode
-	- direct interrupt mode
-	- interrupt aggregation mode
-- Queues are managed by synchronous/Asynchronous IO from single application.
-- Driver configuration through qdma.inf file
-- Zero Packet size Write/Read support for ST mode
-- Descriptor bypass(8,16,32 descriptor sizes) support
-- Descriptor Prefetch
-
-2019.2 Features
----------------
-- Support disabling overflow check in completion ring
-- Support 64B descriptor format in bypass mode
-- Support for Completion queue descriptors of 64 bytes size
-- Legacy Interrupt Support
-- Support HW Error reporting
-- Support Completions in Streaming mode
-- Support flexible BAR mapping for QDMA configuration register space
-- Version for SW and HW
-- ST H2C to C2H loopback support
-- Enhancements to user application utilities
-
-2020.1 Updates
----------------
-- QDMA driver and libqdma as a separate project
-- Configurable queue distribution between physical functions
-- User application utility names changed as dma-ctl, dma-arw, dma-rw
-- New set of commands added to dma-ctl application
-- Support QDMA4.0 context and register changes
-- Common driver to support QDMA3.1 and QDMA4.0 designs
-- Updated and validated the example design with marker changes for QDMA4.0 and without marker changes for QDMA3.1
-- Support multiple bus numbers on single card
-
-2020.2 Updates
---------------
-- Support larger MM & ST packet transfer support
-- Added support for detailed register dump
-- Added support for post processing HW error messages
-- Added support for Debug mode and Internal only mode
-
-
-KNOWN ISSUES:
-=============
-- Driver installation gives warning due to test signature.
-- In interrupt mode, Sometimes completions are not received when C2H PIDX updates are held for 64 descriptors
-- On QDMA4.0 2020.2 design, User logic fails to generate C2H streaming packets when multiple threads try
-  to generate packets on multiple active queues.
-
-DRIVER LIMITATIONS:
-===================
-- SRIOV is not supported
-- Big endian systems are not supported
-- Driver is not fully tuned to achieve maximum IP performance
-- For optimal QDMA streaming performance, packet buffers of the descriptor ring should be aligned to at least 256 bytes.
diff --git a/QDMA/windows/apps/common/include/device_file.hpp b/QDMA/windows/apps/common/include/device_file.hpp
deleted file mode 100644
index a1394bb..0000000
--- a/QDMA/windows/apps/common/include/device_file.hpp
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <string>
-#include <system_error>
-#include <vector>
-#include <sstream>
-
-#include <Windows.h>
-#include <winioctl.h>
-#include <SetupAPI.h>
-#include <INITGUID.H>
-
-#define DEV_NAME_MAX_SZ                 12
-
-struct device_details {
-    UINT8 bus_no;
-    UINT8 dev_no;
-    UINT8 fun_no;
-    std::string device_name;
-    std::string device_path;
-};
-
-#pragma warning( disable : 4505)
-static bool get_device(std::vector<device_details> dev_details, const char *dev_name, device_details &dev_info) {
-    bool is_dev_found = false;
-
-    for (auto i = 0; i < (int)dev_details.size(); i++) {
-        if (dev_details[i].device_name == dev_name) {
-            is_dev_found = true;
-            dev_info = dev_details[i];
-            break;
-        }
-    }
-    return is_dev_found;
-}
-
-static std::vector<device_details> get_device_details(GUID guid) {
-    auto device_info = SetupDiGetClassDevs((LPGUID)&guid, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
-    if (device_info == INVALID_HANDLE_VALUE) {
-        throw std::runtime_error("GetDevices INVALID_HANDLE_VALUE");
-    }
-
-    SP_DEVINFO_DATA dev_info_data;
-    dev_info_data.cbSize = sizeof(SP_DEVINFO_DATA);
-
-    SP_DEVICE_INTERFACE_DATA device_interface = { 0 };
-    device_interface.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
-
-
-    std::vector<device_details> dev_details;
-    device_details info;
-
-    /* enumerate through devices */
-    for (unsigned index = 0;
-         SetupDiEnumDeviceInterfaces(device_info, NULL, &guid, index, &device_interface);
-         ++index) {
-
-        unsigned char *bus_no = NULL;
-        unsigned char *dev_addr = NULL;
-        DWORD lsize = 0;
-
-        /* get required buffer size */
-        unsigned long detailLength = 0;
-        if (!SetupDiGetDeviceInterfaceDetail(device_info, &device_interface, NULL, 0, &detailLength, NULL) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-            throw std::runtime_error("SetupDiGetDeviceInterfaceDetail - get length failed");
-        }
-
-        /* allocate space for device interface detail */
-        auto dev_detail = reinterpret_cast<PSP_DEVICE_INTERFACE_DETAIL_DATA>(new char[detailLength]);
-        dev_detail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
-
-        /* get device interface detail */
-        if (!SetupDiGetDeviceInterfaceDetail(device_info, &device_interface, dev_detail, detailLength, NULL, &dev_info_data)) {
-            delete[] dev_detail;
-            throw std::runtime_error("SetupDiGetDeviceInterfaceDetail - get detail failed");
-        }
-
-        /* get the required size for PCIe BUS NUMBER Parameter */
-        if (!SetupDiGetDeviceRegistryProperty(device_info, &dev_info_data, SPDRP_BUSNUMBER, NULL, (PBYTE)bus_no, 0, &lsize) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-            delete[] dev_detail;
-            throw std::runtime_error("SetupDiGetDeviceRegistryProperty - get length failed");
-        }
-
-        /* Retrieve the PCIe bus number */
-        bus_no = (unsigned char*)malloc(lsize);
-        if (!SetupDiGetDeviceRegistryProperty(device_info, &dev_info_data, SPDRP_BUSNUMBER, NULL, (PBYTE)bus_no, lsize, NULL)) {
-            delete[] dev_detail;
-            free(bus_no);
-            throw std::runtime_error("SetupDiGetDeviceRegistryProperty - get Registry failed");
-        }
-
-        /* get the required size for PCIe Device Address Parameter */
-        if (!SetupDiGetDeviceRegistryProperty(device_info, &dev_info_data, SPDRP_ADDRESS, NULL, (PBYTE)dev_addr, 0, &lsize) && GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
-            delete[] dev_detail;
-            free(bus_no);
-            throw std::runtime_error("SetupDiGetDeviceRegistryProperty - get length failed");
-        }
-
-        /* Retrieve the PCIe Device Address */
-        dev_addr = (unsigned char*)malloc(lsize);
-        if (!SetupDiGetDeviceRegistryProperty(device_info, &dev_info_data, SPDRP_ADDRESS, NULL, (PBYTE)dev_addr, lsize, NULL)) {
-            delete[] dev_detail;
-            free(bus_no);
-            free(dev_addr);
-            throw std::runtime_error("SetupDiGetDeviceRegistryProperty - get Registry failed");
-        }
-
-        /* Prepare BDF format (0xBBDDF) */
-        UINT8 dev_no = (*dev_addr & 0xF8) >> 3;
-        UINT8 fun_no = (*dev_addr & 0x7);
-        UINT32 bdf = 0x0;
-        bdf = bdf | (*bus_no << 12);
-        bdf = bdf | (dev_no << 4);
-        bdf = bdf | (fun_no);
-
-        /* Prepare the PCIe devices identifier strings */
-        std::ostringstream outs;
-        outs << "qdma";
-        outs.setf (std::ios::hex, std::ios::basefield);
-        outs.width(5); outs.fill('0');
-        outs << bdf;
-
-        /* Fill the details in info structure */
-        info.bus_no = *bus_no;
-        info.dev_no = dev_no;
-        info.fun_no = fun_no;
-        info.device_name = outs.str();
-        info.device_path = dev_detail->DevicePath;
-
-        /* Append it to the return vector */
-        dev_details.emplace_back(info);
-
-        free(bus_no);
-        free(dev_addr);
-        delete[] dev_detail;
-    }
-
-    SetupDiDestroyDeviceInfoList(device_info);
-
-    return dev_details;
-}
-
-
-inline static std::string get_last_win_err_msg() {
-    char tmp[256];
-    FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
-                   MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), tmp, 256, NULL);
-
-    return{ tmp, 256 };
-}
-
-struct device_file {
-    HANDLE h;
-    device_file();
-    device_file(const std::string& path, DWORD accessFlags);
-    ~device_file();
-
-    device_file(const device_file& rhs) = delete;
-    device_file& operator=(const device_file& rhs) = delete;
-
-    device_file(device_file && rhs);
-
-    device_file& operator=(device_file&& rhs);
-
-    void open(const std::string& path, DWORD accessFlags, DWORD fattribs = FILE_ATTRIBUTE_NORMAL);
-
-    void close();
-
-    template <typename T>
-    void write(long address, const T value);
-
-    template <typename T>
-    T read(long address);
-
-    void seek(long device_offset);
-    size_t write(void* buffer, size_t size);
-    size_t read(void* buffer, size_t size);
-
-    size_t ioctl(int code, void* inData = nullptr, DWORD inSize = 0, void* outData = nullptr,
-                 DWORD outSize = 0);
-};
-
-inline device_file::device_file() : h(INVALID_HANDLE_VALUE) {};
-
-inline void device_file::open(const std::string& path, DWORD accessFlags, DWORD fattribs) {
-    h = CreateFile(path.c_str(), accessFlags, 0, NULL, OPEN_EXISTING,
-                   fattribs, NULL);
-    if (h == INVALID_HANDLE_VALUE) {
-        throw std::runtime_error("CreateFile control failed: " + get_last_win_err_msg());
-    }
-}
-
-inline void device_file::close() {
-    if (h != INVALID_HANDLE_VALUE) {
-        CloseHandle(h);
-    }
-}
-
-inline device_file::device_file(const std::string& path, DWORD accessFlags) : h(INVALID_HANDLE_VALUE) {
-    open(path, accessFlags);
-}
-
-inline device_file::~device_file() {
-    close();
-}
-
-#if 0
-inline device_file::device_file(device_file && rhs)
-    : h(INVALID_HANDLE_VALUE) {
-    *this = std::move(rhs);
-}
-
-inline device_file& device_file::operator=(device_file&& rhs) {
-    if (this != &rhs) {
-        h = rhs.h;
-        rhs.h = INVALID_HANDLE_VALUE;
-    }
-    return *this;
-};
-#endif
-
-inline void device_file::seek(long device_offset) {
-    if (INVALID_SET_FILE_POINTER == SetFilePointer(h, device_offset, NULL, FILE_BEGIN)) {
-        throw std::runtime_error("SetFilePointer failed: " + get_last_win_err_msg());
-    }
-}
-
-inline size_t device_file::write(void* buffer, size_t size) {
-    unsigned long num_bytes_written;
-    if (!WriteFile(h, buffer, (DWORD)size, &num_bytes_written, NULL)) {
-        throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-    }
-
-    return num_bytes_written;
-}
-
-template <typename T>
-inline void device_file::write(long addr, T t) {
-    seek(addr);
-    unsigned long num_bytes_written;
-    if (!WriteFile(h, &t, sizeof(T), &num_bytes_written, NULL)) {
-        throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-    } else if (num_bytes_written != sizeof(T)) {
-        throw std::runtime_error("Failed to write all bytes!");
-    }
-}
-
-inline size_t device_file::read(void* buffer, size_t size) {
-    unsigned long num_bytes_read;
-    if (!ReadFile(h, buffer, (DWORD)size, &num_bytes_read, NULL)) {
-        throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-    }
-    return num_bytes_read;
-}
-
-template <typename T>
-inline T device_file::read(long addr) {
-    seek(addr);
-    T buffer;
-    unsigned long num_bytes_read;
-    if (!ReadFile(h, &buffer, sizeof(T), &num_bytes_read, NULL)) {
-        throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-    } else if (num_bytes_read != sizeof(T)) {
-        throw std::runtime_error("Failed to read all bytes!");
-    }
-    return buffer;
-}
-
-inline size_t device_file::ioctl(int code, void* inData, DWORD inSize, void* outData, DWORD outSize) {
-
-    DWORD nb = 0;
-    BOOL success = DeviceIoControl(h, code, inData, inSize, outData, outSize, &nb, NULL);
-    if (!success) {
-        throw std::runtime_error("ioctl failed!" + get_last_win_err_msg());
-    }
-    return nb;
-}
diff --git a/QDMA/windows/apps/dma-arw/datafile256K.bin b/QDMA/windows/apps/dma-arw/datafile256K.bin
deleted file mode 100644
index 1b50cdd57bcc0fb5c0e6ae027560cd03062b5434..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 262144
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%0AY
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%0DZ-II4u-93Hx%-yqh&)q$L
z_rl$acQ4(&eD})Tt9P&6y?*z`-J5rB-MxMH&fU9r@7=wB_rcwVcOTt-eD}%Sr+1&-
zeSY`F-IsS?-F<!c&E2<m-`#zG_ru+fcR$_zeD}-UuXn%Q{eJhy-Jf@V-Ti&{&)vUw
z|K0t6m*F1cJ*Ioi_gL<+-ebGRevjiG=RK}_-1m6y@!sRR$A3@Yp5Q&9d&2ib?up(L
zyC;56;-2I^se97*WbVn{le;H>PvM^8J*9if_f+nw-c!4$eoy0`<~^-@+V^zs>E6@3
zr+?4jp5Z;Cd&c)n?wQ^*yJvpS;-2L_t9#b>Z0_0Kv%6=1&*7fqJ*Rul_gwC|-gCR>
ze$V5c=RL1`-uHa&`QG!p=YKEYUf{i;d%^cY?uFh9yBB^h;$GyvsC&`(V(!J>i@O(p
zFX3L|y`+1|_fqbq-b=feelO!*=Dn<Y+4pkp<=)G?mw&I|Ug5o>d&T!k?v>svyH|d%
z;$G#ws(aP<YVOtEtGic!ui;+fy{3E3_ge0?-fO$pey`(R=e@3b-S>L#_1^2d*MD!q
zy@~fG-J5)G%Dt)grrn!<Z^pfu_h#LjeQ(aax%cMXn}2V?y@mG{-CKNb$-Slbmfc%^
zZ^gZp_g39oeQ(XZwfENDTYqoEy^Z%a-P?R`%e}4lw%yx)Z^ylz_jcXeeQ(dbz4!Lr
z+kfxCy@U4--8+2m$i1WYj@>(c@5H^6_fFkAeecY@v-i&3JAd!Oy^HrQ-Mf76%Dt=i
zuHCzS@5a5G_io+0eece_yZ7$hyMOP&y@&T6-FtlR$-Srdp51$X@5Q~B_g>w5eecb^
zxA)%Ndw=i4y^r@k-TQp+%e}AnzTNwN@5jBL_kP{`eech`zxV##`+tw&KI46+`^@)Q
z?z7%!yU%`~<38touKV2gdG7Px=ey5;U*NvreWClp_eJiD-WR(seqZ9g<bA38()VTV
z%ifo}FMnU*zT$nQ`^xuK?yKHcyRUv<<G$v7t^3;db?)ol*SoKO-{8LCeWUxv_f77b
z-Z#5%e&6E0<$bIB*7t4h+upakZ-3w6zT<tT`_A`W?z`T1yYGJA<G$y8ulwHjeeV0-
z_q*?ZKj41g{h<57_e1W7-VeJUem~-V<o&4o(f4ES$KH>-AAdjLe&YS4`^ooH?x)^Q
zyPtkP<9_D-tozybbMEKf&%2+0zu<o1{i6HD_e<`V-Y>gfe!t>=<^8Jr)%R=e*WRzY
zUw^;he&hY7`_1=T?zi4=yWf7l<9_G;uKV5hd+zt%@4MfBf5QEV_b1(-e1FRQsrRSd
zpMHPF{h9Y?-JgAb&i%Rf=iQ%wf5H8Q_ZQt?e1FOPrT3TJUw(hZ{gwAu-Cuow&Hc6a
z*WF)#f5ZKa_cz_&e1FURt@pRx-+q6`{hjxB-QRtG&;7mk_ub!r|G@o&_Yd7aeE-P(
zqxX;9KYstj{gd}k-9LT*%>A?X&)q+N|HA!?_b=VQeE-V*tM{+nzkdJ5{hRl1-M@YR
z&i%Xh@7=$D|H1u-_aEJVeE-S)r}v-Te}4bP{g?M&-G6=m&HcCc-`#(I|HJ){_dnhL
zeE-Y+ulK**|9=0+{h#-L-T!_6&;7sm|K0z8pWy-H1EvSe4_F?sK45#m{($2F=L4<>
z+z)sj@IK&s!2dwtf#3t72f`0T9*8~=dm#Qm;(_D?sRz;zWFE*qkb5BiK;ePn1EmMb
z4^$qgK2Uq0{y^h_<^!z<+7EOd=swVUp#Q+&f#CzA2gVOf9+*Bbdtm;+;(_G@s|VH(
zY#!J?uzO(tz~O=81E&Yh4_qF&K5%>B{=nmb=L4??-Vb~p_&)G^;Qt`tLEwX+2f+_Q
z9)vy!dl3F0;z8tts0YyxVjjdkh<gzKAmKscgQN$^4^keaK1h3z{vhK)=7X#U*$;9a
z<UYuIkpH0ILE(d<2gMIc9+W;Pdr<zM;z8wust45%Y97=+sC!WVpy5H|gQf?~4_Y3y
zK4^Q;{-EPQ=Yy^X-4A*m^gif&(Enh<gNY9&J(&Dp%7dv7rahScV8(-)4`w}>{b0_6
zxew+&nEznGgM|+kJy`r;$%Ca2mOWVhV8w%#4^}-`{b0?5wGY-kSpQ(dgN+Y1J=pwU
z%Y&^CwmsPXV8?@<4|YA+{b0|7y$|+1*#F?bgM$waJvjW}$b+K~jy*X3;KYNI4^BNe
z{ou@lvk%TaIRD_ngNqL?J-Gbf%7d#9u06Q^;KqZS4{klU{ou}nyASR?xc}h6gNF|u
zJ$U@!$%Cg4o;`T};KhTN4_-ZZ{ou`mw-4Suc>mzTgO3kBJ^1|K%Y&~EzCHN<;KzfX
z4}LxP{ov1ozYqRB`2T?6A>%`)hs+OI9<n}Ud&vHf<00omu7}(Yc^>jU<a@~fP~f59
zL!pPl4@Dk|J`{T>{!rqf<U^^4(hp@G%085PDF0C5q2fcOhsqCC9;!Z6d#L_U<Duq5
zt%uqVbsp+I)O)D^(BPrrL!*br4^1ALJ~Vr1{?Ou~<wL87)(>qS+CH><X#ddRq2oiR
zht3aO9=bksd+7eq<Dut6uZP|beIEKg^n2+4FyLX}!=Q)34?`Y?J`8&p{xITU<in_k
z(GO!D#y*UD82>QgVdBH2hsh699;QA_dzk((<6-8*tcTeTa~|eC%zK#su;5|g!=i`9
z4@(}FJ}i4!{;=X<<-@9n)embP);_FzSpTr$VdKN5hs_UL9=1Mgd)WT4<6-B+u7}+Z
zdmi>a?0eY%aKgih4<|jG{BX*{sSl?;oc?ge!<i3fJ)He;&cnG6=RKVNaKXcc4;MXL
z{BX&`r4N@qT>fyy!<7$LJzV{8&BL`1*F9YSaKpom4>vvB{BX;|tq-?7-2QOK!<`Rz
zJ>30p&%?bB_dVSI@W8`^4-Y*&{P4)bqYsZgJpS;+!;=qBJv{yJ%)_$}&pkZ<@WR83
z4=+8u{P4=ds}HX|y#DaU!<!FpJ-q$!&cnM8?>)T#@WI1}4<9{z{P4-crw^Y!eE#so
z!<P?VJ$(J}&BM13-#vW)@WaE84?jKp{P4@euMfXH{QmIA!=Dd-J^cOf&%?hD|2_Qw
zkl_*IBc?~pk60eDK4N>s{)pod=OeC1+>dx3@jl{v#Q#X(k>DetN5YRp9*I5@dnEoy
z;*sPdsYlX}WFE;rl6xfoNa2y<Bc(^mk5nG1K2m$6{z&7I<|C~~+K+S|=|0kXr2oj^
zk>MkwN5+p#9+^Hedu0B|;*sSet4G$4Y#!M@vU_Cz$l;OWBd15sk6a$PK5~2H{>bBz
z=OeF2-j949`9AV{<o_t(QQ)JXN5PLm9)&&%dlddC;!)(Is7KL{VjjglihC6QDB)4!
zqoha4k5V3`K1zF({wU*7=A*1f*^hD_<vz-Ll>eyUQQ@PaN5zjy9+f^SdsP0Y;!)+J
zsz=q2Y97@-s(V!bsNqrLqozmAk6IqJK5Bc^{;1<o=cBGi-H&=6^*-u*)c<J0qlu3u
zJ(~Pz%A=`|rahYeXvU+Nk7hlZ{b<gkxsT>On*V6QqlJ$aJzD%|$)lx@mOWbjXvL$I
zk5)Ze{b<djwU5?4TK{Onqm7R?J=*+e%cHH2wmsVZXvd?Sk9IxU{b<jly^r=i+W+Xl
zql1qQJv#j8$fKi=jy*d5=)|Lwk4`;0{pif2vyaX_I{)axql=F&J-Ynp%A>1~u06W`
z=*FX)k8VA>{pil4yN~WYy8r0Gqlb?kJ$n4;$)l%_o;`a0=*6R#k6t}`{pii3w~yXE
zdjIIdqmPe1J^K9U%cHN4zCHT>=*Od<kA6M+{pio5zmNVs`u~XGG2>&V$IOpe9<x4X
zd(8fr<1y!BuE*Suc^>mV=6lTlSm3eXW1+{wk3}AfJ{Ef{{#fF%<YTGF(vM{x%RZKS
zEdN;HvEpN;$I6dY9;-f9d#wIg<FV#rt;gDrbsp<J)_bh~*x<3@W248$k4+w%J~n%7
z{@CKN<zuVI){ku-+dj5?Z2#EdvEyT>$Ig#k9=kqvd+h$$<FV&sugBhxeIENh_IvFA
zIN)*M<DkdEk3$}ZJ`Q^v{y5@s<m0Hv(T`&u$3BjG9RE1sapL2o$H|XV9;ZG|dz}6_
z<8kKWtjF1pa~|hD&U>8yxZrW&<D$pKk4qkxJ}!G){<z|C<>RWy)sJf)*FLU$T>rS?
zapU8r$IXvh9=ASjd))rG<8kNXuE*Vvdmi^b?t9$-c*5g}k0(8z{CLXasgI{Up8j~o
z<C%|VJ)Zq|&f~d{=RKbPc){a^j~6{&{CLUZrH_|AUjBH+<CTwBJzo8I&EvI?*F9eU
zc*En3k2gKu{CLabt&g`o-u`&U<DHLpJ>LCz&*Qz1_dVYK_`u_Xj}JXQ{P@V@qmPe0
zKK}T`<CBk1JwE;T%;U3<&pkf>_`>6hk1svG{P@b_tB<cezW(^e<C~9fJ-+?;&f~j}
z?>)Z%_`&0cj~_jL{P@Y^r;ndKe*XBy<Cl+LJ%0W8&EvO^-#vc+_`~Cmk3T*B{P@e`
zuaCby{{HyK<DZXzJ^uap&*Q(3|2_WynBfWI6Q(E3PgtI?K4E*p{)FQR=M%0c+)sF(
z@IK*t!v93ziQp5VC&Eueo`^mXdm{cs;)&!FsVCA;WS+=Ak$WQlMB$0z6Qw80PgI_$
zK2dw3{zT)6<`b<a+D~+z=swYVqW{F;iQyBYC&o`qo|rx{dt&~?;)&%Gt0&e^Y@XOY
zv3p|w#NmnK6Q?K6Ph6h3K5={E{>0;n=M%3d-cNj<_&)J_;{PPzN#K*9C&5obo`gOL
zdlLR6;z{I_s3*}+VxGi4iF*?NB;iTolcXofPg0(wK1q9${v_i`=98=^*-vtw<UYxJ
zlK-UON#T>CC&f=no|HZ*ds6<S;z{L`swdS?YM#_Sse4lYq~S^9lcp!lPg<U|K52W>
z{-onc=aa4{-A{U+^gii((*I<_lZj6zJ(>Ju%9E*2rahVdWX6-3Pi8%t{bbIQxliUj
zng3+LlZ8(fJz4x@$&;l|mOWYiWW|$}PgXry{bbFPwNKVPS^s3ilZ{U{J=y$Z%ag57
zwmsSYWXF@8Pj)@o{bbLRy-)T%+5hCglY>tVJvsd3$djW_jy*a4<iwMcPfk5K{p8G(
zvro=FIsfFslZ#I-J-Phk%9E>4u06T_<i?YmPi{TA{p8M*yHD;tx&P$BlZQ_pJ$d}(
z$&;r~o;`W~<i(ShPhLHF{p8J)w@=<ZdH>|YlaEh6J^B3P%agB9zCHQ=<j0erPkuf5
z{p8P+zfb->`TvCBDdSV7r_4`Tp0Yk=d&>Tl<0<D;uBY5jd7kn<<$KEiRN$%LQ=zBA
zPeq=JJ{5Z^{#4?r<Ws4q(obcc%088QD*sgBsp3<mr^-)No~k}od#e6a<EiFTt*6>g
zb)M=z)qAS{)ZnS%Q=_NGPfebhJ~ex4{?y{B<x{Jt)=zDo+CH^=YX8*XspC_pr_N7Z
zp1MADd+Pqw<EiIUuczKmeV+P0^?U07G~j9A)1arpPeY!DJ`H;s{xsrg<kP69(NANZ
z#y*XE8viumY2wqQr^!!Ko~Axcdz$_<<7wv8tf$#ebDrit&3l^vwBTvs)1s%vPfMPb
zJ}rA%{<Pw0<<qLC)lX}l);_I!TK}}+Y2(wTr_E1Wp0+-1d)ofA<7wy9uBY8kd!F__
z?R(n)bi&h#PbWQ{{B+9GsZXapo&I#j)0t0aJ)Qk@&eOS1=RKYObivbwPZvF1{B+6F
zrB9bVUH){%)0IzGJzf2D&C|6{*F9bTbi>n)Pd7c?{B+CHtxvZ--TrjP)16OuJ>C6u
z&(pn6_dVVJ^uW`DPY*pk{Pf7vqfd`LJ^u8>)00n6Jw5&O%+s?^&pkc=^up7NPcJ>a
z{PfDxt52^zz5evZ)0<CkJ-z+(&eOY3?>)W$^ug1IPai#f{PfAwr%#_feg5>t)0a<Q
zJ$?Q3&C|C}-#vZ*^uyDSPd`2V{PfGyuTQ@{{r>dF)1Oa&J^lUk&(pt8|2_Txl;IiU
zGp1+E&sd(ZK4W{v{*2=p=QFNn+|PKP@jl~w#{W#<ncy>_XTr}!o{2sadnW!&;+f<#
zsb|v9WS+@BlY1urOyQa0Go@$B&s3hNK2v+9{!HVU<}<Bl+Rt>J=|0nYrvJ>~nc*{|
zXU5M=o|!%~duIO3;+f?$t7q2FY@XRZvwLR$%;A~iGpA?H&s?6lK688K{><Z<=QFQo
z-p_oV`9AY|=Kn0<S>UsvXTi@xo`pUOdlvpI;#uUgsAtj7VxGl5i+dLTEa6$=v!rLq
z&r+VHK1+L+{w(8J=CiD4+0SyG<vz=MmjA5aS>dyyXT{G-o|Qf;dshCe;#uXhs%O>D
zYM#|Tt9w@etl?SXv!-Xw&sv_fK5Ki{{;cC!=d-S7-OqZS^*-x+*8gn6vx(0pJ)8V&
z%Co7@rahbfY{s*h&t^TF{cO&&xzFZ3oBwRVvxUzVJzM;2$+M-;mOWekY{j#c&sIHK
z{cO#%wa?Z)TmNjsvyIO-J=^?j%d@S|wmsYaY{#>m&vrfA{cO*(z0dYN+yCsqvxCnL
zJv;pD$g`u*jy*g6?8LK^&rUr%{p`%Mv(L^wJOAv$vy0CzJ-htu%CoD_u06Z{?8dX3
z&u%@t{p`-OyU*@DyZ`LLvxm<fJ$wA@$+M@=o;`d1?8UQ}&t5%y{p`)Nx6j@^d;jdi
zvyaa{J^TFZ%d@Y~zCHW??8md8&wf4o{p`=Pzt8?X`~QsLIpcGt=giMpp0hq@d(Qrx
z<2mPZuIJp(d7kq==X=ioT;RFjbD`(L&qbb#J{Nl~{#@d@<a4R#($8g{%RZNTF8^HN
zx#DxB=gQAjo~u4rd#?Um<GJQ@t>@a$b)M@!*L$x2+~B$4bED_R&rP12J~w-A{@miZ
z<#Vg&*3WI8+dj8@ZvWijx#M%E=g!Yvp1VGGd+z?+<GJT^ujk&+eV+S1_j~UDJm7iY
z^PuO!&qJPvJ`Z~y{ygG&<nyTK(a&R^$3BmH9{)VydE)b==gH4go~J%fd!GJ0<9X)u
ztmoO!bDrlu&wHN#yx@7^^P=a)&r6<{J}-M-{=DLO<@2iN)z535*FLX%UjMw|dE@h@
z=grSsp0_@4d*1%M<9X-vuIJs)d!F|`?|a_=e8TgI&nG>f{Cvvusn4f9pZ<Kt^O?_Q
zJ)ix2&hxp?=RKeQe8KaD&lf#k{CvstrO%f=U;cc>^Oet6JzxEN&GWU-*F9hVe8cmN
z&o@2a{Cvyvt<SeT-~N2Z^PSIkJ>UI&&-1;{_dVbL{J`^r&ksF6{QSuCqtA~$KmPp0
z^OMg{JwN^Y%=5F)&pki?{KE5#&o4c{{QS!EtIw}JzyAEj^PA6aJ-_|@&hxv^?>)c&
z{K4~w&mTR1{QSxDr_Y}~fByW%^Ow(GJ%9cD&GWa<-#vf-{KNB)&p$o?{QS%Fug||d
z|Ni{P^PkUuJ^%gu&-1^}|2_ZzoZ$uI3#J#$FIZl%zF>R7{(|EL=L@bE+%I@u@V?-C
z!T&<wh2RUJ7s4+@UWmRBdm;Wp;)Uc3sTa~OWM0U=kb5EjLg9tt3#AvzFH~NrzEFFi
z{zBu0<_oPC+Anlo=)TZ<q5s0*h2aaM7sfA4UYNcxdtv^<;)Uf4s~6TUY+l&DuzO+u
z!r_JE3#S*(FI--@zHoct{=(yh=L@eF-Y<M!_`dLa;r}AwMc|8|7r`$=UWC2~dlCL3
z;zi_(s29;MVqV0)h<g$LBH=~ii=-FHFH&BlzDRqK{vzW==8LQs*)MWl<i5yzk^iFL
zMd6F07sW41UX;Eldr|(P;zi|)su$HSYF^a7sC!ZWqTxm3i>4RNFIrx-zG!>V{-WbW
z=Zmfv-7k7x^uFkO(f?w?i-|8Ly_o!B%8RKlroEW{V#bS^FJ`@%{bJ6Gxi99unEztI
zi-j*1y;%HW$%~~gmc3a1V#SM<FIK%+{bJ3FwJ+AaSpQ<fi;XWfz1aL>%Zsfqw!PT?
zV#kY}FLu4y{bJ9Hy)X8?*#F|di-Ru?y*T{h$cv*dj=ebk;>3%SFHXHU{o>4vvoFrQ
zIRE0pi;FKVy}111%8RQnuD!Va;>L@cFK)fK{o>AxyD#p&xc}n8i-#{By?FfM$&05i
zp1pYf;>C-XFJ8TP{o>7ww=dqkc>m(Vi;pipz4-j%%ZslszP<SV;>U}hFMhrF{o>Dy
zzc2p1`2T|8CF4t`m&`9&Ub4Pqd&&Ni<0a=yu9w^|d0z6q<a^2gQsAZFOQDy-FGXI8
zz7%^Y{!-$l<V&fS(l2FR%D$9)DgRR8rQ%Dam&z|yUaG!Sd#V0X<E7?Ht(V#_bzbVe
z)O)G_(%_}xOQV;@FHK&WzBGGj{?g*5<x8uV)-P>d+P<`VY5&sUrQ=Jdm(DL;Ub?<?
zd+Gkt<E7_Iub190eO~&$^n2<5GT>$4%b=IRFGF62z6^UA{xafa<jbg+(Jy0O#=eYu
z8UHfjW#Y@Em&q?vUZ%cGdzt<+<7MW{te4p@b6)1Y%zK&tvfyRm%c7UXFH2sQzASrL
z{<7j_<;$v<)h}ya*1oKJS^u)(W#h}Hm(4F*Uben$d)fZ7<7MZ|u9w{}dtUaw?0eb&
za>C1rFDJd6{Bp|6sV}F!oc?mg%b71{y`24W&da$k=e?Z&a>2`mFBiRB{Bp_5r7xGg
zT>f&!%at!zy<Gir&C9hf*S%c-a>L7wFE_p1{Bq07tuME|-2QUM%bhQGz1;nB&&$0p
z_r2Wz^1#c3FAu#u{PM`lqc4xWJpS^;%abopy*&N$%*(Sc&%HeV^1{oDFE72k{PN1n
zt1qv;y#DgW%bPE6y}bSM&da+m@4dYL^1;i8FCV>p{PM}mr!SwqeE#yq%a<=-y?p)h
z&C9nh-@SbQ^25uIFF(Ef{PN4ouP?v7{QmOC%bzcQz5M<1&&$6r|GoVGlHnEOE2dY>
zuUKBOzG8dD{)*!j=PRyP+^=|E@xJ1F#s5m+mEbF(SHiDEUWvXEdnNu#;+5npsaMjk
zWM0X>l6xipO5v5_E2US;uT);CzEXRo{z~JO<}0mN+OKq8>Auo?rT@y{mEkL+SH`bQ
zUYWi!du9I0;+5qqt5?>qY+l*EvU_F!%HfscE2me^uUuZazH)oz{>tN(=PR#Q-miRK
z`M&ad<^L++Rp6_jSHZ7BUWL92dlmjF;#K6Us8`XiVqV3*ihC9RD&bY)tE5-SuToy6
zzDj$Q{wm{D=Bun%*{^b5<-W>$mH(>XRpG0mSH-VNUX{KodsY6b;#K9Vs#n#oYF^d8
zs(V%cs^L}RtEN}YuUcNUzG{2b{;K0u=c}$)-LHCH^}gzR)&FY3tBJ2By_)=L%B!ib
zroEc}YR0RXuV%fP{c6suxv%EEn*VCStA(!?y;}Tg$*ZNWmc3g3YQ?LSuU5TU{c6pt
zwXfE_TK{UptBtQVz1sY0%d4%gw!PZ^YR9XcuXerK{c6vvy|4DY+W+dntAno&y*m8r
z$g88Tj=ehm>cp#)uTH%>{p!rCv#-v*I{)gztBbELy}JDB%B!oduD!bc>c*>^uWr4%
z{p!xEyRYuOy8r6ItB0>1y?XrW$*ZTYp1peh>cy*<uU@@+{p!uDx3Av4djIOftB<cf
zz54v>%d4-izP<YX>c^{}uYSGy{p!!Fzpwti`u~dIHREfh*UYb3UbDVtd(Hlu<2C1N
zuGieJd0z9r=6lWmTHv+dYoXV|uSH&qz7~5e{#xR-<ZG$d(ywJ+%f6O-E&p2Kwc=}~
z*UGO|UaP)Vd#(Oj<F)2%t=HPGbzbYf)_bl0+TgX}Yopi3uT5T?zBYSp{@UWT<!h_g
z)~{_|+rGAYZU5Tgwc~52*Uqn9Uc0__d+q+(<F)5&uh-tMeO~*%_IvIBI^cES>!8=c
zuR~skz7BgG{yO4y<m;%{(XV4($G(nx9sfGvb>i!!*U7I_UZ=iJd!7C|<8|iitk>DE
zb6)4Z&U>Bzy5M!;>!R1iuS;H+zAk%R{<`9I<?E`~)vs$_*S@ZMUH`h_b>r)%*Uhh6
zUbnt(d)@xJ<8|ljuGihKdtUdx?t9(;dcy08uP42p{CdjksjsKKp8k5q>zS`-y`KGg
z&g;3a=e?f)dco_3uNS>u{CdgjrLUL0UjBN;>y@upy<Yu#&Fi(V*S%i<dc*6DuQ$Ek
z{Cdmlt*^Je-u`;W>z%K6z25zL&+EOf_r2c#`oQahuMfRG{QAi2qpy#>KK}Z|>yxif
zy*~Z=%<HqS&%HkX`oimruP?p6{QAo4tFN!UzW(~g>zl7{y}teW&g;9c@4deN`oZgm
zuOGdB{QAl3r>~#Ae*XH!>zA)zy?*`r&Fi<X-@ShS`orswuRp#1{QAr5udlzo{{H&M
z>z}WGz5f0B&+EUh|GobIn&A!O8>TnRZ&=>2zF~XA{)XcX=Nqm!+;4c^@V?=D!~aI$
zjo=%hH^Og3-iW>tdn5iv;*I1RsW;MZWZuZWk$WTmM&XU(8>KhOZ&co>zEOLl{zl`C
z<{Pay+HZ8;=)Tc=qyNU>jo}-kH^y&F-k82Idt?5_;*I4St2fqfY~I+uv3q0x#^H_Q
z8>ctUZ(QEEzHxiw{>I~t=Nqp#-fw)~_`dOb<Nqe$P2iiLH^Fa0-h{phdlUX9;!Wh6
zs5jAXV&25QiF*_OCgDxuo1{0%Z&Kc*zDawN{wCv1=9{cH*>7^*<i5#!lmDjRP2roO
zH^pyC-ju#6dsF_V;!Wk7syEedYTneose4oZrr}NFo2EC-Z(828zG-{Y{-)zi=bNrK
z-EVr{^uFnP)Bk3|n~85Gy_x)G%A2WgroEZ|X2zSDZ)Uxj{btUaxo_sZng3?Nn}u%{
zy;=Nb$(yBbmc3d2X2qM8Z&tlo{btRZwQttFS^s9kn~iTaz1jR`%bTrlw!PW@X2+YI
zZ+5-e{btXby>Irt+5hIin}cr-y*d2m$eW{Yj=eel=ER$mZ%(~A{pQS@vv1D5IsfLu
zn~QHQy}A76%A2ciuD!Yb=Ej?wZ*IN0{pQY_yKnBjx&P+Dn}=^6y?OlR$(yHdp1pbg
z=Ea+rZ(hB5{pQV^w{PCPdH?3an~!fkz4`p+%bTxnzP<VW=Es|#Z+^Y`{pQb`zi<A%
z`TvIDE#q6Jx6E%@-m<=Bd&~Zo<1Ob~uD9H8dEWBA<$KHjR^YARTcNkYZ$;jUz7=~b
z{#N3x<Xfq?(r;zn%D$C*EB{vEt>Rmyx5{r--m1P;d#nCd<E`dft+(25b>8Z})qAV|
z*5Iw-TcfweZ%y8szBPMm{?_8H<y)(_)^Baz+P<}WYyZ~at>as#x6W@}-nzbZd+Ywz
z<E`ggueaWBect-M^?U38HsEdG+n~3>Z$sXOz72aD{x;%m<lCsX(Qjkk#=ebv8~--p
zZQ|Rcx5;l)-lo1ydz=0?<89{Kthd>3bKd5@&3l{ww%~2y+oHF{Z%f{mzAbxO{<h+6
z<=d*a)o*Lw*1oNKTmQD<ZR6Xfx6N-`-nPDNd)xlD<89~LuD9K9d*1fG?R(q*cEa0<
zZzsK-{C3LQsc)yfo&I*l+nH}?y`BAb&fB?f=e?c(cEQ_)Zx_8?{C3IPrEizLUH*2(
z+m&xuy<Pow&D*ta*S%f;cEj6^Z#TW&{C3ORt#7xz-TrpR+nsNBz1{tG&)dCk_r2Z!
z_Q2bNZx6ja{PxJ(qi>JBJ^uE@+mmlky*>T*%-geX&%HhW_QKnXZ!f*Q{PxP*t8cHp
zz5e#b+naB1y}kYR&fB|h@4dbM_QBhSZy&vV{PxM)r*EIVeg5{v+m~-&y?y=m&D*zc
z-@SeR_QTtcZ$G{L{PxS+uW!G-{r>jH+n;ZLz5V_6&)dIm|GoYHmf;=aJEnKc?^xck
zzGHjG{*L1v=R2-<-0yha@xJ4G$Nx^?o!~p6cf#*P-if{wdnf)*;+^C>sdv)vWZucX
zlY1xsPT`&6JEeEZ?^NEYzEgXr{!Zha<~yx-+V6DU>Aur@r~l62o#8v9cgF8b-kH8L
zduRU6;+^F?t9RD#Y~I<vvwLU%&f%ToJEwQf?_A!wzH@u${?6l_=R2==-tT<g`M&de
z=l?F?UEsT*cfs#M-i5vkdl&vL;$7sssCUutV&28Ri+dOUF5z9`yQFu??^52SzDs+T
z{x0KP=DVzS+3#}R<-W^%m;bKdUE#Z;cg62Y-j%*9dsqIh;$7vts(01zYTnhpt9w`f
zuHjwdyQX)|?^@oqzH58e{;uO)=ew?V-S2wd^}g$S*Z*$9yNT~6y_@`Q%DbuWroEf~
zZpOQr?`FN5{cg^?x$ow^oBwXXyM^x-y<7Zl$-AZRmc3j4ZpFKm?^eBA{cg>>weQxw
zTmNpuyN&NQz1#e5%e$@bw!Pc_ZpXWw?{>Z0{cg{@z3=wD+yCysyMylzy*vEw$h)KO
zj=ekn?!>#3?@qlt{qD@Wv+vHmJOA#&yNmBGy}SJG%Db!YuD!ed?#8>D?{2-j{qD}Y
zyYKG3yZ`RNyNB-{y?gxb$-AfTp1phi?!~*8?_Rxo{qD`Xx9{G)d;jjkyN~Zaz5D#`
z%e$}dzP<bY?#H{I?|!}e{qE1ZzwiFN`~QyNJ>z?(_ss8E-m|`Ed(Zx!<2~nluJ_#U
zdEWEB=X=lpUf{jpd!hHj??v8=z88Bh{$Ap}<a??2((h&7%f6R;FaKWQz2bYN_sZ{8
z-mAV>d$0ap<Gtp4t@qmRb>8c~*L$!3-r&9Ad!zTp?@ivDzBhYs{@&uf<$J65*6(fJ
z+rGDZZ~xxmz2keQ_s;KK-n+hcd++|<<Gts5ulL^Xect=N_j~XEKHz=e`=Iy1??c{)
zz7KmJ{yyS;<ol@i(eGp4$G(qyAOAk#ed7D1_sQ>5-lx7#d!PP3<9+7)toPaPbKd8^
z&wHQ$zTkb~`=a;7?@Qj7zAt-U{=VXU<@>7l)$eQG*S@cNU;n=0edGJ4_s#EH-nYJQ
zd*A-P<9+A*uJ_&Vd*1iH?|a|>e!}~S?<c*V{C>*&sqd$~pZ<Qv`<d@&y`TMl&ilFV
z=e?i*e!=^N?-#va{C>&%rSF%$U;ci@`<3rky<h!)&HJ_Q*S%l=e#85X?>D{Q{C>;(
zt?#$J-~N8b`<?H1z2E(Q&-=aa_r2f${=oZ#?+?8{{Qk)MqwkNsKmPv2`;+fay+8f_
z%=@$N&%HnY{=)l<?=QW-{Qk=OtM9M9zyAKl`<w4?y}$kb&ilLX@4dhO{=xf)?;pK?
z{Qk-Nr|+M=fByc(`<L%uy?_1w&HK0S-@SkT{=@r^??1i&{Qk@PukXLT|Nj2R`=9TB
zz5o6G&-=gc|GoeJp5X)I2c{3qA6P!Heqj5+{(<8I=LfD2+#h&8@P6R?!2dzugWw0D
z55gZrK8Su0`yl>7;)CP|sSna0WIo7#kozG2LE(eq2c-|nA5=c5eo*_M{z2n|<_E10
z+8=a2=zh@qp#Q<(gW(6G55^x%KA3(m`(XaT;)CS}s}I&6Y(Ch2u=`;D!Qq4B2d59t
zA6!1TesKHX{=wse=LfG3-XDBE_<r#F;Qt}uL*R#?55XToK7@V<`w;#i;zQ(zs1MN}
zVm`!vi2D%#A>l*fhole5A5uP~en|U}{vqQ-=7+2g*&lK~<bKHekpH3JL*a*_55*r!
zK9qha`%wO&;zQ+!st?s4YChC{sQXa=q2WX0ho%qBA6h=NerWs9{-NVT=ZCHj-5+{B
z^nU33(Enk=hlw91eVF`V%7>{RrhS<HVaA7<A7*`+{bA0BxgX|znEzqHhlL*&eOUZq
z$%myMmVH?MVa11)A69)>{b9|AwI9}fSpQ+ehm9XLec1eA%ZIHWwtd+CVaJD^A9j7%
z{bA3Cy&v{{*#F_chl3vueK`E#$cLjJj(s@(;lziNA5MKZ{o%}qvmefVIRD|ohl?LB
zeYpJL%7?2Tu6?-v;l_uXA8viP{o&4syC3d-xc}k7hld{?eR%xg$%m&Oo_%=!;l+oS
zA6|WU{o&1rw;$epc>m$UhmRjVefa$0%ZINYzJ2)q;m3!cAAWuK{o&7tzaRd6`2T_7
zBjZP=kIWxgKC*sf`^f&0<0I!su8-Uwc|P)f<on3~QQ)KCN1>0xA4NWjeiZvC{!!wi
z<VUHG(jR3$%6^plDF0F6qvA)UkIElaKB|6H`>6g=<D=$Bt&iFtbw28T)cdIa(cq)u
zN28C%A5A`*el+`N{?X#2<wvWJ)*o#?+J3bAX#dgSqvJ=XkIo-mKDvH%`{@4B<D=(C
zuaDjzeLnhr^!w=lG2mn1$DohFA45Kdehm8<{xRZX<j1Iw(H~<z#(s?Z82>ThW8%l8
zkI5fXKBj(5`<VVQ<74K>tdH3rb3W#N%=?)CvEXCj$D)tLA4@)#ek}V~{;}d?<;SXz
z)gNm<)_$z}SpTu%W8=rBkIf%jKDK^r``G@m<74N?u8-Xxdp`Dl?EBdNal*%mA18gB
z{Bg?1sUN3(oc?jf$C)2zeVqMq&d0eQ=Y5?2alyxh9~XUG{Bg<0r5~4lT>f#z$CV#f
zeO&!<&BwJL*L__7al^-rA2)s6{Bg_2tsl32-2QRL$DJQ{ecb(V&&RzV_kG;|@xaG}
z9}j&z{PD=gqaTlbJpS>-$CDpVeLVf~%*V4I&wV`q@xsT8A1{5p{PD`is~@j@y#DdV
z$D1E-eZ2kg&d0kS?|r=g@xjN3A0K^u{PD@hryrkveE#vp$Cn>peSH1#&BwPN-+g@l
z@x#ZDA3uHk{PD}juOGjC{QmLB$Dbd6ef<6L&&R(X|9$-bk>L~LC#Fx#pIAPzeq#H?
z{)yug=O?aD+@E+p@qXg_#Q#a)li(+zPr{!>K8b!3`y~EJ;*;bjsZY|MWIoA$lKUk8
zN#T>?C#6rypHx1nep36S{z>DL<|nOB+Mjej>3-7tr2om_li??$PsX22KAC<p`(*yf
z;*;ekt54RSY(Ck3vioHJ$>EdZC#O%&pIkn<escTd{>kH$=O?dE-k*Fv`F`^I<o_w)
zQ{bndPr;u;K81b?`xO2u;#1_Os87+KVm`%wiu)A*DdAJ%r=(BGpHe=heoFh4{wd>A
z=BKPr*`IPg<$lWhl>e#VQ{ktgPsN`~K9znd`&9m^;#1|Ps!!FQYChF|s{2&`so_)O
zr>0NMpISb(ero&F{;A_r=cleu-Jg0s^?vI6)c<M1r-`2?eVY7f%BQKHrhS_JX~w6S
zpJsiU{b|mpxu52Jn*V9Rr-h#ueOml!$)}~CmVH|OX~n0NpH_WZ{b|jowV&2~TK{Ro
zr;VRBecJqK%crfMwtd?EX~(CXpLTuP{b|pqy`T1d+W+amr-PpkeLDQ<$fu*9j(s}*
z>BOg#pH6)`{prl7v!Bj=I{)dyr;DF1eY*VV%BQQJu6?@x>Bgs<pKg7+{prr9yPxiT
zy8r3Hr-z>&eR}-q$)~5Eo_%`$>BXm)pI&`>{pro8x1Zj9djILer;ndLefs?A%crlO
zzJ2=s>Bpy^pMHJ%{pruAzn}hn`u~aHGvjBb&&;1$KC^yi`^^5C<1^=HuFu?`c|P-g
z=KIY5S>UtaXQ9u+pG7{4eir*I{#oL)<Y%eR(w}8M%YK&oEdN>Iv*Kr^&&r=wKC6CK
z`>g(1<Fn>xt<Tz@bw2BU*88mg+2FI`XQR)?pG`iSem47T{@LQQ<!7tU)}L)Y+kUqD
zZ2#Hev*Tx{&(5D+KD&N)`|SSN<Fn^yug~6}eLnks_WSJrIpA~P=b+EQpF=)}eh&K_
z{yE}v<maf*(Vt^J$9|6c9RE4tbK>Wu&&i)tKBs<8`<(tc<8$Wctk2n>b3W&O&ikDI
zx!`l*=c3QWpG!WMelGi5{<-3F<>#u;)t_rV*M6@1T>rV@bK~cx&&{7(KDT~u``rGy
z<8$ZduFu_{dp`Gm?)%*TdBW$3pC^5u{CUdfsh_8Pp8k2p=b4{peV+Y!&gZ$G=Y5|4
zdBNv}pBH^z{CUaerJt95UjBK-=arvVeO~=}&F8hB*L`09dBf+8pErHp{CUggt)I7j
z-u`*V=bfK-ect_f&*#0L_kG^~`M~FcpAUUL{Q1b|qo0p`KK}W{=aZjLeLns9%;&S8
z&wW1s`NHRmpD%sB{Q1h~tDmoZzW({f=bN8zeZKwq&gZ+I?|r`i`N8LhpC5gG{Q1e}
zr=OpFe*XEz=a-*feSZD<&F8nD-+g}n`NQXrpFe&6{Q1l0ub;nt{{H#L=bxW{eg6IV
z&*#6N|9$@dnc)lL7p5=FUs%4deqsB<{)OWU=NGOo++TRU@P6U@!v96!i{KZbFT!6$
zzKDJi`y&2D;)~=LsV~xBWWLCLk^3V5Md6F$7o{)CUsS%Reo_0P{zc=9<`=Cm+Fx|O
z=zh`rqW{I<i{TfeFUDU?zL<V7`(pmZ;)~@Mt1s4HY`)ljvHN2G#o>$N7pE`IUtGSp
zesTNa{>9^q=NGRp-d}va_<r&G;{PS!OW>EFFTr0zzJz`W`x5>o;!EV0s4vl9V!p(F
ziTe`&CE-irm!vPrUsArLeo6b1{w3o}=9jE5*<W(L<bKKflK-XPOW~KIFU4O<zLb6`
z`%?a;;!EY1sxQ@FYQEHdsryp@rQu8Cm!>bxUs}GjerfyC{-xtf=a;T8-CugX^nU64
z(*I?`mx*5{eVP1a%9p8MrhS?IWyY78UuJ!o{bkOVxnJgeng3<MmxW&zeOdfv$(N;H
zmVH_NWyP13Usiot{bkLUwO`hKS^s6jmyKUGecAkF%a^TRwtd<DWyhDDUv_=j{bkRW
zy<hfy+5hFhmxEspeL4K)$d{vEj(s`)<;0hhUrv2F{pHM;vtQ1AIsfItmy2I6eYyPQ
z%9pEOu6?=w<;ItrUv7Q5{pHS=yI<~ox&P(Cmxo^-eR=%l$(N^Jo_%@#<;9nmUtWEA
z{pHP<w_o0UdH?0ZmycgQefj+5%a^ZTzJ2-r<;RzwUw(c0{pHV>zhC}+`TvFCE8|zD
zugqUrzOsI0`^x^6<16P^uCLr*dA{;~<@?J2Rp6`OSD~-MUq!x(eii#F{#D|u<X5S$
z(qCo1%6^smD*sjCtKwIsugYIlzN&sz`>Os`<E!RZt*_c&b-wC;)%&Xd)!?h)SEH}S
zUroN6el`1Q{?+2E<yWh()?aPD+J3eBYX8;YtK(Ovug+gxzPf&O`|AGH<E!Uaudm);
zeZKmB_514oHQ;OD*PyS#UqilzehvE?{x#xj<kzUL(O+Y}#(s_a8vixnYvR|WugPCi
zzNUUn`<nhW<7?*EtgqQ$bH3(&&HI}Fwcu;v*P^e*UrWB0el7c2{<Y$3<=3jO)n9AA
z)_$$~TK~1-Yvb3ZugzauzP5gC``Z4s<7?;FuCLu+d%pI5?fcsQb;8$)UnhN?{B_FL
zsb8mko&I&k*O^~ueVzSv&eyqL=Y5_3b-~w#Ul)B{{B_CKrC*nQUH)~&*OgyaeO>)^
z&DXVG*L_|8b;H+<UpIZ-{B_IMtzWl&-TrmQ*PUN?eck<a&)2<Q_kG>}^}yGIUk`mf
z{PoD!qhF7GJ^uB?*OOmQeLem4%-6GD&wV}r^}^SSUoU;V{PoJ$t6#5uz5eya*PCB&
zeZBql&eywN?|r@h^}*MNUmtya{PoG#r(d6aeg5^u*Oy;keSQ7)&DXbI-+g`m^~2YX
zUq5~Q{PoM%uV24?{r>gG*Pma1ef|CQ&)2_S|9$=cmEjxXH>PjQ-&nq}eq;N_{*B`s
z=Qplz+~0V<@qXj`#{W&=o8UL0Z^GY1zKMPl`zHQP;+y0*sc+KXWWLFMllvzBP2rp3
zH>GdN-&DS-epCCV{!QbX<~OZx+TV1(>3-AurvJ_0o8dR3Z^qwDzL|bA`)2;l;+y3+
zt8dodY`)okv-@WM&EcElH>YpT-(0@AeslZg{>|f?=Qpo!-rsz_`F`{J=Kn3=Ti~~#
zZ^7R}zJ-1Z`xgE!;#=gmsBh8VV!p+Gi~AP;E#X_@x1?{$-%`G%eoOn7{w?EM=C`bG
z+23-$<$lZimjA8bTj95&Z^hqAzLkC}`&Ry~;#=jns&CcbYQEKetNT{}t>Ihax2A8+
z-&(%4erx;I{;lI%=eMqJ-QRk?^?vL7*8gq7w~5~-eVhDk%D1WCrhS|KZN|5m-)4QA
z{cX;-x!>k}oBwUWw}sypeOvr($+xB7mVI0PZN;~h-&TEF{cX*+wcpl#TmNmtw~gO6
zecSwP%eSrHwtd_FZO6Br-*$c5{cX>;z2EkI+yCvrw}amfeLMW^$hV{4j(t1+?Zmf}
z-%foy{q4-Rv)|5rJOAy%w~OB{eY^ba%D1cEu6?`y?Z&s8-)?=o{q4@TyWj48yZ`OM
zw};;zeS7@v$+xH9o_%}%?Zvm3-(G!t{q4=Sx8L4<d;jgjw~yaGef#|F%eSxJzJ2@t
z?Z>yD-+q1j{q4`Uzu*3S`~QvMJL7kz@66v>zO#O3`_BHI<2&bfuJ7F6dA{?0=ljn8
zUEsUmccJgX-$lNQei!>L{$1j`<aep>(%)si%YK*pF8^KOyW)4H@5<j*zN>y$`>y_7
z<Gbc}t?%03b-wF<*ZZ#j-Qc_7ccbsd-%Y-oemDDW{@voc<#(&^*57Tu+kUtEZvWlk
zyW@AK@6O*{zPo;R`|keT<Gbf~ukYU9eZKpC_xtYuJ>Yxb_n_~=-$TBKeh>Q|{ypM*
z<oBrW(cfdf$9|9d9{)Yzd*b(`@5$d&zNdaq`=0(i<9p`!tnb<1bH3+(&-<SLz2JM{
z_oDB`-%GxielPo8{=MRR<@c)Z)!%Er*M6`2UjMz}d*k<}@6F#^zPEmF``-S&<9p}#
zuJ7I7d%pL6@B7~WeZu#N-zR;a{C&#zso$r4pZ<Nu_nF^keV_e(&iA?B=Y605eZlvI
z-xqyf{C&yyrQer*U;cf?_m$sQeP8{3&G)t6*L`3AeZ%*S-#2~V{C&&!t>3qO-~N5a
z_nqH&ec%0k&-cCG_kG|0{lNEw-w%C1{Qb!Hqu-BxKmPs1_mkgGeLwyE%=fe3&wW4t
z{lfQ)-!FZ?{Qb)JtKYAEzyAHk_nY5ueZT$v&iA|D?|r}j{lWK#-yeN{{Qb%Ir{AA_
zfByZ&_m|&aeSiJ^&G)z8-+h1o{loW<-#>l-{Qb-Kuiw9Y|Ni~Q_n+T?egFOa&-cII
z|9$`eo#6-L52hc?KUjXS{$TsT{)6KO=MSzQ+&_4J@c!WY!T&?xhu{yPAHqLGeu(}M
z`yu{A;)mo9sUOlmWPZs0kozJ3L*a+w52YW<KU99G{!sg&{zK!3<`1nO+COxD=>E|A
zq5s3+hv5&SAI3jSewh9+`(ggW;)mrAs~^@sY<}4Ou=`>E!{LYH52qi_KU{ve{&4%@
z{=?&k=MS$R-amYP`2O(w;r}DxN8pd3AHhFDeuVxA`w{*l;z#6<s2|ZkVt&N_i2D)$
zBjHElkE9>TKT>|A{z&_g{v+c@=8vo&**|iA<o?L}k^iIMN8yj6AH_dPew6+w`%(U*
z;z#9=svp%qYJSxIsQXd>qv1#6kES2ZKU#jY{%HHr{-fhZ=Z~%*-9LJM^#17k(f?z@
zkBL7f{h0h?%8#i(ru~@yW5$n}KW6=y{bSCLxj*LpnEzwJkA*)L{aE~C$&aN!mi<`%
zW5th^KUV!%{bS9KwLjMVSpQ?gkBvVz{n-3t%a5%;w*A=tW5<u3KX(1t{bSFMy+8K-
z*#G0ekApuB{W$#N$d98xj{P|P<HV1XKTiEP{o~A!vp>%LIRE3qkBdJp{kZ(&%8#o*
zuKl?F<HnDhKW_cF{o~G$yFc#zxc}q9kB2`V{doN2$&aT$p8a_K<He7cKVJQK{o~D#
zw?E$fc>m+WkB>h-{rLRj%a5-=zWw<A<HwJmKYsoA{o~J%zd!!{`2U09C*x11pUgj5
zezN{#`^o;3<0t1&uAkgLd4BT#<on70Q{boIPobZ}KSh3u{uKKu{!`+o<WH%e(m!Q>
z%Knu5DgRU9r{YhgpUOW~eyaXd`>Fm@<EQ3Nt)JRIb$;sp)cdLb)8MD!Potm4KTUp`
z{xth({?p>8<xi`h)<122+WxfrY5&vVr{hnjpUyvBe!Bj2`|1AE<EQ6Oub<vOeSZ4>
z^!w@mGvH_7&!C^dKSO?o{tWvW{xjld<j<&|(LZB;#{P`^8UHikXX4MKpUFQ{ey09R
z`<ebT<7ej2te@FGbAIOj%=?-Dv*2gp&!V5jKTCd={w(`h{<Gp|<<F|0)jw-~*8Z&f
zS^u-)XXDSNpUpp8ezyK>``P}p<7em3uAkjMdw%x*?EBgObHdMwKPUa1{Bz3BsXwRv
zoc?ph&zV1G{ha-C&d<3&=lz`jbHUGrKNtO6{Bz0Ar9YSbT>f*#&y_z{{apQX&Cj(z
z*Zo}obHmS#KR5l{{Bz6Ctv|Q@-2QXN&z(Pa{oMU?&(FO-_x;@e^T5x8KM(yp{PW1q
zqd$-RJpS{<&yzn-{XG5i%+Iqw&;30A^TN-IKQH~f{PW7st3R*(y#DjX&znDQ{k;A2
z&d<9)@BO_0^TE%DKOg;k{PW4rr$3+leE##r&zC=6{e1oN&Cj<#-~D|5^TW@NKR^Ba
z{PWAtuRp*2{QmRD&!0bk{rvs&&(FU<|NZ>`li?TRFQ#A2zgT{;{$l&Z{)^)m=P#~b
z+`o8!@&4lb#s5p-m*6j<U&6mceu@4P`z8KM;+NzvsbA8+WPZv1lKUn9OW~K|FQs3~
zzf^vy{!;s;{!8PR<}a;Z+P`#u>HgCDrT@#|m*Fp?U&g;oewqF<`(^&i;+N$wt6$c?
zY<}7PvioKK%i)*fFQ;G5zg&K~{&M@}{>$T+=P$2c-oJc)`Tp|z<^L<-SKzOpU%|gZ
zeue%D`xX8x;#cIas9({)Vt&Q`iu)D+E8$n-ucTkezfyjs{!06m{ww2G=C7<@*}rmr
z<^Ib1mH(^YSK+UsU&X&lewF?z`&Is{;#cLbs$bQ=YJS!Js{2*{tKnDUuclwkzgm8^
z{%ZTx{;T6x=dZ3`-M@N%_5SMn)&Fb4uZh1V{hIu1%CD)vru~}!YsRmczh?cK{cFyz
zxxeQ9n*VFTuZ6!B{aXBM$*-lqmi=1(YsIgXzgGQP{cFvywZGQ=TK{XquZ_Pp{o4F%
z%df4!w*A`vYsashzjpoF{cF#!y}$PT+W+gouY<o1{W|>X$giWnj{Q3R>%^~<zfS!+
z{p-xHv%k*$I{)j!uZzDf{kr_?%CD=xuKl|H>&CB}zi$1y{p-%JyT9)Jy8r9JuZO=L
z{d)ZC$*-rsp8b0M>&35^zh3=%{p-!Ix4+)~djIRguaCbz{rddt%dfA$zWw_C>&LI3
zzkdDt{p-)KzrX(d`u~gJH{)-n-^{;RezX2&`_2BF<2UDTuHW3hd4BW$=KIb6Tj00g
zZ=v79zeRqF{ucW!{#)X=<Zr3p(!XVX%l?-8E&p5Lx8iT5-^#yLeyjdg`>p<4<G1E-
zt>4<eb$;vq*88ph+u*n1Z=>JFzfFFd{x<t<{@dcW<!`Is*1v6j+y1uuZU5Whx8rZ8
z-_E~Xe!Kp5`|bYQ<G1H;uixIkeSZ7?_WSMsJK%TV@1Wnoze9e9{to*c{yXA#<nO58
z(Z6GU$NrA{9sfJwcjE7)-^ssIey9FU`<?zf<9Fuotl!zcbAIRk&ikGJyWn@>@1ozu
zze|3X{x17n{=4FL<?pKB)xT?g*Z!{iUH`k`cjND--_5^Uez*Q^``!M#<9FxpuHW6i
zdw%!+?)%;Ud&2LDzbE~k{CmppslTWFp8k8r@0q`6{hs}M&hNRu=l!1ld%^F8zZd;p
z{CmmorN5W`UjBQ<@0Gt-{a*ch&F{6p*Zp4qd&BRIzc>Bf{Cmsqt-rVZ-u`>X@14JQ
z{oeh1&+omz_x;}g`@rvmzYqOB{QJo7qrZ>+KK}c}?~}hz{XYHs%<r?m&;36C`@-*w
zzc2m1{QJu9tG}=PzW)2h@0-7G{l5MC&hNXw@BP02`@!#rzaRa6{QJr8r@x>5e*XK#
z@0Y({{eJ!X&F{Cr-~E37`@`>#zd!x{{QJxAufM<j{{H*N@1MVa{r>&?&+os#|NZ{|
zo8b@RAErOde^~yo{$cyW{)gia=O3;=+<$of@c!ZZ!~aL%kKiAnKf-@R{)qk&`y>8G
z;*aDXsXx+xWd6whk^3Y6N8yj+AEiIae^mac{!#m*{zv1F<{zy;+JAKZ=>F0BqyNX?
zkKrGqKgNGd{+RwT`(ysc;*aGYt3TF%Z2s8(vHN5H$Kj9TAE!Uge_Z~!{&D-`{>S5w
z=O3>>-hX`l`2O+x<Nqh%PvD=RKf!-O{)GMs`xE{r;!otCs6WwvV*bSbiTe}(C*e=x
zpQJy@e^UOW{z?0j{wL#4=AW!T*?)5W<o?O~lmDmSPvM`UKgEAa{*?YH`&0g>;!owD
zsz23#YW~#zsrys^r{PcIpQb;}e_H;u{%QNu{-@(l=bx@W-G6%i^#1Al)Bk6}pNW4a
z{h9n{%Acu!ru~`zXU3nIe`fue{b$afxqs&Ung3_OpM`%G{aO5H$)BZvmi<}&XT_hD
ze^&ij{b$XewSU(AS^sClpN)Su{n`9y%b%@(w*A@uXUCtNe|G)Z{b$dgy?^%o+5hLj
zpM!r6{W<*S$e*Ksj{Q0Q=ft0re@^{5{pZY|vwzP0IsfOvpNoGk{ki<-%Ac!$uKl_G
z=f<C#e{TJ`{pZe~yMONex&P<EpND@Q{dxT7$)Bfxp8a|L=f$6we_s80{pZb}w}0OK
zdH?6bpO1e&{rUXo%b%}*zWw?B=f|I)e}4V>{pZi0zkmMy`TvLEFXLaPzs!GG{<8jM
z`^)~9<1go5uD{%WdH(YL<@?M3SKzPUU!lLke?|U^{uTQx{#W9!<X@@3(tl<C%Knx6
zEB{yFui{^&zsi4A{;K{}`>Xy}<FDplt-soTb^hx9)%&ae*Wj<=U!%Xqe@*_H{x$n+
z{@3EK<zK76)_-mO+WxisYya2buj5~*zs`SM{<{8k`|JMK<FDsmufN`Zeg69X_517p
zH{fsJ-=M$2e?$I;{tf#Z{x{-p<lm^j(SKw9#{P}_8~-=qZ{pvizsY}7{-*v-`<wnZ
z<8S8QtiRcRbN=T3&HJ1Gx8QH#-=e?8e@p(B{w@1k{<q?9<=?8m)qiXL*8Z*gTmQG=
zZ{y#lzs-MJ{<i*Y``iAv<8SBRuD{)Xd;a$R?fcvRcf#L^e<%H&{CCRVseh;ao&I;m
z-<f}B{hj@H&fmFz=lz}kcfsF<e;55-{CCOUrGJ<GUH*5)-<5w?{ayWc&EK_u*Zp1p
zcf;R}e>eTz{CCUWt$(-u-TrsS-<^MV{oVa{&)>a&_x;`f_rTwSe-HgV{P)P;qkoV6
zJ^uH^-;;k&{XPBn%-^$r&;33B_rl+ce=q&L{P)V=tADTkz5e&c-<yAL{k{G7&fmL#
z@BO|1_rc$Xe;@sQ{P)S<r+=UQeg5~w-<N-1{eAuS&EL0w-~E06_ru?he?R^G{P)Y>
zuYbS&{r>mI-=BYf{r&y-&)>g)|NZ^{m*F4dKc;`o|5*O9{$u;c{*U7y=RdB0-2Zs~
z@&4oc$Nx{@pWr{Cf5QJn{)zq*`zQWS;-BO{sejV{Wd6zillv$CPvM{9Kc#=l|5W~|
z{!{y>{!ind=0B}}+W&O^>HgFEr~l93pW#2Ff5!hz{+a$W`)B^o;-BR|tAE!2Z2sB)
zv-@ZN&*7irKc|1r|6KmL{&V~1{?Fr|=RdE1-v505`Tq0!=l?I@U*Nx>f5HDk{)PSv
z`xpK%;$P&ysDIJ_V*bVci~AS<FX3O}zodW3|5E;?{!9Cp{x9QS=D)0e+5d9><^Ie2
zm;bNeU*W%^f5rbw{+0eK`&a(2;$P*zs(;o0YW~&!tNT~~ui;<gzovi9|62aF{%iZ!
z{;%U-=fAFh-T!+2_5SPo*Z*(Azlr}Q{hR!6%D<`qrv01#Z^plw|7QK0{cp~{x&P+<
zoBwaYzlHx6{agHR$-kxlmi=4)Z^gfr|5p85{cp{`wg1-rTmNsvzm5Mk{oDL+%fGGv
zw*A}wZ^yr#|91V`{cq2|z5n+8+yC#tzk~k{{X6{c$iJiij{Q6S@5H~8|4#io{qM}b
zv;WThJOA&(zl;Aa{k#0{%D=1suKm0I@5aBI|8D)e{qN4dyZ`R}yZ`UOzlZ-G{d@fH
z$-k%np8b3N@5R5D|6cuj{qN1cxBuS#d;jmlzmNYu{rmjy%fGMxzWw|D@5jHN|9<`Z
z{qN7ezyJRI`~Q#OKjVL<|IGhc{<HpP`_KNL<3HzruK(QsdH(bM=ljq9U*Nysf1&@v
z|3&_b{ulc%{$Jw1<bSFE(*I@t%l?=9FaKZRzv6$T|H}VW{;U31`>+0A<G<#At^eBp
zb^h!A*ZZ&k-{8ODf204#|4sgz{x|z?{@>!i<$tUH*8gq(+y1xvZ~x!nzvF+W|IYti
z{=5En`|tkW<G<&Bum9fveg6CY_xtbvKj44h|DgZD|3m(V{tx>f{y*Y><o~Gu(f?!q
z$NrD|AOAn$f8zh7|H=PT{-^#=`=9<l<A3J=tpC~nbN=W4&-<VMzu<r2|DylJ|4aUt
z{xADq{=edX<^QVx)&Fb$*Z!~jU;n@1f8+nA|IPnf{<r>b```Y*<A3M>uK(Ttd;a(S
z@B82Xf5QKX|0n&Q{C~>-ssE?_pZ<Tw|C#@1{h$4R&i}dp=l!4mf5HES{}=sV{C~;+
zrT>@xU;cl^|CRq&{a^im&HuIk*Zp7rf5ZQc|2O^L{C~^;t^c?E-~NBc|DFGL{onn6
z&;Pyu_x<1h|G@u){}25?{Qt=RqyLZnKmPy3|C9eu{XhNx%>T3h&;39D|HA)^|1bT&
z{Qt`TtN*Y4zyANm|C|4B{lESH&i}jr@BP33|H1!<{~!H-{Qt@Sr~jY*fByf)|Cj$?
z{eS)c&HuOm-~E68|HJ=}|3Cfz{Qt}Uum8XO|Nj5S|DXSV{r~;{&;P&w|NZ~}9{@>^
B9peB1

diff --git a/QDMA/windows/apps/dma-arw/datafile4K.bin b/QDMA/windows/apps/dma-arw/datafile4K.bin
deleted file mode 100644
index df437f42c808d41dec5d543d60ce94c8cb8a044a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4096
zcmZQzWMXDvWn<^y<l^Sx<>MC+6cQE@6%&_`l#-T_m6KOcR8m$^Ra4i{)Y8_`)zddH
zG%_|ZH8Z!cw6eCbwX=6{baHlab#wRd^z!!c_45x13<?ej4GWKmjEatljf+o6OiE5k
zO-s+n%*xKm&C4$+EGjN3Ei136tg5c5t*dWnY-(<4ZENr7?CS36?dzW~anj@|Q>RUz
zF>}`JIdkXDU$Ah|;w4L$Enl&6)#^2C*R9{Mant54TeofBv2)k%J$v`<KXCBS;Uh<n
z9Y1mM)af&4&z-+;@zUihSFc^aar4&gJ9qEhfAH|p<0ns_J%91?)$2EJ-@X6v@zduo
zU%!3-@$=X3KY#!IANBue{Ew#p(fmJJ{*9LZqxIit{Xg3N8EyZKwtq+4|D*k%(f;2^
H=>Gx$V6OOT

diff --git a/QDMA/windows/apps/dma-arw/dma_arw.cpp b/QDMA/windows/apps/dma-arw/dma_arw.cpp
deleted file mode 100644
index ca846c8..0000000
--- a/QDMA/windows/apps/dma-arw/dma_arw.cpp
+++ /dev/null
@@ -1,723 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "dma_arw.hpp"
-#include "version.h"
-
-cli_cmd cmd;
-
-void CALLBACK CompletionRoutine(
-    DWORD errorcode,
-    DWORD bytes_transfered,
-    LPOVERLAPPED overlapped
-)
-{
-    qdma_device *qdev = (qdma_device *)overlapped->hEvent;
-
-    if (errorcode) {
-        qdev->xfer_done = false;
-        ReleaseSemaphore(qdev->sem_xfer_done, 1, NULL);
-        std::cerr << "queue transfer failed with error : " << get_last_win_err_msg() << std::endl;
-        return;
-    }
-
-    qdev->rxd_size = bytes_transfered;
-    if (qdev->xfer_size >= bytes_transfered) {
-        qdev->xfer_done = true;
-        ReleaseSemaphore(qdev->sem_xfer_done, 1, NULL);
-    }
-
-    return;
-}
-
-BOOL WINAPI xfer_completion(PVOID arg)
-{
-    UNREFERENCED_PARAMETER(arg);
-    bool ret;
-    constexpr unsigned int wait_size = 50;
-    LPOVERLAPPED_ENTRY wait_ov_entry = (LPOVERLAPPED_ENTRY)malloc(wait_size * sizeof(OVERLAPPED));
-    ULONG no_entries_cmpltd = 0;
-    ULONG wait_time = COMPL_WAIT_TIME; /* In msec */
-    ULONG total_bytes_xfered = 0;
-    qdma_device *qdev = (qdma_device *)arg;
-
-
-    try {
-        qdev->thread_run = true;
-        while (true) {
-            ret = GetQueuedCompletionStatusEx(
-                qdev->cmplt_io_handle, &wait_ov_entry[0],
-                wait_size, &no_entries_cmpltd,
-                wait_time, FALSE);
-
-            if (ret == true) {
-                qdev->rxd_size = 0;
-                for (ULONG index = 0; index < no_entries_cmpltd; index++) {
-                    total_bytes_xfered += wait_ov_entry[index].dwNumberOfBytesTransferred;
-                    qdev->rxd_size += wait_ov_entry[index].dwNumberOfBytesTransferred;
-                }
-                if (total_bytes_xfered >= qdev->xfer_size) {
-                    qdev->xfer_done = true;
-                    ReleaseSemaphore(qdev->sem_xfer_done, 1, NULL);
-                }
-            }
-            if (qdev->thread_exit == true)
-                break;
-        }
-        free(wait_ov_entry);
-    }
-    catch (const std::exception& e) {
-        free(wait_ov_entry);
-        std::cout << "Error: " << e.what() << '\n';
-    }
-
-    return true;
-}
-
-void qdma_device::async_env_init(void)
-{
-    sem_xfer_done = CreateSemaphore(NULL, 0, 1, NULL);
-    if (sem_xfer_done == NULL) {
-        throw std::runtime_error("CreateSemaphore error: " + get_last_win_err_msg());
-    }
-
-    if (cmd.mode == FILE_NORMAL_MODE) {
-        cmplt_io_handle = CreateIoCompletionPort(queue_.h, NULL, 1, 0);
-        if (NULL == cmplt_io_handle) {
-            throw std::runtime_error("FAILED TO CREATE COMPLETION HANDLE : " + get_last_win_err_msg());
-        }
-
-        thread_run = false;
-        thread_exit = false;
-        xfer_done = false;
-
-        cmplt_th_handle =
-            CreateThread(NULL,
-                10 * 1024 * 1024, // stack size
-                (LPTHREAD_START_ROUTINE)xfer_completion,
-                (void *)this,
-                0,
-                NULL);
-
-        if (NULL == cmplt_th_handle) {
-            CloseHandle(sem_xfer_done);
-            throw std::runtime_error("Error CreateThread Failed : " + get_last_win_err_msg());
-        }
-
-        while (thread_run == false);
-    }
-}
-
-void qdma_device::async_env_exit(void)
-{
-    if (cmd.mode == FILE_NORMAL_MODE) {
-        thread_exit = true;
-        Sleep(2 * COMPL_WAIT_TIME);
-        WaitForSingleObject(cmplt_th_handle, INFINITE);
-        CloseHandle(cmplt_th_handle);
-    }
-    CloseHandle(sem_xfer_done);
-}
-
-void qdma_device::poll_completion(void)
-{
-    int timeout = 0;
-
-    while (WAIT_OBJECT_0 != WaitForSingleObject(sem_xfer_done, 1)) {
-        timeout++;
-        SleepEx(9, TRUE);
-        if (timeout > MAX_TIMEOUT_PERIOD)
-            break;
-    }
-
-    if (cmd.mode == FILE_NORMAL_MODE) {
-        thread_exit = true;
-        Sleep(2 * COMPL_WAIT_TIME);
-    }
-}
-
-int qdma_device::qdma_read(void)
-{
-    bool ret;
-    OVERLAPPED overlapped;
-
-    cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-    if (!cmd.data) {
-        throw std::runtime_error("Error allocating memory" + get_last_win_err_msg());
-    }
-
-    switch (cmd.node) {
-    case devnode_sel::queue_mm:
-        qopen(cmd.qid, true);
-        xfer_size = cmd.size;
-        memset(&overlapped, 0, sizeof(overlapped));
-        overlapped.OffsetHigh = 0x0;
-        overlapped.Offset = (DWORD)cmd.addr;
-
-        if (cmd.mode == FILE_NORMAL_MODE) {
-            ret = ReadFile(queue_.h, cmd.data, xfer_size, NULL, &overlapped);
-        }
-        else {
-            overlapped.hEvent = this;
-            ret = ReadFileEx(queue_.h, cmd.data, xfer_size, &overlapped, CompletionRoutine);
-        }
-
-        if (ret == false) {
-            auto error = GetLastError();
-            if (error != ERROR_IO_PENDING)
-                throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-
-        /* no-op...just waiting for async completion */
-        poll_completion();
-
-        if (xfer_done) {
-            printf("Asynchronous Read completed : \n");
-            printf("------------------------------\n");
-            if (TRUE == cmd.binary)
-                print_bytes_binary(cmd.data, cmd.size);
-            else
-                print_bytes(cmd.addr, cmd.data, cmd.size);
-        }
-        else {
-            printf("Failed to Read : Async Timeout Occurred\n");
-        }
-        qclose();
-        break;
-
-    case devnode_sel::queue_st:
-        {
-            DWORD packet_size;
-            DWORD packet_cnt;
-            DWORD remain_size = cmd.size;
-            DWORD buf_idx = 0;
-            bool  pkt_generate = true;
-            bool  last_pkt_generate = true;
-
-            qopen(cmd.qid, false);
-
-            do {
-                if (remain_size >= ST_C2H_MAX_PACK_SIZE_CHUNK) {
-                    packet_cnt = remain_size / ST_C2H_MAX_PACK_SIZE_CHUNK;
-                    packet_size = ST_C2H_MAX_PACK_SIZE_CHUNK;
-                }
-                else {
-                    if (last_pkt_generate) {
-                        pkt_generate = true;
-                        last_pkt_generate = false;
-                    }
-                    packet_cnt = 1;
-                    packet_size = remain_size;
-                }
-
-                if (cmd.size == 0x0) {
-                    cout << "Initiating Zero Byte Read\n";
-                }
-
-                if (pkt_generate) {
-                    dgen.reset_pkt_ctrl();
-                    dgen.configure_c2h(cmd.qid + qbase, packet_size, packet_cnt);
-                    dgen.generate_packets();
-                    pkt_generate = false;
-                }
-
-                xfer_size = packet_size * packet_cnt;
-                xfer_done = false;
-
-                memset(&overlapped, 0, sizeof(overlapped));
-                overlapped.OffsetHigh = 0x0;
-                overlapped.Offset = (DWORD)cmd.addr;
-
-                //printf("buf_idx : %d, len : %d\n", buf_idx, xfer_size);
-
-                if (cmd.mode == FILE_NORMAL_MODE) {
-                    ret = ReadFile(queue_.h, &cmd.data[buf_idx], xfer_size, NULL, &overlapped);
-                }
-                else {
-                    overlapped.hEvent = this;
-                    ret = ReadFileEx(queue_.h, &cmd.data[buf_idx], xfer_size, &overlapped, CompletionRoutine);
-                }
-
-                if (ret == false) {
-                    auto error = GetLastError();
-                    if (error != ERROR_IO_PENDING)
-                        throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-                }
-
-                poll_completion();
-                if (!xfer_done)
-                    break;
-                buf_idx = buf_idx + rxd_size;
-                remain_size = remain_size - rxd_size;
-
-                if (cmd.size == 0x0) {
-                    cout << "ZERO Byte Read Successful\n";
-                }
-            } while (remain_size);
-
-            if (xfer_done) {
-                printf("Asynchronous Read completed : \n");
-                printf("------------------------------\n");
-                if (TRUE == cmd.binary)
-                    print_bytes_binary(cmd.data, cmd.size);
-                else
-                    print_bytes(cmd.addr, cmd.data, cmd.size);
-            }
-            else {
-                printf("Failed to Read : Async Timeout Occurred\n");
-            }
-            qclose();
-        }
-
-        break;
-
-    default:
-        return 1;
-    }
-
-    if (cmd.data) _aligned_free(cmd.data);
-    return 0;
-}
-
-int qdma_device::qdma_write(void )
-{
-    bool ret;
-    OVERLAPPED overlapped;
-
-    switch (cmd.node) {
-    case devnode_sel::queue_mm:
-        qopen(cmd.qid, true);
-
-        if (cmd.data == nullptr && false == cmd.file.empty()) {
-            read_file_option();
-        }
-
-        xfer_size = cmd.size;
-        memset(&overlapped, 0, sizeof(overlapped));
-        overlapped.OffsetHigh = 0x0;
-        overlapped.Offset = (DWORD)cmd.addr;
-
-        if (cmd.mode == FILE_NORMAL_MODE) {
-            ret = WriteFile(queue_.h, cmd.data, xfer_size, NULL, &overlapped);
-        }
-        else {
-            overlapped.hEvent = this;
-            ret = WriteFileEx(queue_.h, cmd.data, xfer_size, &overlapped, CompletionRoutine);
-        }
-
-        if (ret == false) {
-            auto error = GetLastError();
-            if (error != ERROR_IO_PENDING)
-                throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-        }
-
-        poll_completion();
-
-        if (!xfer_done) {
-            printf("Failed to Write : Async Timeout Occurred\n");
-        }
-        else {
-            printf("Asynchronous Write completed : \n");
-            printf("------------------------------\n");
-        }
-
-        qclose();
-
-        break;
-
-    case devnode_sel::queue_st:
-    {
-        qopen(cmd.qid, false);
-        aligned_vector<uint16_t> wr_buffer(cmd.size);
-        iota(wr_buffer.begin(), wr_buffer.end(), static_cast<uint16_t>(0)); /* 0, 1, 2, 3, 4 ... */
-        dgen.reset_h2c();
-
-        if (cmd.size == 0x0)
-            cout <<"Initiating Zero Byte Write\n";
-
-        xfer_size = cmd.size;
-        memset(&overlapped, 0, sizeof(overlapped));
-        overlapped.OffsetHigh = 0x0;
-        overlapped.Offset = (DWORD)cmd.addr;
-
-        if (cmd.mode == FILE_NORMAL_MODE) {
-            ret = WriteFile(queue_.h, wr_buffer.data(), xfer_size, NULL, &overlapped);
-        }
-        else {
-            overlapped.hEvent = this;
-            ret = WriteFileEx(queue_.h, wr_buffer.data(), xfer_size, &overlapped, CompletionRoutine);
-        }
-
-        if (ret == false) {
-            auto error = GetLastError();
-            if (error != ERROR_IO_PENDING)
-                throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-        }
-
-        poll_completion();
-
-        if (xfer_done) {
-            printf("Asynchronous Write completed : \n");
-            printf("------------------------------\n");
-            if (true == dgen.check_h2c(cmd.qid + qbase))
-                cout << "Data generator returned SUCCESS for received data" << endl;
-            else
-                throw std::runtime_error("Data generator reported error for received data!");
-
-            if (cmd.size == 0x0)
-                cout << "ZERO Byte Write Successful\n";
-        }
-        else {
-            printf("Failed to Write : Async Timeout Occurred\n");
-        }
-
-        qclose();
-        break;
-    }
-    default:
-        return 1;
-    }
-
-    if (cmd.data) _aligned_free(cmd.data);
-    return 0;
-}
-
-static int is_printable(char c)
-{
-    /* anything below ASCII code 32 is non-printing, 127 is DELETE */
-    if (c < 32 || c == 127) {
-        return FALSE;
-    }
-    return TRUE;
-}
-
-static void print_bytes_binary(BYTE* data, size_t length)
-{
-    FILE* output = stdout;
-
-    if (false == cmd.file.empty()) {
-        fopen_s(&output, cmd.file.data(), "wb");
-    }
-
-    fwrite(data, sizeof(BYTE), length, output);
-
-    if (false == cmd.file.empty()) {
-        fclose(output);
-    }
-}
-
-static void print_bytes(size_t addr, BYTE* data, size_t length)
-{
-    FILE* output = stdout;
-
-    if (false == cmd.file.empty()) {
-        fopen_s(&output, cmd.file.data(), "wb");
-    }
-
-    /* formatted output */
-    for (int row = 0; row < (int)(length / 16 + ((length % 16) ? 1 : 0));
-        row++) {
-
-        /* Print address */
-        fprintf(output, "0x%04zX:  ", addr + row * 16);
-
-        /* Print bytes */
-        int column;
-        for (column = 0; column < (int)min(16, length - (row * 16));
-            column++) {
-            fprintf(output, "%02x ", data[(row * 16) + column]);
-        }
-        for (; column < 16; column++) {
-            fprintf(output, "   ");
-        }
-
-        /* Print gutter */
-        fprintf(output, "    ");
-
-        /* Print characters */
-        for (column = 0; column < (int)min(16, length - (row * 16));
-            column++) {
-            fprintf(output, "%c", is_printable(data[(row * 16) + column]) ?
-                (data[(row * 16) + column]) : '.');
-        }
-        for (; column < 16; column++) {
-            fprintf(output, " ");
-        }
-        fprintf(output, "\n");
-    }
-
-    if (false == cmd.file.empty()) {
-        fclose(output);
-    }
-}
-
-static int read_file_option(void)
-{
-    FILE* inputFile;
-    if (fopen_s(&inputFile, cmd.file.data(), "rb") != 0) {
-        fprintf(stderr, "Could not open file <%s>\n", cmd.file.data());
-        return 1;
-    }
-
-    /* determine file size */
-    if (cmd.size == 0) {
-        fseek(inputFile, 0, SEEK_END);
-        fpos_t fpos;
-        fgetpos(inputFile, &fpos);
-        fseek(inputFile, 0, SEEK_SET);
-        cmd.size = (DWORD)fpos;
-    }
-
-    cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-    if (!cmd.data) {
-        fprintf(stderr, "Error allocating %ld bytes of memory, error code: %ld\n", cmd.size, GetLastError());
-        return 1;
-    }
-    cmd.size = (DWORD)fread(cmd.data, 1, cmd.size, inputFile);
-
-    fclose(inputFile);
-    return 0;
-}
-
-static void help(void)
-{
-    cout << "dma-arw usage:\n";
-    cout << "dma-arw -v  : prints the version information\n\n";
-    cout << "dma-arw qdma<N> mode <0 | 1> <DEVNODE> <read|write> <ADDR> [OPTIONS] [DATA]\n\n";
-    cout << "- qdma<N>   : unique qdma device name (<N> is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No)\n";
-    cout << "- mode      : 0 : this mode uses ReadFile and WriteFile async implementation\n";
-    cout << "            : 1 : this mode uses ReadFileEx and WriteFileEx async implementation\n";
-    cout << "- DEVNODE   : One of: queue_mm_ | queue_st_*\n";
-    cout << "              where the * is a numeric wildcard (0 - N) for queue.\n";
-    cout << "- ADDR      : The target offset address of the read/write operation.\n";
-    cout << "              Applicable only for control, user, queue_mm device nodes.\n";
-    cout << "              Can be in hex or decimal.\n";
-    cout << "- OPTIONS   : \n";
-    cout << "              -a set alignment requirement for host-side buffer (default: PAGE_SIZE)\n";
-    cout << "              -b open file as binary\n";
-    cout << "              -f use contents of file as input or write output into file.\n";
-    cout << "              -l length of data to read/write (default: 4 bytes or whole file if '-f' flag is used)\n";
-    cout << "- DATA      : Space separated bytes (big endian) in decimal or hex, \n";
-    cout << "              e.g.: 17 34 51 68\n";
-    cout << "              or:   0x11 0x22 0x33 0x44\n";
-}
-
-static void init_cmd(void)
-{
-    cmd.addr = 0x0;
-    cmd.alignment = 0;
-    cmd.binary = false;
-    cmd.node = devnode_sel::none;
-    cmd.op = op_sel::none;
-    cmd.bus_no = 0;
-    cmd.dev_no = 0;
-    cmd.fun_no = 0;
-    cmd.dev_name[0] = '\0';
-    cmd.qid = 0;
-    cmd.size = 4;
-    cmd.data = nullptr;
-}
-
-static BYTE* allocate_buffer(size_t size, size_t alignment)
-{
-    if (size == 0) {
-        size = 4;
-    }
-
-    if (alignment == 0) {
-        SYSTEM_INFO sys_info;
-        GetSystemInfo(&sys_info);
-        alignment = sys_info.dwPageSize;
-    }
-
-    return (BYTE*)_aligned_malloc(size, alignment);
-}
-
-int parse_command_line(const int argc, char* argv[])
-{
-    /*
-     * qdma_rw pf <pf_number> <device> <read|write> <address> [OPTIONS] [DATA]
-     * 0       1      2          3          4           5        6...     n...
-     */
-    auto argidx = 1;
-
-    if (argc < 2) {
-        return 1;
-    }
-
-    if ((strcmp(argv[argidx], "-v") == 0) || (strcmp(argv[argidx], "-V") == 0)) {
-        printf("%s version %s\n", PROGNAME, VERSION);
-        printf("%s\n", COPYRIGHT);
-        exit(0);
-    }
-
-    init_cmd();
-
-    if (argc < 5) {
-        return 1;
-    }
-
-    if (strncmp(argv[argidx], "qdma", 4)) {
-        return 1;
-    }
-
-    strncpy_s(cmd.dev_name, DEV_NAME_MAX_SZ, argv[argidx], _TRUNCATE);
-    ++argidx;
-
-    if (strncmp(argv[argidx], "mode", 4)) {
-        return 1;
-    }
-    ++argidx;
-
-    cmd.mode = std::stoul(argv[argidx]);
-    ++argidx;
-
-    if (std::regex_match(argv[argidx], std::regex("queue_mm_[0-9]+"))) {
-        string qid_str{ argv[argidx] };
-        auto it = std::find(qid_str.begin(), qid_str.end(), '_');
-        it = it+4;
-        cout << *it << endl;
-        cmd.qid = std::stoul(string{ it, qid_str.end() });
-        cmd.node = devnode_sel::queue_mm;
-    }
-    else if (std::regex_match(argv[argidx], std::regex("queue_st_[0-9]+"))) {
-        string qid_str{ argv[argidx] };
-        auto it = std::find(qid_str.begin(), qid_str.end(), '_');
-        it = it + 4;
-        cmd.qid = std::stoul(string{ it, qid_str.end() });
-        cmd.node = devnode_sel::queue_st;
-    }
-    else {
-        return 1;
-    }
-    ++argidx;
-
-    if (strcmp(argv[argidx], "read") == 0) {
-        cmd.op = op_sel::read;
-    }
-    else if (strcmp(argv[argidx], "write") == 0) {
-        cmd.op = op_sel::write;
-    }
-    else
-        return 1;
-    ++argidx;
-
-    if (cmd.node == devnode_sel::queue_mm) {
-        cmd.addr = strtoul(argv[argidx], NULL, 0);
-        ++argidx;
-    }
-    else if (cmd.node == devnode_sel::queue_st) {
-        if (argv[argidx][0] != '-') {
-            printf("\nErr: ST mode doesn't need the target address option\n\n");
-            return 1;
-        }
-    }
-
-    while ((argidx < argc) && ((argv[argidx][0] == '-') || (argv[argidx][0] == '/'))) {
-        switch (argv[argidx][1]) {
-        case 'l':
-            argidx++;
-            cmd.size = strtoul(argv[argidx], NULL, 0);
-            argidx++;
-            break;
-        case 'f':
-            argidx++;
-            cmd.file = _strdup(argv[argidx]);
-            argidx++;
-            break;
-        case 'a':
-            argidx++;
-            cmd.alignment = strtoul(argv[argidx], NULL, 0);
-            argidx++;
-            break;
-        case 'b':
-            cmd.binary = TRUE;
-            argidx++;
-            break;
-        case '?':
-        case 'h':
-        default:
-            return 1;
-        }
-    }
-
-    if (argidx != argc) {
-        if (cmd.op == op_sel::write &&
-            cmd.node != devnode_sel::queue_st) {
-            cmd.size = argc - argidx;
-            cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-            if (cmd.data == nullptr) {
-                cout << "Could not allocate memory for data" << endl;
-                exit(1);
-            }
-
-            for (int byteidx = 0; argidx < argc; argidx++, byteidx++) {
-                cmd.data[byteidx] = (char)strtoul(argv[argidx], NULL, 0);
-            }
-        }
-        else
-            return 0;
-    }
-
-    return 0;
-}
-
-int __cdecl main(const int argc, char* argv[])
-{
-    try {
-        if (parse_command_line(argc, argv)) {
-            help();
-            if (cmd.data) _aligned_free(cmd.data);
-            exit(1);
-        }
-
-        auto dev_details = get_device_details(GUID_DEVINTERFACE_QDMA);
-        if (!dev_details.size()) {
-            std::cerr << "No QDMA Devices found!" << std::endl;
-            return 1;
-        }
-
-        device_details dev_info;
-        auto res = get_device(dev_details, cmd.dev_name, dev_info);
-        if (res == false) {
-            printf("Device name is not valid\n");
-            if (cmd.data) _aligned_free(cmd.data);
-            return 1;
-        }
-
-        cmd.bus_no = dev_info.bus_no;
-        cmd.dev_no = dev_info.dev_no;
-        cmd.fun_no = dev_info.fun_no;
-        qdma_device qdev(dev_info.device_path.c_str());
-
-        if (cmd.qid >= qdev.get_qmax()) {
-            if (cmd.data) _aligned_free(cmd.data);
-            cout << "Invalid qid provided." << endl;
-            return 1;
-        }
-
-        if (cmd.op == op_sel::read) {
-            qdev.qdma_read();
-        }
-        else if (cmd.op == op_sel::write) {
-            qdev.qdma_write();
-        }
-    }
-    catch (const std::exception& e) {
-        if (cmd.data) _aligned_free(cmd.data);
-        cout << "Error: " << e.what() << '\n';
-    }
-}
diff --git a/QDMA/windows/apps/dma-arw/dma_arw.hpp b/QDMA/windows/apps/dma-arw/dma_arw.hpp
deleted file mode 100644
index fd2ea68..0000000
--- a/QDMA/windows/apps/dma-arw/dma_arw.hpp
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include <array>
-#include <iomanip>
-#include <iostream>
-#include <regex>
-#include <string>
-#include <sstream>
-#include <numeric>
-
-#include "device_file.hpp"
-#include "qdma_driver_api.h"
-
-#pragma comment(lib, "setupapi.lib")
-
-using std::uint32_t;
-using std::string;
-using std::runtime_error;
-using std::cout;
-using namespace std;
-
-#define ST_C2H_MAX_PACK_SIZE_CHUNK      4096
-#define COMPL_WAIT_TIME                 100 /* Milli Seconds */
-#define MAX_TIMEOUT_PERIOD              1000 /* Milli Seconds */
-#define FILE_NORMAL_MODE                0
-#define FILE_EX_MODE                    1
-
-/* -----  common functions -----  */
-static constexpr uint32_t bit(uint64_t n) {
-    return (1ull << n);
-}
-
-static constexpr bool is_bit_set(uint64_t x, uint64_t n) {
-    return (x & bit(n)) == bit(n);
-}
-
-static constexpr uint64_t create_mask(uint64_t n, uint64_t l) {
-    return ((1ull << l) - 1ull) << n;
-}
-
-static constexpr uint32_t get_bits(uint32_t value, uint32_t bit_index, uint32_t len) {
-    return ((value & create_mask(bit_index, len)) >> bit_index);
-}
-/* ----- ----- */
-
-enum class devnode_sel {
-    queue_mm,
-    queue_st,
-    none
-};
-
-enum class op_sel {
-    read,
-    write,
-    interrupt,
-    none
-};
-
-struct cli_cmd {
-    op_sel op;
-    UINT8 bus_no;
-    UINT8 dev_no;
-    UINT8 fun_no;
-    char dev_name[DEV_NAME_MAX_SZ];
-    devnode_sel node;
-    BYTE *data;
-    LONG addr;
-    ULONG qid;
-    int mode;
-    DWORD size;
-    string file;
-    size_t alignment;
-    BOOL binary;
-};
-
-template<typename T, size_t Alignment = 4096>
-struct aligned_allocator {
-
-    typedef T value_type;
-
-    aligned_allocator() noexcept {}
-
-    template<class U>
-    aligned_allocator(const aligned_allocator<U, Alignment>&) noexcept {}
-
-    template<class U>
-    bool operator==(const aligned_allocator<U>&) const noexcept
-    {
-        return true;
-    }
-    template<class U>
-    bool operator!=(const aligned_allocator<U>&) const noexcept
-    {
-        return false;
-    }
-
-    T* allocate(const std::size_t num) {
-        if (num == 0) {
-            return nullptr;
-        }
-
-        void* const ptr = _aligned_malloc(num * sizeof(T), Alignment);
-        if (ptr == nullptr) {
-            throw std::bad_alloc();
-        }
-        return static_cast<T*>(ptr);
-    }
-    void deallocate(T* const p, std::size_t) {
-        if (p) {
-            _aligned_free(p);
-        }
-    }
-
-    template<typename T2>
-    struct rebind {
-        typedef aligned_allocator<T2, Alignment> other;
-    };
-};
-
-template<typename T, size_t N = 4096>
-using aligned_vector = std::vector<T, aligned_allocator<T, N>>;
-
-template<typename Iter>
-void fill_pattern(Iter begin, Iter end) {
-    std::iota(begin, end, 0); // 0, 1, 2, 3, 4 ...
-}
-
-class data_generator {
-public:
-    using value_type = uint16_t;
-
-    explicit data_generator(const std::string& dev_path)
-    {
-        user_bar.open(dev_path + "\\user", GENERIC_WRITE | GENERIC_READ);
-    }
-
-    ~data_generator()
-    {
-        user_bar.close();
-    }
-
-    bool check_h2c(const uint32_t qid)
-    {
-        const auto match_reg = user_bar.read<uint32_t>(0x10);
-        const auto match_qid = get_bits(match_reg, 4, 28);      /* bits 4-31 = qid */
-        return (match_qid == qid) && is_bit_set(match_reg, 0);  /* bit 0 = match */
-    }
-
-    void reset_h2c()
-    {
-        user_bar.write<uint32_t>(0xC, 0x1);
-    }
-
-    void reset_pkt_ctrl()
-    {
-        user_bar.write<uint32_t>(0x8, 0x0);
-    }
-
-    void set_queue(const uint32_t qid)
-    {
-        user_bar.write<uint32_t>(0x0, qid);
-    }
-
-    void configure_c2h(const uint32_t qid, const uint32_t packet_size, const uint32_t num_packets)
-    {
-        //printf("DGEN : PKT SIZE : %d, PKT CNT : %d\n", packet_size, num_packets);
-        set_queue(qid);
-        user_bar.write<uint32_t>(0x4, packet_size);
-        user_bar.write<uint32_t>(0x20, num_packets);
-    }
-
-    void generate_packets()
-    {
-        user_bar.write<uint32_t>(0x8, 0x2);
-    }
-
-    BOOL read(void *buff, LONG addr, DWORD size)
-    {
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(user_bar.h, static_cast<LONG>(addr), nullptr, FILE_BEGIN)) {
-            return FALSE;
-        }
-
-        return ReadFile(user_bar.h, buff, size, &size, NULL);
-    }
-
-    BOOL write(void *buff, LONG addr, DWORD size)
-    {
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(user_bar.h, static_cast<LONG>(addr), nullptr, FILE_BEGIN)) {
-            return FALSE;
-        }
-
-        return WriteFile(user_bar.h, buff, size, &size, NULL);
-    }
-
-    BOOL generate_user_interrupt(UINT32 fun_id)
-    {
-        UINT32 val = 0x0;
-
-        val = 0x00;
-        user_bar.write<uint32_t>(0x98, val);
-
-        user_bar.write<uint32_t>(0x9C, val);
-
-        val = 0x0;
-        val = fun_id << 12;
-        val |= 0x1;
-        if (fun_id == 0)
-            val |= (1u << 4);
-        user_bar.write<uint32_t>(0x94, val);
-
-        return TRUE;
-    }
-
-private:
-    device_file user_bar;
-};
-
-class qdma_device {
-public:
-    HANDLE cmplt_th_handle;
-    HANDLE cmplt_io_handle;
-    bool thread_run = false;
-    bool thread_exit = false;
-    bool xfer_done = false;
-    HANDLE sem_xfer_done;
-    ULONG xfer_size;
-    ULONG rxd_size;
-
-    void async_env_init(void);
-    void async_env_exit(void);
-    void poll_completion(void);
-
-    explicit qdma_device(const char* device_path) : dgen(device_path)
-    {
-        using namespace std::string_literals;
-        dev_path = device_path;
-        control_bar_.open(dev_path + "\\control"s, GENERIC_READ | GENERIC_WRITE);
-        mgmt.open(dev_path + "\\mgmt"s, GENERIC_READ | GENERIC_WRITE);
-        get_qstats();
-    }
-
-    ~qdma_device()
-    {
-        control_bar_.close();
-        mgmt.close();
-    }
-
-    void get_qstats(void)
-    {
-        struct qstat_out qstats_info = { 0 };
-        try {
-            mgmt.ioctl(IOCTL_QDMA_GET_QSTATS, NULL, 0, &qstats_info, sizeof(qstats_info));
-            qbase = qstats_info.qbase;
-            qmax = qstats_info.qmax;
-        }
-        catch (const std::exception& e) {
-            cout << "IOCTL Failed for qstats " << e.what() << '\n';
-        }
-    }
-
-    unsigned int get_qmax()
-    {
-        return qmax;
-    }
-
-    int qopen(ULONG qid, bool is_mm)
-    {
-        DWORD f_attribs = (FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FILE_FLAG_NO_BUFFERING);
-        if (true == is_mm)
-            queue_.open(dev_path + "\\queue_"s + to_string(qid), GENERIC_READ | GENERIC_WRITE, f_attribs);
-        else
-            queue_.open(dev_path + "\\st_"s + to_string(qid), GENERIC_READ | GENERIC_WRITE, f_attribs);
-
-        async_env_init();
-        return 0;
-    }
-
-    void qclose(void)
-    {
-        async_env_exit();
-        queue_.close();
-    }
-
-    int qdma_read();
-    int qdma_write();
-    int qdma_interrupt(void);
-
-private:
-    const char* dev_path;
-    device_file control_bar_;
-    data_generator dgen;
-    device_file queue_;
-    device_file mgmt;
-    unsigned int qbase;
-    unsigned int qmax;
-};
-
-static BYTE* allocate_buffer(size_t size, size_t alignment);
-static void print_bytes(size_t addr, BYTE* data, size_t length);
-static int read_file_option(void);
-static void print_bytes_binary(BYTE* data, size_t length);
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj b/QDMA/windows/apps/dma-arw/dma_arw.vcxproj
deleted file mode 100644
index c2a6e3d..0000000
--- a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="dma_arw.hpp" />
-    <ClInclude Include="version.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dma_arw.cpp" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4898E717-0B00-487F-9F88-C95D61116871}</ProjectGuid>
-    <TemplateGuid>{504102d4-2172-473c-8adf-cd96e308f257}</TemplateGuid>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
-    <Configuration>Debug</Configuration>
-    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
-    <RootNamespace>qdma_arw</RootNamespace>
-    <WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
-    <ProjectName>dma-arw</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64</LibraryPath>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>_DEBUG;WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>_WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreSpecificDefaultLibraries />
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.filters b/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.filters
deleted file mode 100644
index 56d6c33..0000000
--- a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="dma_arw.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dma_arw.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.user b/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.user
deleted file mode 100644
index be25078..0000000
--- a/QDMA/windows/apps/dma-arw/dma_arw.vcxproj.user
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup />
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-arw/version.h b/QDMA/windows/apps/dma-arw/version.h
deleted file mode 100644
index 63e122e..0000000
--- a/QDMA/windows/apps/dma-arw/version.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#ifndef __QDMARW_VERSION_H
-#define __QDMARW_VERSION_H
-
-#define PROGNAME "dma-arw"
-#define VERSION "2020.2.0"
-#define COPYRIGHT "Copyright (c) 2020 Xilinx Inc."
-
-#endif /*__QDMARW_VERSION_H*/
diff --git a/QDMA/windows/apps/dma-ctl/dmactl.cpp b/QDMA/windows/apps/dma-ctl/dmactl.cpp
deleted file mode 100644
index 0024867..0000000
--- a/QDMA/windows/apps/dma-ctl/dmactl.cpp
+++ /dev/null
@@ -1,1440 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include <windows.h>
-#include <winioctl.h>
-#include <iostream>
-#include <algorithm>
-
-#include "device_file.hpp"
-#include "qdma_driver_api.h"
-#include "version.h"
-
-#define MAX_VALID_GLBL_IDX      15
-#define MAX_VALID_CMPT_SZ       3
-#define MAX_VALID_INTR_RING_VEC 8
-#define MAX_VALID_BAR_NUM       5
-#define MAX_CMPT_DESC_SZ        64
-#define MAX_INTR_RING_ENTRY_SZ  32
-#define MAX_DUMP_BUFF_SZ        64 * 1024
-#define MAX_REG_INFO_SZ         1024
-
-#pragma comment(lib, "setupapi.lib")
-
-using std::uint32_t;
-using std::string;
-using std::runtime_error;
-using std::cout;
-using namespace std;
-
-const char *desc_engine_mode[] = {
-    "Internal and Bypass mode",
-    "Bypass only mode"
-    "Inernal only mode",
-};
-
-
-static void help(void);
-
-static bool open_device(const char *dev_name, device_file& device)
-{
-    device_details dev_info;
-
-    if (dev_name == NULL) {
-        cout << "Null Parameter provided for dev_name\n";
-        return false;
-    }
-
-    auto dev_details = get_device_details(GUID_DEVINTERFACE_QDMA);
-
-    if (!dev_details.size()) {
-        cout << "No QDMA Devices found\n";
-        return false;
-    }
-
-    auto res = get_device(dev_details, dev_name, dev_info);
-    if (res == false) {
-        printf("Device name requested to open is not valid\n");
-        return false;
-    }
-
-    const auto& dev_path = dev_info.device_path;
-    device.open(dev_path + "\\mgmt", GENERIC_READ | GENERIC_WRITE);
-
-    return true;
-}
-
-bool sort_fun(device_details d1, device_details d2)
-{
-    UINT32 bdf_1 = 0x0, bdf_2 = 0x0;
-
-    bdf_1 = (d1.bus_no << 12) | (d1.dev_no << 4) | d1.fun_no;
-    bdf_2 = (d2.bus_no << 12) | (d2.dev_no << 4) | d2.fun_no;
-    return (bdf_1 < bdf_2);
-}
-
-static int get_qrange(const char *dev_name, unsigned int& qmax, unsigned int& qbase)
-{
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 1;
-
-        struct qstat_out qstats_info = { 0 };
-        device.ioctl(IOCTL_QDMA_GET_QSTATS, NULL, 0, &qstats_info, sizeof(qstats_info));
-        qmax = qstats_info.qmax;
-        qbase = qstats_info.qbase;
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to get qmax from ioctl : " << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_dev_cmds(const int argc, char* argv[])
-{
-    auto i = 0;
-
-    if (0 == argc) {
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "list") == 0) {
-            auto device_details = get_device_details(GUID_DEVINTERFACE_QDMA);
-            UINT32 prev_bus = 0x000000;
-
-            if (!device_details.size()) {
-                printf("\nNo QDMA Devices present in the system\n\n");
-                break;
-            }
-
-            std::sort(device_details.begin(), device_details.end(), sort_fun);
-
-            for (auto idx = 0; idx < (int)device_details.size(); idx++) {
-                unsigned int qmax = 0, qbase = 0;
-                int ret = get_qrange(device_details[idx].device_name.c_str(), qmax, qbase);
-                if (ret)
-                    return 1;
-
-                auto bus_no = device_details[idx].bus_no;
-                auto dev_no = device_details[idx].dev_no;
-                auto fun_no = device_details[idx].fun_no;
-                auto end_q = qbase + qmax - 1;
-
-                if (prev_bus != bus_no) {
-                    printf("\n");
-                    prev_bus = bus_no;
-                }
-
-                printf("%s\t0000:%02X:%02X:%01X\tmaxQP: %d, %d~%d\n", device_details[idx].device_name.c_str(), bus_no, dev_no, fun_no, qmax, qbase, end_q);
-            }
-            printf("\n");
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-        ++i;
-    }
-
-    return 0;
-}
-static int handle_csr_cmds(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    device_file device;
-
-    auto ret = open_device(dev_name, device);
-    if (ret == false)
-        return 0;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "dump") == 0) {
-            ioctl_cmd cmd = {};
-            DWORD ioctl_code = IOCTL_QDMA_CSR_DUMP;
-
-            cmd.csr.out = (struct csr_conf_out *)new struct csr_conf_out;
-
-            try {
-                device.ioctl(ioctl_code, NULL, 0, cmd.csr.out, sizeof(struct csr_conf_out));
-                printf("Global CSR :\n");
-
-                printf("Index     Ring size           Timer count         Threshold count     Buffer size\n");
-                for (auto ind = 0; ind < QDMA_CSR_SZ; ++ind)
-                    printf("%-10d%-20u%-20u%-20u%-20u\n",
-                        ind,
-                        cmd.csr.out->ring_sz[ind],
-                        cmd.csr.out->c2h_timer_cnt[ind],
-                        cmd.csr.out->c2h_th_cnt[ind],
-                        cmd.csr.out->c2h_buff_sz[ind]);
-
-                delete cmd.csr.out;
-            }
-            catch (const std::exception& e) {
-                delete cmd.csr.out;
-                cout << "Failed to dump CSR from ioctl : " << e.what() << '\n';
-            }
-        }
-        else {
-            return 1;
-        }
-
-        ++i;
-    }
-
-    return 0;
-}
-
-static int handle_devinfo(const char *dev_name)
-{
-    device_file device;
-
-    auto ret = open_device(dev_name, device);
-    if (ret == false)
-        return 0;
-
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_DEVINFO;
-
-    cmd.dev_info.out = (struct device_info_out *)new struct device_info_out;
-
-    try {
-        device.ioctl(ioctl_code, NULL, 0, cmd.dev_info.out, sizeof(struct device_info_out));
-
-        printf("=============Hardware Version=================\n");
-        printf("%-35s : %s\n", "RTL Version", cmd.dev_info.out->ver_info.qdma_rtl_version_str);
-        printf("%-35s : %s\n", "Vivado ReleaseID", cmd.dev_info.out->ver_info.qdma_vivado_release_id_str);
-        printf("%-35s : %s\n", "Device Type", cmd.dev_info.out->ver_info.qdma_device_type_str);
-        if (strstr(cmd.dev_info.out->ver_info.qdma_device_type_str, "Versal IP") != NULL)
-            printf("%-35s : %s\n", "Versal IP Type", cmd.dev_info.out->ver_info.qdma_versal_ip_type_str);
-        printf("\n");
-
-        printf("=============Software Version=================\n");
-        printf("%-35s : %s\n", "qdma driver version", cmd.dev_info.out->ver_info.qdma_sw_version);
-        printf("\n");
-
-        printf("=============Hardware Capabilities============\n");
-
-        printf("%-35s : %d\n", "Number of PFs supported", cmd.dev_info.out->num_pfs);
-        printf("%-35s : %d\n", "Total number of queues supported", cmd.dev_info.out->num_qs);
-        printf("%-35s : %d\n", "MM channels", cmd.dev_info.out->num_mm_channels);
-        printf("%-35s : %s\n", "FLR Present", cmd.dev_info.out->flr_present ? "yes" : "no");
-        printf("%-35s : %s\n", "ST enabled", cmd.dev_info.out->st_en ? "yes" : "no");
-        printf("%-35s : %s\n", "MM enabled", cmd.dev_info.out->mm_en ? "yes" : "no");
-        printf("%-35s : %s\n", "Mailbox enabled", cmd.dev_info.out->mailbox_en ? "yes" : "no");
-        printf("%-35s : %s\n", "MM completion enabled", cmd.dev_info.out->mm_cmpl_en ? "yes" : "no");
-        printf("%-35s : %s\n", "Debug Mode enabled", cmd.dev_info.out->debug_mode ? "yes" : "no");
-        if (cmd.dev_info.out->desc_eng_mode < sizeof(desc_engine_mode) / sizeof(desc_engine_mode[0])) {
-            printf("%-35s : %s\n", "Desc Engine Mode", desc_engine_mode[cmd.dev_info.out->desc_eng_mode]);
-        }
-        else {
-            printf("%-35s : %s\n", "Desc Engine Mode", "Invalid");
-        }
-
-        printf("\n");
-
-        delete cmd.dev_info.out;
-    }
-    catch (const std::exception& e) {
-        delete cmd.dev_info.out;
-        cout << "Failed to get devinfo from ioctl : " << e.what() << '\n';
-    }
-    return 0;
-}
-
-static int handle_qmax(const char *dev_name, const int argc, char* argv[])
-{
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_SET_QMAX;
-
-    if (argc > 1) {
-        cout << "Only one argument is required" << endl;
-        return 1;
-    }
-
-    cmd.qmax_info.in.qmax = (unsigned short)strtoul(argv[0], NULL, 0);
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, &cmd.qmax_info.in, sizeof(cmd.qmax_info.in), NULL, 0);
-        cout << "Set qmax successfull" << endl;
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to set qmax.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_qstats(const char *dev_name)
-{
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_GET_QSTATS;
-    cmd.qstats_info.out = new struct qstat_out;
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, NULL, 0, cmd.qstats_info.out, sizeof(struct qstat_out));
-
-        printf("Device             : %s\n", dev_name);
-        printf("Maximum queues     : %u\n", cmd.qstats_info.out->qmax);
-        printf("Active H2C queues  : %u\n", cmd.qstats_info.out->active_h2c_queues);
-        printf("Active C2H queues  : %u\n", cmd.qstats_info.out->active_c2h_queues);
-        printf("Active CMPT queues : %u\n", cmd.qstats_info.out->active_cmpt_queues);
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to set qmax.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_add_queue(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_ADD;
-    bool mode, qid, h2c_ring_sz, c2h_ring_sz, c2h_timer, c2h_th, c2h_buff_sz;
-    bool cmplsz, trigmode;
-    mode = qid = h2c_ring_sz = c2h_ring_sz = c2h_timer = c2h_th = c2h_buff_sz = false;
-    cmplsz = trigmode = false;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "mode") == 0) {
-            ++i;
-
-            if (strcmp(argv[i], "mm") == 0) {
-                cmd.q_conf.in.is_st = 0;
-            }
-            else if (strcmp(argv[i], "st") == 0) {
-                cmd.q_conf.in.is_st = 1;
-            }
-            else {
-                cout << "Unknown command " << argv[i] << endl;
-                return 1;
-            }
-            mode = true;
-        }
-        else if (strcmp(argv[i], "qid") == 0) {
-            ++i;
-            cmd.q_conf.in.qid = (unsigned short)strtoul(argv[i], NULL, 0);
-            cout << "Adding queue ::" << cmd.q_conf.in.qid << endl;
-            qid = true;
-        }
-        else if (strcmp(argv[i], "en_mm_cmpl") == 0) {
-            cmd.q_conf.in.en_mm_cmpl = true;
-        }
-        else if (strcmp(argv[i], "idx_h2c_ringsz") == 0) {
-            ++i;
-            cmd.q_conf.in.h2c_ring_sz_index = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_GLBL_IDX < cmd.q_conf.in.h2c_ring_sz_index) {
-                cout << "Invalid h2c ring size index : " << argv[i] << endl;
-                return 1;
-            }
-            h2c_ring_sz = true;
-        }
-        else if (strcmp(argv[i], "idx_c2h_ringsz") == 0) {
-            ++i;
-            cmd.q_conf.in.c2h_ring_sz_index = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_GLBL_IDX < cmd.q_conf.in.c2h_ring_sz_index) {
-                cout << "Invalid c2h ring size index : " << argv[i] << endl;
-                return 1;
-            }
-            c2h_ring_sz = true;
-        }
-        else if (strcmp(argv[i], "idx_c2h_timer") == 0) {
-            ++i;
-            cmd.q_conf.in.c2h_timer_cnt_index = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_GLBL_IDX < cmd.q_conf.in.c2h_timer_cnt_index) {
-                cout << "Invalid c2h timer index : " << argv[i] << endl;
-                return 1;
-            }
-            c2h_timer = true;
-        }
-        else if (strcmp(argv[i], "idx_c2h_th") == 0) {
-            ++i;
-            cmd.q_conf.in.c2h_th_cnt_index = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_GLBL_IDX < cmd.q_conf.in.c2h_th_cnt_index) {
-                cout << "Invalid c2h threshold index : " << argv[i] << endl;
-                return 1;
-            }
-            c2h_th = true;
-        }
-        else if (strcmp(argv[i], "idx_c2h_bufsz") == 0) {
-            ++i;
-            cmd.q_conf.in.c2h_buff_sz_index = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_GLBL_IDX < cmd.q_conf.in.c2h_buff_sz_index) {
-                cout << "Invalid c2h buffer size index : " << argv[i] << endl;
-                return 1;
-            }
-            c2h_buff_sz = true;
-        }
-        else if (strcmp(argv[i], "cmptsz") == 0) {
-            ++i;
-            unsigned char compl_sz = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (compl_sz == 0)
-                cmd.q_conf.in.compl_sz = CMPT_DESC_SZ_8B;
-            else if (compl_sz == 1)
-                cmd.q_conf.in.compl_sz = CMPT_DESC_SZ_16B;
-            else if (compl_sz == 2)
-                cmd.q_conf.in.compl_sz = CMPT_DESC_SZ_32B;
-            else if (compl_sz == 3)
-                cmd.q_conf.in.compl_sz = CMPT_DESC_SZ_64B;
-            else {
-                cout << "Invalid c2h completion size : " << argv[i] << endl;
-                return 1;
-            }
-            cmplsz = true;
-        }
-        else if (strcmp(argv[i], "trigmode") == 0) {
-            ++i;
-
-            if (strcmp(argv[i], "every") == 0) {
-                cmd.q_conf.in.trig_mode = TRIG_MODE_EVERY;
-            }
-            else if (strcmp(argv[i], "usr_cnt") == 0) {
-                cmd.q_conf.in.trig_mode = TRIG_MODE_USER_COUNT;
-            }
-            else if (strcmp(argv[i], "usr") == 0) {
-                cmd.q_conf.in.trig_mode = TRIG_MODE_USER;
-            }
-            else if (strcmp(argv[i], "usr_tmr") == 0) {
-                cmd.q_conf.in.trig_mode = TRIG_MODE_USER_TIMER;
-            }
-            else if (strcmp(argv[i], "usr_tmr_cnt") == 0) {
-                cmd.q_conf.in.trig_mode = TRIG_MODE_USER_TIMER_COUNT;
-            }
-            else {
-                cout << "Invalid trigger mode : " << argv[i] << endl;
-                return 1;
-            }
-
-            trigmode = true;
-        }
-        else if (strcmp(argv[i], "sw_desc_sz") == 0) {
-            ++i;
-            cmd.q_conf.in.sw_desc_sz = (unsigned char)strtoul(argv[i], NULL, 0);
-            if (cmd.q_conf.in.sw_desc_sz != 3) {
-                cout << "sw_desc_sz must be 3\n";
-                cout << "Only 64B descriptor(3) can be configured in bypass mode\n";
-                return 1;
-            }
-        }
-        else if (strcmp(argv[i], "desc_bypass_en") == 0) {
-            cmd.q_conf.in.desc_bypass_en = true;
-        }
-        else if (strcmp(argv[i], "pfch_en") == 0) {
-            cmd.q_conf.in.pfch_en = true;
-        }
-        else if (strcmp(argv[i], "pfch_bypass_en") == 0) {
-            cmd.q_conf.in.pfch_bypass_en = true;
-        }
-        else if (strcmp(argv[i], "cmpl_ovf_dis") == 0) {
-            cmd.q_conf.in.cmpl_ovf_dis = true;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    if (!mode || !qid || !h2c_ring_sz || !c2h_ring_sz) {
-        cout << "Insufficient options provided\n";
-        return 1;
-    }
-
-    if (!cmd.q_conf.in.is_st &&
-        (c2h_buff_sz || cmd.q_conf.in.pfch_en
-            || cmd.q_conf.in.pfch_bypass_en)) {
-        cout << "Invalid arguments for MM mode\n";
-        return 1;
-    }
-
-    if ((!cmd.q_conf.in.desc_bypass_en) && (cmd.q_conf.in.sw_desc_sz == 3)) {
-        cout << "Invalid Parameter Combination : ";
-        cout << "desc_bypass_en : " << cmd.q_conf.in.desc_bypass_en << ", sw_desc_sz : " << cmd.q_conf.in.sw_desc_sz << endl;
-        cout << "64 Byte Descriptor supported only when descriptor bypass is enabled\n";
-    }
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, &cmd.q_conf.in, sizeof(cmd.q_conf.in), NULL, 0);
-        cout << "Added Queue " << cmd.q_conf.in.qid << " Successfully\n";
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to add queue.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_start_queue(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_START;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            ++i;
-            cmd.q_conf.in.qid = (unsigned short)strtoul(argv[i], NULL, 0);
-            cout << "Starting queue :: " << cmd.q_conf.in.qid << endl;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, &cmd.q_conf.in, sizeof(cmd.q_conf.in), NULL, 0);
-        cout << "Started Queue " << cmd.q_conf.in.qid << " Successfully\n";
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to start queue.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_stop_queue(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_STOP;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            ++i;
-            cmd.q_conf.in.qid = (unsigned short)strtoul(argv[i], NULL, 0);
-            cout << "Stopping queue : " << cmd.q_conf.in.qid << endl;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, &cmd.q_conf.in, sizeof(cmd.q_conf.in), NULL, 0);
-        cout << "Stopped Queue " << cmd.q_conf.in.qid << " Successfully\n";
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to stop queue.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_delete_queue(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_DELETE;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            ++i;
-            cmd.q_conf.in.qid = (unsigned short)strtoul(argv[i], NULL, 0);
-            cout << "Deleting queue :: " << cmd.q_conf.in.qid << endl;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    try {
-        device_file device;
-
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        device.ioctl(ioctl_code, &cmd.q_conf.in, sizeof(cmd.q_conf.in), NULL, 0);
-        cout << "Deleted Queue " << cmd.q_conf.in.qid << " Successfully\n";
-    }
-    catch (const std::exception& e) {
-        cout << "Failed to delete queue.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_queue_state(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_DUMP_STATE;
-
-    if (i == argc) {
-        cout << "insufficient argument\n";
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            ++i;
-            cmd.q_state.in.qid = static_cast<unsigned short>(strtoul(argv[i], NULL, 0));
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        cmd.q_state.out = (struct queue_state_out *)new struct queue_state_out;
-
-        if (device.ioctl(ioctl_code, &cmd.q_state.in, sizeof(cmd.q_state.in),
-                cmd.q_state.out, sizeof(struct queue_state_out))) {
-            printf("%5s%20s\n", "QID", "STATE");
-            printf("%5s%20s\n", "---", "-----");
-            printf("%5u%20s\n", cmd.q_state.in.qid, cmd.q_state.out->state);
-        }
-        delete cmd.q_state.out;
-    }
-    catch (const std::exception& e) {
-        delete cmd.q_state.out;
-        cout << "Failed to get queue state.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-static int handle_queue_dump(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    bool qid_valid = false, dir_valid = false, desc_valid = false, cmpt_valid = false;
-    bool type_valid = false;
-    bool ctx_valid = false;
-    unsigned short qid = 0;
-    enum queue_direction dir = QUEUE_DIR_H2C;
-    enum ring_type type = ring_type::RING_TYPE_H2C;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = 0;
-
-    if (i == argc) {
-        cout << "insufficient argument\n";
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            if (argv[i + 1] == NULL) {
-                cout << "Insufficient options provided\n";
-                cout << "qid option needs as an argument : <qid no>\n";
-                return 1;
-            }
-
-            ++i;
-            qid = static_cast<unsigned short>(strtoul(argv[i], NULL, 0));
-            qid_valid = true;
-        }
-        else if (strcmp(argv[i], "dir") == 0) {
-            if (argv[i + 1] == NULL) {
-                cout << "Insufficient options provided\n";
-                cout << "dir option needs as an argument : h2c/c2h\n";
-                return 1;
-            }
-
-            ++i;
-            if (strcmp(argv[i], "h2c") == 0) {
-                dir = QUEUE_DIR_H2C;
-            }
-            else if (strcmp(argv[i], "c2h") == 0) {
-                dir = QUEUE_DIR_C2H;
-            }
-            else {
-                cout << "Invalid direction : " << argv[i] << endl;
-                return 1;
-            }
-            dir_valid = true;
-        }
-        else if (strcmp(argv[i], "type") == 0) {
-            if (argv[i + 1] == NULL) {
-                cout << "Insufficient options provided\n";
-                cout << "type option needs as an argument : h2c/c2h/cmpt\n";
-                return 1;
-            }
-
-            ++i;
-            if (strcmp(argv[i], "h2c") == 0) {
-                type = ring_type::RING_TYPE_H2C;
-            }
-            else if (strcmp(argv[i], "c2h") == 0) {
-                type = ring_type::RING_TYPE_C2H;
-            }
-            else if (strcmp(argv[i], "cmpt") == 0) {
-                type = ring_type::RING_TYPE_CMPT;
-            }
-            else {
-                cout << "Invalid ring type : " << argv[i] << endl;
-                return 1;
-            }
-            type_valid = true;
-        }
-        else if (strcmp(argv[i], "desc") == 0) {
-            if ((argv[i + 1] == NULL) || (argv[i + 2] == NULL)) {
-                cout << "Insufficient options provided\n";
-                cout << "desc option needs two arguments : <start desc no> and <end desc no>\n";
-                return 1;
-            }
-
-            ioctl_code = IOCTL_QDMA_QUEUE_DUMP_DESC;
-            cmd.desc_info.in.desc_type = RING_DESC;
-
-            ++i;
-            cmd.desc_info.in.desc_start = strtoul(argv[i], NULL, 0);
-
-            ++i;
-            cmd.desc_info.in.desc_end = strtoul(argv[i], NULL, 0);
-
-            if (cmd.desc_info.in.desc_end < cmd.desc_info.in.desc_start) {
-                cout << "Insufficient range : ";
-                cout << cmd.desc_info.in.desc_start << "~" << cmd.desc_info.in.desc_end << endl;
-                return 1;
-            }
-
-            desc_valid = true;
-        }
-        else if (strcmp(argv[i], "cmpt") == 0) {
-            if ((argv[i + 1] == NULL) || (argv[i + 2] == NULL)) {
-                cout << "Insufficient options provided\n";
-                cout << "desc option needs two arguments : <start desc no> and <end desc no>\n";
-                return 1;
-            }
-
-            ioctl_code = IOCTL_QDMA_QUEUE_DUMP_DESC;
-            cmd.desc_info.in.desc_type = CMPT_DESC;
-
-            ++i;
-            cmd.desc_info.in.desc_start = strtoul(argv[i], NULL, 0);
-
-            ++i;
-            cmd.desc_info.in.desc_end = strtoul(argv[i], NULL, 0);
-
-            if (cmd.desc_info.in.desc_end < cmd.desc_info.in.desc_start) {
-                cout << "Insufficient range : ";
-                cout << cmd.desc_info.in.desc_start << "~" << cmd.desc_info.in.desc_end << endl;
-                return 1;
-            }
-
-            cmpt_valid = true;
-        }
-        else if (strcmp(argv[i], "ctx") == 0) {
-            ioctl_code = IOCTL_QDMA_QUEUE_DUMP_CTX;
-            ctx_valid = true;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    if (!qid_valid || (!dir_valid && !cmpt_valid && !type_valid) ||
-        (!desc_valid && !cmpt_valid && !ctx_valid) ||
-        (type_valid ^ ctx_valid)) {
-        cout << "Insufficient options provided\n";
-        return 1;
-    }
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        unsigned int size;
-        unsigned int out_size;
-
-        if (ctx_valid) {
-            cmd.ctx_info.in.qid = qid;
-            cmd.ctx_info.in.type = type;
-            /* Allocate memory for the maximum possible context size */
-            size = MAX_DUMP_BUFF_SZ;
-
-            out_size = sizeof(struct ctx_dump_info_out) + size;
-            cmd.ctx_info.out = (struct ctx_dump_info_out *)new char[out_size];
-            cmd.ctx_info.out->ret_sz = 0;
-
-            device.ioctl(ioctl_code, &cmd.ctx_info.in, sizeof(cmd.ctx_info.in),
-                cmd.ctx_info.out, out_size);
-
-            if (!cmd.ctx_info.out->ret_sz) {
-                printf("Failed to dump the queue context\n");
-            }
-            else {
-                char *addr = (char *)&cmd.ctx_info.out->pbuffer[0];
-                for (i = 0; ((i < (int)cmd.ctx_info.out->ret_sz) && (addr[i] != '\0')); i++) {
-                    printf("%c", addr[i]);
-                }
-            }
-            delete[] cmd.ctx_info.out;
-        }
-        else {
-            cmd.desc_info.in.qid = qid;
-            cmd.desc_info.in.dir = dir;
-            /* Allocate memory for the maximum possible combination of desc size */
-            size = (cmd.desc_info.in.desc_end - cmd.desc_info.in.desc_start + 1) * 64;
-
-            out_size = sizeof(struct desc_dump_info_out) + size;
-            cmd.desc_info.out = (struct desc_dump_info_out *)new unsigned char[out_size];
-            cmd.desc_info.out->desc_sz = 0;
-            cmd.desc_info.out->data_sz = 0;
-
-            device.ioctl(ioctl_code, &cmd.desc_info.in, sizeof(cmd.desc_info.in),
-                cmd.desc_info.out, out_size);
-
-            if (!&cmd.desc_info.out->desc_sz || !cmd.desc_info.out->data_sz) {
-                printf("Failed to dump the queue descriptors\n");
-            }
-            else {
-                auto desc_index = cmd.desc_info.in.desc_start;
-                auto desc_cnt = cmd.desc_info.out->data_sz / cmd.desc_info.out->desc_sz;
-                auto n = cmd.desc_info.out->desc_sz / 4;
-                UINT32 *addr = (UINT32 *)&cmd.desc_info.out->pbuffer[0];
-
-                for (i = 0; i < (int)desc_cnt; i++) {
-                    printf("%5d : ", desc_index++);
-                    for (UINT16 j = 0; j < n; j++) {
-                        printf("%08X ", addr[(i * n) + j]);
-                    }
-                    printf("\n");
-                }
-            }
-
-
-            delete[] cmd.desc_info.out;
-        }
-    }
-    catch (const std::exception& e) {
-        if (ctx_valid)
-            delete[] cmd.ctx_info.out;
-        else
-            delete[] cmd.desc_info.out;
-
-        cout << "Failed to dump queue descriptors.\n" << e.what() << '\n';
-    }
-
-    return 0;
-
-}
-
-static int handle_queue_cmpt_read(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    bool qid_valid = false;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = 0x0;
-
-    if (i == argc) {
-        cout << "insufficient argument\n";
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "qid") == 0) {
-            if (argv[i + 1] == NULL) {
-                cout << "Insufficient options provided\n";
-                cout << "qid option needs as an argument : <qid no>\n";
-                return 1;
-            }
-
-            ++i;
-            cmd.cmpt_info.in.qid = static_cast<unsigned short>(strtoul(argv[i], NULL, 0));
-            qid_valid = true;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-
-        ++i;
-    }
-
-    if (!qid_valid) {
-        cout << "Insufficient options provided: qid option is must to execute cmpt_read command\n";
-        return 1;
-    }
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        unsigned int size = 10 * MAX_CMPT_DESC_SZ;
-        ioctl_code = IOCTL_QDMA_QUEUE_CMPT_READ;
-
-        unsigned int out_size = sizeof(struct cmpt_data_info_out) + size;
-        cmd.cmpt_info.out = (struct cmpt_data_info_out *)new unsigned char[out_size];
-        bool is_data_avail = false;
-        UINT32 cmpt_data_idx = 0;
-        do {
-            cmd.cmpt_info.out->ret_len = 0;
-            cmd.cmpt_info.out->cmpt_desc_sz = 0;
-
-            memset(&cmd.cmpt_info.out->pbuffer[0], 0xDEADBEEF, size);
-
-            device.ioctl(ioctl_code, &cmd.cmpt_info.in, sizeof(cmd.cmpt_info.in),
-                cmd.cmpt_info.out, out_size);
-
-            if (!cmd.cmpt_info.out->cmpt_desc_sz || !cmd.cmpt_info.out->ret_len) {
-                if (is_data_avail == false)
-                    printf("Completion Data not available\n");
-            }
-            else {
-                is_data_avail = true;
-                auto n = cmd.cmpt_info.out->cmpt_desc_sz / 4;
-                auto desc_cnt = cmd.cmpt_info.out->ret_len / cmd.cmpt_info.out->cmpt_desc_sz;
-                UINT32 *addr = (UINT32 *)&cmd.cmpt_info.out->pbuffer[0];
-                for (i = 0; i < (int)desc_cnt; i++) {
-                    printf("%5d : ", cmpt_data_idx++);
-                    for (auto j = 0U; j < n; j++) {
-                        printf("%08X ", addr[(i * n) + j]);
-                    }
-                    printf("\n");
-                }
-            }
-        } while (cmd.cmpt_info.out->ret_len);
-
-        delete[] cmd.cmpt_info.out;
-    }
-    catch (const std::exception& e) {
-        delete[] cmd.cmpt_info.out;
-        cout << "Failed to execute cmpt_read command.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_queue_listall(const char *dev_name)
-{
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = IOCTL_QDMA_QUEUE_DUMP_STATE;
-
-    try {
-        device_file device;
-        unsigned int qmax = 0, qbase = 0;
-        bool ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        ret = get_qrange(dev_name, qmax, qbase);
-        if (ret)
-            return 1;
-
-        cmd.q_state.out = (struct queue_state_out *)new struct queue_state_out;
-
-        printf("%5s%20s\n", "QID", "STATE");
-        printf("%5s%20s\n", "---", "-----");
-        for (unsigned short i = 0; i < qmax; i++) {
-            memset(cmd.q_state.out, 0, sizeof(struct queue_state_out));
-
-            cmd.q_state.in.qid = i;
-
-            if (device.ioctl(ioctl_code, &cmd.q_state.in, sizeof(cmd.q_state.in),
-                cmd.q_state.out, sizeof(struct queue_state_out))) {
-                printf("%5u%20s\n", cmd.q_state.in.qid, cmd.q_state.out->state);
-            }
-        }
-        delete cmd.q_state.out;
-    }
-    catch (const std::exception& e) {
-        delete cmd.q_state.out;
-        cout << "Failed to get queue state.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_intring_dump(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-    bool vector_valid = false;
-    bool index_valid = false;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = 0x0;
-
-    if (i == argc) {
-        cout << "insufficient argument\n";
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "vector") == 0) {
-            if ((argv[i + 1] == NULL) || (argv[i + 2] == NULL) || (argv[i + 3] == NULL)) {
-                cout << "Insufficient options provided\n";
-                cout << "vector option needs as three arguments : <vec id> <start idx> <end idx>\n";
-                return 1;
-            }
-
-            ++i;
-            cmd.int_ring_info.in.vec_id = strtoul(argv[i], NULL, 0);
-            if (MAX_VALID_INTR_RING_VEC < cmd.int_ring_info.in.vec_id) {
-                cout << "Invalid intr vector id : " << argv[i] << endl;
-                break;
-            }
-            vector_valid = true;
-
-            ++i;
-            cmd.int_ring_info.in.start_idx = strtoul(argv[i], NULL, 0);
-            ++i;
-            cmd.int_ring_info.in.end_idx = strtoul(argv[i], NULL, 0);
-            if (cmd.int_ring_info.in.start_idx > cmd.int_ring_info.in.end_idx) {
-                cout << "Start index must be less than or equal to end index" << endl;
-                break;
-            }
-            index_valid = true;
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-        ++i;
-    }
-
-    if (!vector_valid || !index_valid) {
-        cout << "Insufficient options provided\n";
-        return 1;
-    }
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        unsigned int size =
-                (cmd.int_ring_info.in.end_idx - cmd.int_ring_info.in.start_idx + 1) * MAX_INTR_RING_ENTRY_SZ;
-
-        unsigned int out_size = sizeof (struct intring_info_out) + size;
-
-        cmd.int_ring_info.out = (struct intring_info_out *)new unsigned char[out_size];
-
-        cmd.int_ring_info.out->ret_len = 0;
-        cmd.int_ring_info.out->ring_entry_sz = 0;
-
-        ioctl_code = IOCTL_QDMA_INTRING_DUMP;
-
-        device.ioctl(ioctl_code, &cmd.int_ring_info.in, sizeof(cmd.int_ring_info.in),
-            cmd.int_ring_info.out, out_size);
-
-        if (!cmd.int_ring_info.out->ring_entry_sz || !cmd.int_ring_info.out->ret_len) {
-            printf("Failed to dump the intr ring\n");
-        }
-        else {
-            auto start_idx = cmd.int_ring_info.in.start_idx;
-            auto ring_entry_cnt = cmd.int_ring_info.out->ret_len / cmd.int_ring_info.out->ring_entry_sz;
-            auto n = cmd.int_ring_info.out->ring_entry_sz / 4;
-            UINT32 *addr = (UINT32 *)&cmd.int_ring_info.out->pbuffer[0];
-            for (i = 0; i < (int)ring_entry_cnt; i++) {
-                printf("%5d : ", start_idx++);
-                for (UINT16 j = 0; j < n; j++) {
-                    printf("%08X ", addr[(i * n) + j]);
-                }
-                printf("\n");
-            }
-        }
-        delete[] cmd.int_ring_info.out;
-    }
-    catch (const std::exception& e) {
-        delete[] cmd.int_ring_info.out;
-        cout << "Failed to execute intring dump command.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_reg_dump(const char *dev_name, const int argc, char* argv[])
-{
-    UNREFERENCED_PARAMETER(argc);
-    UNREFERENCED_PARAMETER(argv);
-
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = 0x0;
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        unsigned int size = MAX_DUMP_BUFF_SZ;
-
-        unsigned int out_size = sizeof(struct regdump_info_out) + size;
-        cmd.reg_dump_info.out = (struct regdump_info_out *)new char[out_size];
-        cmd.reg_dump_info.out->ret_len = 0;
-
-        ioctl_code = IOCTL_QDMA_REG_DUMP;
-
-        device.ioctl(ioctl_code, NULL, 0, cmd.reg_dump_info.out, out_size);
-
-        if (!cmd.reg_dump_info.out->ret_len) {
-            printf("Failed to dump the registers\n");
-        }
-        else {
-            char *addr = (char *)&cmd.reg_dump_info.out->pbuffer[0];
-            for (auto i = 0; ((i < (int)cmd.reg_dump_info.out->ret_len) && (addr[i] != '\0')); i++) {
-                printf("%c", addr[i]);
-            }
-        }
-        delete[] cmd.reg_dump_info.out;
-    }
-    catch (const std::exception& e) {
-        delete[] cmd.reg_dump_info.out;
-        cout << "Failed to execute reg dump command.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-
-static int handle_reg_info(const char* dev_name, const int argc, char* argv[])
-{
-    UNREFERENCED_PARAMETER(dev_name);
-    UNREFERENCED_PARAMETER(argc);
-    UNREFERENCED_PARAMETER(argv);
-    auto i = 0;
-    bool bar_valid = false;
-    ioctl_cmd cmd = {};
-    DWORD ioctl_code = 0x0;
-
-    if (i == argc) {
-        cout << "insufficient arguments\n";
-        return 1;
-    }
-
-    while (i < argc) {
-        if (strcmp(argv[i], "bar") == 0) {
-            if ((argv[i + 1] == NULL) || (argv[i + 2] == NULL)) {
-                cout << "Insufficient options provided\n";
-                cout << "bar option needs atleast two arguments : <bar_num> <address> [num_regs <M>]\n";
-                return 1;
-            }
-
-            ++i;
-            cmd.reg_info.in.bar_no = strtoul(argv[i], NULL, 0);
-            if ((MAX_VALID_BAR_NUM < cmd.reg_info.in.bar_no) && 
-                ((cmd.reg_info.in.bar_no % 2) != 0)) {
-                cout << "Invalid BAR number provided : " << argv[i] << endl;
-                break;
-            }
-            cmd.reg_info.in.bar_no = cmd.reg_info.in.bar_no / 2;
-            bar_valid = true;
-
-            ++i;
-            cmd.reg_info.in.address = strtoul(argv[i], NULL, 0);
-
-            ++i;
-            if ((argv[i] != NULL) && (strcmp(argv[i], "num_regs")) == 0) {
-                cmd.reg_info.in.reg_cnt = strtoul(argv[i + 1], NULL, 0);
-                ++i;
-            }
-            else {
-                cmd.reg_info.in.reg_cnt = 1;
-            }
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-        ++i;
-    }
-
-    if (!bar_valid) {
-        return 1;
-    }
-
-    try {
-        device_file device;
-        auto ret = open_device(dev_name, device);
-        if (ret == false)
-            return 0;
-
-        unsigned int size = (cmd.reg_info.in.reg_cnt * MAX_REG_INFO_SZ);
-        unsigned int out_size = sizeof(struct reg_info_out) + size;
-        cmd.reg_info.out = (struct reg_info_out *)new char[out_size];
-        cmd.reg_info.out->ret_len = 0;
-
-        ioctl_code = IOCTL_QDMA_REG_INFO;
-
-        device.ioctl(ioctl_code, &cmd.reg_info.in, sizeof(cmd.reg_info.in),
-            cmd.reg_info.out, out_size);
-
-        if (!cmd.reg_info.out->ret_len) {
-            printf("Failed to dump the registers\n");
-        }
-        else {
-            char* data = (char*)&cmd.reg_info.out->pbuffer[0];
-            for (i = 0; ((i < (int)cmd.reg_info.out->ret_len) &&
-                (data[i] != '\0')); i++) {
-                printf("%c", data[i]);
-            }
-        }
-        delete[] cmd.reg_info.out;
-    }
-    catch (const std::exception& e) {
-        delete[] cmd.reg_info.out;
-        cout << "Failed to execute reg info command.\n" << e.what() << '\n';
-    }
-
-    return 0;
-}
-
-static int handle_queue_cmds(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "add") == 0) {
-            ++i;
-            return handle_add_queue(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "start") == 0) {
-            ++i;
-            return handle_start_queue(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "stop") == 0) {
-            ++i;
-            return handle_stop_queue(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "delete") == 0) {
-            ++i;
-            return handle_delete_queue(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "state") == 0) {
-            ++i;
-            return handle_queue_state(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "dump") == 0) {
-            ++i;
-            return handle_queue_dump(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "cmpt_read") == 0) {
-            ++i;
-            return handle_queue_cmpt_read(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "listall") == 0) {
-            ++i;
-            return handle_queue_listall(dev_name);
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-    }
-
-    return 0;
-}
-
-static int handle_intring_cmds(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "dump") == 0) {
-            ++i;
-            return handle_intring_dump(dev_name, argc - i, argv + i);
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-    }
-    return 0;
-}
-
-static int handle_reg_cmds(const char *dev_name, const int argc, char* argv[])
-{
-    auto i = 0;
-
-    while (i < argc) {
-        if (strcmp(argv[i], "dump") == 0) {
-            ++i;
-            return handle_reg_dump(dev_name, argc - i, argv + i);
-        }
-        else if (strcmp(argv[i], "info") == 0) {
-            ++i;
-            return handle_reg_info(dev_name, argc - i, argv + i);
-        }
-        else {
-            cout << "Unknown command " << argv[i] << endl;
-            return 1;
-        }
-    }
-    return 0;
-}
-
-static int process_cli(const int argc, char* argv[])
-{
-    auto i = 1;
-    char dev_name[DEV_NAME_MAX_SZ];
-
-    if (strcmp(argv[1], "dev") == 0) {
-        ++i;
-        return handle_dev_cmds(argc - i, argv + i);
-    }
-    else if (strncmp(argv[1], "qdma", 4) == 0) {
-        strncpy_s(dev_name, DEV_NAME_MAX_SZ, argv[1], _TRUNCATE);
-        ++i;
-    }
-    else if ((strcmp(argv[1], "-h") == 0) || (strcmp(argv[1], "/?") == 0)) {
-        help();
-        return 0;
-    }
-    else if ((strcmp(argv[1], "-v") == 0) || (strcmp(argv[1], "-V") == 0)) {
-        printf("%s version %s\n", PROGNAME, VERSION);
-        printf("%s\n", COPYRIGHT);
-        return 0;
-    }
-
-    if (strcmp(argv[i], "csr") == 0) {
-        ++i;
-        return handle_csr_cmds(dev_name, argc - i, argv + i);
-    }
-    else if (strcmp(argv[i], "devinfo") == 0) {
-        ++i;
-        return handle_devinfo(dev_name);
-    }
-    else if (strcmp(argv[i], "qmax") == 0) {
-        ++i;
-        return handle_qmax(dev_name, argc - i, argv + i);
-    }
-    else if (strcmp(argv[i], "qstats") == 0) {
-        ++i;
-        return handle_qstats(dev_name);
-    }
-    else if (strcmp(argv[i], "queue") == 0) {
-        ++i;
-        return handle_queue_cmds(dev_name, argc - i, argv + i);
-    }
-    else if (strcmp(argv[i], "intring") == 0) {
-        ++i;
-        return handle_intring_cmds(dev_name, argc - i, argv + i);
-    }
-    else if (strcmp(argv[i], "reg") == 0) {
-        ++i;
-        return handle_reg_cmds(dev_name, argc - i, argv + i);
-    }
-    else {
-        cout << "Unknown command " << argv[i] << endl;
-        return 1;
-    }
-}
-
-static void help(void)
-{
-    cout << "usage: dma-ctl [dev | qdma<N>] [operation]\n";
-    cout << "       dma-ctl -h - Prints this help\n";
-    cout << "       dma-ctl -v - Prints the version information\n";
-    cout << "\n";
-    cout << "dev [operation]\t: system wide FPGA operations\n";
-    cout << "     list\t: list all qdma functions\n";
-    cout << "\n";
-    cout << "qdma<N> [operation]\t: per QDMA FPGA operations\n";
-    cout << "    <N>\t\t: N is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No\n";
-    cout << "    csr <dump>\n";
-    cout << "         dump\t: Dump QDMA CSR Information\n";
-    cout << "    \n";
-    cout << "    devinfo\t: lists the Hardware and Software version and capabilities\n";
-    cout << "    qmax <N>\t: Assign maximum number of queues for a device\n";
-    cout << "    qstats\t: Dump number of available and free queues\n";
-    cout << "    \n";
-    cout << "    queue <add|start|stop|delete|listall>\n";
-    cout << "           add mode <mm|st> qid <N> [en_mm_cmpl] idx_h2c_ringsz <0:15> idx_c2h_ringsz <0:15>\n";
-    cout << "               [idx_c2h_timer <0:15>] [idx_c2h_th <0:15>] [idx_c2h_bufsz <0:15>] [cmptsz <0|1|2|3>] - add a queue\n";
-    cout << "               [trigmode <every|usr_cnt|usr|usr_tmr|usr_tmr_cnt>] [sw_desc_sz <3>] [desc_bypass_en] [pfch_en] [pfch_bypass_en]\n";
-    cout << "               [cmpl_ovf_dis]\n";
-    cout << "           start qid <N> - start a single queue\n" ;
-    cout << "           stop qid <N> - stop a single queue\n";
-    cout << "           delete qid <N> - delete a queue\n";
-    cout << "           state qid <N> - print the state of the queue\n";
-    cout << "           dump qid <N> dir <h2c|c2h> desc <start> <end> - dump desc ring entries <start> to <end>\n";
-    cout << "           dump qid <N> cmpt <start> <end> - dump completion ring entries <start> to <end>\n";
-    cout << "           dump qid <N> ctx type <h2c|c2h|cmpt> - dump context information of <qid>\n";
-    cout << "           cmpt_read qid <N> - Read the completion data\n";
-    cout << "    intring dump vector <N> <start_idx> <end_idx> - interrupt ring dump for vector number <N>\n";
-    cout << "                                                    for intrrupt entries :<start_idx> --- <end_idx>\n";
-    cout << "    reg dump - register dump\n";
-    cout << "    reg info bar <N> addr [num_regs <M>] - dump detailed fields information of a register\n";
-}
-
-int __cdecl main(const int argc, char* argv[])
-{
-    try {
-        if (argc > 1) {
-            /* Pasre command line options */
-            if (process_cli(argc, argv)) {
-                help();
-            }
-        }
-        else {
-            help();
-        }
-    }
-    catch (const std::exception& e) {
-        cout << "Error: " << e.what() << '\n';
-    }
-}
diff --git a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj b/QDMA/windows/apps/dma-ctl/dmactl.vcxproj
deleted file mode 100644
index 7941c37..0000000
--- a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\common\include\device_file.hpp" />
-    <ClInclude Include="version.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dmactl.cpp" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{620A4D4D-5D14-41BA-909B-011FF03A25FD}</ProjectGuid>
-    <TemplateGuid>{504102d4-2172-473c-8adf-cd96e308f257}</TemplateGuid>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
-    <Configuration>Debug</Configuration>
-    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
-    <RootNamespace>qdma_rw</RootNamespace>
-    <WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
-    <ProjectName>dma-ctl</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64</LibraryPath>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>_DEBUG;WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>_WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreSpecificDefaultLibraries />
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.filters b/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.filters
deleted file mode 100644
index 2002160..0000000
--- a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\common\include\device_file.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dmactl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.user b/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.user
deleted file mode 100644
index be25078..0000000
--- a/QDMA/windows/apps/dma-ctl/dmactl.vcxproj.user
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup />
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-ctl/version.h b/QDMA/windows/apps/dma-ctl/version.h
deleted file mode 100644
index 3fc5eb8..0000000
--- a/QDMA/windows/apps/dma-ctl/version.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#ifndef __QDMATOOL_VERSION_H
-#define __QDMATOOL_VERSION_H
-
-#define PROGNAME "dma-ctl"
-#define VERSION "2020.2.0"
-#define COPYRIGHT "Copyright (c) 2020 Xilinx Inc."
-
-#endif /* __QDMATOOL_VERSION_H */
diff --git a/QDMA/windows/apps/dma-rw/datafile256K.bin b/QDMA/windows/apps/dma-rw/datafile256K.bin
deleted file mode 100644
index 1b50cdd57bcc0fb5c0e6ae027560cd03062b5434..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 262144
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%0AY
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%0DZ-II4u-93Hx%-yqh&)q$L
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
B9peB1

diff --git a/QDMA/windows/apps/dma-rw/datafile4K.bin b/QDMA/windows/apps/dma-rw/datafile4K.bin
deleted file mode 100644
index df437f42c808d41dec5d543d60ce94c8cb8a044a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4096
zcmZQzWMXDvWn<^y<l^Sx<>MC+6cQE@6%&_`l#-T_m6KOcR8m$^Ra4i{)Y8_`)zddH
zG%_|ZH8Z!cw6eCbwX=6{baHlab#wRd^z!!c_45x13<?ej4GWKmjEatljf+o6OiE5k
zO-s+n%*xKm&C4$+EGjN3Ei136tg5c5t*dWnY-(<4ZENr7?CS36?dzW~anj@|Q>RUz
zF>}`JIdkXDU$Ah|;w4L$Enl&6)#^2C*R9{Mant54TeofBv2)k%J$v`<KXCBS;Uh<n
z9Y1mM)af&4&z-+;@zUihSFc^aar4&gJ9qEhfAH|p<0ns_J%91?)$2EJ-@X6v@zduo
zU%!3-@$=X3KY#!IANBue{Ew#p(fmJJ{*9LZqxIit{Xg3N8EyZKwtq+4|D*k%(f;2^
H=>Gx$V6OOT

diff --git a/QDMA/windows/apps/dma-rw/dma_rw.cpp b/QDMA/windows/apps/dma-rw/dma_rw.cpp
deleted file mode 100644
index 21406e5..0000000
--- a/QDMA/windows/apps/dma-rw/dma_rw.cpp
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "dma_rw.hpp"
-#include "version.h"
-
-cli_cmd cmd;
-
-int qdma_device::qdma_read(void )
-{
-    cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-    if (!cmd.data) {
-        throw std::runtime_error("Error allocating memory" + get_last_win_err_msg());
-    }
-
-    switch (cmd.node) {
-    case devnode_sel::control:
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(control_bar_.h, static_cast<LONG>(cmd.addr), nullptr, FILE_BEGIN)) {
-            throw runtime_error("SetFilePointer failed: " + std::to_string(GetLastError()));
-        }
-        if (!ReadFile(control_bar_.h, cmd.data, cmd.size, &cmd.size, NULL)) {
-            throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-        print_bytes(cmd.addr, cmd.data, cmd.size);
-        break;
-
-    case devnode_sel::user:
-        if (false == dgen.read(cmd.data, cmd.addr, cmd.size)) {
-            throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-        print_bytes(cmd.addr, cmd.data, cmd.size);
-        break;
-
-    case devnode_sel::queue_mm:
-        qopen(cmd.qid, true);
-
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(queue_.h, static_cast<LONG>(cmd.addr), nullptr, FILE_BEGIN)) {
-            throw runtime_error("SetFilePointer failed: " + std::to_string(GetLastError()));
-        }
-        if (!ReadFile(queue_.h, cmd.data, cmd.size, &cmd.size, NULL)) {
-            throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-
-        if (TRUE == cmd.binary)
-            print_bytes_binary(cmd.data, cmd.size);
-        else
-            print_bytes(cmd.addr, cmd.data, cmd.size);
-
-        qclose();
-
-        break;
-
-    case devnode_sel::queue_st:
-        {
-            DWORD packet_size;
-            DWORD packet_cnt;
-            DWORD remain_size = cmd.size;
-            DWORD rxd_size = 0;
-            DWORD buf_idx = 0;
-            bool  pkt_generate = true;
-            bool  last_pkt_generate = true;
-
-            qopen(cmd.qid, false);
-            do {
-                if (remain_size >= ST_C2H_MAX_PACK_SIZE_CHUNK) {
-                    packet_cnt = remain_size / ST_C2H_MAX_PACK_SIZE_CHUNK;
-                    packet_size = ST_C2H_MAX_PACK_SIZE_CHUNK;
-                }
-                else {
-                    if (last_pkt_generate) {
-                        pkt_generate = true;
-                        last_pkt_generate = false;
-                    }
-                    packet_cnt = 1;
-                    packet_size = remain_size;
-                }
-
-                if (cmd.size == 0x0) {
-                    cout << "Initiating Zero Byte Read\n";
-                }
-
-                if (pkt_generate) {
-                    dgen.reset_pkt_ctrl();
-                    dgen.configure_c2h(cmd.qid + qbase, packet_size, packet_cnt);
-                    dgen.generate_packets();
-                    pkt_generate = false;
-                }
-
-                if (!ReadFile(queue_.h, &cmd.data[buf_idx], (packet_size * packet_cnt), &rxd_size, NULL)) {
-                    throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-                }
-
-                buf_idx = buf_idx + rxd_size;
-                remain_size = remain_size - rxd_size;
-
-                if (cmd.size == 0x0) {
-                    cout << "ZERO Byte Read Successful\n";
-                }
-            } while (remain_size);
-            qclose();
-
-            if (TRUE == cmd.binary)
-                print_bytes_binary(cmd.data, cmd.size);
-            else
-                print_bytes(cmd.addr, cmd.data, cmd.size);
-        }
-
-        break;
-
-    default:
-        return 1;
-    }
-
-    if (cmd.data) _aligned_free(cmd.data);
-    return 0;
-}
-
-int qdma_device::qdma_write(void )
-{
-    switch (cmd.node) {
-    case devnode_sel::control:
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(control_bar_.h, static_cast<LONG>(cmd.addr), nullptr, FILE_BEGIN)) {
-            throw runtime_error("SetFilePointer failed: " + std::to_string(GetLastError()));
-        }
-        if (!WriteFile(control_bar_.h, cmd.data, cmd.size, &cmd.size, NULL)) {
-            throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-        break;
-
-    case devnode_sel::user:
-        if (false == dgen.write(cmd.data, cmd.addr, cmd.size)) {
-            throw std::runtime_error("Failed to read from device! " + get_last_win_err_msg());
-        }
-        break;
-
-    case devnode_sel::queue_mm:
-        qopen(cmd.qid, true);
-
-        if (cmd.data == nullptr && false == cmd.file.empty()) {
-            read_file_option();
-        }
-
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(queue_.h, static_cast<LONG>(cmd.addr), nullptr, FILE_BEGIN)) {
-            throw runtime_error("SetFilePointer failed: " + std::to_string(GetLastError()));
-        }
-        if (!WriteFile(queue_.h, cmd.data, cmd.size, &cmd.size, NULL)) {
-            throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-        }
-
-        qclose();
-
-        break;
-
-    case devnode_sel::queue_st:
-    {
-        qopen(cmd.qid, false);
-        aligned_vector<uint16_t> wr_buffer(cmd.size);
-        iota(wr_buffer.begin(), wr_buffer.end(), static_cast<uint16_t>(0)); /* 0, 1, 2, 3, 4 ... */
-        dgen.reset_h2c();
-
-        if (cmd.size == 0x0) {
-            cout <<"Initiating Zero Byte Write\n";
-        }
-
-        if (!WriteFile(queue_.h, wr_buffer.data(), cmd.size, &cmd.size, NULL)) {
-            throw std::runtime_error("Failed to write to device! " + get_last_win_err_msg());
-        }
-
-        if (true == dgen.check_h2c(cmd.qid + qbase))
-            cout << "Data generator returned SUCCESS for received data" << endl;
-        else
-            throw std::runtime_error("Data generator reported error for received data!");
-
-        if (cmd.size == 0x0) {
-            cout << "ZERO Byte Write Successful\n";
-        }
-
-        qclose();
-        break;
-    }
-    default:
-        return 1;
-    }
-
-    if (cmd.data) _aligned_free(cmd.data);
-    return 0;
-}
-
-int qdma_device::qdma_interrupt(void)
-{
-    switch (cmd.node) {
-    case devnode_sel::user:
-        if (false == dgen.generate_user_interrupt(cmd.fun_no)) {
-            throw std::runtime_error("Failed to generate user interrupt from device! " + get_last_win_err_msg());
-        }
-        break;
-
-    default:
-        throw std::runtime_error("Can not generate user interrupt for wrong target! " + get_last_win_err_msg());
-    }
-
-    return 0;
-}
-
-static int is_printable(char c)
-{
-    /* anything below ASCII code 32 is non-printing, 127 is DELETE */
-    if (c < 32 || c == 127) {
-        return FALSE;
-    }
-    return TRUE;
-}
-
-static void print_bytes_binary(BYTE* data, size_t length)
-{
-    FILE* output = stdout;
-
-    if (false == cmd.file.empty()) {
-        fopen_s(&output, cmd.file.data(), "wb");
-    }
-
-    fwrite(data, sizeof(BYTE), length, output);
-
-    if (false == cmd.file.empty()) {
-        fclose(output);
-    }
-}
-
-static void print_bytes(size_t addr, BYTE* data, size_t length)
-{
-    FILE* output = stdout;
-
-    if (false == cmd.file.empty()) {
-        fopen_s(&output, cmd.file.data(), "wb");
-    }
-
-    /* formatted output */
-    for (int row = 0; row < (int)(length / 16 + ((length % 16) ? 1 : 0));
-        row++) {
-
-        /* Print address */
-        fprintf(output, "0x%04zX:  ", addr + row * 16);
-
-        /* Print bytes */
-        int column;
-        for (column = 0; column < (int)min(16, length - (row * 16));
-            column++) {
-            fprintf(output, "%02x ", data[(row * 16) + column]);
-        }
-        for (; column < 16; column++) {
-            fprintf(output, "   ");
-        }
-
-        /* Print gutter */
-        fprintf(output, "    ");
-
-        /* Print characters */
-        for (column = 0; column < (int)min(16, length - (row * 16));
-            column++) {
-            fprintf(output, "%c", is_printable(data[(row * 16) + column]) ?
-                (data[(row * 16) + column]) : '.');
-        }
-        for (; column < 16; column++) {
-            fprintf(output, " ");
-        }
-        fprintf(output, "\n");
-    }
-
-    if (false == cmd.file.empty()) {
-        fclose(output);
-    }
-}
-
-static int read_file_option(void)
-{
-    FILE* inputFile;
-    if (fopen_s(&inputFile, cmd.file.data(), "rb") != 0) {
-        fprintf(stderr, "Could not open file <%s>\n", cmd.file.data());
-        return 1;
-    }
-
-    /* determine file size */
-    if (cmd.size == 0) {
-        fseek(inputFile, 0, SEEK_END);
-        fpos_t fpos;
-        fgetpos(inputFile, &fpos);
-        fseek(inputFile, 0, SEEK_SET);
-        cmd.size = (DWORD)fpos;
-    }
-
-    cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-    if (!cmd.data) {
-        fprintf(stderr, "Error allocating %ld bytes of memory, error code: %ld\n", cmd.size, GetLastError());
-        return 1;
-    }
-    cmd.size = (DWORD)fread(cmd.data, 1, cmd.size, inputFile);
-
-    fclose(inputFile);
-    return 0;
-}
-
-static void help(void)
-{
-    cout << "dma-rw usage:\n";
-    cout << "dma-rw -v  : prints the version information\n\n";
-    cout << "dma-rw qdma<N> <DEVNODE> <read|write> <ADDR> [OPTIONS] [DATA]\n\n";
-    cout << "- qdma<N>   : unique qdma device name (<N> is BBDDF where BB -> PCI Bus No, DD -> PCI Dev No, F -> PCI Fun No)\n";
-    cout << "- DEVNODE   : One of: control | user | queue_mm_ | queue_st_*\n";
-    cout << "              where the * is a numeric wildcard (0 - N) for queue.\n";
-    cout << "- ADDR      : The target offset address of the read/write operation.\n";
-    cout << "              Applicable only for control, user, queue_mm device nodes.\n";
-    cout << "              Can be in hex or decimal.\n";
-    cout << "- OPTIONS   : \n";
-    cout << "              -a set alignment requirement for host-side buffer (default: PAGE_SIZE)\n";
-    cout << "              -b open file as binary\n";
-    cout << "              -f use contents of file as input or write output into file.\n";
-    cout << "              -l length of data to read/write (default: 4 bytes or whole file if '-f' flag is used)\n";
-    cout << "- DATA      : Space separated bytes (big endian) in decimal or hex, \n";
-    cout << "              e.g.: 17 34 51 68\n";
-    cout << "              or:   0x11 0x22 0x33 0x44\n";
-}
-
-static void init_cmd(void)
-{
-    cmd.addr = 0x0;
-    cmd.alignment = 0;
-    cmd.binary = false;
-    cmd.node = devnode_sel::none;
-    cmd.op = op_sel::none;
-    cmd.bus_no = 0;
-    cmd.dev_no = 0;
-    cmd.fun_no = 0;
-    cmd.dev_name[0] = '\0';
-    cmd.qid = 0;
-    cmd.size = 4;
-    cmd.data = nullptr;
-}
-
-static BYTE* allocate_buffer(size_t size, size_t alignment)
-{
-    if (size == 0) {
-        size = 4;
-    }
-
-    if (alignment == 0) {
-        SYSTEM_INFO sys_info;
-        GetSystemInfo(&sys_info);
-        alignment = sys_info.dwPageSize;
-    }
-
-    return (BYTE*)_aligned_malloc(size, alignment);
-}
-
-int parse_command_line(const int argc, char* argv[])
-{
-    /*
-     * dma-rw pf <pf_number> <device> <read|write> <address> [OPTIONS] [DATA]
-     * 0       1      2          3          4           5        6...     n...
-     */
-    auto argidx = 1;
-
-    if (argc < 2) {
-        return 1;
-    }
-
-    if ((strcmp(argv[argidx], "-v") == 0) || (strcmp(argv[argidx], "-V") == 0)) {
-        printf("%s version %s\n", PROGNAME, VERSION);
-        printf("%s\n", COPYRIGHT);
-        exit(0);
-    }
-
-    init_cmd();
-
-    if (argc < 5) {
-        return 1;
-    }
-
-    if (strncmp(argv[argidx], "qdma", 4)) {
-        return 1;
-    }
-
-    strncpy_s(cmd.dev_name, DEV_NAME_MAX_SZ, argv[argidx], _TRUNCATE);
-    ++argidx;
-
-    if (strcmp(argv[argidx], "control") == 0) {
-        cmd.node = devnode_sel::control;
-    }
-    else if (strcmp(argv[argidx], "user") == 0) {
-        cmd.node = devnode_sel::user;
-
-        if (strcmp(argv[argidx + 1], "interrupt") == 0) {
-            cmd.op = op_sel::interrupt;
-            return 0;
-        }
-    }
-    else if (std::regex_match(argv[argidx], std::regex("queue_mm_[0-9]+"))) {
-        string qid_str{ argv[argidx] };
-        auto it = std::find(qid_str.begin(), qid_str.end(), '_');
-        it = it+4;
-        cout << *it << endl;
-        cmd.qid = std::stoul(string{ it, qid_str.end() });
-        cmd.node = devnode_sel::queue_mm;
-    }
-    else if (std::regex_match(argv[argidx], std::regex("queue_st_[0-9]+"))) {
-        string qid_str{ argv[argidx] };
-        auto it = std::find(qid_str.begin(), qid_str.end(), '_');
-        it = it + 4;
-        cmd.qid = std::stoul(string{ it, qid_str.end() });
-        cmd.node = devnode_sel::queue_st;
-    }
-    else {
-        return 1;
-    }
-    ++argidx;
-
-    if (strcmp(argv[argidx], "read") == 0) {
-        cmd.op = op_sel::read;
-    }
-    else if (strcmp(argv[argidx], "write") == 0) {
-        cmd.op = op_sel::write;
-    }
-    else
-        return 1;
-    ++argidx;
-
-    if (cmd.node == devnode_sel::queue_mm || cmd.node == devnode_sel::control || cmd.node == devnode_sel::user) {
-        cmd.addr = strtoul(argv[argidx], NULL, 0);
-        ++argidx;
-    }
-    else if (cmd.node == devnode_sel::queue_st) {
-        if (argv[argidx][0] != '-') {
-            return 1;
-        }
-    }
-
-    while ((argidx < argc) && ((argv[argidx][0] == '-') || (argv[argidx][0] == '/'))) {
-        switch (argv[argidx][1]) {
-        case 'l':
-            argidx++;
-            cmd.size = strtoul(argv[argidx], NULL, 0);
-            argidx++;
-            break;
-        case 'f':
-            argidx++;
-            cmd.file = _strdup(argv[argidx]);
-            argidx++;
-            break;
-        case 'a':
-            argidx++;
-            cmd.alignment = strtoul(argv[argidx], NULL, 0);
-            argidx++;
-            break;
-        case 'b':
-            cmd.binary = TRUE;
-            argidx++;
-            break;
-        case '?':
-        case 'h':
-        default:
-            return 1;
-        }
-    }
-
-    if (argidx != argc) {
-        if (cmd.op == op_sel::write &&
-            cmd.node != devnode_sel::queue_st) {
-            cmd.size = argc - argidx;
-            cmd.data = allocate_buffer(cmd.size, cmd.alignment);
-            if (cmd.data == nullptr) {
-                cout << "Could not allocate memory for data" << endl;
-                exit(1);
-            }
-
-            for (int byteidx = 0; argidx < argc; argidx++, byteidx++) {
-                cmd.data[byteidx] = (char)strtoul(argv[argidx], NULL, 0);
-            }
-        }
-        else
-            return 0;
-    }
-
-    return 0;
-}
-
-int __cdecl main(const int argc, char* argv[])
-{
-    try {
-        if (parse_command_line(argc, argv)) {
-            help();
-            if (cmd.data) _aligned_free(cmd.data);
-            exit(1);
-        }
-
-        auto dev_details = get_device_details(GUID_DEVINTERFACE_QDMA);
-        cout << "Found " << dev_details.size() << " QDMA devices\n";
-
-        device_details dev_info;
-        auto res = get_device(dev_details, cmd.dev_name, dev_info);
-        if (res == false) {
-            printf("Device name is not valid\n");
-            if (cmd.data) _aligned_free(cmd.data);
-            return 1;
-        }
-
-        cmd.bus_no = dev_info.bus_no;
-        cmd.dev_no = dev_info.dev_no;
-        cmd.fun_no = dev_info.fun_no;
-        qdma_device qdev(dev_info.device_path.c_str());
-
-        if (cmd.qid >= qdev.get_qmax()) {
-            if (cmd.data) _aligned_free(cmd.data);
-            cout << "Invalid qid provided." << endl;
-            return 1;
-        }
-
-        if (cmd.op == op_sel::read) {
-            qdev.qdma_read();
-        }
-        else if (cmd.op == op_sel::write) {
-            qdev.qdma_write();
-        }
-        else if (cmd.op == op_sel::interrupt) {
-            qdev.qdma_interrupt();
-        }
-    }
-    catch (const std::exception& e) {
-        if (cmd.data) _aligned_free(cmd.data);
-        cout << "Error: " << e.what() << '\n';
-    }
-}
diff --git a/QDMA/windows/apps/dma-rw/dma_rw.hpp b/QDMA/windows/apps/dma-rw/dma_rw.hpp
deleted file mode 100644
index 49185d6..0000000
--- a/QDMA/windows/apps/dma-rw/dma_rw.hpp
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include <array>
-#include <iomanip>
-#include <iostream>
-#include <regex>
-#include <string>
-#include <sstream>
-#include <numeric>
-
-#include "device_file.hpp"
-#include "qdma_driver_api.h"
-
-#pragma comment(lib, "setupapi.lib")
-
-using std::uint32_t;
-using std::string;
-using std::runtime_error;
-using std::cout;
-using namespace std;
-
-#define ST_C2H_MAX_PACK_SIZE_CHUNK      4096
-
-/* -----  common functions -----  */
-static constexpr uint32_t bit(uint64_t n) {
-    return (1ull << n);
-}
-
-static constexpr bool is_bit_set(uint64_t x, uint64_t n) {
-    return (x & bit(n)) == bit(n);
-}
-
-static constexpr uint64_t create_mask(uint64_t n, uint64_t l) {
-    return ((1ull << l) - 1ull) << n;
-}
-
-static constexpr uint32_t get_bits(uint32_t value, uint32_t bit_index, uint32_t len) {
-    return ((value & create_mask(bit_index, len)) >> bit_index);
-}
-/* ----- ----- */
-
-enum class devnode_sel {
-    control,
-    user,
-    queue_mm,
-    queue_st,
-    none
-};
-
-enum class op_sel {
-    read,
-    write,
-    interrupt,
-    none
-};
-
-struct cli_cmd {
-    op_sel op;
-    UINT8 bus_no;
-    UINT8 dev_no;
-    UINT8 fun_no;
-    char dev_name[DEV_NAME_MAX_SZ];
-    devnode_sel node;
-    BYTE *data;
-    LONG addr;
-    ULONG qid;
-    DWORD size;
-    string file;
-    size_t alignment;
-    BOOL binary;
-};
-
-template<typename T, size_t Alignment = 4096>
-struct aligned_allocator {
-
-    typedef T value_type;
-
-    aligned_allocator() noexcept {}
-
-    template<class U>
-    aligned_allocator(const aligned_allocator<U, Alignment>&) noexcept {}
-
-    template<class U>
-    bool operator==(const aligned_allocator<U>&) const noexcept
-    {
-        return true;
-    }
-    template<class U>
-    bool operator!=(const aligned_allocator<U>&) const noexcept
-    {
-        return false;
-    }
-
-    T* allocate(const std::size_t num) {
-        if (num == 0) {
-            return nullptr;
-        }
-
-        void* const ptr = _aligned_malloc(num * sizeof(T), Alignment);
-        if (ptr == nullptr) {
-            throw std::bad_alloc();
-        }
-        return static_cast<T*>(ptr);
-    }
-    void deallocate(T* const p, std::size_t) {
-        if (p) {
-            _aligned_free(p);
-        }
-    }
-
-    template<typename T2>
-    struct rebind {
-        typedef aligned_allocator<T2, Alignment> other;
-    };
-};
-
-template<typename T, size_t N = 4096>
-using aligned_vector = std::vector<T, aligned_allocator<T, N>>;
-
-template<typename Iter>
-void fill_pattern(Iter begin, Iter end) {
-    std::iota(begin, end, 0); // 0, 1, 2, 3, 4 ...
-}
-
-class data_generator {
-public:
-    using value_type = uint16_t;
-
-    explicit data_generator(const std::string& dev_path)
-    {
-        user_bar.open(dev_path + "\\user", GENERIC_WRITE | GENERIC_READ);
-    }
-
-    ~data_generator()
-    {
-        user_bar.close();
-    }
-
-    bool check_h2c(const uint32_t qid)
-    {
-        const auto match_reg = user_bar.read<uint32_t>(0x10);
-        const auto match_qid = get_bits(match_reg, 4, 28);      /* bits 4-31 = qid */
-        return (match_qid == qid) && is_bit_set(match_reg, 0);  /* bit 0 = match */
-    }
-
-    void reset_h2c()
-    {
-        user_bar.write<uint32_t>(0xC, 0x1);
-    }
-
-    void reset_pkt_ctrl()
-    {
-        user_bar.write<uint32_t>(0x8, 0x0);
-    }
-
-    void set_queue(const uint32_t qid)
-    {
-        user_bar.write<uint32_t>(0x0, qid);
-    }
-
-    void configure_c2h(const uint32_t qid, const uint32_t packet_size, const uint32_t num_packets)
-    {
-        printf("DGEN : PKT SIZE : %d, PKT CNT : %d\n", packet_size, num_packets);
-        set_queue(qid);
-        user_bar.write<uint32_t>(0x4, packet_size);
-        user_bar.write<uint32_t>(0x20, num_packets);
-    }
-
-    void generate_packets()
-    {
-        user_bar.write<uint32_t>(0x8, 0x2);
-    }
-
-    BOOL read(void *buff, LONG addr, DWORD size)
-    {
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(user_bar.h, static_cast<LONG>(addr), nullptr, FILE_BEGIN)) {
-            return FALSE;
-        }
-
-        return ReadFile(user_bar.h, buff, size, &size, NULL);
-    }
-
-    BOOL write(void *buff, LONG addr, DWORD size)
-    {
-        if (INVALID_SET_FILE_POINTER == SetFilePointer(user_bar.h, static_cast<LONG>(addr), nullptr, FILE_BEGIN)) {
-            return FALSE;
-        }
-
-        return WriteFile(user_bar.h, buff, size, &size, NULL);
-    }
-
-    BOOL generate_user_interrupt(UINT32 fun_id)
-    {
-        UINT32 val = 0x0;
-
-        val = 0x00;
-        user_bar.write<uint32_t>(0x98, val);
-
-        user_bar.write<uint32_t>(0x9C, val);
-
-        val = 0x0;
-        val = fun_id << 12;
-        val |= 0x1;
-        if (fun_id == 0)
-            val |= (1u << 4);
-        user_bar.write<uint32_t>(0x94, val);
-
-        return TRUE;
-    }
-
-private:
-    device_file user_bar;
-};
-
-class qdma_device {
-public:
-    explicit qdma_device(const char* device_path) : dgen(device_path)
-    {
-        using namespace std::string_literals;
-        dev_path = device_path;
-        control_bar_.open(dev_path + "\\control"s, GENERIC_READ | GENERIC_WRITE);
-        mgmt.open(dev_path + "\\mgmt"s, GENERIC_READ | GENERIC_WRITE);
-        get_qstats();
-    }
-
-    ~qdma_device()
-    {
-        control_bar_.close();
-        mgmt.close();
-    }
-
-    void get_qstats(void)
-    {
-        struct qstat_out qstats_info = { 0 };
-        try {
-            mgmt.ioctl(IOCTL_QDMA_GET_QSTATS, NULL, 0, &qstats_info, sizeof(qstats_info));
-            qbase = qstats_info.qbase;
-            qmax = qstats_info.qmax;
-        }
-        catch (const std::exception& e) {
-            cout << "IOCTL Failed for qstats " << e.what() << '\n';
-        }
-    }
-
-    unsigned int get_qmax()
-    {
-        return qmax;
-    }
-
-    int qopen(ULONG qid, bool is_mm)
-    {
-        if (true == is_mm)
-            queue_.open(dev_path + "\\queue_"s + to_string(qid), GENERIC_READ | GENERIC_WRITE);
-        else
-            queue_.open(dev_path + "\\st_"s + to_string(qid), GENERIC_READ | GENERIC_WRITE);
-
-        return 0;
-    }
-
-    void qclose(void)
-    {
-        queue_.close();
-    }
-
-    int qdma_read();
-    int qdma_write();
-    int qdma_interrupt(void);
-
-private:
-    const char* dev_path;
-    device_file control_bar_;
-    data_generator dgen;
-    device_file queue_;
-    device_file mgmt;
-    unsigned int qbase;
-    unsigned int qmax;
-};
-
-static BYTE* allocate_buffer(size_t size, size_t alignment);
-static void print_bytes(size_t addr, BYTE* data, size_t length);
-static int read_file_option(void);
-static void print_bytes_binary(BYTE* data, size_t length);
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj b/QDMA/windows/apps/dma-rw/dma_rw.vcxproj
deleted file mode 100644
index 79419da..0000000
--- a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="dma_rw.hpp" />
-    <ClInclude Include="version.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dma_rw.cpp" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F7C376CA-92F6-4484-B737-8670222CE79F}</ProjectGuid>
-    <TemplateGuid>{504102d4-2172-473c-8adf-cd96e308f257}</TemplateGuid>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
-    <Configuration>Debug</Configuration>
-    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
-    <RootNamespace>qdma_rw</RootNamespace>
-    <WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
-    <ProjectName>dma-rw</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsApplicationForDrivers10.0</PlatformToolset>
-    <ConfigurationType>Application</ConfigurationType>
-    <DriverTargetPlatform>Universal</DriverTargetPlatform>
-    <CharacterSet>NotSet</CharacterSet>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(NETFXKitsDir)Lib\um\x64</LibraryPath>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\bin\</OutDir>
-    <ApiValidator_Enable>false</ApiValidator_Enable>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>_DEBUG;WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>_WIN64;_AMD64_;AMD64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <AdditionalIncludeDirectories>$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;$(SolutionDir)\apps\common\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <IgnoreSpecificDefaultLibraries />
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <PreprocessorDefinitions>WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP;WINAPI_PARTITION_DESKTOP=1;WINAPI_PARTITION_SYSTEM=1;WINAPI_PARTITION_APP=1;WINAPI_PARTITION_PC_APP=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(SolutionDir)\apps\common\include;$(SolutionDir)\sys\drv\include;$(SolutionDir)\sys\libqdma\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>%(AdditionalDependencies);onecoreuap.lib</AdditionalDependencies>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.filters b/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.filters
deleted file mode 100644
index 090c753..0000000
--- a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.filters
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="dma_rw.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="dma_rw.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.user b/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.user
deleted file mode 100644
index be25078..0000000
--- a/QDMA/windows/apps/dma-rw/dma_rw.vcxproj.user
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup />
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/apps/dma-rw/version.h b/QDMA/windows/apps/dma-rw/version.h
deleted file mode 100644
index adae316..0000000
--- a/QDMA/windows/apps/dma-rw/version.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#ifndef __QDMARW_VERSION_H
-#define __QDMARW_VERSION_H
-
-#define PROGNAME "dma-rw"
-#define VERSION "2020.2.0"
-#define COPYRIGHT "Copyright (c) 2020 Xilinx Inc."
-
-#endif /*__QDMARW_VERSION_H*/
diff --git a/QDMA/windows/sys/drv/include/qdma_driver_api.h b/QDMA/windows/sys/drv/include/qdma_driver_api.h
deleted file mode 100644
index e4d12cf..0000000
--- a/QDMA/windows/sys/drv/include/qdma_driver_api.h
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef QDMA_DRIVER_API_H_
-#define QDMA_DRIVER_API_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <basetsd.h>
-#include <pshpack8.h>
-
-/**
- * Define an Interface Guid so that app can find the device and talk to it.
- */
-#include <guiddef.h>
-
-typedef int BOOL;
-
-#ifdef DEFINE_GUID
-DEFINE_GUID (GUID_DEVINTERFACE_QDMA,
-    0x80f90fa8,0x0cea,0x43c5,0x81,0xce,0x4b,0xf9,0x4a,0xa1,0x4c,0x72);
-/** {80f90fa8-0cea-43c5-81ce-4bf94aa14c72} */
-#endif
-
-/** Interface File Names exposed by driver */
-#define QDMA_FILE_USER              L"\\user"
-#define QDMA_FILE_CONTROL           L"\\control"
-#define QDMA_FILE_BYPASS            L"\\bypass"
-#define QDMA_FILE_DMA_QUEUE         L"\\queue_"
-#define QDMA_FILE_DMA_ST_QUEUE      L"\\st_"
-#define QDMA_FILE_DMA_MGMT          L"\\mgmt"
-
-#define QDMA_CSR_SZ                 16U
-#define QDMA_MAX_UDD_DATA_LEN       64U
-#define QDMA_VERSION_INFO_LENGTH    32U
-
-/** Queue Direction */
-enum queue_direction {
-    QUEUE_DIR_H2C = 0,
-    QUEUE_DIR_C2H
-};
-
-/** Descriptor Type */
-enum descriptor_type {
-    RING_DESC = 0,
-    CMPT_DESC
-};
-
-/** Completion descriptor size */
-enum cmpt_desc_sz {
-    CMPT_DESC_SZ_8B = 0,
-    CMPT_DESC_SZ_16B,
-    CMPT_DESC_SZ_32B,
-    CMPT_DESC_SZ_64B,
-    CMPT_DESC_SZ_MAX
-};
-
-/** Trigger mode (to be used for ST Queues) */
-enum trig_mode {
-    TRIG_MODE_DISABLE = 0,
-    TRIG_MODE_EVERY,
-    TRIG_MODE_USER_COUNT,
-    TRIG_MODE_USER,
-    TRIG_MODE_USER_TIMER,
-    TRIG_MODE_USER_TIMER_COUNT,
-    TRIG_MODE_MAX
-};
-
-enum ring_type {
-    RING_TYPE_H2C = 0,
-    RING_TYPE_C2H,
-    RING_TYPE_CMPT
-};
-
-/** Device IOCTL Commands */
-enum commands {
-    CMD_CSR_DUMP,
-    CMD_DEVINFO,
-    CMD_QUEUE_ADD,
-    CMD_QUEUE_START,
-    CMD_QUEUE_STOP,
-    CMD_QUEUE_DELETE,
-    CMD_QUEUE_DUMP_STATE,
-    CMD_QUEUE_READ_UDD,
-    CMD_QUEUE_DUMP_DESC,
-    CMD_QUEUE_DUMP_CTX,
-    CMD_QUEUE_CMPT_READ,
-    CMD_INTRING_DUMP,
-    CMD_REG_DUMP,
-    CMD_QUEUE_NO_COPY,
-    CMD_SET_QMAX,
-    CMD_GET_QSTATS,
-    CMD_REG_INFO,
-    CMD_OP_MAX
-};
-
-/** Structure which holds the CSR registers information
- *  IOCTL Command :
- *          IOCTL_QDMA_CSR_DUMP
- */
-struct csr_conf_out{
-    UINT32 ring_sz[QDMA_CSR_SZ];
-    UINT32 c2h_timer_cnt[QDMA_CSR_SZ];
-    UINT32 c2h_th_cnt[QDMA_CSR_SZ];
-    UINT32 c2h_buff_sz[QDMA_CSR_SZ];
-    UINT32 wb_interval;
-};
-
-/** Structure which holds the Queue configuration parameters
- *  Valid IOCTL Commands:
- *          IOCTL_QDMA_QUEUE_ADD
- *          IOCTL_QDMA_QUEUE_START
- *          IOCTL_QDMA_QUEUE_STOP
- *          IOCTL_QDMA_QUEUE_DELETE
- */
-struct queue_conf_in {
-    UINT16				qid;
-    BOOL                is_st;
-    UINT8				h2c_ring_sz_index;
-    UINT8				c2h_ring_sz_index;
-    UINT8				c2h_buff_sz_index;
-    UINT8				c2h_th_cnt_index;
-    UINT8				c2h_timer_cnt_index;
-    enum cmpt_desc_sz   compl_sz;
-    enum trig_mode      trig_mode;
-    UINT8				sw_desc_sz;
-    BOOL                desc_bypass_en;
-    BOOL                pfch_en;
-    BOOL                pfch_bypass_en;
-    BOOL                cmpl_ovf_dis;
-    BOOL                en_mm_cmpl;
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_STATE
- */
-struct queue_state_in {
-    UINT16 qid;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_STATE
- */
-struct queue_state_out {
-    char state[20];
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_DEVINFO
-*/
-struct device_info_out {
-    struct version_info {
-        char qdma_rtl_version_str[QDMA_VERSION_INFO_LENGTH];
-        char qdma_vivado_release_id_str[QDMA_VERSION_INFO_LENGTH];
-        char qdma_device_type_str[QDMA_VERSION_INFO_LENGTH];
-        char qdma_versal_ip_type_str[QDMA_VERSION_INFO_LENGTH];
-        char qdma_sw_version[QDMA_VERSION_INFO_LENGTH];
-    }ver_info;
-    UINT32	num_pfs;
-    UINT32	num_qs;
-    BOOL	flr_present;
-    BOOL	st_en;
-    BOOL	mm_en;
-    BOOL	mm_cmpl_en;
-    BOOL	mailbox_en;
-    BOOL	debug_mode;
-    UINT8	desc_eng_mode;
-    UINT32	num_mm_channels;
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_READ_UDD
-*/
-struct cmpt_udd_info_in {
-    UINT16 qid;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_READ_UDD
-*/
-struct cmpt_udd_info_out {
-    UINT64 length;
-    UINT8  buffer[QDMA_MAX_UDD_DATA_LEN];
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_DESC
-*/
-struct desc_dump_info_in {
-    UINT16			        qid;
-    enum queue_direction    dir;
-    enum descriptor_type    desc_type;
-    UINT32                  desc_start;
-    UINT32                  desc_end;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_DESC
-*/
-struct desc_dump_info_out {
-    size_t    desc_sz;
-    size_t    data_sz;
-    UINT8     pbuffer[1];
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_CTX
-*/
-struct ctx_dump_info_in {
-    UINT16          qid;
-    enum ring_type  type;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_DUMP_CTX
-*/
-struct ctx_dump_info_out {
-    size_t  ret_sz;
-    char    pbuffer[1];
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_CMPT_READ
-*/
-struct cmpt_data_info_in {
-    UINT16  qid;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_QUEUE_CMPT_READ
-*/
-struct cmpt_data_info_out {
-    size_t  ret_len;
-    size_t  cmpt_desc_sz;
-    UINT8 pbuffer[1];
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_INTRING_DUMP
- */
-struct intring_info_in {
-    UINT32  vec_id;
-    UINT32  start_idx;
-    UINT32  end_idx;
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_SET_QMAX
- */
-struct qmax_in {
-    UINT32  qmax;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_INTRING_DUMP
- */
-struct intring_info_out {
-    size_t  ret_len;
-    size_t  ring_entry_sz;
-    UINT8   pbuffer[1];
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_REG_DUMP
- */
-struct regdump_info_out {
-    size_t  ret_len;
-    char   pbuffer[1];
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_GET_QSTATS
- */
-struct qstat_out {
-    UINT32 qbase;
-    UINT32 qmax;
-    UINT32 active_h2c_queues;
-    UINT32 active_c2h_queues;
-    UINT32 active_cmpt_queues;
-};
-
-/** Structure to be passed as input parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_REG_INFO
- */
-struct reg_info_in {
-    UINT32  bar_no;
-    UINT32  address;
-    UINT32  reg_cnt;
-};
-
-/** Structure to be passed as output parameter for
- *  IOCTL Command :
- *          IOCTL_QDMA_REG_INFO
- */
-struct reg_info_out {
-    size_t  ret_len;
-    char    pbuffer[1];
-};
-
-struct csr_conf_data {
-    struct csr_conf_out *out;
-};
-
-struct queue_conf {
-    struct queue_conf_in in;
-};
-
-struct queue_active_state {
-    struct queue_state_in   in;
-    struct queue_state_out  *out;
-};
-
-struct device_info {
-    struct device_info_out  *out;
-};
-
-struct cmpt_udd_info {
-    struct cmpt_udd_info_in     in;
-    struct cmpt_udd_info_out    *out;
-};
-
-struct desc_dump_info {
-    struct desc_dump_info_in    in;
-    struct desc_dump_info_out   *out;
-};
-
-struct ctx_dump_info {
-    struct ctx_dump_info_in     in;
-    struct ctx_dump_info_out    *out;
-};
-
-struct cmpt_data_info {
-    struct cmpt_data_info_in    in;
-    struct cmpt_data_info_out   *out;
-};
-
-struct intring_info {
-    struct intring_info_in      in;
-    struct intring_info_out     *out;
-};
-
-struct regdump_info {
-    struct regdump_info_out     *out;
-};
-
-struct qmax_info {
-    struct qmax_in              in;
-};
-
-struct qstats_info {
-    struct qstat_out            *out;
-};
-
-struct reg_info {
-    struct reg_info_in      in;
-    struct reg_info_out* out;
-};
-
-/** Union that consolidates parameters for all ioctl commands */
-union ioctl_cmd {
-    struct csr_conf_data        csr;
-    struct queue_conf           q_conf;
-    struct queue_active_state   q_state;
-    struct device_info          dev_info;
-    struct cmpt_udd_info        udd_info;
-    struct desc_dump_info       desc_info;
-    struct ctx_dump_info        ctx_info;
-    struct cmpt_data_info       cmpt_info;
-    struct intring_info         int_ring_info;
-    struct regdump_info         reg_dump_info;
-    struct qmax_info            qmax_info;
-    struct qstats_info          qstats_info;
-    struct reg_info             reg_info;
-};
-
-#define QDMA_IOCTL(index) CTL_CODE(FILE_DEVICE_UNKNOWN, index, METHOD_BUFFERED, FILE_ANY_ACCESS)
-
-#define IOCTL_QDMA_CSR_DUMP             QDMA_IOCTL(CMD_CSR_DUMP)
-#define IOCTL_QDMA_DEVINFO              QDMA_IOCTL(CMD_DEVINFO)
-#define IOCTL_QDMA_QUEUE_ADD            QDMA_IOCTL(CMD_QUEUE_ADD)
-#define IOCTL_QDMA_QUEUE_START          QDMA_IOCTL(CMD_QUEUE_START)
-#define IOCTL_QDMA_QUEUE_STOP           QDMA_IOCTL(CMD_QUEUE_STOP)
-#define IOCTL_QDMA_QUEUE_DELETE         QDMA_IOCTL(CMD_QUEUE_DELETE)
-#define IOCTL_QDMA_QUEUE_DUMP_STATE     QDMA_IOCTL(CMD_QUEUE_DUMP_STATE)
-#define IOCTL_QDMA_QUEUE_READ_UDD       QDMA_IOCTL(CMD_QUEUE_READ_UDD)
-#define IOCTL_QDMA_QUEUE_DUMP_DESC      QDMA_IOCTL(CMD_QUEUE_DUMP_DESC)
-#define IOCTL_QDMA_QUEUE_DUMP_CTX       QDMA_IOCTL(CMD_QUEUE_DUMP_CTX)
-#define IOCTL_QDMA_QUEUE_CMPT_READ      QDMA_IOCTL(CMD_QUEUE_CMPT_READ)
-#define IOCTL_QDMA_INTRING_DUMP         QDMA_IOCTL(CMD_INTRING_DUMP)
-#define IOCTL_QDMA_REG_DUMP             QDMA_IOCTL(CMD_REG_DUMP)
-#define IOCTL_QDMA_QUEUE_NO_COPY        QDMA_IOCTL(CMD_QUEUE_NO_COPY)
-#define IOCTL_QDMA_SET_QMAX             QDMA_IOCTL(CMD_SET_QMAX)
-#define IOCTL_QDMA_GET_QSTATS           QDMA_IOCTL(CMD_GET_QSTATS)
-#define IOCTL_QDMA_REG_INFO             QDMA_IOCTL(CMD_REG_INFO)
-
-#include <poppack.h>
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* QDMA_DRIVER_API_H_ */
diff --git a/QDMA/windows/sys/drv/qdma.inf b/QDMA/windows/sys/drv/qdma.inf
deleted file mode 100644
index a7b5ac1..0000000
--- a/QDMA/windows/sys/drv/qdma.inf
+++ /dev/null
@@ -1,325 +0,0 @@
-;
-; Copyright (C) 2020 Xilinx, Inc
-;
-; Licensed under the Apache License, Version 2.0 (the "License"). You may
-; not use this file except in compliance with the License. You may obtain
-; a copy of the License at
-;
-;     http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-; WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-; License for the specific language governing permissions and limitations
-; under the License.
-
-;
-; QDMA.inf
-;
-
-[Version]
-Signature			= "$WINDOWS NT$"
-Class				= %ClassName%
-ClassGuid			= {a3a4c1ce-5a80-452c-9b51-a98edd3378d1}
-Provider			= %ManufacturerName%
-CatalogFile			= QDMA.cat
-DriverVer			= 10/15/2020, 2020.2.0.0 ;Format : year.quarter_no.drv_ver.libqdma_ver
-DriverPackageType	= PlugAndPlay
-
-[DestinationDirs]
-DefaultDestDir = 12
-QDMA_Device_CoInstaller_CopyFiles = 11
-
-; ================= Class section =============================================
-
-[ClassInstall32]
-Addreg=SampleClassReg
-
-[SampleClassReg]
-HKR,,,0,%ClassName%
-HKR,,Icon,,-5
-
-[SourceDisksNames]
-1 = %DiskName%,,,""
-
-[SourceDisksFiles]
-QDMA.sys  = 1,,
-WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
-
-; ================= Install Section ===========================================
-
-[Manufacturer]
-%ManufacturerName%=Standard,NT$ARCH$
-
-[Standard.NT$ARCH$]
-; DisplayName           Section			DeviceId
-; -----------           -------			--------
-; GEN 1
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9011 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9111 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9211 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9311 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9012 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9112 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9212 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9312 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9014 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9114 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9214 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9314 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9018 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9118 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9218 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9318 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_901f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_911f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_921f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_931f ; PF 3
-
-; GEN 2
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9021 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9121 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9221 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9321 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9022 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9122 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9222 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9322 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9024 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9124 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9224 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9324 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9028 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9128 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9228 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9328 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_902f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_912f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_922f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_932f ; PF 3
-
-; GEN 3
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9031 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9131 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9231 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9331 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9032 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9132 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9232 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9332 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9034 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9134 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9234 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9334 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9038 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9138 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9238 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9338 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_903f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_913f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_923f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_933f ; PF 3
-
-; GEN 4
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9041 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9141 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9241 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9341 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9042 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9142 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9242 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9342 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9044 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9144 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9244 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9344 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9048 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9148 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9248 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_9348 ; PF 3
-
-; Versal
-; GEN 1
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b011 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b111 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b211 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b311 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b012 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b112 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b212 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b312 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b014 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b114 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b214 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b314 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b018 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b118 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b218 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b318 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b01f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b11f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b21f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b31f ; PF 3
-
-; GEN 2
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b021 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b121 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b221 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b321 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b022 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b122 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b222 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b322 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b024 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b124 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b224 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b324 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b028 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b128 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b228 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b328 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b02f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b12f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b22f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b32f ; PF 3
-
-; GEN 3
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b031 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b131 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b231 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b331 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b032 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b132 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b232 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b332 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b034 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b134 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b234 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b334 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b038 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b138 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b238 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b338 ; PF 3
-; PCIe lane width x16
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b03f ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b13f ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b23f ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b33f ; PF 3
-
-; GEN 4
-; PCIe lane width x1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b041 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b141 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b241 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b341 ; PF 3
-; PCIe lane width x2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b042 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b142 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b242 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b342 ; PF 3
-; PCIe lane width x4
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b044 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b144 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b244 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b344 ; PF 3
-; PCIe lane width x8
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b048 ; PF 0
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b148 ; PF 1
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b248 ; PF 2
-%QDMA.DeviceDesc%=		QDMA_Device,	PCI\VEN_10ee&DEV_b348 ; PF 3
-
-[QDMA_Device.NT]
-CopyFiles=Drivers_Dir
-
-; MSI/MSI-X support
-[QDMA_Device.NT.HW]
-AddReg = QDMA_Device.EnableMSI
-
-[QDMA_Device.EnableMSI]
-HKR,"Interrupt Management",,0x00000010
-HKR,"Interrupt Management\MessageSignaledInterruptProperties",,0x00000010
-HKR,"Interrupt Management\MessageSignaledInterruptProperties",MSISupported,0x00010001,1
-HKR,"Interrupt Management\MessageSignaledInterruptProperties",MessageNumberLimit,0x00010001,32
-
-[Drivers_Dir]
-QDMA.sys
-
-; ================= Service installation ======================================
-
-[QDMA_Device.NT.Services]
-AddService = QDMA,%SPSVCINST_ASSOCSERVICE%, QDMA_Service_Inst
-
-; ================= QDMA driver install sections ==============================
-
-[QDMA_Service_Inst]
-DisplayName    = %QDMA.SVCDESC%
-ServiceType    = 1               ; SERVICE_KERNEL_DRIVER
-StartType      = 3               ; SERVICE_DEMAND_START
-ErrorControl   = 1               ; SERVICE_ERROR_NORMAL
-ServiceBinary  = %12%\QDMA.sys
-AddReg         = QDMA_Device_Inst.NT.Services.AddReg
-
-[QDMA_Device_Inst.NT.Services.AddReg]
-; Driver operation mode.
-HKR,Parameters,"DRIVER_MODE",0x00010001,0 ;set to 0 - hardware polling, 1 - Direct Interrupt, 2 - Indirect Interrupt (default is 0 - polling)
-; Config BAR Index
-HKR,Parameters,"CONFIG_BAR",0x00010001,0 ;set to either 0, 1 or 2 (default is 0)
-
-; ================= QDMA_Device Coinstaller installation ======================
-
-[QDMA_Device.NT.CoInstallers]
-AddReg=QDMA_Device_CoInstaller_AddReg
-CopyFiles=QDMA_Device_CoInstaller_CopyFiles
-
-[QDMA_Device_CoInstaller_AddReg]
-HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
-
-[QDMA_Device_CoInstaller_CopyFiles]
-WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
-
-[QDMA_Device.NT.Wdf]
-KmdfService =  QDMA, QDMA_wdfsect
-
-[QDMA_wdfsect]
-KmdfLibraryVersion = $KMDFVERSION$
-
-[Strings]
-SPSVCINST_ASSOCSERVICE = 0x00000002
-ManufacturerName = "Xilinx"
-ClassName = "Xilinx Drivers"
-DiskName = "QDMA Installation Disk"
-QDMA.DeviceDesc = "Xilinx PCIe Multi-Queue DMA"
-QDMA.SVCDESC = "QDMA Service"
diff --git a/QDMA/windows/sys/drv/qdma_generic.vcxproj b/QDMA/windows/sys/drv/qdma_generic.vcxproj
deleted file mode 100644
index 69b3ede..0000000
--- a/QDMA/windows/sys/drv/qdma_generic.vcxproj
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B446331B-DD9E-40DD-958A-8D7A1AACA454}</ProjectGuid>
-    <TemplateGuid>{497e31cb-056b-4f31-abb8-447fd55ee5a5}</TemplateGuid>
-    <TargetFrameworkVersion>
-    </TargetFrameworkVersion>
-    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
-    <Configuration>Debug</Configuration>
-    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
-    <RootNamespace>MDMA</RootNamespace>
-    <ProjectName>QDMA Reference Driver</ProjectName>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <TargetName>QDMA</TargetName>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WppEnabled>true</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">include\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <SupportJustMyCode>false</SupportJustMyCode>
-    </ClCompile>
-    <Inf />
-    <ResourceCompile />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WppEnabled>false</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">include\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-    </ClCompile>
-    <Inf />
-    <Inf />
-    <Inf />
-    <Inf />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <WppEnabled>true</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">source\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;$(ProjectDir)\source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <SupportJustMyCode>false</SupportJustMyCode>
-      <AdditionalOptions>$(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <Inf />
-    <ResourceCompile />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WppEnabled>false</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">source\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;$(ProjectDir)\source;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <AdditionalOptions>$(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <Inf />
-    <Inf />
-    <Inf />
-    <Inf />
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <FilesToPackage Include="$(TargetPath)" />
-  </ItemGroup>
-  <ItemGroup>
-    <Inf Include="qdma.inf" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="resource\Resource.aps" />
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="resource\Resource.rc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libqdma\libqdma.vcxproj">
-      <Project>{359143e6-933a-49cc-806c-c5376e1809a4}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\libqdma\include\qdma_exports.h" />
-    <ClInclude Include="..\libqdma\include\xversion.hpp" />
-    <ClInclude Include="include\qdma_driver_api.h" />
-    <ClInclude Include="source\device.h" />
-    <ClInclude Include="source\driver.h" />
-    <ClInclude Include="source\io_queue.h" />
-    <ClInclude Include="source\trace.h" />
-    <ClInclude Include="source\windows_common.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="source\device.cpp" />
-    <ClCompile Include="source\driver.cpp" />
-    <ClCompile Include="source\io_queue.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/drv/qdma_generic.vcxproj.filters b/QDMA/windows/sys/drv/qdma_generic.vcxproj.filters
deleted file mode 100644
index ce750f2..0000000
--- a/QDMA/windows/sys/drv/qdma_generic.vcxproj.filters
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-    <Filter Include="Driver Files">
-      <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier>
-      <Extensions>inf;inv;inx;mof;mc;</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <Inf Include="qdma.inf">
-      <Filter>Driver Files</Filter>
-    </Inf>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="resource\Resource.aps">
-      <Filter>Resource Files</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <ResourceCompile Include="resource\Resource.rc">
-      <Filter>Resource Files</Filter>
-    </ResourceCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="include\qdma_driver_api.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\device.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\driver.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\io_queue.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\trace.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\libqdma\include\qdma_exports.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\libqdma\include\xversion.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\windows_common.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="source\device.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\driver.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\io_queue.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/drv/qdma_generic.vcxproj.user b/QDMA/windows/sys/drv/qdma_generic.vcxproj.user
deleted file mode 100644
index a667f8f..0000000
--- a/QDMA/windows/sys/drv/qdma_generic.vcxproj.user
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <RemoveDriver>False</RemoveDriver>
-    <InstallMode>None</InstallMode>
-    <HardwareIdString />
-    <CommandLine />
-    <ScriptPath>C:\Program Files (x86)\Windows Kits\10\Testing\Tests\Utilities\DefaultDriverPackageInstallationTask.dll</ScriptPath>
-    <DbgengRemoteMachineName>XIRIPDSLAB20</DbgengRemoteMachineName>
-    <DbgengKernelMachineName>XIRIPDSLAB20</DbgengKernelMachineName>
-    <DeployFiles />
-    <ScriptName>Microsoft.DriverKit.DefaultDriverPackageInstallationClass.PerformDefaultDriverPackageInstallation</ScriptName>
-    <ScriptDeviceQuery />
-    <EnableVerifier>True</EnableVerifier>
-    <AllDrivers>False</AllDrivers>
-    <VerifyProjectOutput>True</VerifyProjectOutput>
-    <VerifyDrivers />
-    <VerifyFlags>133563</VerifyFlags>
-    <FrameWorkInteraction>FvOn</FrameWorkInteraction>
-    <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor>
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/drv/resource/Resource.aps b/QDMA/windows/sys/drv/resource/Resource.aps
deleted file mode 100644
index 0c3530ff98bfca8f73aa146fefa36be5a3b9ad6d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2984
zcmZQzU|>*SU|{(FAA&)AWZccbz@Wmwz~I3U&fo-A#|V|?lz=iAK5#NHcv{8ersgK4
z78S=N=A>36=B1>@6cpuWr6!jY$5dqIWad@q8W|WE#6-CGI>x&cWtOED73&%pni$1+
z2AIaf^u&YI#Dj$6(@Jx4Vmw?OUBKqV6qm<m<QJF3<fh~%#*}B~rR0|v$N0MVI>rR0
z7U!21C8z2YB{MKQ!f@{iurm!95bjk3izqS_K{XocWiT)@FvL3s1jqZiMufx%xd!`(
z206RNhdKI$x-u9V7&34o%RBq~`a1f#K&4F#3=9kzxKI`Ng#`KgKouB*<hhaMgCl)i
zVcJ2a^Dr>L995o~SCm=|b`fJ(aD13+P_U=JU%aQEn?HjggAfCwr;BrZaEN1wr!#|w
zuAwG_E(0T2FNl2nAM7;-1_n2ba5x2)LJo%z*N6~LKWCp%7gq*Du&fHh|NqFMMp#9S
z;i4e*3=AEN=xIbBoJb4=5Ml1gV8sx_kjs$Dkjs$7kjhZRP|Og+kjRk3kjhZOkjRk7
zkiwA45W`TwP{feWkj0S7kjzj5R#U-{$&ka4$&klT!Jx}v#9#o1F$@t5E)2d5jtub(
zE(}EsnG9u6Q*{{(7z`Oq7>pQV7(5vQ7)%-BG3<$ln-dRL9nX-)P|A?Qki!te;KAU^
z;K<;D<enIYVuo^tc!msye1>9%60l!V7;+gB8Dbd9!LCbT$Y&@AyVw`%vKWRUhE#@P
zhJ1!nh9ZV!hExVa20exh1_lOaaA*X8{hH2D#E{64%b>vE2KFgPhXR8JLj{8cgBgP+
zLkvSWiuno*-VB-0u(4p!V=x5!GmjyeA%~$98j7V1xo~$u+yJqc0i1_X^Rq5Iu9(2_
z%D{k}0t`{PMyOn41_nbj215q)gv!7mfsrQkFzn%H@O1I_W-tV0K6Dcd85kKE7#Ua?
zJYAd}{hVEW7>q#5JY5`}{DVRmj3JyL*N~t{1``O!)7{TM$d$nq!i#hbW-x;={rnls
zAuMMf|6o@J3kb)<)hB?#62!)v^BM4ETog%Xe~etufUFr?vBAIq@*ylk>w?3Ahk=2?
zgn@w}gu#^|f+2*#lfjR{nZbu4l);6;6{!qH&dbPUnHWL+keEi+ubi2eoKu>Ts-Ofb
zfRuQ-7#J9s37Q2`!N7oQ7D!_SGpt?_VEF$Z9Q6#y<v|5A$cJGJ!3^;XVGOPeK@7nR
zo(%pBehl$o|GF{wgHz*PmiPY{KykzXN)8|)2yG8yGB7Z(Ft9K%2r%SAxnSxB6G%re
zLkYNC$YV%{=PXZ#Jccxed<F)FEnqbU3?>W)43-QaI*Gx6fq}t_ftP`i!I>eSA(x>5
zTrO2I_<{3hD%k7@a2|z}Mmh`%3?LJe8T7z%O`x(EZkG!<?<a%ZP{2^akjaqGkOx+W
zY=#0u0E07wCqpWO0)sEO`~j)dWe8*_Wk>~MU1({dz!1cc%8&*w<x&|y`5mMOx$FZO
zZot67zzBCk7+7^NlHH&Z$bdnQ0fa$ieh7mU10&cMC1ACA;Ib0oV@C!B22}SFc0~$<
z0s|w14?`+LI@mN&XcjP3f<q#mA%md=Tmt4Zpo)RYJZA<?1_f~0Y{+1aW;1GNTQP7l
zFf#Z<%>=~<s4jt(pdep>>KX<HSXr#cP|Q%tPz(wphAMD8K}z2ghEi}%gYYo}nt!Pq
zKUNIf42%q@cB97<sEz~qUys2UDW(`0To^#<I*cKap$Hzsp!5ex(V#k*1zc)?>XST%
zVul=sM3i*L$+CfE3P!mMDGNXW17m^Od?35<wfR8ptS>0-Ld<p+s15Rm5xMP%*#-f%
z9Wt1Z)nK+AK<!Qu7GyP;brz_;sX<YLS>J%l)f23wm8+n#l!FbQ9!RJmmw%uVF$Aw3
TkP6f?6I5PSuz}j(*vm@**aH40

diff --git a/QDMA/windows/sys/drv/resource/Resource.rc b/QDMA/windows/sys/drv/resource/Resource.rc
deleted file mode 100644
index eee2360e5ee55d9476640e2054304c0d95020e92..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2038
zcmezWPoF`HftP`cL4iSwL4m=UA)ldup^~A9A(J7UA%mfWL4iSo!I?pmL4m=D!2paE
z7$O)l8FCmh8S)q^7<3pE7(5yB7?R<pAWZXN$Ye-nNM*=lC}v1yNMTT5C}qfFNMT52
zC}L1xC}GH8NM%r9aAYW8NMuNc@=*1FOb-LAFJ{PO$Y;m{yF-t`0PHT92}%s8x|A3+
z8T1$w7$O<+8A=%x7;+gB87krKQ((wr$OrqZ6zndDOEMXX859`Oz&-=HDwUxE?Dhh%
zN|0X_7?K(C8FCp4z<y5z`x&INoFNnJ7l=6^5meV;x<r8?pCO5%gdq_ehKTS=WPsQK
ziUE+CG^9{MHB*5hk)Z_cBZLVG3=jy4xe|r~1}g@A27QKdFw|p6L<(s=hJ1!1hI9sf
zux}8tRLr2y;KSg_;LPC4;KvZm;L4!OV8j3lahNSIT7e;yA&()4A(f#R9Ck$vsSJe-
zr3{%2AQmXLlNc%)KrStShFLO0B0~~bhXO+mLn1>t1IU-4w2;V<4%P)pB_#~`3<}_|
zQD7(sr^OO5FCCoPiW%}5(iln@${7;DdJyhOVF1Nq30OxGLn%WEo>Ye(o*<nH47f~y
zq&!fZD=;WAI5Gr-Q++Ul5`zMR6PWMG5Da!*ID;oc2!jWMKSL-(2t0-q7{VDG8G;ys
z7#tb=7(y648C=0;_%j57bDckfAA<{6rzZo54Km-K!3~@{{1_q`6d1f2Ji%%}IU*IB
z;vo45lu`@8Apwa8P`rXd50+9vVG2rv!3?S3{07N2h)_chi8OG^K&0kkh609EhGd3J
zaPCNEfW%!MLpnn#11R1=DL$PcpP>w#PxGKLr2y7d#E=V)6IkvA<uOnwf>H;l1Odr{
z@&PD*L1A2s6k^!Q3RJi1!By*nSs*_tgY8dd$YCf2moy3tHVmK~ng?~C9zzC$9auFs
zm3a&$P;~_i2$k5)RbtR%&|`>!k|5tCF%&YSfJ>VgG*`qhR6xyzg#^fSP`*$Cy9Htc
zsAL3{KzZPJ3S)3(2x5q5aAWXf@L_Oe2w{k12w-r9=5R<pM<>G=+!#U_;u%~Rf*8WU
zCM$zO0k^5a451881k8q*Y6Leoo*|eak|CHOgu#`;mnd6Y!0FwYA&9|~Apo5IL8%;M
zP6#*$fc&AvfLyOAFa$6-GkAhS!k3|xA%_8!Msyhh8A=&a!C05Ug~6A>kwJkWh#{3B
z4V?Nwbq%O2Q($lbmjaM92?=9dApy!)AfE&=_%S##_<%`Y23H1D*MVFJ$@{4FAF}PB
zS`d^Qh_@S*|2-Mp!Fd~GH!Q9}E<tyL5<?)=$9fFK43!MU3=n@o(hjJGLQVCM+A0@Z
MYwAH$A0*`i0G3TX6951J

diff --git a/QDMA/windows/sys/drv/source/device.cpp b/QDMA/windows/sys/drv/source/device.cpp
deleted file mode 100644
index fd900c0..0000000
--- a/QDMA/windows/sys/drv/source/device.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#define INITGUID
-
-#include "qdma_driver_api.h"
-#include "io_queue.h"
-#include "device.h"
-
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "device.tmh"
-#endif
-
-#ifdef ALLOC_PRAGMA
-#pragma alloc_text (PAGE, qdma_create_device)
-#pragma alloc_text (PAGE, qdma_evt_device_prepare_hardware)
-#pragma alloc_text (PAGE, qdma_evt_device_release_hardware)
-#endif
-
-using namespace xlnx;
-
-_Use_decl_annotations_
-NTSTATUS
-qdma_create_device(
-    _Inout_ PWDFDEVICE_INIT wdf_device_init
-)
-{
-    PAGED_CODE();
-
-    WdfDeviceInitSetIoType(wdf_device_init, WdfDeviceIoDirect);
-
-    /* Set call-backs for any of the functions we are interested in. If no call-back is set, the
-     * framework will take the default action by itself.
-     */
-    WDF_PNPPOWER_EVENT_CALLBACKS pnp_power_callbacks;
-    WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnp_power_callbacks);
-    pnp_power_callbacks.EvtDevicePrepareHardware = qdma_evt_device_prepare_hardware;
-    pnp_power_callbacks.EvtDeviceReleaseHardware = qdma_evt_device_release_hardware;
-    WdfDeviceInitSetPnpPowerEventCallbacks(wdf_device_init, &pnp_power_callbacks);
-
-    WDF_OBJECT_ATTRIBUTES device_attributes;
-    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&device_attributes, device_context);
-
-    /* Register file object call-backs */
-    WDF_FILEOBJECT_CONFIG file_config;
-    WDF_FILEOBJECT_CONFIG_INIT(&file_config,
-                               qdma_evt_device_file_create,
-                               qdma_evt_device_file_close,
-                               qdma_evt_device_file_cleanup);
-    WDF_OBJECT_ATTRIBUTES file_attribs;
-    WDF_OBJECT_ATTRIBUTES_INIT(&file_attribs);
-    file_attribs.SynchronizationScope = WdfSynchronizationScopeNone;
-    WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE(&file_attribs, file_context);
-    WdfDeviceInitSetFileObjectConfig(wdf_device_init, &file_config, &file_attribs);
-
-    WDFDEVICE device;
-    auto status = WdfDeviceCreate(&wdf_device_init, &device_attributes, &device);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "WdfDeviceCreate failed! %!STATUS!", status);
-        return status;
-    }
-
-    /* Create a device interface to user-space */
-    status = WdfDeviceCreateDeviceInterface(device, &GUID_DEVINTERFACE_QDMA, nullptr);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "WdfDeviceCreateDeviceInterface failed! %!STATUS!", status);
-        return status;
-    }
-
-    /* Initialize the I/O Package and any Queues */
-    status = qdma_io_queue_initialize(device);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "qdma_io_queue_initialize() failed! %!STATUS!", status);
-        return status;
-    }
-
-    return status;
-}
-
-static NTSTATUS read_reg_params(
-    xlnx::queue_op_mode &op_mode,
-    UINT8 &config_bar)
-{
-    WDFKEY key;
-    DECLARE_CONST_UNICODE_STRING(value_drv_mode, L"DRIVER_MODE");
-    DECLARE_CONST_UNICODE_STRING(value_config_bar, L"CONFIG_BAR");
-    op_mode = xlnx::queue_op_mode::POLL_MODE;
-    WDFDRIVER driver = WdfGetDriver();
-
-    NTSTATUS status = WdfDriverOpenParametersRegistryKey(driver,
-                                                         STANDARD_RIGHTS_ALL,
-                                                         WDF_NO_OBJECT_ATTRIBUTES,
-                                                         &key);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "WdfDriverOpenParametersRegistryKey failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    ULONG DRV_MODE;
-    status = WdfRegistryQueryULong(key, &value_drv_mode, &DRV_MODE);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "WdfRegistryQueryULong failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    if (DRV_MODE > INTR_COAL_MODE) {
-        TraceError(TRACE_DEVICE, "Invalid parameter DRIVER_MODE - [%lu]", DRV_MODE);
-        status = STATUS_INVALID_PARAMETER;
-        goto ErrExit;
-    }
-
-    op_mode = (xlnx::queue_op_mode)DRV_MODE;
-
-    ULONG CONFIG_BAR;
-    status = WdfRegistryQueryULong(key, &value_config_bar, &CONFIG_BAR);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "WdfRegistryQueryULong failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    if (CONFIG_BAR > 2ul) {
-        TraceError(TRACE_DEVICE, "Invalid parameter CONFIG_BAR - [%lu]", CONFIG_BAR);
-        status = STATUS_INVALID_PARAMETER;
-        goto ErrExit;
-    }
-
-    config_bar = (UINT8)CONFIG_BAR;
-
-    TraceVerbose(TRACE_DEVICE, "Parameter DRV_MODE - [%lu] CONFIG_BAR - [%lu]", op_mode, CONFIG_BAR);
-
-ErrExit:
-    WdfRegistryClose(key);
-    return status;
-}
-
-//_Use_decl_annotations_
-static void
-qdma_user_isr_handler(
-    ULONG event_id,
-    void *user_data)
-{
-    UNREFERENCED_PARAMETER(event_id);
-    UNREFERENCED_PARAMETER(user_data);
-    TraceInfo(TRACE_DEVICE, "In %s", __func__);
-}
-
-//_Use_decl_annotations_
-static void
-qdma_user_interrupt_enable(
-    ULONG event_id,
-    void *user_data)
-{
-    UNREFERENCED_PARAMETER(event_id);
-    UNREFERENCED_PARAMETER(user_data);
-    TraceInfo(TRACE_DEVICE, "In %s", __func__);
-}
-
-//_Use_decl_annotations_
-static void
-qdma_user_interrupt_disable(
-    ULONG event_id,
-    void *user_data)
-{
-    UNREFERENCED_PARAMETER(event_id);
-    UNREFERENCED_PARAMETER(user_data);
-    TraceInfo(TRACE_DEVICE, "In %s", __func__);
-}
-
-NTSTATUS qdma_evt_device_prepare_hardware(
-    const WDFDEVICE device,
-    const WDFCMRESLIST resources,
-    const WDFCMRESLIST resources_translated)
-{
-    PAGED_CODE();
-
-    qdma_drv_config  drv_conf = {};
-    device_context   *ctx = get_device_context(device);
-
-    ctx->qdma = qdma_interface::create_qdma_device();
-    if (ctx->qdma == nullptr) {
-        TraceError(TRACE_DEVICE, "qdma device memory allocation failed");
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-
-    NTSTATUS status = read_reg_params(ctx->config.op_mode, ctx->config.config_bar);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "failed to read registry params %!STATUS!", status);
-        return status;
-    }
-
-    drv_conf.operation_mode = ctx->config.op_mode;
-    drv_conf.cfg_bar = ctx->config.config_bar;
-    drv_conf.qsets_max = QDMA_MAX_QUEUES_PER_PF;
-    drv_conf.user_msix_max = QDMA_MAX_USER_INTR;
-    drv_conf.data_msix_max = QDMA_MAX_DATA_INTR;
-    drv_conf.user_data = (void*)device;
-    drv_conf.user_isr_handler = qdma_user_isr_handler;
-    drv_conf.user_interrupt_enable_handler = qdma_user_interrupt_enable;
-    drv_conf.user_interrupt_disable_handler = qdma_user_interrupt_disable;
-
-    status = ctx->qdma->init(drv_conf);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "qdma.init() failed! %!STATUS!", status);
-        return status;
-    }
-
-    status = ctx->qdma->open(device, resources, resources_translated);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "qdma.open() failed! %!STATUS!", status);
-        return status;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_evt_device_release_hardware(
-    const WDFDEVICE device,
-    WDFCMRESLIST resources_translated)
-{
-    PAGED_CODE();
-
-    UNREFERENCED_PARAMETER(resources_translated);
-
-    device_context* ctx = get_device_context(device);
-    if (ctx) {
-        ctx->qdma->close();
-        qdma_interface::remove_qdma_device(ctx->qdma);
-        ctx->qdma = nullptr;
-    }
-
-    return STATUS_SUCCESS;
-}
\ No newline at end of file
diff --git a/QDMA/windows/sys/drv/source/device.h b/QDMA/windows/sys/drv/source/device.h
deleted file mode 100644
index 7bce0ad..0000000
--- a/QDMA/windows/sys/drv/source/device.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "windows_common.h"
-#include "qdma_exports.h"
-
-EXTERN_C_START
-
-#define QDMA_MAX_QUEUES_PER_PF  512
-#define QDMA_MAX_USER_INTR      1
-#define QDMA_MAX_DATA_INTR      7
-
-struct device_context {
-    struct {
-        xlnx::queue_op_mode op_mode;
-        UINT8 config_bar;
-    }config;
-
-    xlnx::qdma_interface *qdma;
-};
-WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(device_context, get_device_context)
-
-_IRQL_requires_same_
-_IRQL_requires_max_(PASSIVE_LEVEL)
-NTSTATUS
-qdma_create_device(
-    _Inout_ PWDFDEVICE_INIT device_init
-);
-
-enum class file_target {
-    USER,
-    CONTROL,
-    BYPASS,
-    DMA_QUEUE,
-    ST_QUEUE,
-    MGMT,
-    UNKNOWN = 255,
-};
-
-struct file_context {
-    file_target target;
-    UINT16 qid;
-    bool no_copy;
-};
-WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(file_context, get_file_context)
-
-EVT_WDF_DEVICE_PREPARE_HARDWARE qdma_evt_device_prepare_hardware;
-EVT_WDF_DEVICE_RELEASE_HARDWARE qdma_evt_device_release_hardware;
-
-EXTERN_C_END
diff --git a/QDMA/windows/sys/drv/source/driver.cpp b/QDMA/windows/sys/drv/source/driver.cpp
deleted file mode 100644
index 09c0502..0000000
--- a/QDMA/windows/sys/drv/source/driver.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "driver.h"
-#include "device.h"
-
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "driver.tmh"
-#endif
-
-#ifdef ALLOC_PRAGMA
-#pragma alloc_text (INIT, DriverEntry)
-#pragma alloc_text (PAGE, qdma_evt_device_add)
-#pragma alloc_text (PAGE, qdma_evt_driver_context_cleanup)
-#endif
-
-using namespace xlnx;
-
-_Use_decl_annotations_
-NTSTATUS
-DriverEntry(
-    _In_ PDRIVER_OBJECT driver_object,
-    _In_ PUNICODE_STRING registry_path
-)
-{
-    /** Initialize WPP Tracing */
-    WPP_INIT_TRACING(driver_object, registry_path);
-
-    TraceInfo(TRACE_DRIVER, "Xilinx PCIe Multi-Queue DMA Driver - Built %s,%s",
-              __DATE__, __TIME__);
-
-    /** Register a cleanup callback to call WPP_CLEANUP during driver unload */
-    WDF_OBJECT_ATTRIBUTES attributes;
-    WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
-    attributes.EvtCleanupCallback = qdma_evt_driver_context_cleanup;
-
-    WDF_DRIVER_CONFIG config;
-    WDF_DRIVER_CONFIG_INIT(&config, qdma_evt_device_add);
-
-    NTSTATUS status = WdfDriverCreate(driver_object, registry_path, &attributes, &config, WDF_NO_HANDLE);
-
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DRIVER, "WdfDriverCreate failed %!STATUS!", status);
-        WPP_CLEANUP(driver_object);
-        return status;
-    }
-
-    TraceVerbose(TRACE_DRIVER, "%!FUNC! Exit");
-
-    return status;
-}
-
-_Use_decl_annotations_
-NTSTATUS
-qdma_evt_device_add(
-    _In_    WDFDRIVER       driver,
-    _Inout_ PWDFDEVICE_INIT device_init
-)
-{
-    UNREFERENCED_PARAMETER(driver);
-
-    PAGED_CODE();
-    return qdma_create_device(device_init);
-}
-
-_Use_decl_annotations_
-VOID
-qdma_evt_driver_context_cleanup(
-    _In_ WDFOBJECT driver_object
-)
-{
-    // EvtCleanupCallback for WDFDEVICE objects is always called at PASSIVE_LEVEL
-    _IRQL_limited_to_(PASSIVE_LEVEL);
-    PAGED_CODE();
-
-#ifndef ENABLE_WPP_TRACING
-    UNREFERENCED_PARAMETER(driver_object);
-#endif
-
-    TraceVerbose(TRACE_DRIVER, "%!FUNC! Entry");
-    /** Stop WPP Tracing */
-    WPP_CLEANUP(WdfDriverWdmGetDriverObject(static_cast<WDFDRIVER>(driver_object)));
-}
diff --git a/QDMA/windows/sys/drv/source/driver.h b/QDMA/windows/sys/drv/source/driver.h
deleted file mode 100644
index 929ff61..0000000
--- a/QDMA/windows/sys/drv/source/driver.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "windows_common.h"
-
-EXTERN_C_START
-
-/**
- *  WDFDRIVER Events
- */
-
-DRIVER_INITIALIZE               DriverEntry;
-EVT_WDF_DRIVER_DEVICE_ADD       qdma_evt_device_add;
-EVT_WDF_OBJECT_CONTEXT_CLEANUP  qdma_evt_driver_context_cleanup;
-
-
-EXTERN_C_END
diff --git a/QDMA/windows/sys/drv/source/io_queue.cpp b/QDMA/windows/sys/drv/source/io_queue.cpp
deleted file mode 100644
index 964b4e1..0000000
--- a/QDMA/windows/sys/drv/source/io_queue.cpp
+++ /dev/null
@@ -1,1441 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma_driver_api.h"
-#include "device.h"
-#include "io_queue.h"
-
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "io_queue.tmh"
-#endif
-
-// remove some false positive static analysis errors related to trace messages
-//#ifndef WPP_TRACING
-//#define WPP_(x) (void)
-//#endif
-
-#ifdef ALLOC_PRAGMA
-#pragma alloc_text (PAGE, qdma_io_queue_initialize)
-#endif
-
-using namespace xlnx;
-
-void drv_st_tx_zcmp_cb(void *priv, NTSTATUS status);
-void drv_st_tx_cmp_cb(void *priv, NTSTATUS status);
-void drv_mm_cmp_cb(void *priv, NTSTATUS status);
-void drv_st_rx_cmp_cb(const st_c2h_pkt_fragment *rx_pkts, size_t num_pkts, void *priv, NTSTATUS status);
-void drv_st_process_udd_only_pkts(UINT16 qid, void *udd_addr, void *priv);
-
-/* ----------------- static function definitions ----------------- */
-const static struct device_file_details {
-    file_target target;
-    const wchar_t* name;
-} file_name_LUT[] = {
-    { file_target::USER,        QDMA_FILE_USER },
-    { file_target::CONTROL,     QDMA_FILE_CONTROL },
-    { file_target::BYPASS,      QDMA_FILE_BYPASS },
-    { file_target::DMA_QUEUE,   QDMA_FILE_DMA_QUEUE },
-    { file_target::ST_QUEUE,    QDMA_FILE_DMA_ST_QUEUE },
-    { file_target::MGMT,        QDMA_FILE_DMA_MGMT},
-};
-
-/* convert from filename to device node */
-static file_target parse_file_name(
-    const PUNICODE_STRING file_name)
-{
-    for (UINT i = 0; i < sizeof(file_name_LUT) / sizeof(file_name_LUT[0]); ++i) {
-        if (!wcscmp(file_name->Buffer, file_name_LUT[i].name)) {
-            return file_name_LUT[i].target;
-        }
-        if (wcsstr(file_name->Buffer, file_name_LUT[i].name)
-            && file_name->Length > wcslen(file_name_LUT[i].name)) {
-            return file_name_LUT[i].target;
-        }
-    }
-    TraceError(TRACE_DEVICE, "device file name does not match one of known types!");
-    return file_target::UNKNOWN;
-}
-
-static UINT16 extract_index_token(
-    const PUNICODE_STRING file_name)
-{
-    ULONG index = 0;
-    UNICODE_STRING token_uni;
-    RtlInitUnicodeString(&token_uni, wcsstr(file_name->Buffer, L"_") + 1);
-    auto status = RtlUnicodeStringToInteger(&token_uni, 10, &index);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_DEVICE, "RtlUnicodeStringToInteger failed! %!STATUS!", status);
-        return UINT16_MAX;
-    }
-    return (UINT16)index;
-}
-
-static void io_read_bar(
-    qdma_interface *qdma_dev,
-    qdma_bar_type bar_type,
-    const WDFREQUEST request,
-    const size_t length)
-{
-    WDF_REQUEST_PARAMETERS params;
-    WDF_REQUEST_PARAMETERS_INIT(&params);
-    WdfRequestGetParameters(request, &params);
-    const auto offset = static_cast<size_t>(params.Parameters.Read.DeviceOffset);
-
-    /* get handle to the IO request memory which will hold the read data */
-    WDFMEMORY request_mem;
-    auto status = WdfRequestRetrieveOutputMemory(request, &request_mem);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfRequestRetrieveOutputMemory failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    /* get pointer to buffer */
-    const auto req_buffer = WdfMemoryGetBuffer(request_mem, nullptr);
-
-    status = qdma_dev->read_bar(bar_type, offset, req_buffer, length);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "Reading PCIe BAR failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    WdfRequestCompleteWithInformation(request, status, length);
-    return;
-
-ErrExit:
-    WdfRequestComplete(request, status);
-}
-
-static void io_write_bar(
-    qdma_interface *qdma_dev,
-    qdma_bar_type bar_type,
-    const WDFREQUEST request,
-    const size_t length)
-{
-    WDF_REQUEST_PARAMETERS params;
-    WDF_REQUEST_PARAMETERS_INIT(&params);
-    WdfRequestGetParameters(request, &params);
-    const auto offset = static_cast<size_t>(params.Parameters.Write.DeviceOffset);
-
-    /* get handle to the IO request memory which will hold the read data */
-    WDFMEMORY request_mem;
-
-    auto status = WdfRequestRetrieveInputMemory(request, &request_mem);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfRequestRetrieveOutputMemory failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    /* get pointer to buffer */
-    const auto req_buffer = WdfMemoryGetBuffer(request_mem, nullptr);
-
-    status = qdma_dev->write_bar(bar_type, offset, req_buffer, length);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "Writing PCIe BAR failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    WdfRequestCompleteWithInformation(request, status, length);
-    return;
-
-ErrExit:
-    WdfRequestComplete(request, status);
-}
-
-static BOOLEAN program_mm_dma_cb(
-    const WDFDMATRANSACTION transaction,
-    WDFDEVICE device,
-    WDFCONTEXT context,
-    const WDF_DMA_DIRECTION direction,
-    const PSCATTER_GATHER_LIST sg_list)
-{
-    auto dev_ctx = get_device_context(device);
-    DMA_TXN_CONTEXT *dma_ctx = (DMA_TXN_CONTEXT *)context;
-    const auto request = WdfDmaTransactionGetRequest(transaction);
-    WDF_REQUEST_PARAMETERS params;
-    WDF_REQUEST_PARAMETERS_INIT(&params);
-    WdfRequestGetParameters(request, &params);
-
-    const auto device_offset = (direction == WdfDmaDirectionWriteToDevice) ?
-        params.Parameters.Write.DeviceOffset :
-        params.Parameters.Read.DeviceOffset;
-
-    auto status = dev_ctx->qdma->qdma_enqueue_mm_request(dma_ctx->qid, direction, sg_list, device_offset, drv_mm_cmp_cb, transaction);
-    if (!NT_SUCCESS(status)) {
-        dma_ctx->txn_len = 0;
-        /** Complete the DMA transaction */
-        drv_mm_cmp_cb(transaction, status);
-        TraceError(TRACE_IO, "qdma_enqueue_mm_request() failed! %!STATUS!", status);;
-        return false;
-    }
-
-    TraceVerbose(TRACE_IO, "qdma_enqueue_mm_request(): txd len : %lld", dma_ctx->txn_len);
-
-    return true;
-}
-
-static BOOLEAN program_st_tx_dma_cb(
-    WDFDMATRANSACTION transaction,
-    WDFDEVICE device,
-    const WDFCONTEXT context,
-    const WDF_DMA_DIRECTION direction,
-    const PSCATTER_GATHER_LIST sg_list)
-{
-    UNREFERENCED_PARAMETER(direction);
-
-    auto dev_ctx = get_device_context(device);
-    DMA_TXN_CONTEXT *dma_ctx = (DMA_TXN_CONTEXT *)context;
-
-    auto status = dev_ctx->qdma->qdma_enqueue_st_tx_request(dma_ctx->qid, sg_list, drv_st_tx_cmp_cb, transaction);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "qdma_enqueue_st_tx_request() failed! %!STATUS!", status);
-        drv_st_tx_cmp_cb(transaction, status);
-        return false;
-    }
-
-    TraceVerbose(TRACE_IO, "qdma_enqueue_st_tx_request(): txd len : %lld", dma_ctx->txn_len);
-
-    return true;
-}
-
-
-static void io_mm_dma(
-    qdma_interface *qdma_dev,
-    UINT16 qid,
-    WDFREQUEST request,
-    const size_t length,
-    const WDF_DMA_DIRECTION direction)
-{
-    WDF_OBJECT_ATTRIBUTES attributes;
-    WDFDMATRANSACTION dma_transaction;
-
-    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DMA_TXN_CONTEXT);
-    auto status = WdfDmaTransactionCreate(qdma_dev->dma_enabler, &attributes, &dma_transaction);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionCreate() failed: %!STATUS!", status);
-        return;
-    }
-
-    auto dma_ctx = get_dma_txn_context(dma_transaction);
-    dma_ctx->qid = qid;
-    dma_ctx->txn_len = length;
-
-    /* initialize a DMA transaction from the request */
-    status = WdfDmaTransactionInitializeUsingRequest(dma_transaction,
-                                                     request,
-                                                     program_mm_dma_cb,
-                                                     direction);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionInitializeUsingRequest failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    status = WdfDmaTransactionExecute(dma_transaction, dma_ctx);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionExecute failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    TraceVerbose(TRACE_IO, "DMA transfer triggered on queue %d, direction : %d", qid, direction);
-    return;
-
-ErrExit:
-    WdfObjectDelete(dma_transaction);
-    WdfRequestComplete(request, status);
-    TraceError(TRACE_IO, "DMA transfer initiation failed, Request 0x%p: %!STATUS!", request, status);
-
-}
-
-static void io_st_read_dma(
-    qdma_interface *qdma_dev,
-    UINT16 qid,
-    WDFREQUEST request,
-    const size_t length)
-{
-    WDF_OBJECT_ATTRIBUTES attributes;
-    DMA_TXN_CONTEXT *dma_context = nullptr;
-    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DMA_TXN_CONTEXT);
-
-    NTSTATUS status = WdfObjectAllocateContext(request, &attributes, (PVOID *)&dma_context);
-    dma_context->qid = qid;
-    dma_context->txn_len = length;
-
-    status = qdma_dev->qdma_enqueue_st_rx_request(qid, length, drv_st_rx_cmp_cb, (void *)request);
-    if (!NT_SUCCESS(status)) {
-        WdfRequestComplete(request, status);
-        TraceError(TRACE_IO, "DMA transfer initiation failed: %!STATUS!", status);
-    }
-
-    TraceVerbose(TRACE_IO, "DMA transfer triggered on queue %d", qid);
-}
-
-static void io_st_zero_write_dma(
-    qdma_interface *qdma_dev,
-    UINT16 qid,
-    WDFREQUEST request,
-    const size_t length,
-    const WDF_DMA_DIRECTION direction)
-{
-    UNREFERENCED_PARAMETER(length);
-    UNREFERENCED_PARAMETER(direction);
-
-    ST_DMA_ZERO_TX_PRIV *priv;
-    /** construct one element sg_list */
-    constexpr size_t sg_list_len = sizeof(SCATTER_GATHER_LIST) + sizeof(SCATTER_GATHER_ELEMENT);
-    PSCATTER_GATHER_LIST sg_list;
-
-    sg_list = (PSCATTER_GATHER_LIST)ExAllocatePoolWithTag(NonPagedPoolNx, sg_list_len, IO_QUEUE_TAG);
-    if (sg_list == NULL) {
-        TraceVerbose(TRACE_IO, "sg_list: Mem alloc failed\n");
-        return;
-    }
-
-    RtlZeroMemory(sg_list, sg_list_len);
-
-    sg_list->NumberOfElements = 1;
-    sg_list->Elements[0].Address.QuadPart = NULL;
-    sg_list->Elements[0].Length = 0x0;
-
-    priv = (ST_DMA_ZERO_TX_PRIV*)ExAllocatePoolWithTag(NonPagedPoolNx, sizeof(ST_DMA_ZERO_TX_PRIV), IO_QUEUE_TAG);
-    if (priv == NULL) {
-        ExFreePoolWithTag(sg_list, IO_QUEUE_TAG);
-        TraceVerbose(TRACE_IO, "priv: Mem alloc failed\n");
-        return;
-    }
-
-    /** Store the context info in priv data */
-    priv->request = request;
-    priv->sg_list = sg_list;
-
-    /* For Zero byte transfer, pass the ST_DMA_ZERO_TX_PRIV in WDFDMATRANSACTION parameter that contains,
-       locally constructed single element sglist parameter & WDFREQUEST for the function qdma_enqueue_st_request */
-    auto status = qdma_dev->qdma_enqueue_st_tx_request(qid, sg_list, drv_st_tx_zcmp_cb, static_cast<PVOID>(priv));
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "DMA transfer initiation failed! %!STATUS!", status);
-        drv_st_tx_zcmp_cb(priv, status);
-        return;
-    }
-
-    TraceVerbose(TRACE_IO, "DMA transfer triggered on queue %d for zero length", qid);
-    return;
-}
-
-static void io_st_write_dma(
-    qdma_interface *qdma_dev,
-    UINT16 qid,
-    WDFREQUEST request,
-    const size_t length,
-    const WDF_DMA_DIRECTION direction)
-{
-    WDF_OBJECT_ATTRIBUTES attributes;
-    WDFDMATRANSACTION dma_transaction;
-
-    WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DMA_TXN_CONTEXT);
-    auto status = WdfDmaTransactionCreate(qdma_dev->dma_enabler, &attributes, &dma_transaction);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionCreate() failed: %!STATUS!", status);
-        WdfRequestComplete(request, status);
-        return;
-    }
-
-    auto dma_ctx = get_dma_txn_context(dma_transaction);
-    if (!dma_ctx) {
-        goto ErrExit;
-    }
-
-    dma_ctx->qid = qid;
-    dma_ctx->txn_len = length;
-
-    /* initialize a DMA transaction from the request */
-    status = WdfDmaTransactionInitializeUsingRequest(dma_transaction,
-                                                     request,
-                                                     program_st_tx_dma_cb,
-                                                     direction);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionInitializeUsingRequest failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    status = WdfDmaTransactionExecute(dma_transaction, dma_ctx);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfDmaTransactionExecute failed: %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    TraceVerbose(TRACE_IO, "DMA transfer triggered on queue %d", qid);
-    return;
-
-ErrExit:
-    WdfObjectDelete(dma_transaction);
-    WdfRequestComplete(request, status);
-    TraceError(TRACE_IO, "DMA transfer initiation failed! for Request : %p,  %!STATUS!", request, status);
-}
-
-/* ----- CB Processing Functions ----- */
-void drv_st_rx_cmp_cb(const st_c2h_pkt_fragment *rx_pkts, size_t num_pkts, void *priv, NTSTATUS status)
-{
-    WDFREQUEST request = (WDFREQUEST)priv;
-    size_t offset = 0;
-    auto dma_ctx = get_dma_txn_context(request);
-    auto file_ctx = get_file_context(WdfRequestGetFileObject(request));
-
-    if (nullptr == file_ctx) {
-        status = STATUS_UNSUCCESSFUL;
-        goto ErrExit;
-    }
-
-    if ((NT_SUCCESS(status))) {
-        if (dma_ctx->txn_len != (size_t)0) {
-            WDFMEMORY output_mem;
-            status = WdfRequestRetrieveOutputMemory(request, &output_mem);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "WdfRequestRetrieveOutputMemory failed: %!STATUS!", status);
-                WdfRequestCompleteWithInformation(request, status, (size_t)0);
-                return;
-            }
-
-            for (size_t i = 0; i < num_pkts; i++) {
-                st_c2h_pkt_fragment packet = rx_pkts[i];
-
-#ifdef DBG
-                if (packet.udd_data != nullptr) {
-                   UINT8 len = 0;
-                    constexpr unsigned short MAX_UDD_STR_LEN = (QDMA_MAX_UDD_DATA_LEN * 3) + 1;
-                    char imm_data_str[MAX_UDD_STR_LEN];
-                    UINT32 udd_len;
-                    UINT8 udd_buffer[QDMA_MAX_UDD_DATA_LEN];
-                    WDFQUEUE io_queue = WdfRequestGetIoQueue(request);
-                    if (io_queue) {
-                        auto dev_ctx = get_device_context(WdfIoQueueGetDevice(io_queue));
-                        status = dev_ctx->qdma->qdma_retrieve_st_udd_data(dma_ctx->qid, packet.udd_data, udd_buffer, &udd_len);
-
-                        for (auto iter = 0UL; iter < udd_len; iter++) {
-                            RtlStringCchPrintfA((imm_data_str + len), (MAX_UDD_STR_LEN - len), "%02X ", udd_buffer[iter]);
-                            len = len + 3; /* 3 characters are getting utilized for each byte */
-                        }
-                        TraceVerbose(TRACE_IO, "Immediate data Len : %d, Data: %s", udd_len, imm_data_str);
-                    }
-                }
-#endif
-                if ((packet.data) && (packet.length) &&
-                    (packet.pkt_type != st_c2h_pkt_type::ST_C2H_UDD_ONLY_PKT)) {
-
-                    if ((offset + packet.length) >= dma_ctx->txn_len) {
-                        if (false == file_ctx->no_copy)
-                            WdfMemoryCopyFromBuffer(output_mem, offset, packet.data, (dma_ctx->txn_len - offset));
-                        offset += (dma_ctx->txn_len - offset);
-                        break;
-                    }
-                    else {
-                        if (false == file_ctx->no_copy)
-                            WdfMemoryCopyFromBuffer(output_mem, offset, packet.data, packet.length);
-                        offset += packet.length;
-                    }
-                }
-            }
-        }
-
-        WdfRequestCompleteWithInformation(request, STATUS_SUCCESS, offset);
-        return;
-    }
-
-ErrExit:
-    WdfRequestCompleteWithInformation(request, status, (size_t)0);
-
-    TraceVerbose(TRACE_IO, "ST C2H Request completed with %!STATUS!", status);
-}
-
-static void dma_complete_transaction(WDFDMATRANSACTION dma_transaction, NTSTATUS status)
-{
-    NTSTATUS ret;
-    WDFREQUEST request = NULL;
-    BOOLEAN transaction_complete = false;
-    auto dma_ctx = get_dma_txn_context(dma_transaction);
-    size_t length = dma_ctx->txn_len;
-    UINT16 qid = dma_ctx->qid;
-
-    request = WdfDmaTransactionGetRequest(dma_transaction);
-    if (!request)
-        /** Dont return from here, Need to delete the dma_transaction object */
-        TraceError(TRACE_IO, "Callback triggered, No request pending on queue %d", qid);
-
-    if ((NT_SUCCESS(status)))
-        transaction_complete = WdfDmaTransactionDmaCompleted(dma_transaction, &ret);
-    else
-        transaction_complete = WdfDmaTransactionDmaCompletedFinal(dma_transaction, length, &ret);
-
-    if (transaction_complete) {
-        NT_ASSERT(status != STATUS_MORE_PROCESSING_REQUIRED);
-        WdfObjectDelete(dma_transaction);
-    }
-    else {
-        TraceError(TRACE_IO, "Err: DMA transaction not completed on queue %d, ret : %X", qid, ret);
-    }
-
-    if (request) {
-        WdfRequestCompleteWithInformation(request, status, length);
-        TraceVerbose(TRACE_IO, "DMA transfer completed on queue %d, Len : %lld", qid, length);
-    }
-}
-
-void drv_mm_cmp_cb(void *priv, NTSTATUS status)
-{
-    if (priv == nullptr) {
-        TraceError(TRACE_IO, "WDFDMATRANSACTION is NULL, Not possible to proceed");
-        return;
-    }
-
-    dma_complete_transaction(static_cast<WDFDMATRANSACTION>(priv), status);
-}
-
-void drv_st_tx_cmp_cb(void *priv, NTSTATUS status)
-{
-    if (priv == nullptr) {
-        TraceError(TRACE_IO, "WDFDMATRANSACTION is NULL, Not possible to proceed");
-        return;
-    }
-
-    dma_complete_transaction(static_cast<WDFDMATRANSACTION>(priv), status);
-}
-
-void drv_st_tx_zcmp_cb(void *priv, NTSTATUS status)
-{
-    if (priv == nullptr) {
-        TraceError(TRACE_IO, "WDFREQUEST is NULL, Not possible to proceed");
-        return;
-    }
-
-    ST_DMA_ZERO_TX_PRIV *priv_ctx = (ST_DMA_ZERO_TX_PRIV *)priv;
-
-    WdfRequestCompleteWithInformation(static_cast<WDFREQUEST>(priv_ctx->request), status, 0);
-
-    ExFreePoolWithTag(priv_ctx->sg_list, IO_QUEUE_TAG);
-    ExFreePoolWithTag(priv_ctx, IO_QUEUE_TAG);
-    
-    TraceInfo(TRACE_IO, "DMA Transfer completed for Zero length");
-}
-
-void drv_st_process_udd_only_pkts(UINT16 qid, void *udd_addr, void *priv)
-{
-    TraceVerbose(TRACE_IO, "UDD Only Call back function called, qid : %d, "
-        "udd_addr : %p, priv : %p\n", qid, udd_addr, priv);
-
-#ifdef DBG
-    if ((udd_addr == nullptr) || (priv == nullptr))
-        return;
-
-    UINT8 len = 0;
-    constexpr unsigned short MAX_UDD_STR_LEN = (QDMA_MAX_UDD_DATA_LEN * 3) + 1;
-    char imm_data_str[MAX_UDD_STR_LEN];
-    UINT32 udd_len;
-    UINT8 udd_buffer[QDMA_MAX_UDD_DATA_LEN];
-    qdma_interface *qdma_dev = (qdma_interface *)priv;
-
-    NTSTATUS status = qdma_dev->qdma_retrieve_st_udd_data(qid, udd_addr, udd_buffer, &udd_len);
-
-    if (NT_SUCCESS(status)) {
-        for (auto iter = 0UL; iter < udd_len; iter++) {
-            RtlStringCchPrintfA((imm_data_str + len), (MAX_UDD_STR_LEN - len), "%02X ", udd_buffer[iter]);
-            len = len + 3; /* 3 characters are getting utilized for each byte */
-        }
-
-        TraceInfo(TRACE_IO, "Immediate data Len : %d, Data: %s", udd_len, imm_data_str);
-    }
-#endif
-}
-
-NTSTATUS qdma_io_queue_initialize(
-    const WDFDEVICE device)
-{
-    PAGED_CODE();
-
-    TraceVerbose(TRACE_IO, "Initializing main entry IO queue");
-
-    /* Configure a default queue so that requests that are not configure-fowarded using
-     * WdfDeviceConfigureRequestDispatching to goto other queues get dispatched here.
-     */
-    WDF_IO_QUEUE_CONFIG queue_config;
-    WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&queue_config, WdfIoQueueDispatchParallel);
-    queue_config.AllowZeroLengthRequests = true;
-    queue_config.EvtIoDeviceControl = qdma_evt_ioctl;
-    queue_config.EvtIoStop = qdma_evt_io_stop;
-    queue_config.EvtIoRead = qdma_evt_io_read;
-    queue_config.EvtIoWrite = qdma_evt_io_write;
-
-    WDFQUEUE queue;
-    auto status = WdfIoQueueCreate(device, &queue_config, WDF_NO_OBJECT_ATTRIBUTES, &queue);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_IO, "WdfIoQueueCreate failed %!STATUS!", status);
-        return status;
-    }
-
-    return status;
-}
-
-static NTSTATUS retrive_ioctl(
-    WDFREQUEST request,
-    PVOID ibuf,
-    size_t ibuf_len,
-    PVOID *obuf = nullptr,
-    size_t obuf_len = 0
-)
-{
-    PVOID   in_buff = nullptr;
-    PVOID   out_buff = nullptr;
-    size_t  buff_len;
-    NTSTATUS status;
-
-    if (ibuf != nullptr) {
-        status = WdfRequestRetrieveInputBuffer(request, ibuf_len, &in_buff, &buff_len);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_IO, "WdfRequestRetrieveInputBuffer failed: %!STATUS!", status);
-            return status;
-        }
-
-        if (ibuf_len != buff_len) {
-            TraceError(TRACE_IO, "input buffer length mismatch: %lld != %lld", ibuf_len, buff_len);
-            return STATUS_UNSUCCESSFUL;
-        }
-
-        RtlCopyMemory(ibuf, in_buff, buff_len);
-    }
-
-    if (obuf != nullptr) {
-        status = WdfRequestRetrieveOutputBuffer(request, obuf_len, &out_buff, &buff_len);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_IO, "WdfRequestRetrieveOutputBuffer failed: %!STATUS!", status);
-            return STATUS_UNSUCCESSFUL;
-        }
-
-        if (obuf_len != buff_len) {
-            TraceError(TRACE_IO, "output buffer length mismatch: %lld != %lld", obuf_len, buff_len);
-            return STATUS_UNSUCCESSFUL;
-        }
-
-        *obuf = out_buff;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-static NTSTATUS validate_ioctl_cmd(
-    ULONG io_control_code,
-    ioctl_cmd& cmd
-)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-
-    switch (io_control_code) {
-    case IOCTL_QDMA_QUEUE_ADD:
-        if (cmd.q_conf.in.h2c_ring_sz_index >= QDMA_CSR_SZ) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.c2h_ring_sz_index >= QDMA_CSR_SZ) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.c2h_buff_sz_index >= QDMA_CSR_SZ) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.c2h_th_cnt_index >= QDMA_CSR_SZ) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.c2h_timer_cnt_index >= QDMA_CSR_SZ) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.compl_sz >= CMPT_DESC_SZ_MAX) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.q_conf.in.trig_mode >= TRIG_MODE_MAX) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        break;
-    case IOCTL_QDMA_QUEUE_DUMP_DESC:
-        if (cmd.desc_info.in.dir > queue_direction::QUEUE_DIR_C2H) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        if (cmd.desc_info.in.desc_type > descriptor_type::CMPT_DESC) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        break;
-    case IOCTL_QDMA_QUEUE_DUMP_CTX:
-        if (cmd.ctx_info.in.type > ring_type::RING_TYPE_CMPT) {
-            status = STATUS_INVALID_PARAMETER;
-            goto Exit;
-        }
-        break;
-    default:
-        /* default validation is success */
-        break;
-    }
-
-Exit:
-    return status;
-}
-
-void qdma_evt_ioctl(
-    WDFQUEUE queue,
-    WDFREQUEST request,
-    size_t output_buffer_length,
-    size_t input_buffer_length,
-    ULONG io_control_code)
-{
-    NTSTATUS status;
-    auto dev_ctx = get_device_context(WdfIoQueueGetDevice(queue));
-    auto file_ctx = get_file_context(WdfRequestGetFileObject(request));
-    auto qdma_dev = dev_ctx->qdma;
-    union ioctl_cmd cmd;
-    enum queue_state qstate;
-
-    TraceVerbose(TRACE_IO, "Queue 0x%p, Request 0x%p OutputBufferLength %llu InputBufferLength %llu IoControlCode 0x%X",
-        queue, request, output_buffer_length, input_buffer_length, io_control_code);
-
-    if (file_target::MGMT != file_ctx->target && file_target::ST_QUEUE != file_ctx->target) {
-        TraceError(TRACE_IO, "File target not supported");
-        WdfRequestComplete(request, STATUS_UNSUCCESSFUL);
-        return;
-    }
-
-    if (false == qdma_dev->qdma_is_device_online()) {
-        TraceError(TRACE_DEVICE, "QDMA Device is offline.");
-        WdfRequestComplete(request, STATUS_DEVICE_OFF_LINE);
-        return;
-    }
-
-    RtlZeroMemory(&cmd, sizeof(cmd));
-    switch (io_control_code) {
-        case IOCTL_QDMA_CSR_DUMP :
-        {
-            qdma_glbl_csr_conf conf = {};
-
-            status = retrive_ioctl(request, nullptr, 0,
-                (PVOID *)&cmd.csr.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_CSR_DUMP");
-            status = qdma_dev->qdma_read_csr_conf(&conf);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            RtlCopyMemory(cmd.csr.out, &conf, sizeof(conf));
-
-            WdfRequestCompleteWithInformation(request, status, sizeof(qdma_glbl_csr_conf));
-            break;
-        }
-        case IOCTL_QDMA_DEVINFO :
-        {
-            qdma_version_info version_info = {};
-
-            status = retrive_ioctl(request, nullptr, 0,
-                (PVOID *)&cmd.dev_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_DEVINFO");
-            status = qdma_dev->qdma_device_version_info(version_info);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            device_info_out::version_info *ver_info = &cmd.dev_info.out->ver_info;
-
-            RtlStringCchCopyNA(ver_info->qdma_rtl_version_str,
-                sizeof(ver_info->qdma_rtl_version_str),
-                version_info.qdma_rtl_version_str,
-                QDMA_VERSION_INFO_LENGTH);
-
-            RtlStringCchCopyNA(ver_info->qdma_vivado_release_id_str,
-                sizeof(ver_info->qdma_vivado_release_id_str),
-                version_info.qdma_vivado_release_id_str,
-                QDMA_VERSION_INFO_LENGTH);
-
-            RtlStringCchCopyNA(ver_info->qdma_device_type_str,
-                sizeof(ver_info->qdma_device_type_str),
-                version_info.qdma_device_type_str,
-                QDMA_VERSION_INFO_LENGTH);
-
-            RtlStringCchCopyNA(ver_info->qdma_versal_ip_type_str,
-                sizeof(ver_info->qdma_versal_ip_type_str),
-                version_info.qdma_versal_ip_type_str,
-                QDMA_VERSION_INFO_LENGTH);
-
-            RtlStringCchCopyNA(ver_info->qdma_sw_version,
-                sizeof(ver_info->qdma_sw_version),
-                version_info.qdma_sw_version_str,
-                QDMA_VERSION_INFO_LENGTH);
-
-            qdma_device_attributes_info dev_attr = {};
-            status = qdma_dev->qdma_get_dev_capabilities_info(dev_attr);
-            if (status != STATUS_SUCCESS)
-                goto Exit;
-
-            cmd.dev_info.out->num_pfs           = dev_attr.num_pfs;
-            cmd.dev_info.out->num_qs            = dev_attr.num_qs;
-            cmd.dev_info.out->flr_present       = dev_attr.flr_present;
-            cmd.dev_info.out->st_en             = dev_attr.st_en;
-            cmd.dev_info.out->mm_en             = dev_attr.mm_en;
-            cmd.dev_info.out->mm_cmpl_en        = dev_attr.mm_cmpl_en;
-            cmd.dev_info.out->mailbox_en        = dev_attr.mailbox_en;
-            cmd.dev_info.out->num_mm_channels   = dev_attr.num_mm_channels;
-            cmd.dev_info.out->debug_mode        = dev_attr.debug_mode;
-            cmd.dev_info.out->desc_eng_mode     = dev_attr.desc_eng_mode;
-
-            WdfRequestCompleteWithInformation(request, status, sizeof(device_info_out));
-
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_ADD :
-        {
-            queue_config q_conf = {};
-
-            status = retrive_ioctl(request,
-                        &cmd.q_conf.in, sizeof(cmd.q_conf.in));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            status = validate_ioctl_cmd(io_control_code, cmd);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            q_conf.h2c_ring_sz_index = cmd.q_conf.in.h2c_ring_sz_index;
-            q_conf.c2h_ring_sz_index = cmd.q_conf.in.c2h_ring_sz_index;
-            q_conf.c2h_buff_sz_index = cmd.q_conf.in.c2h_buff_sz_index;
-            q_conf.c2h_th_cnt_index = cmd.q_conf.in.c2h_th_cnt_index;
-            q_conf.c2h_timer_cnt_index = cmd.q_conf.in.c2h_timer_cnt_index;
-            q_conf.is_st = cmd.q_conf.in.is_st;
-
-            if (cmd.q_conf.in.trig_mode == trig_mode::TRIG_MODE_EVERY)
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_EVERY;
-            else if (cmd.q_conf.in.trig_mode == trig_mode::TRIG_MODE_USER_COUNT)
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_USER_COUNT;
-            else if (cmd.q_conf.in.trig_mode == trig_mode::TRIG_MODE_USER)
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_USER;
-            else if (cmd.q_conf.in.trig_mode == trig_mode::TRIG_MODE_USER_TIMER)
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_USER_TIMER;
-            else if (cmd.q_conf.in.trig_mode == trig_mode::TRIG_MODE_USER_TIMER_COUNT)
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_USER_TIMER_COUNT;
-            else
-                q_conf.trig_mode = qdma_trig_mode::QDMA_TRIG_MODE_DISABLE;
-
-            if (cmd.q_conf.in.compl_sz == cmpt_desc_sz::CMPT_DESC_SZ_8B)
-                q_conf.cmpt_sz = qdma_desc_sz::QDMA_DESC_SZ_8B;
-            else if (cmd.q_conf.in.compl_sz == cmpt_desc_sz::CMPT_DESC_SZ_16B)
-                q_conf.cmpt_sz = qdma_desc_sz::QDMA_DESC_SZ_16B;
-            else if (cmd.q_conf.in.compl_sz == cmpt_desc_sz::CMPT_DESC_SZ_32B)
-                q_conf.cmpt_sz = qdma_desc_sz::QDMA_DESC_SZ_32B;
-            else if (cmd.q_conf.in.compl_sz == cmpt_desc_sz::CMPT_DESC_SZ_64B)
-                q_conf.cmpt_sz = qdma_desc_sz::QDMA_DESC_SZ_64B;
-
-            q_conf.desc_bypass_en = cmd.q_conf.in.desc_bypass_en;
-            q_conf.pfch_bypass_en = cmd.q_conf.in.pfch_bypass_en;
-            q_conf.pfch_en = cmd.q_conf.in.pfch_en;
-            q_conf.cmpl_ovf_dis = cmd.q_conf.in.cmpl_ovf_dis;
-            q_conf.sw_desc_sz = cmd.q_conf.in.sw_desc_sz;
-            q_conf.en_mm_cmpl = cmd.q_conf.in.en_mm_cmpl;
-
-            if (q_conf.is_st)
-                q_conf.proc_st_udd_cb = drv_st_process_udd_only_pkts;
-            else
-                q_conf.proc_st_udd_cb = nullptr;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_ADD : %u", cmd.q_conf.in.qid);
-
-            status = qdma_dev->qdma_add_queue(cmd.q_conf.in.qid, q_conf);
-            WdfRequestComplete(request, status);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_START :
-        {
-            status = retrive_ioctl(request,
-                &cmd.q_conf.in, sizeof(cmd.q_conf.in));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_START : %u",
-                cmd.q_conf.in.qid);
-            status = qdma_dev->qdma_start_queue(cmd.q_conf.in.qid);
-            WdfRequestComplete(request, status);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_STOP :
-        {
-            status = retrive_ioctl(request,
-                &cmd.q_conf.in, sizeof(cmd.q_conf.in));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_STOP : %u", cmd.q_conf.in.qid);
-            status = qdma_dev->qdma_stop_queue(cmd.q_conf.in.qid);
-            WdfRequestComplete(request, status);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_DELETE :
-        {
-            status = retrive_ioctl(request,
-                &cmd.q_conf.in, sizeof(cmd.q_conf.in));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_DELETE : %u", cmd.q_conf.in.qid);
-            status = qdma_dev->qdma_remove_queue(cmd.q_conf.in.qid);
-            WdfRequestComplete(request, status);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_DUMP_STATE :
-        {
-            status = retrive_ioctl(request,
-                &cmd.q_state.in, sizeof(cmd.q_state.in),
-                (PVOID *)&cmd.q_state.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            status = validate_ioctl_cmd(io_control_code, cmd);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.q_state.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for IOCTL_QDMA_QUEUE_DUMP_STATE");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_DUMP_STATE : %d", cmd.q_state.in.qid);
-            status = qdma_dev->qdma_get_queues_state(cmd.q_state.in.qid, &qstate,
-                cmd.q_state.out->state, sizeof(cmd.q_state.out->state));
-
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            WdfRequestCompleteWithInformation(request, status, sizeof(queue_state_out));
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_READ_UDD :
-        {
-            status = retrive_ioctl(request,
-                &cmd.udd_info.in, sizeof(cmd.udd_info.in),
-                (PVOID *)&cmd.udd_info.out, output_buffer_length);
-
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.udd_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for IOCTL_QDMA_QUEUE_DUMP_STATE");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_READ_UDD : %d", cmd.udd_info.in.qid);
-
-            status = qdma_dev->qdma_retrieve_last_st_udd_data(cmd.udd_info.in.qid,
-                &cmd.udd_info.out->buffer[0], (UINT32 *)&cmd.udd_info.out->length);
-
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            WdfRequestCompleteWithInformation(request, status, sizeof(cmpt_udd_info_out));
-
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_DUMP_DESC :
-        {
-            status = retrive_ioctl(request,
-                &cmd.desc_info.in, sizeof(cmd.desc_info.in),
-                (PVOID *)&cmd.desc_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            status = validate_ioctl_cmd(io_control_code, cmd);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.desc_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for CMD_QUEUE_DUMP_DESC");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_desc_info desc_info;
-
-            desc_info.qid = cmd.desc_info.in.qid;
-            desc_info.dir = (cmd.desc_info.in.dir == QUEUE_DIR_H2C) ?
-                qdma_queue_dir::QDMA_QUEUE_DIR_H2C : qdma_queue_dir::QDMA_QUEUE_DIR_C2H;
-            desc_info.desc_type = (cmd.desc_info.in.desc_type == RING_DESC) ?
-                qdma_desc_type::RING_DESCRIPTOR : qdma_desc_type::CMPT_DESCRIPTOR;
-            desc_info.desc_start = cmd.desc_info.in.desc_start;
-            desc_info.desc_end = cmd.desc_info.in.desc_end;
-            desc_info.buffer_sz = (UINT32)output_buffer_length - sizeof(struct desc_dump_info_out);
-
-            desc_info.pbuffer = &cmd.desc_info.out->pbuffer[0];
-            desc_info.desc_sz = 0; /* updated by qdma api desc_dump */
-            desc_info.data_sz = 0; /* updated by qdma api desc_dump */
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_DUMP_DESC  : %d", desc_info.qid);
-
-            status = qdma_dev->qdma_queue_desc_dump(&desc_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_queue_desc_dump failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.desc_info.out->desc_sz = desc_info.desc_sz;
-            cmd.desc_info.out->data_sz = desc_info.data_sz;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(desc_dump_info_out) + desc_info.data_sz);
-
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_DUMP_CTX :
-        {
-            status = retrive_ioctl(request,
-                &cmd.ctx_info.in, sizeof(cmd.ctx_info.in),
-                (PVOID *)&cmd.ctx_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            status = validate_ioctl_cmd(io_control_code, cmd);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.ctx_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for CMD_QUEUE_DUMP_CTX");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_ctx_info ctx_info;
-
-            ctx_info.qid = cmd.ctx_info.in.qid;
-
-            if (cmd.ctx_info.in.type == ring_type::RING_TYPE_H2C)
-                ctx_info.ring_type = qdma_q_type::QDMA_Q_TYPE_H2C;
-            else if (cmd.ctx_info.in.type == ring_type::RING_TYPE_C2H)
-                ctx_info.ring_type = qdma_q_type::QDMA_Q_TYPE_C2H;
-            else if (cmd.ctx_info.in.type == ring_type::RING_TYPE_CMPT)
-                ctx_info.ring_type = qdma_q_type::QDMA_Q_TYPE_CMPT;
-
-            ctx_info.buffer_sz = output_buffer_length - sizeof(struct ctx_dump_info_out);
-            ctx_info.pbuffer = &cmd.ctx_info.out->pbuffer[0];
-            ctx_info.ret_sz = 0;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_DUMP_CTX : %d", ctx_info.qid);
-            /* Read context data */
-            status = qdma_dev->qdma_queue_dump_context(&ctx_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_queue_dump_context failed, qid : %d : Err : %X", ctx_info.qid, status);
-                goto Exit;
-            }
-
-            cmd.ctx_info.out->ret_sz = ctx_info.ret_sz;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(ctx_dump_info_out) + ctx_info.ret_sz);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_CMPT_READ :
-        {
-            status = retrive_ioctl(request,
-                &cmd.cmpt_info.in, sizeof(cmd.cmpt_info.in),
-                (PVOID *)&cmd.cmpt_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.cmpt_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for CMD_QUEUE_CMPT_READ");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_cmpt_info cmpt_info;
-
-            cmpt_info.qid = cmd.cmpt_info.in.qid;
-            cmpt_info.buffer_len = (UINT32)output_buffer_length - sizeof(struct cmpt_data_info_out);
-
-            cmpt_info.pbuffer = &cmd.cmpt_info.out->pbuffer[0];
-            cmpt_info.ret_len = 0;
-            cmpt_info.cmpt_desc_sz = 0;
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_QUEUE_CMPT_READ : %d", cmpt_info.qid);
-            /* Read MM completion data */
-            status = qdma_dev->qdma_read_mm_cmpt_data(&cmpt_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_read_mm_cmpt_data failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.cmpt_info.out->ret_len = cmpt_info.ret_len;
-            cmd.cmpt_info.out->cmpt_desc_sz = cmpt_info.cmpt_desc_sz;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(cmpt_data_info_out) + cmpt_info.ret_len);
-            break;
-        }
-        case IOCTL_QDMA_INTRING_DUMP :
-        {
-            status = retrive_ioctl(request,
-                &cmd.int_ring_info.in, sizeof(cmd.int_ring_info.in),
-                (PVOID *)&cmd.int_ring_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.int_ring_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for IOCTL_QDMA_INTRING_DUMP");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_intr_ring_info intring_info;
-            intring_info.vec_id = cmd.int_ring_info.in.vec_id;
-            intring_info.start_idx = cmd.int_ring_info.in.start_idx;
-            intring_info.end_idx = cmd.int_ring_info.in.end_idx;
-            intring_info.buffer_len = output_buffer_length - sizeof(struct intring_info_out);
-
-            intring_info.ret_len = 0;
-            intring_info.ring_entry_sz = 0;
-            intring_info.pbuffer = &cmd.int_ring_info.out->pbuffer[0];
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_INTRING_DUMP : %d", intring_info.vec_id);
-            status = qdma_dev->qdma_intring_dump(&intring_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_intring_dump failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.int_ring_info.out->ret_len = intring_info.ret_len;
-            cmd.int_ring_info.out->ring_entry_sz = intring_info.ring_entry_sz;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(intring_info_out) + intring_info.ret_len);
-            break;
-        }
-        case IOCTL_QDMA_REG_DUMP :
-        {
-            status = retrive_ioctl(request, nullptr, 0,
-                (PVOID *)&cmd.reg_dump_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.reg_dump_info.out == nullptr) {
-                TraceError(TRACE_IO, "NULL Buffer for CMD_REG_DUMP");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_reg_dump_info regdump_info;
-
-            regdump_info.buffer_len = output_buffer_length - sizeof(struct regdump_info_out);
-
-            regdump_info.ret_len = 0;
-            regdump_info.pbuffer = &cmd.reg_dump_info.out->pbuffer[0];
-
-            TraceVerbose(TRACE_IO, "IOCTL_QDMA_REG_DUMP");
-            status = qdma_dev->qdma_regdump(&regdump_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_regdump failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.reg_dump_info.out->ret_len = regdump_info.ret_len;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(regdump_info_out) + regdump_info.ret_len);
-            break;
-        }
-        case IOCTL_QDMA_QUEUE_NO_COPY :
-        {
-            TraceInfo(TRACE_IO, "No Copy Set for QID : %u", file_ctx->qid);
-            file_ctx->no_copy = true;
-            WdfRequestComplete(request, STATUS_SUCCESS);
-            break;
-        }
-        case IOCTL_QDMA_SET_QMAX:
-        {
-            status = retrive_ioctl(request, &cmd.qmax_info.in, sizeof(cmd.qmax_info.in));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            status = qdma_dev->qdma_set_qmax(cmd.qmax_info.in.qmax);
-            WdfRequestComplete(request, status);
-            break;
-        }
-        case IOCTL_QDMA_GET_QSTATS :
-        {
-            status = retrive_ioctl(request, nullptr, 0,
-                (PVOID *)&cmd.qstats_info.out, sizeof(struct qstat_out));
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.qstats_info.out == nullptr) {
-                TraceError(TRACE_IO, "nullptr Buffer for IOCTL_QDMA_GET_QSTATS");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            qdma_qstat_info qstats = { 0 };
-            status = qdma_dev->qdma_get_qstats_info(qstats);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_get_qstats_info() failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.qstats_info.out->qbase              = qstats.qbase;
-            cmd.qstats_info.out->qmax               = qstats.qmax;
-            cmd.qstats_info.out->active_h2c_queues  = qstats.active_h2c_queues;
-            cmd.qstats_info.out->active_c2h_queues  = qstats.active_c2h_queues;
-            cmd.qstats_info.out->active_cmpt_queues = qstats.active_cmpt_queues;
-            WdfRequestCompleteWithInformation(request, status, sizeof(struct qstat_out));
-            break;
-        }
-        case IOCTL_QDMA_REG_INFO:
-        {
-            status = retrive_ioctl(request, &cmd.reg_info.in, sizeof(cmd.reg_info.in),
-                (PVOID*)&cmd.reg_info.out, output_buffer_length);
-            if (!NT_SUCCESS(status))
-                goto Exit;
-
-            if (cmd.reg_info.out == nullptr) {
-                TraceError(TRACE_IO, "nullptr Buffer for IOCTL_QDMA_REG_INFO");
-                status = STATUS_INVALID_PARAMETER;
-                goto Exit;
-            }
-
-            struct qdma_reg_info reg_info = { 0 };
-            reg_info.bar_no = cmd.reg_info.in.bar_no;
-            reg_info.address = cmd.reg_info.in.address;
-            reg_info.reg_cnt = cmd.reg_info.in.reg_cnt;
-            reg_info.buf_len = output_buffer_length - sizeof(struct reg_info_out);;
-            reg_info.ret_len = 0;
-            reg_info.pbuffer = cmd.reg_info.out->pbuffer;
-
-            status = qdma_dev->qdma_get_reg_info(&reg_info);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_IO, "qdma_dev->qdma_get_reg_info() failed : Err : %X", status);
-                goto Exit;
-            }
-
-            cmd.reg_info.out->ret_len = reg_info.ret_len;
-
-            WdfRequestCompleteWithInformation(request, status,
-                sizeof(reg_info_out) + reg_info.ret_len);
-            break;
-        }
-        default:
-            TraceInfo(TRACE_IO, "UNKNOWN IOCTL CALLED");
-            WdfRequestComplete(request, STATUS_UNSUCCESSFUL);
-            break;
-    }
-
-    return;
-
-Exit:
-    WdfRequestComplete(request, status);
-}
-
-void qdma_evt_io_stop(
-    WDFQUEUE queue,
-    WDFREQUEST request,
-    ULONG action_flags)
-{
-    TraceInfo(TRACE_IO, "Queue 0x%p, Request 0x%p ActionFlags %d", queue, request, action_flags);
-
-    return;
-}
-
-void qdma_evt_io_read(
-    const WDFQUEUE io_queue,
-    const WDFREQUEST request,
-    size_t length)
-{
-    auto status = STATUS_SUCCESS;
-
-    auto dev_ctx = get_device_context(WdfIoQueueGetDevice(io_queue));
-    auto file_ctx = get_file_context(WdfRequestGetFileObject(request));
-    NT_ASSERT(dev_ctx != nullptr);
-    NT_ASSERT(file_ctx != nullptr);
-
-    /* For Non ST mode, return success for zero length reads */
-    if ((file_ctx->target != file_target::ST_QUEUE) && (length == 0)) {
-        WdfRequestComplete(request, STATUS_SUCCESS);
-        return;
-    }
-
-    switch (file_ctx->target) {
-    case file_target::USER:
-        TraceVerbose(TRACE_IO, "AXI Master Lite BAR reading %llu bytes", length);
-        io_read_bar(dev_ctx->qdma, qdma_bar_type::USER_BAR, request, length);
-        break;
-    case file_target::CONTROL:
-        TraceVerbose(TRACE_IO, "control BAR reading %llu bytes", length);
-        io_read_bar(dev_ctx->qdma, qdma_bar_type::CONFIG_BAR, request, length);
-        break;
-    case file_target::BYPASS:
-        TraceVerbose(TRACE_IO, "AXI Bridge Master BAR reading %llu bytes", length);
-        io_read_bar(dev_ctx->qdma, qdma_bar_type::BYPASS_BAR, request, length);
-        break;
-    case file_target::DMA_QUEUE:
-        TraceVerbose(TRACE_IO, "queue_%u reading %llu bytes", file_ctx->qid, length);
-        io_mm_dma(dev_ctx->qdma, file_ctx->qid, request, length,
-                  WdfDmaDirectionReadFromDevice);
-        break;
-    case file_target::ST_QUEUE:
-        TraceVerbose(TRACE_IO, "queue_%u reading %llu bytes", file_ctx->qid, length);
-        io_st_read_dma(dev_ctx->qdma, file_ctx->qid, request, length);
-        break;
-    default:
-        TraceError(TRACE_IO, "Unknown file target!");
-        status = STATUS_INVALID_PARAMETER;
-    }
-
-    if (!NT_SUCCESS(status)) {
-        WdfRequestComplete(request, status);
-    }
-}
-
-void qdma_evt_io_write(
-    const WDFQUEUE io_queue,
-    const WDFREQUEST request,
-    size_t length)
-{
-
-    auto status = STATUS_SUCCESS;
-
-    auto dev_ctx = get_device_context(WdfIoQueueGetDevice(io_queue));
-    auto file_ctx = get_file_context(WdfRequestGetFileObject(request));
-
-    NT_ASSERT(dev_ctx != nullptr);
-    NT_ASSERT(file_ctx != nullptr);
-
-    /* For Non ST mode, return success for zero length writes */
-    if ((file_ctx->target != file_target::ST_QUEUE) && (length == 0)) {
-        WdfRequestComplete(request, STATUS_SUCCESS);
-        return;
-    }
-
-    switch (file_ctx->target) {
-    case file_target::USER:
-        TraceVerbose(TRACE_IO, "AXI Master Lite BAR writing %llu bytes", length);
-        io_write_bar(dev_ctx->qdma, qdma_bar_type::USER_BAR, request, length);
-        break;
-    case file_target::CONTROL:
-        TraceVerbose(TRACE_IO, "control BAR writing %llu bytes", length);
-        io_write_bar(dev_ctx->qdma, qdma_bar_type::CONFIG_BAR, request, length);
-        break;
-    case file_target::BYPASS:
-        TraceVerbose(TRACE_IO, "AXI Bridge Master BAR writing %llu bytes", length);
-        io_write_bar(dev_ctx->qdma, qdma_bar_type::BYPASS_BAR, request, length);
-        break;
-    case file_target::DMA_QUEUE:
-        TraceVerbose(TRACE_IO, "queue_%u writing %llu bytes", file_ctx->qid, length);
-        io_mm_dma(dev_ctx->qdma, file_ctx->qid, request, length, WdfDmaDirectionWriteToDevice);
-        break;
-    case file_target::ST_QUEUE:
-        TraceVerbose(TRACE_IO, "queue_%u writing %llu bytes", file_ctx->qid, length);
-        if (length == 0) {
-            io_st_zero_write_dma(dev_ctx->qdma, file_ctx->qid, request, length, WdfDmaDirectionWriteToDevice);
-        }
-        else {
-            io_st_write_dma(dev_ctx->qdma, file_ctx->qid, request, length, WdfDmaDirectionWriteToDevice);
-        }
-        break;
-    default:
-        TraceError(TRACE_IO, "Unknown file target!");
-        status = STATUS_INVALID_PARAMETER;
-    }
-
-    if (!NT_SUCCESS(status)) {
-        WdfRequestComplete(request, status);
-    }
-}
-
-void qdma_evt_device_file_create(
-    const WDFDEVICE wdf_device,
-    const WDFREQUEST request,
-    const WDFFILEOBJECT wdf_file)
-{
-    auto status = STATUS_SUCCESS;
-
-    auto file_name = WdfFileObjectGetFileName(wdf_file);
-    auto dev_ctx = get_device_context(wdf_device);
-
-    /* no filename given? */
-    NT_ASSERT(file_name != nullptr);
-    if (file_name->Buffer == nullptr) {
-        TraceError(TRACE_DEVICE, "no device file name given!");
-        status = STATUS_INVALID_PARAMETER;
-        goto ErrExit;
-    }
-
-    auto ctx = get_file_context(wdf_file);
-    NT_ASSERT(ctx != nullptr);
-
-    ctx->target = parse_file_name(file_name);
-    if (ctx->target == file_target::UNKNOWN) {
-        TraceError(TRACE_DEVICE, "device file %wZ is not supported!", file_name);
-        status = STATUS_INVALID_PARAMETER;
-        goto ErrExit;
-    }
-    else if (ctx->target == file_target::DMA_QUEUE) {
-        ctx->qid = extract_index_token(file_name);
-        status = dev_ctx->qdma->qdma_is_queue_in_range(ctx->qid);
-        if (STATUS_SUCCESS != status) {
-            goto ErrExit;
-        }
-        TraceVerbose(TRACE_DEVICE, "MM qid=%u", ctx->qid);
-    }
-    else if (ctx->target == file_target::ST_QUEUE) {
-        /* get the qid number */
-        ctx->qid = extract_index_token(file_name);
-        ctx->no_copy = false;
-        status = dev_ctx->qdma->qdma_is_queue_in_range(ctx->qid);
-        if (STATUS_SUCCESS != status) {
-            goto ErrExit;
-        }
-        TraceVerbose(TRACE_DEVICE, "ST qid=%u", ctx->qid);
-    }
-
-    if (false == dev_ctx->qdma->qdma_is_device_online()) {
-        TraceError(TRACE_DEVICE, "QDMA Device is offline.");
-        status = STATUS_DEVICE_OFF_LINE;
-    }
-
-    TraceVerbose(TRACE_DEVICE, "Opening file %wZ", file_name);
-
-ErrExit:
-    WdfRequestComplete(request, status);
-}
-
-void qdma_evt_device_file_close(
-    const WDFFILEOBJECT wdf_file)
-{
-    PUNICODE_STRING file_name = WdfFileObjectGetFileName(wdf_file);
-    TraceVerbose(TRACE_DEVICE, "Closing file %wZ", file_name);
-}
-
-void qdma_evt_device_file_cleanup(
-    const WDFFILEOBJECT wdf_file)
-{
-    PUNICODE_STRING file_name = WdfFileObjectGetFileName(wdf_file);
-    TraceVerbose(TRACE_DEVICE, "Cleanup %wZ", file_name);
-}
diff --git a/QDMA/windows/sys/drv/source/io_queue.h b/QDMA/windows/sys/drv/source/io_queue.h
deleted file mode 100644
index 49617e5..0000000
--- a/QDMA/windows/sys/drv/source/io_queue.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "windows_common.h"
-#include "qdma_exports.h"
-
-EXTERN_C_START
-
-using namespace xlnx;
-
-static constexpr ULONG IO_QUEUE_TAG = 'UQOI';
-
-NTSTATUS qdma_io_queue_initialize(WDFDEVICE wdf_device);
-
-struct DMA_TXN_CONTEXT {
-    UINT16 qid;
-    size_t txn_len;
-};
-
-WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DMA_TXN_CONTEXT, get_dma_txn_context)
-
-
-struct ST_DMA_ZERO_TX_PRIV {
-    WDFREQUEST request;
-    PVOID sg_list;
-};
-
-EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL qdma_evt_ioctl;
-EVT_WDF_IO_QUEUE_IO_STOP qdma_evt_io_stop;
-EVT_WDF_IO_QUEUE_IO_READ qdma_evt_io_read;
-EVT_WDF_IO_QUEUE_IO_WRITE qdma_evt_io_write;
-
-EVT_WDF_DEVICE_FILE_CREATE qdma_evt_device_file_create;
-EVT_WDF_FILE_CLOSE qdma_evt_device_file_close;
-EVT_WDF_FILE_CLEANUP qdma_evt_device_file_cleanup;
-
-EXTERN_C_END
diff --git a/QDMA/windows/sys/drv/source/trace.h b/QDMA/windows/sys/drv/source/trace.h
deleted file mode 100644
index f999760..0000000
--- a/QDMA/windows/sys/drv/source/trace.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#if defined(DBG) || defined(ENABLE_WPP)
-#define ENABLE_WPP_TRACING
-#endif
-
-/**
- * Define the tracing flags.
- *
- * Tracing GUID - 0bed1f17-aa40-5163-c038-33715b81ae49
- * Trace Name : 'Xilinx-QDMA-Debug'
- */
-#define WPP_CONTROL_GUIDS                                                   \
-        WPP_DEFINE_CONTROL_GUID(                                            \
-            QDMATraceGuid, (0bed1f17, aa40, 5163, c038, 33715b81ae49),      \
-                                                                            \
-            WPP_DEFINE_BIT(TRACE_PCIE)                                      \
-            WPP_DEFINE_BIT(TRACE_INTR)                                      \
-            WPP_DEFINE_BIT(TRACE_THREAD)                                    \
-            WPP_DEFINE_BIT(TRACE_QDMA)                                      \
-            WPP_DEFINE_BIT(TRACE_DBG)                                       \
-            WPP_DEFINE_BIT(TRACE_QDMA_ACCESS)                               \
-            WPP_DEFINE_BIT(TRACE_DRIVER)                                    \
-            WPP_DEFINE_BIT(TRACE_DEVICE)                                    \
-            WPP_DEFINE_BIT(TRACE_IO)                                        \
-            )
-
-/* WPP_LEVEL_FLAGS_LOGGER and WPP_LEVEL_FLAGS_ENABLED support trace functions
-   with LEVEL and FLAGS static parameters (in that order) prior to any dynamic
-   parameters (such as MSG)
-*/
-#define WPP_LEVEL_FLAGS_LOGGER(level, flags) \
-        WPP_LEVEL_LOGGER(flags)
-
-#define WPP_LEVEL_FLAGS_ENABLED(level, flags) \
-        (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= level)
-
-/* Optimize WPP tracing call site conditional checks
-
-   NOTE: This is only safe if we ensure no WPP tracing functions are called
-         before WPP_INIT_TRACING() or after WPP_CLEANUP().
-*/
-#define WPP_CHECK_INIT
-
-
-//
-// This comment block is scanned by the trace preprocessor to define our
-// Trace functions.
-//
-// begin_wpp config
-// FUNC TraceVerbose{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS, MSG, ...);
-// FUNC TraceInfo{LEVEL=TRACE_LEVEL_INFORMATION}(FLAGS, MSG, ...);
-// FUNC TraceWarning{LEVEL=TRACE_LEVEL_WARNING}(FLAGS, MSG, ...);
-// FUNC TraceError{LEVEL=TRACE_LEVEL_ERROR}(FLAGS, MSG, ...);
-// FUNC TraceEvents(LEVEL, FLAGS, MSG, ...);
-// end_wpp
-//
-
-/** WPP tracing is disabled by default in release configuration.
- *  so stub out definitions and functions
- *
- *  To Enable WPP Tracing,  Enable Run WPP Tracing in settings and
- *  define MACRO "ENABLE_WPP"
- */
-#ifndef ENABLE_WPP_TRACING
-#define WPP_INIT_TRACING(driver_object, registry_path)
-#define WPP_CLEANUP(driver_object)
-#define TraceVerbose(flags, ...)        (__VA_ARGS__)
-#define TraceInfo(flags, ...)           (__VA_ARGS__)
-#define TraceWarning(flags, ...)        (__VA_ARGS__)
-#define TraceError(flags, ...)          (__VA_ARGS__)
-#define TraceEvents(flags, ...)         (__VA_ARGS__)
-#endif
diff --git a/QDMA/windows/sys/drv/source/windows_common.h b/QDMA/windows/sys/drv/source/windows_common.h
deleted file mode 100644
index 834f007..0000000
--- a/QDMA/windows/sys/drv/source/windows_common.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#ifndef STRICT
-#define STRICT
-#endif
-
-#include <ntddk.h>
-#include <wdf.h>
-#include <ntintsafe.h>
-#include <ntstrsafe.h>
-#include <stdio.h>
-#include <stddef.h>
-
diff --git a/QDMA/windows/sys/libqdma/include/qdma_exports.h b/QDMA/windows/sys/libqdma/include/qdma_exports.h
deleted file mode 100644
index ab597a5..0000000
--- a/QDMA/windows/sys/libqdma/include/qdma_exports.h
+++ /dev/null
@@ -1,940 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <pshpack8.h>
-
-/**
- * @file
- * @brief This file contains the declarations for libqdma interface structures
- *
- */
-
-/* Xilinx namespace */
-namespace xlnx {
-
-class qdma_interface;
-struct st_c2h_pkt_fragment;
-
-/**
- * enum qdma_q_type: Q type
- */
-enum qdma_q_type {
-    /** @QDMA_Q_TYPE_H2C: H2C Q */
-    QDMA_Q_TYPE_H2C,
-    /** @QDMA_Q_TYPE_C2H: C2H Q */
-    QDMA_Q_TYPE_C2H,
-    /** @QDMA_Q_TYPE_CMPT: CMPT Q */
-    QDMA_Q_TYPE_CMPT,
-    /** @QDMA_Q_TYPE_MAX: Total Q types */
-    QDMA_Q_TYPE_MAX
-};
-
-/** queue_state - State of the QDMA queue */
-enum queue_state {
-    /** Queue is available to configure */
-    QUEUE_AVAILABLE,
-    /** Queue is added with resources */
-    QUEUE_ADDED,
-    /** Queue is programmed and started */
-    QUEUE_STARTED,
-    /** Queue critical operation is in progress */
-    QUEUE_BUSY,
-    /** Invalid Queue State */
-    QUEUE_INVALID_STATE
-};
-
-/** Streaming card to host packet type */
-enum class st_c2h_pkt_type {
-    /** C2H DATA Packet MACRO */
-    ST_C2H_DATA_PKT,
-    /** C2H USER DEFINED DATA Packet MACRO */
-    ST_C2H_UDD_ONLY_PKT,
-};
-
-/** qdma_queue_dir - QDMA Queue Direction */
-enum class qdma_queue_dir {
-    /** Queue H2C Direction */
-    QDMA_QUEUE_DIR_H2C = 0,
-    /** Queue C2H Direction */
-    QDMA_QUEUE_DIR_C2H
-};
-
-/** RING DESCRIPTOR TYPE */
-enum class qdma_desc_type {
-    /* Descriptor of type descriptor ring */
-    RING_DESCRIPTOR = 0,
-    /* Descriptor of type completion ring */
-    CMPT_DESCRIPTOR
-};
-
-/** DESCRIPTOR SIZE IN BYTES */
-enum class qdma_desc_sz {
-    /* Descriptor size of 8 bytes */
-    QDMA_DESC_SZ_8B = 0,
-    /* Descriptor size of 16 bytes */
-    QDMA_DESC_SZ_16B,
-    /* Descriptor size of 32 bytes */
-    QDMA_DESC_SZ_32B,
-    /* Descriptor size of 64 bytes */
-    QDMA_DESC_SZ_64B,
-    /* Descriptor size of invalid size */
-    QDMA_DESC_SZ_MAX
-};
-
-/** Completion status trigger mode */
-enum class qdma_trig_mode {
-    /* Trigger disabled */
-    QDMA_TRIG_MODE_DISABLE = 0,
-    /* Trigger on every update */
-    QDMA_TRIG_MODE_EVERY,
-    /* Trigger on user count */
-    QDMA_TRIG_MODE_USER_COUNT,
-    /* Trigger on user event */
-    QDMA_TRIG_MODE_USER,
-    /* Trigger on user timer */
-    QDMA_TRIG_MODE_USER_TIMER,
-    /* Trigger on user timer and count */
-    QDMA_TRIG_MODE_USER_TIMER_COUNT,
-    /* Trigger invalid */
-    QDMA_TRIG_MODE_MAX
-};
-
-/** queue_op_mode - QDMA Operation Mode */
-enum queue_op_mode {
-    /** Poll Mode */
-    POLL_MODE = 0,
-    /** Direct Interrupt Mode */
-    INTR_MODE,
-    /** Indirect Interrupt Mode(Aggregation) */
-    INTR_COAL_MODE
-};
-
-/** qdma_bar_type - QDMA PCIe BAR Types */
-enum class qdma_bar_type {
-    /** QDMA Configuration BAR
-     *  (Contains all QDMA configuration Registers)
-     */
-    CONFIG_BAR,
-    /** QDMA AXI Master Lite BAR
-     *  (Contains User Logic Registers)
-     */
-    USER_BAR,
-    /** QDMA AXI Bridge Master BAR
-     * (Contains Bypass Registers to bypass QDMA)
-     */
-    BYPASS_BAR
-};
-
-/** Specifies No of CSR Global Registers avalable */
-static constexpr size_t QDMA_GLBL_CSR_REG_CNT = 16;
-
-/** qdma_glbl_csr_conf - Provides the available CSR
- *                       connfiguration registers
- */
-struct qdma_glbl_csr_conf {
-    /** Ring Size CSR Registers */
-    UINT32 ring_sz[QDMA_GLBL_CSR_REG_CNT];
-    /** C2H Timer Count CSR Registers */
-    UINT32 c2h_timer_cnt[QDMA_GLBL_CSR_REG_CNT];
-    /** C2H Threshold CSR Registers */
-    UINT32 c2h_th_cnt[QDMA_GLBL_CSR_REG_CNT];
-    /** C2H Buffer size CSR Registers */
-    UINT32 c2h_buff_sz[QDMA_GLBL_CSR_REG_CNT];
-    /** Writeback interval timeout register */
-    UINT32 wb_interval;
-};
-
-/** 
- * dma_completion_cb() - DMA Request completion callback function type
- *
- * @param[in]   priv: Driver provided private member
- * @param[in]   status: DMA Request completion status
- *
- * @return void
- */
-using dma_completion_cb = void(*)(void *priv, NTSTATUS status);
-
-/**
- * st_rx_completion_cb() - Streaming C2H DMA Request completion callback function type
- *
- * @param[in]   rx_frags: List of packet fragments
- * @param[in]   num_pkts: entries in rx_frags
- * @param[in]   priv: Driver provided private member
- * @param[in]   status: DMA Request completion status
- *
- * @return void
- */
-using st_rx_completion_cb = void(*)(const st_c2h_pkt_fragment *rx_frags, size_t num_pkts, void *priv, NTSTATUS status);
-
-/**
- * proc_st_udd_only_cb() - User defined data received callback function type
- *
- * @param[in]   qid: Queue number
- * @param[in]   udd_addr: UDD pointer
- * @param[in]   priv: Driver provided private member
- *
- * @return void
- */
-using proc_st_udd_only_cb = void(*)(UINT16 qid, void *udd_addr, void *priv);
-
-/**
- * fp_user_isr_handler() - User defined user ISR handler
- *
- * @param[in]   event_id: Event identifier
- * @param[in]   user_data: Driver provided user data
- *
- * @return void
- */
-using fp_user_isr_handler = void(*)(ULONG event_id, void *user_data);
-
-/**
- * fp_user_interrupt_enable_handler() - User defined user ISR handler
- *
- * @param[in]   event_id: Event identifier
- * @param[in]   user_data: Driver provided user data
- *
- * @return void
- */
-using fp_user_interrupt_enable_handler = void(*)(ULONG event_id, void *user_data);
-
-/**
- * fp_user_interrupt_disable_handler() - User defined user ISR handler
- *
- * @param[in]   event_id: Event identifier
- * @param[in]   user_data: Driver provided user data
- *
- * @return void
- */
-using fp_user_interrupt_disable_handler = void(*)(ULONG event_id, void *user_data);
-
-/** dev_config - qdma device configuration
- *               needed to initialize the device
- */
-struct qdma_drv_config {
-    /* Queue operation mode */
-    queue_op_mode operation_mode;
-
-    /* Config BAR index */
-    UINT8 cfg_bar;
-
-    /* Maximum queues for the device */
-    UINT32 qsets_max;
-
-    /* Maximum user MSIx vector to use */
-    UINT16 user_msix_max;
-
-    /* Maximum data MSIx vector to use */
-    UINT16 data_msix_max;
-
-    /* User data for user interrupt callback functions */
-    void *user_data;
-
-    /* User ISR handler */
-    fp_user_isr_handler user_isr_handler;
-
-    /* User interrupt enable handler */
-    fp_user_interrupt_enable_handler user_interrupt_enable_handler;
-
-    /* User interrupt disable handler */
-    fp_user_interrupt_disable_handler user_interrupt_disable_handler;
-};
-
-/** queue_config - qdma queue configuration
- *                 needed to add a queue
- */
-struct queue_config {
-    /** queue is ST or MM */
-    bool is_st;
-    /** H2C ring size index */
-    UINT8 h2c_ring_sz_index;
-    /** C2H ring size index */
-    UINT8 c2h_ring_sz_index;
-    /** C2H buffer size index */
-    UINT8 c2h_buff_sz_index;
-    /** C2H threshold index */
-    UINT8 c2h_th_cnt_index;
-    /** C2H timer count index */
-    UINT8 c2h_timer_cnt_index;
-    /** completion ring size */
-    qdma_desc_sz cmpt_sz;
-    /** trigger mode (valid for ST C2H) */
-    qdma_trig_mode trig_mode;
-    /** Software descriptor size */
-    UINT8 sw_desc_sz;
-    /** descriptor bypass enabled or not */
-    bool desc_bypass_en;
-    /** prefetch enabled or not */
-    bool pfch_en;
-    /** prefetch bypass enabled or not */
-    bool pfch_bypass_en;
-    /** Completion overflow disabled or not */
-    bool cmpl_ovf_dis;
-    /** MM completion enabled or not */
-    bool en_mm_cmpl;
-    /** ST UDD data only call back function */
-    proc_st_udd_only_cb proc_st_udd_cb;
-};
-
-/** st_c2h_pkt_fragment - C2H Packet Details */
-struct st_c2h_pkt_fragment {
-    /** C2H Data Fragment Address */
-    void    *data = nullptr;
-    /** User Defined Data Address */
-    void    *udd_data = nullptr;
-    /** Length of the C2H data Fragment */
-    size_t  length = 0;
-    /** Indicates Start of packet */
-    UINT32  sop      : 1;
-    /** Indicates End of packet */
-    UINT32  eop      : 1;
-    /** Indicates Packet Type (ST_C2H_DATA_PKT or ST_C2H_UDD_ONLY_PKT) */
-    st_c2h_pkt_type  pkt_type : 1;
-    /** Reserved Field */
-    UINT32  reserved : 29;
-};
-
-/** qdma_device_attributes_info - Device Attributes/Features */
-struct qdma_device_attributes_info {
-    /** No of Physical functions supported */
-    UINT8 num_pfs;
-    /** No of queues supported */
-    UINT16 num_qs;
-    /** Function Level Reset Status */
-    bool flr_present;
-    /** Streaming Feature enabled */
-    bool st_en;
-    /** Memory Mapped Feature enabled */
-    bool mm_en;
-    /** MM Completion Feature enabled */
-    bool mm_cmpl_en;
-    /** Mailbox Feature enabled */
-    bool mailbox_en;
-    /** Debug mode is enabled/disabled for IP */
-    bool debug_mode;
-    /** Descriptor Engine mode:
-     *  Internal only/Bypass only/Internal & Bypass
-     */
-    UINT8 desc_eng_mode;
-    /** Number of MM channels supported */
-    UINT16 num_mm_channels;
-};
-
-#define DEVICE_VERSION_INFO_STR_LENGTH            32
-/** qdma_version_info - QDMA HW and SW version information */
-struct qdma_version_info {
-    /** Version string */
-    char qdma_rtl_version_str[DEVICE_VERSION_INFO_STR_LENGTH];
-    /** Release string */
-    char qdma_vivado_release_id_str[DEVICE_VERSION_INFO_STR_LENGTH];
-    /** Qdma device type string*/
-    char qdma_device_type_str[DEVICE_VERSION_INFO_STR_LENGTH];
-    /** Versal IP state string*/
-    char qdma_versal_ip_type_str[DEVICE_VERSION_INFO_STR_LENGTH];
-    /** QDMA SW Version string*/
-    char qdma_sw_version_str[DEVICE_VERSION_INFO_STR_LENGTH];
-};
-
-/** qdma_desc_info - Structure contains required members to
- *  retrieve descriptor information
- *
- *  The QDMA queue descriptor information will be copied into
- *  <b><em>pbuffer</em></b> for the requested <b><em>qid</em></b>,
- *  <b><em>dir</em></b>, <b><em>desc_type</em></b> from
- *  <b><em>desc_start</em></b> to <b><em>desc_end</em></b> into
- *  <b><em>pbuffer</em></b>.
- *
- *  Caller must allocate memory for <b><em>pbuffer</em></b> and
- *  the size must be specified in <b><em>buff_sz</em></b>
- *
- *  The driver specifies the actual length of data copied
- *  into <b><em>pbuffer</em></b> in <b><em>data_sz</em></b> field
- *  along with descriptor size in <b><em>desc_sz</em></b>.
- *
- */
-struct qdma_desc_info {
-    /** QID */
-    UINT16 qid;
-    /** Q Direction (H2C, C2H) */
-    qdma_queue_dir dir;
-    /** Descriptor Type (Ring Descriptor, Completion Descriptor) */
-    qdma_desc_type   desc_type;
-    /** Descriptor Start Index */
-    UINT32 desc_start;
-    /** Descriptor End Index */
-    UINT32 desc_end;
-    /** Data Buffer available size */
-    size_t  buffer_sz;
-    /** Data Buffer */
-    UINT8   *pbuffer;
-    /** Size of the descriptor */
-    size_t  desc_sz;
-    /** Size of the data returned */
-    size_t  data_sz;
-};
-
-/** qdma_cmpt_info - Structure contains required members to
- *  retrieve completion ring information
- *
- *  The QDMA MM completion ring data will be copied into
- *  <b><em>pbuffer</em></b> for the requested <b><em>qid</em></b>
- *
- *  Caller must allocate memory for <b><em>pbuffer</em></b> and
- *  the size must be specified in <b><em>buf_len</em></b>
- *
- *  The driver specifies the actual length of data copied
- *  into <b><em>pbuffer</em></b> in <b><em>ret_len</em></b> field
- *  along with completion descriptor size in <b><em>cmpt_desc_sz</em></b>.
- *
- */
-struct qdma_cmpt_info {
-    /** QID */
-    UINT16 qid;
-    /** Data Buffer available size */
-    size_t  buffer_len;
-    /** Returned Data size */
-    size_t  ret_len;
-    /** Completion Descriptor size */
-    size_t  cmpt_desc_sz;
-    /** Buffer to hold Completion Descriptors */
-    UINT8 *pbuffer;
-};
-
-/** qdma_ctx_info - Structure contains required members to
- *  retrieve QDMA queue context information
- *
- *  The queue context information will be copied into
- *  <b><em>pbuffer</em></b> for the requested <b><em>qid</em></b>
- *  in the requested <b><em>dir</em></b>
- *
- *  Caller must allocate memory for <b><em>pbuffer</em></b> and
- *  the size must be specified in <b><em>buff_sz</em></b>
- *
- *  The driver specifies the actual length of data copied
- *  into <b><em>pbuffer</em></b> in <b><em>ret_sz</em></b> field.
- */
-struct qdma_ctx_info {
-    /** QID */
-    UINT16  qid;
-    /** Ring Type (H2C, C2H, CMPT) */
-    enum qdma_q_type  ring_type;
-    /** Data Buffer available size */
-    size_t  buffer_sz;
-    /** Returned Data size */
-    size_t  ret_sz;
-    /** Buffer to hold context information */
-    char *pbuffer;
-};
-
-/** qdma_intr_ring_info - Structure contains required members to
- *  retrieve Interrupt ring information.
- *
- *  The interrupt ring information will be copied into
- *  <b><em>pbuffer</em></b> from <b><em>start_idx</em></b> to
- *  <b><em>end_idx</em></b> for the requested <b><em>vec_id</em></b>
- *
- *  Caller must allocate memory for <b><em>pbuffer</em></b> and
- *  the size must be specified in <b><em>buf_len</em></b>
- *
- *  The driver specifies the actual length of data copied
- *  into <b><em>pbuffer</em></b> in <b><em>ret_len</em></b> field.
- *
- *  The driver specifies the size of the ring entry in <b><em>ring_entry_sz</em></b>
- */
-struct qdma_intr_ring_info {
-    /** Interrupt Vector ID */
-    UINT32 vec_id;
-    /** Interrupt ring start index */
-    UINT32  start_idx;
-    /** Interrupt ring end index */
-    UINT32  end_idx;
-    /** Data Buffer available size */
-    size_t  buffer_len;
-    /** Returned Data size */
-    size_t  ret_len;
-    /** Size of the interrupt ring entry */
-    size_t  ring_entry_sz;
-    /** Buffer to hold interrupt ring information */
-    unsigned char *pbuffer;
-};
-
-/** qdma_reg_dump_info - Structure contains required members to
- *  retrieve register dump information
- *
- *  All the QDMA registers and its contents will be copied into
- *  <b><em>pbuffer</em></b>
- *
- *  Caller must allocate memory for <b><em>pbuffer</em></b> and
- *  the size must be specified in <b><em>buf_len</em></b>
- *
- *  The driver specifies the actual length of data copied
- *  into <b><em>pbuffer</em></b> in <b><em>ret_len</em></b> field.
- */
-struct qdma_reg_dump_info {
-    /** Data Buffer available size */
-    size_t  buffer_len;
-    /** Returned Data size */
-    size_t  ret_len;
-    /** Buffer to hold regsiter dump information */
-    char *pbuffer;
-};
-
-/** qdma_queue_stats - Structure contains required members to
- *  retrieve queue stats information
- *
- *  All the queue statistics for this function is copied.
- */
-struct qdma_qstat_info {
-    /** Queue base for this device */
-    UINT32 qbase;
-    /** Maximum allocated queues for this device */
-    UINT32 qmax;
-    /** Active host to card queues for this device */
-    UINT32 active_h2c_queues;
-    /** Active card to host queues for this device */
-    UINT32 active_c2h_queues;
-    /** Active completion queues for this device */
-    UINT32 active_cmpt_queues;
-};
-
-/** qdma_reg_info - Structure contains required members to
- *  retrieve requested qdma registers information
- */
-struct qdma_reg_info {
-    /** PCIe bar number */
-    UINT32  bar_no;
-    /** Register address offset */
-    UINT32  address;
-    /** number of registers to retrieve */
-    UINT32  reg_cnt;
-    /** Length of the buffer pointed by pbuffer */
-    size_t  buf_len;
-    /** Length of the data present in pbuffer */
-    size_t  ret_len;
-    /** output buffer to copy the register info */
-    char    *pbuffer;
-};
-
-/**
- * qdma_interface - libqdma interface class
- *
- * This class defines the interfaces that can be used while using
- * the libqdma library.
- */
-class qdma_interface {
-public:
-    /** Handle to WDF DMA Enabler object to enable and start DMA operations */
-    WDFDMAENABLER dma_enabler = nullptr;
-
-    /*****************************************************************************/
-    /**
-     * init() - Initializes the qdma device with operation mode and
-     *          config bar number to use
-     *
-     * @param[in]   conf: Device operation configuration
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS init(qdma_drv_config conf) = 0;
-
-    /*****************************************************************************/
-    /**
-     * open() - Prepares the qdma_device with all necessary information
-     *          like allocating memory for resources, BAR mappings,
-     *          Initializes the hardware structure, Initializes queues etc.,
-     *
-     * @param[in]   device:               WDF Device
-     * @param[in]   resources:            Handle to WDF Framework raw
-     *                                    HW resources list
-     * @param[in]   resources_translated: Handle to WDF Framework translated
-     *                                    HW resources list
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS open(WDFDEVICE device, WDFCMRESLIST resources, WDFCMRESLIST resources_translated) = 0;
-
-    /*****************************************************************************/
-    /**
-     * close() - Closes the QDMA device by freeing memory for resources,
-     *           unmapping BARs, De-initializes the hardware structure,
-     *           De-initializes queues etc.,
-     *
-     * @return  void
-     *****************************************************************************/
-    virtual void close(void) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_is_device_online() - Checks if qdma device is ready for operations.
-     *
-     * @return  true when device is online state.
-     *          false when device is offline state.
-     *****************************************************************************/
-    virtual bool qdma_is_device_online(void) = 0;
-
-    /*****************************************************************************/
-    /**
-     * read_bar() - Performs PCIe read operation on specified BAR number at
-     *              requested offset of requested size
-     *
-     * @param[in]   bar_type:   BAR Type
-     * @param[in]   offset:     address offset to read the data from
-     * @param[out]  data:       data buffer to store the read data
-     * @param[in]   size:       size of the requested read operation(in bytes)
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS read_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size) = 0;
-
-    /*****************************************************************************/
-    /**
-     * write_bar() - Performs PCIe write operation on specified BAR number at
-     *               requested offset of requested size
-     *
-     * @param[in]   bar_type:   BAR Type
-     * @param[in]   offset:     address offset to write the data to
-     * @param[in]   data:       data buffer contains the data bytes to write
-     * @param[in]   size:       size of the requested write operation(in bytes)
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS write_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size) = 0;
-
-    /*****************************************************************************/
-    /**
-     * write_bar() - Performs PCIe write operation on specified BAR number at
-     *               requested offset of requested size
-     *
-     * @param[in]   bar_type:   BAR Type
-     * @param[out]  bar_base:   BAR base mapped address
-     * @param[out]  bar_lenght: Bar length(in bytes)
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS get_bar_info(qdma_bar_type bar_type, PVOID &bar_base, size_t &bar_length) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_get_queues_state() - Retrieves the state of the specified queue
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     * @param[out]  qstate: state of the queue specified as enumeration
-     * @param[out]  state:  state of the queue specified as character string
-     * @param[in]   sz:     size of the state character array
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_get_queues_state(UINT16 qid, enum queue_state *qstate, char *state, size_t sz) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_add_queue() - Configures the specified queue addition process with
-     *                    provided configuration
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     * @param[in]   conf:   configuration parameters for qid
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_add_queue(UINT16 qid, queue_config& conf) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_start_queue() - Starts the configured queue(qid) and the queue will be
-     *                      in operational state
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_start_queue(UINT16 qid) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_stop_queue() - Stops the queue(qid) and the queue will be
-     *                     in non operational state
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_stop_queue(UINT16 qid) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_remove_queue() - Removes the queue(qid) configuration and
-     *                       puts in available state for re-use
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_remove_queue(UINT16 qid) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_is_queue_in_range() - Validate qid of a queue for this device
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_is_queue_in_range(UINT16 qid) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_enqueue_mm_request() - enqueues an MM request into specified queue
-     *
-     * @param[in]   qid:            queue id relative to this QDMA device
-     * @param[in]   direction:      DMA direction (read or write)
-     * @param[in]   sg_list:        scatter-gather list of data buffers
-     * @param[in]   device_offset:  Device address to write/from read
-     * @param[in]   compl_cb:       completion call back function
-     * @param[in]   priv:           private data that gets passed to
-     *                              compl_cb function
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_enqueue_mm_request(UINT16 qid, WDF_DMA_DIRECTION direction, PSCATTER_GATHER_LIST sg_list, LONGLONG device_offset, dma_completion_cb compl_cb, VOID *priv) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_enqueue_st_tx_request() - enqueues an ST write request into specified queue
-     *
-     * @param[in]       qid:        queue id relative to this QDMA device
-     * @param[in]       sg_list:    scatter-gather list of data buffers
-     * @param[in,out]   compl_cb:   completion call back function
-     *                              to indicate write operation is completed
-     * @param[in,out]   priv:       private data that gets passed to
-     *                              compl_cb function
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_enqueue_st_tx_request(UINT16 qid, PSCATTER_GATHER_LIST sg_list, dma_completion_cb compl_cb, VOID *priv) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_enqueue_st_rx_request() - enqueues an ST read request into specified queue
-     *
-     * @param[in]       qid:        queue id relative to this QDMA device
-     * @param[in]       length:     desired data length to be received
-     * @param[in,out]   compl_cb:   completion call back function
-     *                              once data is available
-     * @param[in,out]   priv:       private data that gets passed to
-     *                              compl_cb function
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_enqueue_st_rx_request(UINT16 qid, size_t length, st_rx_completion_cb compl_cb, VOID *priv) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_retrieve_st_udd_data() - Retrieves the User Defined Data(side band data)
-     *                               from ST C2H descriptors
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     * @param[in]   addr:   UDD address in descriptor
-     * @param[out]  buf:    buffer to store user defined data
-     * @param[out]  len:    specifies the length of UDD in bytes
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_retrieve_st_udd_data(UINT16 qid, void *addr, UINT8 *buf, UINT32 *len) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_retrieve_last_st_udd_data() - Retrieves the User Defined Data
-     *                                   (side band data) from ST C2H descriptors
-     *                                   that can be consumed in driver
-     *
-     * @param[in]   qid:    queue id relative to this QDMA device
-     * @param[out]  buf:    buffer to store user defined data
-     * @param[out]  len:    specifies the length of UDD in bytes
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_retrieve_last_st_udd_data(UINT16 qid, UINT8 *buf, UINT32 *len) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_queue_desc_dump() - Retrieves the descriptors data into desc_info
-     *
-     * @param[in,out]   desc_info:    pointer to qdma_desc_info
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_queue_desc_dump(qdma_desc_info *desc_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_read_mm_cmpt_data() - Retrieves the User Defined Data(side band data)
-     *                            from MM write back ring (if HW support available)
-     *
-     * @param[in,out]   cmpt_info:  user defined data(completion) information
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_read_mm_cmpt_data(qdma_cmpt_info *cmpt_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_queue_dump_context() - Dumps the queue context information of given
-     *                             direction
-     *
-     * @param[in,out]   ctx_info:  context information structure
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_queue_dump_context(qdma_ctx_info *ctx_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_intring_dump() - Dumps the interrupt ring context information of given
-     *                  vector ID from start index to end index
-     *
-     * @param[in,out]   intring_info:  interrupt ring context information
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_intring_dump(qdma_intr_ring_info *intring_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_regdump() - Dumps all the QDMA registers to given buffer
-     *
-     * @param[in,out]   regdump_info:  Register dump information
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_regdump(qdma_reg_dump_info *regdump_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_read_csr_conf() - Retrieves the CSR registers information
-     *
-     * @param[out]  conf:  CSR registers information
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_read_csr_conf(qdma_glbl_csr_conf *conf) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_get_dev_capabilities_info() - Retrieves the HW device features info
-     *
-     * @param[out]  dev_attr:  HW device attributes
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_get_dev_capabilities_info(qdma_device_attributes_info &dev_attr) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_device_version_info() - Retrieves the QDMA HW and SW versions
-     *                              in character array format
-     *
-     * @param[out]  version_info:  HW & SW versions information in character
-     *                             array format
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_device_version_info(qdma_version_info &version_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_set_qmax() - Set maximum queues number for this QDMA function.
-     *
-     * @param[in]   qmax: Maximum number of queues for this function.
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_set_qmax(UINT32 qmax) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_get_qstats_info() - Retrieves the QDMA statistics for queue resources
-     *
-     * @param[out]  qstats:  Total queues for function with occupied H2C, C2H and
-     *                       CMPT queues count.
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_get_qstats_info(qdma_qstat_info &qstats) = 0;
-
-    /*****************************************************************************/
-    /**
-     * qdma_get_reg_info() - Retrieves the requested QDMA registers information
-     *
-     * @param[out]  reg_info:  Register information (Address, Len, etc.,)
-     *
-     * @return  STATUS_SUCCESS for success else error
-     *****************************************************************************/
-    virtual NTSTATUS qdma_get_reg_info(qdma_reg_info* reg_info) = 0;
-
-    /*****************************************************************************/
-    /**
-     * create_qdma_device() - Allocates an instance for qdma device
-     *
-     * @return  Address of qdma_interface class or NULL in case of error
-     *****************************************************************************/
-    static qdma_interface* create_qdma_device(void);
-
-    /*****************************************************************************/
-    /**
-     * remove_qdma_device() - frees the allocated instance for qdma_device
-     *
-     * @param[in]   qdma_dev: address of the qdma_device instance
-     *
-     * @return  void
-     *****************************************************************************/
-    static void remove_qdma_device(qdma_interface *qdma_dev);
-
-    /// @cond
-    /*****************************************************************************/
-    /**
-     * new - Overloaded new operator to allocate the memory
-     *
-     * @param[in]   num_bytes: number of bytes of memory to allocate
-     *
-     * @return  void *
-     *****************************************************************************/
-    _IRQL_requires_max_(PASSIVE_LEVEL)
-    void *operator new(_In_ size_t num_bytes);
-
-    /*****************************************************************************/
-    /**
-     * delete - Overloaded delete operator to free the memory
-     *
-     * @param[in]   addr: address of the memory
-     *
-     * @return  void
-     *****************************************************************************/
-    _IRQL_requires_max_(PASSIVE_LEVEL)
-    void operator delete(_In_ void *addr);
-
-    /*****************************************************************************/
-    /**
-     * ~qdma_interface() - destructor
-     *
-     * @return  void
-     *****************************************************************************/
-    virtual ~qdma_interface() {}
-    /// @endcond
-};
-
-}
-#include <poppack.h>
diff --git a/QDMA/windows/sys/libqdma/include/xversion.hpp b/QDMA/windows/sys/libqdma/include/xversion.hpp
deleted file mode 100644
index 86f8f8a..0000000
--- a/QDMA/windows/sys/libqdma/include/xversion.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-/** Product Version (common.ver resources compatible) ***********************/
-
-#undef  VER_PRODUCTMAJORVERSION
-#define VER_PRODUCTMAJORVERSION            (2020)
-#undef  VER_PRODUCTMINORVERSION
-#define VER_PRODUCTMINORVERSION            (2)
-#undef  VER_PRODUCTREVISION
-#define VER_PRODUCTREVISION                (0)
-#undef  VER_PRODUCTBUILD
-#define VER_PRODUCTBUILD                   (0)
-
-/** Company Details *********************************************************/
-
-#undef  VER_COMPANYNAME_STR
-#define VER_COMPANYNAME_STR                "Xilinx, Inc."
-
-/** Copyright Details *******************************************************/
-
-#undef  VER_LEGALCOPYRIGHT_YEARS
-#define VER_LEGALCOPYRIGHT_YEARS           "2019-2020"
-#undef  VER_LEGALCOPYRIGHT_STR_WITH_YEARS
-#define VER_LEGALCOPYRIGHT_STR_WITH_YEARS  \
-    "Copyright 2019-2020 Xilinx, Inc."
-#undef  VER_LEGALCOPYRIGHT_STR
-#if defined(RC_INVOKED)
-#define VER_LEGALCOPYRIGHT_STR             \
-    "\251 Copyright Xilinx, Inc. All rights reserved."
-#else
-#define VER_LEGALCOPYRIGHT_STR             \
-    "(c) Copyright Xilinx, Inc. All rights reserved."
-#endif
-
-/** Product Details *********************************************************/
-
-#undef  VER_PRODUCTNAME_STR
-#define VER_PRODUCTNAME_STR                \
-    "Xilinx PCIe Multi-Queue-DMA Reference Driver"
-
-// Version number (in format needed for version resources)
-#undef  VER_PRODUCTVERSION
-#define VER_PRODUCTVERSION                 2020,2,0,0
-
-// Version number string
-#undef  VER_PRODUCTVERSION_STR
-#define VER_PRODUCTVERSION_STR             "2020.2.0.0"
-
-/** File Details ************************************************************/
-
-// Default file version to be the same as product version
-#define VER_FILEVERSION                    VER_PRODUCTVERSION
-#define VER_FILEVERSION_STR                VER_PRODUCTVERSION_STR
-
-// Default to language-independent software
-#define VER_LANGNEUTRAL
-
-// Don't append a build machine tag to the file version string
-#undef  __BUILDMACHINE__
diff --git a/QDMA/windows/sys/libqdma/libqdma.vcxproj b/QDMA/windows/sys/libqdma/libqdma.vcxproj
deleted file mode 100644
index f059ff2..0000000
--- a/QDMA/windows/sys/libqdma/libqdma.vcxproj
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{359143E6-933A-49CC-806C-C5376E1809A4}</ProjectGuid>
-    <TemplateGuid>{497e31cb-056b-4f31-abb8-447fd55ee5a5}</TemplateGuid>
-    <TargetFrameworkVersion>
-    </TargetFrameworkVersion>
-    <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
-    <Configuration>Debug</Configuration>
-    <Platform Condition="'$(Platform)' == ''">Win32</Platform>
-    <RootNamespace>MDMA</RootNamespace>
-    <ProjectName>libqdma</ProjectName>
-    <WindowsTargetPlatformVersion>$(LatestTargetPlatformVersion)</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>Driver</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <TargetVersion>Windows10</TargetVersion>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <DriverType>KMDF</DriverType>
-    <DriverTargetPlatform>Desktop</DriverTargetPlatform>
-    <SupportsPackaging>true</SupportsPackaging>
-    <ALLOW_DATE_TIME>1</ALLOW_DATE_TIME>
-    <SpectreMitigation>false</SpectreMitigation>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\sys\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\libqdma\</OutDir>
-    <TargetName>QDMA</TargetName>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetExt>.lib</TargetExt>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor>
-    <OutDir>$(SolutionDir)build\$(Platform)\$(ConfigurationName)\libqdma\</OutDir>
-    <IntDir>$(SolutionDir).tmp\$(Platform)\$(ConfigurationName)\$(ProjectName)\</IntDir>
-    <TargetName>QDMA</TargetName>
-    <TargetExt>.lib</TargetExt>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <WppEnabled>true</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">include\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <SupportJustMyCode>false</SupportJustMyCode>
-    </ClCompile>
-    <Inf />
-    <ResourceCompile />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WppEnabled>false</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">include\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\libqdma\include;$(ProjectDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-    </ClCompile>
-    <Inf />
-    <Inf />
-    <Inf />
-    <Inf />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <WppEnabled>true</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">source\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\include\;$(ProjectDir)\source\;$(ProjectDir)\source\qdma_access\;$(ProjectDir)\source\qdma_access\eqdma_soft_access;$(ProjectDir)\source\qdma_access\qdma_soft_access;$(ProjectDir)\source\qdma_access\qdma_s80_hard_access;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <SupportJustMyCode>false</SupportJustMyCode>
-      <AdditionalOptions>$(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <Inf />
-    <ResourceCompile />
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WppEnabled>false</WppEnabled>
-      <WppRecorderEnabled>false</WppRecorderEnabled>
-      <WppScanConfigurationData Condition="'%(ClCompile.ScanConfigurationData)' == ''">source\trace.h</WppScanConfigurationData>
-      <WppKernelMode>true</WppKernelMode>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking>
-      <AdditionalIncludeDirectories>$(ProjectDir)\include\;$(ProjectDir)\source\;$(ProjectDir)\source\qdma_access\;$(ProjectDir)\source\qdma_access\eqdma_soft_access;$(ProjectDir)\source\qdma_access\qdma_soft_access;$(ProjectDir)\source\qdma_access\qdma_s80_hard_access;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <WppModuleName>qdma</WppModuleName>
-      <LanguageStandard>stdcpp17</LanguageStandard>
-      <AdditionalOptions>$(ExternalCompilerOptions) %(AdditionalOptions)</AdditionalOptions>
-    </ClCompile>
-    <Inf />
-    <Inf />
-    <Inf />
-    <Inf />
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <FilesToPackage Include="$(TargetPath)" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="include\qdma_exports.h" />
-    <ClInclude Include="include\xversion.hpp" />
-    <ClInclude Include="source\interrupts.hpp" />
-    <ClInclude Include="source\qdma.h" />
-    <ClInclude Include="source\qdma_access\eqdma_soft_access\eqdma_soft_access.h" />
-    <ClInclude Include="source\qdma_access\eqdma_soft_access\eqdma_soft_reg.h" />
-    <ClInclude Include="source\qdma_access\qdma_access_common.h" />
-    <ClInclude Include="source\qdma_access\qdma_access_errors.h" />
-    <ClInclude Include="source\qdma_access\qdma_access_export.h" />
-    <ClInclude Include="source\qdma_access\qdma_access_version.h" />
-    <ClInclude Include="source\qdma_access\qdma_list.h" />
-    <ClInclude Include="source\qdma_access\qdma_platform.h" />
-    <ClInclude Include="source\qdma_access\qdma_reg_dump.h" />
-    <ClInclude Include="source\qdma_access\qdma_resource_mgmt.h" />
-    <ClInclude Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_access.h" />
-    <ClInclude Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_reg.h" />
-    <ClInclude Include="source\qdma_access\qdma_soft_access\qdma_soft_access.h" />
-    <ClInclude Include="source\qdma_access\qdma_soft_access\qdma_soft_reg.h" />
-    <ClInclude Include="source\qdma_config.h" />
-    <ClInclude Include="source\qdma_license.h" />
-    <ClInclude Include="source\qdma_platform_env.h" />
-    <ClInclude Include="source\qdma_reg_ext.h" />
-    <ClInclude Include="source\thread.h" />
-    <ClInclude Include="source\trace.h" />
-    <ClInclude Include="source\xpcie.hpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="source\interrupts.cpp" />
-    <ClCompile Include="source\qdma.cpp" />
-    <ClCompile Include="source\qdma_access\eqdma_soft_access\eqdma_soft_access.c" />
-    <ClCompile Include="source\qdma_access\eqdma_soft_access\eqdma_soft_reg_dump.c" />
-    <ClCompile Include="source\qdma_access\qdma_access_common.c" />
-    <ClCompile Include="source\qdma_access\qdma_list.c" />
-    <ClCompile Include="source\qdma_access\qdma_resource_mgmt.c" />
-    <ClCompile Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_access.c" />
-    <ClCompile Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_reg_dump.c" />
-    <ClCompile Include="source\qdma_access\qdma_soft_access\qdma_soft_access.c" />
-    <ClCompile Include="source\qdma_platform.cpp" />
-    <ClCompile Include="source\thread.cpp" />
-    <ClCompile Include="source\xpcie.cpp" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/libqdma/libqdma.vcxproj.filters b/QDMA/windows/sys/libqdma/libqdma.vcxproj.filters
deleted file mode 100644
index ac01025..0000000
--- a/QDMA/windows/sys/libqdma/libqdma.vcxproj.filters
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{e1da9a0a-858f-49d8-bf70-e04880baf8b3}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{6c2a1f5c-8444-46b2-95e9-8c53ee5ab032}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="include\qdma_exports.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\xversion.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\interrupts.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_config.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_license.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_platform_env.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_reg_ext.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\thread.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\trace.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\xpcie.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_access_common.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_access_errors.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_access_export.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_access_version.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_list.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_platform.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_reg_dump.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_resource_mgmt.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\eqdma_soft_access\eqdma_soft_access.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\eqdma_soft_access\eqdma_soft_reg.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_access.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_reg.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_soft_access\qdma_soft_access.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="source\qdma_access\qdma_soft_access\qdma_soft_reg.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="source\qdma_access\qdma_soft_access\qdma_soft_access.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_access.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\eqdma_soft_access\eqdma_soft_access.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\qdma_access_common.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\qdma_list.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\qdma_resource_mgmt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\interrupts.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_platform.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\thread.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\xpcie.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\eqdma_soft_access\eqdma_soft_reg_dump.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="source\qdma_access\qdma_s80_hard_access\qdma_s80_hard_reg_dump.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/libqdma/libqdma.vcxproj.user b/QDMA/windows/sys/libqdma/libqdma.vcxproj.user
deleted file mode 100644
index a667f8f..0000000
--- a/QDMA/windows/sys/libqdma/libqdma.vcxproj.user
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <RemoveDriver>False</RemoveDriver>
-    <InstallMode>None</InstallMode>
-    <HardwareIdString />
-    <CommandLine />
-    <ScriptPath>C:\Program Files (x86)\Windows Kits\10\Testing\Tests\Utilities\DefaultDriverPackageInstallationTask.dll</ScriptPath>
-    <DbgengRemoteMachineName>XIRIPDSLAB20</DbgengRemoteMachineName>
-    <DbgengKernelMachineName>XIRIPDSLAB20</DbgengKernelMachineName>
-    <DeployFiles />
-    <ScriptName>Microsoft.DriverKit.DefaultDriverPackageInstallationClass.PerformDefaultDriverPackageInstallation</ScriptName>
-    <ScriptDeviceQuery />
-    <EnableVerifier>True</EnableVerifier>
-    <AllDrivers>False</AllDrivers>
-    <VerifyProjectOutput>True</VerifyProjectOutput>
-    <VerifyDrivers />
-    <VerifyFlags>133563</VerifyFlags>
-    <FrameWorkInteraction>FvOn</FrameWorkInteraction>
-    <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor>
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <TestCertificate>
-    </TestCertificate>
-  </PropertyGroup>
-</Project>
\ No newline at end of file
diff --git a/QDMA/windows/sys/libqdma/source/interrupts.cpp b/QDMA/windows/sys/libqdma/source/interrupts.cpp
deleted file mode 100644
index 581c8c4..0000000
--- a/QDMA/windows/sys/libqdma/source/interrupts.cpp
+++ /dev/null
@@ -1,947 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma.h"
-#include "interrupts.hpp"
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "interrupts.tmh"
-#endif
-
-using namespace xlnx;
-
-/* ------- Interrupt Queue ------- */
-NTSTATUS intr_queue::create(
-    WDFDMAENABLER& dma_enabler)
-{
-    auto buffer_size = size * sizeof(intr_entry);
-
-    /* Align to page size */
-    if (buffer_size % PAGE_SIZE) {
-        buffer_size = ((buffer_size / PAGE_SIZE) + 1) * PAGE_SIZE;
-    }
-
-    TraceVerbose(TRACE_INTR, "%s: Intr Queue : %d, Buffer size : %llu, Ring size : %llu",
-        qdma->dev_conf.name, idx_abs, buffer_size, size);
-
-    capacity = buffer_size / sizeof(intr_entry);
-    npages = buffer_size / PAGE_SIZE;
-    color = 1;
-
-    TraceVerbose(TRACE_INTR, "Intr Queue : %d, Page size : %llu, Capacity : %llu",
-        idx_abs, npages, capacity);
-
-    auto status = WdfCommonBufferCreate(dma_enabler,
-                                        buffer_size,
-                                        WDF_NO_OBJECT_ATTRIBUTES,
-                                        &buffer);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_INTR, "%s: Interrupt WdfCommonBufferCreate failed for "
-            "intr queue : %d, : %!STATUS!", qdma->dev_conf.name, idx_abs, status);
-        return status;
-    }
-
-    buffer_va = static_cast<void*>(WdfCommonBufferGetAlignedVirtualAddress(buffer));
-
-    clear_contents();
-
-    return status;
-}
-
-void intr_queue::clear_contents(void)
-{
-    auto buffer_size = size * sizeof(intr_entry);
-    RtlZeroMemory(buffer_va, buffer_size);
-    sw_index = 0;
-    intr_cidx_info.rng_idx = 0;
-    intr_cidx_info.sw_cidx = 0;
-}
-
-void intr_queue::advance_sw_index(void)
-{
-    ++sw_index;
-
-    if (sw_index == capacity) {
-        sw_index = 0;
-        /* Flip the color */
-        color = color ? 0 : 1;
-    }
-}
-
-PFORCEINLINE void intr_queue::update_csr_cidx(
-    queue_pair *q,
-    UINT32 new_cidx)
-{
-    TraceVerbose(TRACE_INTR, "%s: Intr queue_%u updating c2h pidx to %u", qdma->dev_conf.name, idx, new_cidx);
-    intr_cidx_info.rng_idx = (UINT8)idx_abs;
-    intr_cidx_info.sw_cidx = (UINT16)new_cidx;
-
-    qdma->hw.qdma_queue_intr_cidx_update(qdma, false /* is_vf */, q->idx, &intr_cidx_info);
-}
-
-NTSTATUS intr_queue::intring_dump(qdma_intr_ring_info *intring_info)
-{
-    size_t len;
-    size_t buf_idx;
-    size_t ring_entry_sz;
-    UINT8 *ring_buff_addr;
-    UINT8 *buf = intring_info->pbuffer;
-    size_t buf_len = intring_info->buffer_len;
-
-    if ((intring_info->start_idx >= size) ||
-        (intring_info->end_idx >= size)) {
-        TraceError(TRACE_INTR, "%s: Intr Ring index Range is incorrect : start : %d, end : %d, RING SIZE : %d",
-            qdma->dev_conf.name, intring_info->start_idx, intring_info->end_idx, size);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    ring_entry_sz = sizeof(intr_entry);
-    intring_info->ring_entry_sz = ring_entry_sz;
-    if (intring_info->start_idx <= intring_info->end_idx) {
-        len = ((size_t)intring_info->end_idx - (size_t)intring_info->start_idx + 1) * ring_entry_sz;
-        len = min(len, buf_len);
-        buf_idx = intring_info->start_idx * ring_entry_sz;
-        ring_buff_addr = &((UINT8 *)buffer_va)[buf_idx];
-        RtlCopyMemory(buf, ring_buff_addr, len);
-        intring_info->ret_len = len;
-    }
-    else {
-        len = (size - intring_info->start_idx) * ring_entry_sz;
-        len = min(len, buf_len);
-        buf_idx = intring_info->start_idx * ring_entry_sz;
-        ring_buff_addr = &((UINT8 *)buffer_va)[buf_idx];
-        RtlCopyMemory(buf, ring_buff_addr, len);
-        intring_info->ret_len = len;
-
-        size_t remain_len = ((size_t)intring_info->end_idx + 1) * ring_entry_sz;
-        len = min(remain_len, (buf_len - len));
-        ring_buff_addr = &((UINT8 *)buffer_va)[0];
-        RtlCopyMemory(&buf[intring_info->ret_len], ring_buff_addr, len);
-        intring_info->ret_len += len;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-/* --------------*/
-
-inline static size_t get_msix_mask_offset(
-    UINT32 vector)
-{
-    return (qdma_trq_cmc_msix_table + (((size_t)vector + 1) * qdma_msix_vectors_mask_step));
-};
-
-void qdma_device::mask_msi_entry(
-    UINT32 vector)
-{
-    /* MSIx mask value
-     * [bit 0 ]   - 0 : Unmask, 1 : Mask
-     * [bit 1-31] - Reserved
-     */
-    UINT32 mask_val = 1u;
-    qdma_conf_reg_write(get_msix_mask_offset(vector), mask_val);
-}
-
-void qdma_device::unmask_msi_entry(
-    UINT32 vector)
-{
-    /* MSIx mask value
-     * [bit 0 ]   - 0 : Unmask, 1 : Mask
-     * [bit 1-31] - Reserved
-     */
-    UINT32 mask_val = 0u;
-    qdma_conf_reg_write(get_msix_mask_offset(vector), mask_val);
-}
-
-BOOLEAN EvtErrorInterruptIsr(
-    WDFINTERRUPT interrupt,
-    ULONG MessageID)
-{
-    UNREFERENCED_PARAMETER(interrupt);
-    UNREFERENCED_PARAMETER(MessageID);
-
-    return WdfInterruptQueueDpcForIsr(interrupt);
-}
-
-VOID EvtErrorInterruptDpc(
-    WDFINTERRUPT interrupt,
-    WDFOBJECT device)
-{
-    UNREFERENCED_PARAMETER(device);
-    UNREFERENCED_PARAMETER(interrupt);
-
-    TraceError(TRACE_INTR, "Error IRQ Fired on Master PF");
-
-    auto irq_ctx = get_qdma_irq_context(interrupt);
-    if (nullptr == irq_ctx) {
-        TraceError(TRACE_INTR, "Err: null irq_ctx in EvtErrorInterruptDpc");
-        return;
-    }
-
-    auto qdma_dev = irq_ctx->qdma_dev;
-    qdma_dev->hw.qdma_hw_error_process(qdma_dev);
-    qdma_dev->hw.qdma_hw_error_intr_rearm(qdma_dev);
-
-    return;
-}
-
-NTSTATUS EvtUserInterruptEnable(
-    WDFINTERRUPT interrupt,
-    WDFDEVICE device)
-{
-    UNREFERENCED_PARAMETER(device);
-    auto irq_ctx = get_qdma_irq_context(interrupt);
-    if (irq_ctx->qdma_dev->drv_conf.user_interrupt_enable_handler) {
-        irq_ctx->qdma_dev->drv_conf.user_interrupt_enable_handler(irq_ctx->vector_id,
-            irq_ctx->qdma_dev->drv_conf.user_data);
-    }
-
-    TraceVerbose(TRACE_INTR, "%s: --> %s", irq_ctx->qdma_dev->dev_conf.name, __func__);
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS EvtUserInterruptDisable(
-    WDFINTERRUPT interrupt,
-    WDFDEVICE device)
-{
-    UNREFERENCED_PARAMETER(device);
-    auto irq_ctx = get_qdma_irq_context(interrupt);
-    if (irq_ctx->qdma_dev->drv_conf.user_interrupt_disable_handler) {
-        irq_ctx->qdma_dev->drv_conf.user_interrupt_disable_handler(irq_ctx->vector_id,
-            irq_ctx->qdma_dev->drv_conf.user_data);
-    }
-
-    TraceVerbose(TRACE_INTR, "%s: %s <--", irq_ctx->qdma_dev->dev_conf.name, __func__);
-    return STATUS_SUCCESS;
-}
-
-BOOLEAN EvtUserInterruptIsr(
-    WDFINTERRUPT interrupt,
-    ULONG MessageID)
-{
-    UNREFERENCED_PARAMETER(interrupt);
-    UNREFERENCED_PARAMETER(MessageID);
-
-    TraceVerbose(TRACE_INTR, "User Interrupt ISR CALLED %lu SUCCESSFull", MessageID);
-
-    return WdfInterruptQueueDpcForIsr(interrupt);
-}
-
-VOID EvtUserInterruptDpc(
-    WDFINTERRUPT interrupt,
-    WDFOBJECT device)
-{
-    UNREFERENCED_PARAMETER(device);
-    auto irq_ctx = get_qdma_irq_context(interrupt);
-
-    TraceVerbose(TRACE_INTR, "%s: User Interrupt DPC for vector : %u", irq_ctx->qdma_dev->dev_conf.name, irq_ctx->vector_id);
-
-    if (irq_ctx->qdma_dev->drv_conf.user_isr_handler) {
-        irq_ctx->qdma_dev->drv_conf.user_isr_handler(irq_ctx->vector_id,
-            irq_ctx->qdma_dev->drv_conf.user_data);
-    }
-
-    return;
-}
-
-BOOLEAN EvtDataInterruptIsr(
-    WDFINTERRUPT interrupt,
-    ULONG MessageID)
-{
-    UNREFERENCED_PARAMETER(MessageID);
-    auto irq_ctx = get_qdma_irq_context(interrupt);
-    auto qdma_dev = irq_ctx->qdma_dev;
-
-    if ((irq_ctx->intr_type == interrupt_type::LEGACY) &&
-        (qdma_dev->hw.qdma_legacy_intr_conf != nullptr)) {
-        TraceVerbose(TRACE_INTR, "LEGACY INTERRUPT RECEIVED");
-        auto ret = qdma_dev->hw.qdma_is_legacy_intr_pend(qdma_dev);
-        if (ret < 0) {
-            /* No interrupt pending, Hence returning from ISR */
-            return false;
-        }
-
-        qdma_dev->hw.qdma_clear_pend_legacy_intr(qdma_dev);
-    }
-
-    irq_ctx->interrupt_handler(irq_ctx);
-
-    if ((irq_ctx->intr_type == interrupt_type::LEGACY) &&
-        (qdma_dev->hw.qdma_legacy_intr_conf != nullptr)) {
-        qdma_dev->hw.qdma_legacy_intr_conf(qdma_dev, ENABLE);
-        TraceVerbose(TRACE_INTR, "LEGACY INTERRUPT RE-ENABLED");
-    }
-
-    return true;
-}
-
-BOOLEAN schedule_dpc(queue_pair* q, UINT8 is_c2h, CCHAR active_processors)
-{
-    BOOLEAN status = FALSE;
-    poll_operation_entry* poll_entry = nullptr;
-    PRKDPC dpc = nullptr;
-    PVOID arg1 = nullptr;
-
-    poll_entry = (is_c2h) ? q->c2h_q.poll_entry : q->h2c_q.poll_entry;
-    if (poll_entry) {
-        dpc = &poll_entry->thread->dpc;
-        arg1 = poll_entry->thread;
-
-        KeSetTargetProcessorDpc(dpc, (CCHAR)(q->idx % active_processors));
-        status = KeInsertQueueDpc(dpc, arg1, NULL);
-    }
-
-    return status;
-}
-
-void cpm_handle_indirect_interrupt(
-    PQDMA_IRQ_CONTEXT irq_ctx)
-{
-    queue_pair *q = nullptr;
-    UINT8 is_c2h = 0;
-    CCHAR active_processors = (CCHAR)KeQueryActiveProcessorCount(NULL);
-
-    auto intr_queue = irq_ctx->intr_q;
-    if (nullptr == intr_queue) {
-        TraceError(TRACE_INTR, "%s: Invalid vector %lu was called in coal mode", 
-            irq_ctx->qdma_dev->dev_conf.name, irq_ctx->vector_id);
-        return;
-    }
-
-    const auto ring_va = static_cast<cpm_intr_entry *>(intr_queue->buffer_va);
-
-    TraceVerbose(TRACE_INTR, "%s: CPM Coal queue SW Index : %u", 
-        irq_ctx->qdma_dev->dev_conf.name, intr_queue->sw_index);
-    TraceVerbose(TRACE_INTR, "%s: CPM Intr PIDX : %u, Intr CIDX : %u", 
-        irq_ctx->qdma_dev->dev_conf.name, ring_va[intr_queue->sw_index].desc_pidx, 
-        ring_va[intr_queue->sw_index].desc_cidx);
-
-    while (ring_va[intr_queue->sw_index].color == intr_queue->color) {
-        q = irq_ctx->qdma_dev->qdma_get_queue_pair_by_hwid(ring_va[intr_queue->sw_index].qid);
-        if (nullptr == q) {
-            TraceError(TRACE_INTR, "%s: Queue not found hw qid : %u Intr qid : %u",
-                irq_ctx->qdma_dev->dev_conf.name, 
-                ring_va[intr_queue->sw_index].qid, 
-                intr_queue->idx);
-            intr_queue->advance_sw_index();
-            continue;
-        }
-
-        is_c2h = ring_va[intr_queue->sw_index].intr_type;
-
-        schedule_dpc(q, is_c2h, active_processors);
-
-        intr_queue->advance_sw_index();
-
-        TraceVerbose(TRACE_INTR, "%s: CPM QUEUE ID : %u, is_c2h : %d", 
-            irq_ctx->qdma_dev->dev_conf.name, 
-            ring_va[intr_queue->sw_index].qid, is_c2h);
-    }
-
-    if (q) {
-        intr_queue->update_csr_cidx(q, intr_queue->sw_index);
-    }
-}
-
-void handle_indirect_interrupt(
-    PQDMA_IRQ_CONTEXT irq_ctx)
-{
-    queue_pair *q = nullptr;
-    UINT8 is_c2h = 0;
-    CCHAR active_processors = (CCHAR)KeQueryActiveProcessorCount(NULL);
-
-    auto intr_queue = irq_ctx->intr_q;
-    if (nullptr == intr_queue) {
-        TraceError(TRACE_INTR, "%s: Invalid vector %lu was called in coal mode", 
-            irq_ctx->qdma_dev->dev_conf.name, irq_ctx->vector_id);
-        return;
-    }
-
-    const auto ring_va = static_cast<intr_entry *>(intr_queue->buffer_va);
-
-    TraceVerbose(TRACE_INTR, "%s: Coal queue SW Index : %u", 
-        irq_ctx->qdma_dev->dev_conf.name, intr_queue->sw_index);
-    TraceVerbose(TRACE_INTR, "%s: Intr PIDX : %u, Intr CIDX : %u", 
-        irq_ctx->qdma_dev->dev_conf.name, 
-        ring_va[intr_queue->sw_index].desc_pidx, 
-        ring_va[intr_queue->sw_index].desc_cidx);
-
-    while (ring_va[intr_queue->sw_index].color == intr_queue->color) {
-        q = irq_ctx->qdma_dev->qdma_get_queue_pair_by_hwid(ring_va[intr_queue->sw_index].qid);
-        if (nullptr == q) {
-            TraceError(TRACE_INTR, "%s: Queue not found hw qid : %u Intr qid : %u",
-                irq_ctx->qdma_dev->dev_conf.name, 
-                ring_va[intr_queue->sw_index].qid, intr_queue->idx);
-            intr_queue->advance_sw_index();
-            continue;
-        }
-
-        is_c2h = ring_va[intr_queue->sw_index].intr_type;
-
-        schedule_dpc(q, is_c2h, active_processors);
-
-        intr_queue->advance_sw_index();
-
-        TraceVerbose(TRACE_INTR, "%s: QUEUE ID : %u, is_c2h : %d", 
-            irq_ctx->qdma_dev->dev_conf.name, ring_va[intr_queue->sw_index].qid, is_c2h);
-    }
-
-    if (q) {
-        intr_queue->update_csr_cidx(q, intr_queue->sw_index);
-    }
-}
-
-void handle_direct_interrupt(
-    PQDMA_IRQ_CONTEXT irq_ctx)
-{
-    CCHAR active_processors = (CCHAR)KeQueryActiveProcessorCount(NULL);
-    PLIST_ENTRY entry;
-    PLIST_ENTRY temp;
-
-    LIST_FOR_EACH_ENTRY_SAFE(&irq_ctx->queue_list_head, temp, entry) {
-        queue_pair *queue = CONTAINING_RECORD(entry, queue_pair, list_entry);
-
-        TraceVerbose(TRACE_INTR, "%s: SERVICING QUEUE : %u IN DIRECT INTERRUPT", 
-            irq_ctx->qdma_dev->dev_conf.name, queue->idx);
-        schedule_dpc(queue, 0 /* H2C */, active_processors);
-        schedule_dpc(queue, 1 /* C2H */, active_processors);
-
-    }
-}
-
-int qdma_device::setup_legacy_vector(queue_pair& q)
-{
-    int ret = 0;
-    int status = 0;
-    int legacy_vec = 0;
-
-    WdfInterruptAcquireLock(irq_mgr.irq[legacy_vec]);
-
-    auto irq_ctx = get_qdma_irq_context(irq_mgr.irq[legacy_vec]);
-    if (false == IS_LIST_EMPTY(&irq_ctx->queue_list_head)) {
-        TraceError(TRACE_INTR, "%s: Only One queue is supported "
-            "in legacy interrupt mode", dev_conf.name);
-        status = -(STATUS_UNSUCCESSFUL);
-        goto ErrExit;
-    }
-
-    if (hw.qdma_legacy_intr_conf == nullptr) {
-        TraceError(TRACE_INTR, "%s: legacy interrupt mode "
-            "not supported", dev_conf.name);
-        status = -(STATUS_UNSUCCESSFUL);
-        goto ErrExit;
-    }
-
-    ret = hw.qdma_legacy_intr_conf(this, DISABLE);
-    if (ret < 0) {
-        TraceError(TRACE_INTR, "%s: qdma_disable_legacy_interrupt "
-            "failed, ret : %d", dev_conf.name, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    LIST_ADD_TAIL(&irq_ctx->queue_list_head, &q.list_entry);
-
-    ret = hw.qdma_legacy_intr_conf(this, ENABLE);
-    if (ret < 0) {
-        TraceError(TRACE_INTR, "%s: qdma_enable_legacy_interrupt "
-            "failed, ret : %d", dev_conf.name, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    TraceVerbose(TRACE_INTR, "%s: Vector Allocated [0] for legacy interrupt mode", 
-        dev_conf.name);
-
-    WdfInterruptReleaseLock(irq_mgr.irq[legacy_vec]);
-
-    return legacy_vec;
-
-ErrExit:
-    WdfInterruptReleaseLock(irq_mgr.irq[legacy_vec]);
-    return status;
-}
-
-/* Allocate MSIx Vector position */
-UINT32 qdma_device::alloc_msix_vector_position(queue_pair& q)
-{
-    UINT32 weight;
-    UINT32 vector;
-
-    WdfSpinLockAcquire(irq_mgr.lock);
-
-    vector = irq_mgr.data_vector_id_start;
-    weight = irq_mgr.irq_weight[vector];
-
-    for (UINT32 i = irq_mgr.data_vector_id_start + 1; i <= irq_mgr.data_vector_id_end; ++i) {
-        if (irq_mgr.irq_weight[i] < weight) {
-            weight = irq_mgr.irq_weight[i];
-            vector = i;
-        }
-    }
-
-    ++irq_mgr.irq_weight[vector];
-
-    WdfSpinLockRelease(irq_mgr.lock);
-
-    if (drv_conf.operation_mode == queue_op_mode::INTR_MODE) {
-        WdfInterruptAcquireLock(irq_mgr.irq[vector]);
-
-        auto irq_ctx = get_qdma_irq_context(irq_mgr.irq[vector]);
-        LIST_ADD_TAIL(&irq_ctx->queue_list_head, &queue_pairs[q.idx].list_entry);
-
-        WdfInterruptReleaseLock(irq_mgr.irq[vector]);
-    }
-    else if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) {
-        /* For indirect interrupt, return absolute interrupt queue index */
-        auto irq_ctx = get_qdma_irq_context(irq_mgr.irq[vector]);
-        vector = irq_ctx->intr_q->idx_abs;
-    }
-
-    TraceVerbose(TRACE_INTR, "%s: Vector Allocated [%u]. Weight : %u",
-        dev_conf.name, vector, irq_mgr.irq_weight[vector]);
-
-    return vector;
-}
-
-/* Free MSIX vector position */
-void qdma_device::free_msix_vector_position(
-    queue_pair& q,
-    UINT32 vector)
-{
-    auto RELATIVE_INTR_QID = [](auto q) { return q % (UINT32)qdma_max_msix_vectors_per_pf; };
-    if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE)
-        vector = RELATIVE_INTR_QID(vector);
-    else if (drv_conf.operation_mode == queue_op_mode::INTR_MODE) {
-        WdfInterruptAcquireLock(irq_mgr.irq[vector]);
-        auto irq_ctx = get_qdma_irq_context(irq_mgr.irq[vector]);
-        PLIST_ENTRY entry;
-        LIST_FOR_EACH_ENTRY(&irq_ctx->queue_list_head, entry) {
-            queue_pair *queue = CONTAINING_RECORD(entry, queue_pair, list_entry);
-            if (queue->idx == q.idx) {
-                LIST_DEL_NODE(entry);
-                break;
-            }
-        }
-        WdfInterruptReleaseLock(irq_mgr.irq[vector]);
-    }
-
-    WdfSpinLockAcquire(irq_mgr.lock);
-
-    --irq_mgr.irq_weight[vector];
-
-    TraceVerbose(TRACE_INTR, "%s: Vector Released. New weight : %u", 
-        dev_conf.name, irq_mgr.irq_weight[vector]);
-    WdfSpinLockRelease(irq_mgr.lock);
-}
-
-int qdma_device::assign_interrupt_vector(queue_pair& q)
-{
-    UINT32 vec;
-
-    if (irq_mgr.intr_type == interrupt_type::MSIX)
-        vec = alloc_msix_vector_position(q);
-    else {
-        vec = setup_legacy_vector(q);
-    }
-    return vec;
-}
-
-void qdma_device::free_interrupt_vector(queue_pair& q, UINT32 vec_id)
-{
-    if (irq_mgr.intr_type == interrupt_type::MSIX)
-        free_msix_vector_position(q, vec_id);
-    else
-        clear_legacy_vector(q, vec_id);
-}
-
-/* Clear legacy vector and disable interrupts */
-void qdma_device::clear_legacy_vector(
-    queue_pair& q,
-    UINT32 vector)
-{
-    UNREFERENCED_PARAMETER(q);
-
-    WdfInterruptAcquireLock(irq_mgr.irq[vector]);
-
-    auto irq_ctx = get_qdma_irq_context(irq_mgr.irq[vector]);
-    auto queue_item = irq_ctx->queue_list_head;
-
-    if (hw.qdma_legacy_intr_conf != nullptr) {
-        hw.qdma_legacy_intr_conf(this, DISABLE);
-    }
-
-    INIT_LIST_HEAD(&irq_ctx->queue_list_head);
-    WdfInterruptReleaseLock(irq_mgr.irq[vector]);
-}
-
-NTSTATUS qdma_device::configure_irq(
-    PQDMA_IRQ_CONTEXT irq_context,
-    ULONG vec)
-{
-    irq_context->vector_id = vec;
-    irq_context->qdma_dev = this;
-
-    if ((vec >= irq_mgr.data_vector_id_start) && (vec <= irq_mgr.data_vector_id_end)) {
-        /* Data interrupts */
-        irq_mgr.irq_weight[vec] = 0u;
-
-        if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) { /* Indirect interrupt */
-            irq_context->intr_q = &irq_mgr.intr_q[vec];
-            irq_mgr.intr_q[vec].vector = vec;
-            irq_context->is_coal = true;
-            if (hw_version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-                irq_context->interrupt_handler = &cpm_handle_indirect_interrupt;
-            }
-            else {
-                irq_context->interrupt_handler = &handle_indirect_interrupt;
-            }
-        }
-        else { /* Direct interrupt */
-            INIT_LIST_HEAD(&irq_context->queue_list_head);
-
-            irq_context->is_coal = false;
-            irq_context->interrupt_handler = &handle_direct_interrupt;
-        }
-        irq_context->intr_type = irq_mgr.intr_type;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::arrange_msix_vector_types(void)
-{
-    ULONG vector = 0;
-    ULONG req_vec;
-    ULONG num_msix_vectors = pcie.get_num_msix_vectors();
-
-    if (num_msix_vectors == 0ul) {
-        TraceError(TRACE_INTR, "%s: Not enough MSIx vectors : [%u]", 
-            dev_conf.name, num_msix_vectors);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    /** Reserve one vector for Error Interrupt which reports out 
-      * the QDMA internal HW errors to the user 
-      * 
-      * Master PF will own this option and hence other PFs dont need
-      * to reserve vector for error interrupt
-      */
-    if (dev_conf.is_master_pf) { /* Master PF */
-        TraceInfo(TRACE_INTR, "%s: Setting Error Interrupt by Master PF", 
-            dev_conf.name);
-        irq_mgr.err_vector_id = vector;
-        ++vector;
-        /** Error interrupt consumes 1 vector from data interrupt vectors */
-        drv_conf.data_msix_max = drv_conf.data_msix_max - 1;
-    }
-
-    req_vec = vector + drv_conf.data_msix_max + drv_conf.user_msix_max;
-
-    if (num_msix_vectors < req_vec) {
-        TraceError(TRACE_INTR, "%s: Not enough MSIx vectors : [%u]. Requested : [%u]\n",
-            dev_conf.name, num_msix_vectors, req_vec);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    irq_mgr.user_vector_id_start = vector;
-    irq_mgr.user_vector_id_end = vector + drv_conf.user_msix_max - 1 ;
-    vector += drv_conf.user_msix_max;
-
-    irq_mgr.data_vector_id_start = vector;
-
-    if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE)
-        irq_mgr.data_vector_id_end = irq_mgr.data_vector_id_start + IND_INTR_MAX_DATA_VECTORS - 1;
-    else
-        irq_mgr.data_vector_id_end = vector + drv_conf.data_msix_max - 1;
-
-    TraceVerbose(TRACE_INTR, "%s: Function: %0X, Err vec : %lu, User vec : [%u : %u] Data vec : [%u : %u]",
-        dev_conf.name, dev_conf.dev_sbdf.sbdf.fun_no, irq_mgr.err_vector_id,
-        irq_mgr.user_vector_id_start, irq_mgr.user_vector_id_end,
-        irq_mgr.data_vector_id_start, irq_mgr.data_vector_id_end);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::setup_msix_interrupt(
-    WDFCMRESLIST resources,
-    const WDFCMRESLIST resources_translated)
-{
-    NTSTATUS status;
-
-    /* Setup interrupts */
-    PCM_PARTIAL_RESOURCE_DESCRIPTOR resource;
-    PCM_PARTIAL_RESOURCE_DESCRIPTOR resource_translated;
-
-    ULONG numResources = WdfCmResourceListGetCount(resources_translated);
-    TraceVerbose(TRACE_INTR, "%s: Total number of resource : %lu", 
-        dev_conf.name, numResources);
-
-    status = arrange_msix_vector_types();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_INTR, "%s: Failed to arrange MSIx vectors", dev_conf.name);
-        return status;
-    }
-
-    for (UINT i = 0, vec = 0; i < numResources && vec < pcie.get_num_msix_vectors(); i++) {
-
-        resource = WdfCmResourceListGetDescriptor(resources, i);
-        resource_translated = WdfCmResourceListGetDescriptor(resources_translated, i);
-        if (resource_translated->Type != CmResourceTypeInterrupt) {
-            continue;
-        }
-
-        WDF_INTERRUPT_CONFIG config;
-
-        if ((irq_mgr.err_vector_id == vec) && (dev_conf.is_master_pf)) {
-            WDF_INTERRUPT_CONFIG_INIT(&config, EvtErrorInterruptIsr, EvtErrorInterruptDpc);
-            config.EvtInterruptEnable = nullptr;
-            config.EvtInterruptDisable = nullptr;
-            TraceVerbose(TRACE_INTR, "%s: [%u] - Error interrupt configuration", 
-                dev_conf.name, vec);
-        }
-        else if ((vec >= irq_mgr.user_vector_id_start) && (vec <= irq_mgr.user_vector_id_end)) {
-            WDF_INTERRUPT_CONFIG_INIT(&config, EvtUserInterruptIsr, EvtUserInterruptDpc);
-            config.EvtInterruptEnable = EvtUserInterruptEnable;
-            config.EvtInterruptDisable = EvtUserInterruptDisable;
-            TraceVerbose(TRACE_INTR, "%s: [%u] - User interrupt configuration", 
-                dev_conf.name, vec);
-        }
-        else if ((vec >= irq_mgr.data_vector_id_start) && (vec <= irq_mgr.data_vector_id_end)) { /* Data interrupts */
-            WDF_INTERRUPT_CONFIG_INIT(&config, EvtDataInterruptIsr, nullptr);
-            config.EvtInterruptEnable = nullptr;
-            config.EvtInterruptDisable = nullptr;
-            TraceVerbose(TRACE_INTR, "%s: [%u] - Data interrupt configuration", dev_conf.name, vec);
-        }
-        else {
-            TraceVerbose(TRACE_INTR, "%s: [%u] - No configuration", dev_conf.name, vec);
-            continue;
-        }
-
-        config.InterruptRaw = resource;
-        config.InterruptTranslated = resource_translated;
-        config.AutomaticSerialization = TRUE;
-
-        WDF_OBJECT_ATTRIBUTES attribs;
-        WDF_OBJECT_ATTRIBUTES_INIT(&attribs);
-        WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attribs, QDMA_IRQ_CONTEXT);
-
-        status = WdfInterruptCreate(wdf_dev, &config, &attribs, &irq_mgr.irq[vec]);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "WdfInterruptCreate failed: %!STATUS!", status);
-            return status;
-        }
-
-        /* FIXME: 2018.2 Bitstream Issue?? Unmasking of the MSIX vectors not happening. So doing it manually */
-        if (hw_version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-            unmask_msi_entry(vec);
-        }
-
-        auto irq_context = get_qdma_irq_context(irq_mgr.irq[vec]);
-        status = configure_irq(irq_context, vec);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "%s: WdfInterruptCreate failed: %!STATUS!", 
-                dev_conf.name, status);
-            return status;
-        }
-
-        if ((irq_mgr.err_vector_id == vec) && (dev_conf.is_master_pf)) {
-            int ret = hw.qdma_hw_error_intr_setup((void *)this, 
-                (uint16_t)dev_conf.dev_sbdf.sbdf.fun_no, (uint8_t)irq_mgr.err_vector_id);
-            if (ret < 0) {
-                TraceError(TRACE_INTR, "%s: qdma_error_interrupt_setup() failed with error %d", 
-                    dev_conf.name, ret);
-                return hw.qdma_get_error_code(ret);
-            }
-
-            ret = hw.qdma_hw_error_enable((void *)this, hw.qdma_max_errors);
-            if (ret < 0) {
-                TraceError(TRACE_INTR, "%s: qdma_error_enable() failed with error %d", 
-                    dev_conf.name, ret);
-                return hw.qdma_get_error_code(ret);
-            }
-
-            ret = hw.qdma_hw_error_intr_rearm((void *)this);
-            if (ret < 0) {
-                TraceError(TRACE_INTR, "%s: qdma_error_interrupt_rearm() failed with error %d", 
-                    dev_conf.name, ret);
-                return hw.qdma_get_error_code(ret);
-            }
-        }
-
-        ++vec;
-
-        TraceInfo(TRACE_INTR, "%s: INTERRUPT REGISTERED FOR VECTOR ID: : %d WEIGHT : %d",
-            dev_conf.name, irq_context->vector_id, irq_context->weight);
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::setup_legacy_interrupt(
-    WDFCMRESLIST resources,
-    const WDFCMRESLIST resources_translated)
-{
-    NTSTATUS status;
-
-    /* Setup interrupts */
-    PCM_PARTIAL_RESOURCE_DESCRIPTOR resource;
-    PCM_PARTIAL_RESOURCE_DESCRIPTOR resource_translated;
-
-    ULONG numResources = WdfCmResourceListGetCount(resources_translated);
-    TraceVerbose(TRACE_INTR, "%s: Total number of resource : %lu", 
-        dev_conf.name, numResources);
-
-
-    for (UINT i = 0, vec = 0; i < numResources; i++) {
-
-        resource = WdfCmResourceListGetDescriptor(resources, i);
-        resource_translated = WdfCmResourceListGetDescriptor(resources_translated, i);
-        if (resource_translated->Type != CmResourceTypeInterrupt) {
-            continue;
-        }
-
-        WDF_INTERRUPT_CONFIG config;
-
-        /* Initializing the interrupt config with Data ISR and DPC handlers */
-        WDF_INTERRUPT_CONFIG_INIT(&config, EvtDataInterruptIsr, nullptr);
-
-        config.InterruptRaw = resource;
-        config.InterruptTranslated = resource_translated;
-        config.EvtInterruptEnable = nullptr;
-        config.EvtInterruptDisable = nullptr;
-        config.AutomaticSerialization = TRUE;
-
-        WDF_OBJECT_ATTRIBUTES attribs;
-        WDF_OBJECT_ATTRIBUTES_INIT(&attribs);
-        WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attribs, QDMA_IRQ_CONTEXT);
-
-        status = WdfInterruptCreate(wdf_dev, &config, &attribs, &irq_mgr.irq[vec]);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "%s: WdfInterruptCreate failed: %!STATUS!", 
-                dev_conf.name, status);
-            return status;
-        }
-
-        auto irq_context = get_qdma_irq_context(irq_mgr.irq[vec]);
-        status = configure_irq(irq_context, vec);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "%s: WdfInterruptCreate failed: %!STATUS!", 
-                dev_conf.name, status);
-            return status;
-        }
-
-        ++vec;
-
-        TraceInfo(TRACE_INTR, "%s: LEGACY INTERRUPT REGISTERED FOR VECTOR ID: : %d WEIGHT : %d",
-            dev_conf.name, irq_context->vector_id, irq_context->weight);
-
-        /* Only One Vector for Legacy interrupt */
-        break;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::intr_setup(
-    WDFCMRESLIST resources,
-    const WDFCMRESLIST resources_translated)
-{
-    UINT32 i;
-    NTSTATUS status = STATUS_SUCCESS;
-    PCM_PARTIAL_RESOURCE_DESCRIPTOR resource_desc;
-    ULONG numResources = WdfCmResourceListGetCount(resources_translated);
-
-    /* Initialize IRQ spin lock */
-    WDF_OBJECT_ATTRIBUTES attr;
-    WDF_OBJECT_ATTRIBUTES_INIT(&attr);
-    attr.ParentObject = wdf_dev;
-
-    status = WdfSpinLockCreate(&attr, &irq_mgr.lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_INTR, "%s: WdfSpinLockCreate failed: %!STATUS!", 
-            dev_conf.name, status);
-        return status;
-    }
-
-    irq_mgr.intr_type = interrupt_type::NONE;
-    for (i = 0; i < numResources; i++) {
-        resource_desc = WdfCmResourceListGetDescriptor(resources_translated, i);
-        if (resource_desc->Type != CmResourceTypeInterrupt) {
-            TraceVerbose(TRACE_INTR, "Non Interrupt Resource : %d", resource_desc->Type);
-            continue;
-        }
-
-        if (resource_desc->Flags & CM_RESOURCE_INTERRUPT_MESSAGE) {
-            irq_mgr.intr_type = interrupt_type::MSIX;
-
-            TraceVerbose(TRACE_INTR,
-                "Message Interrupt level 0x%0x, Vector 0x%0x, MessageCount %u\n"
-                , resource_desc->u.MessageInterrupt.Translated.Level
-                , resource_desc->u.MessageInterrupt.Translated.Vector
-                , resource_desc->u.MessageInterrupt.Raw.MessageCount
-            );
-        }
-        else {
-            irq_mgr.intr_type = interrupt_type::LEGACY;
-
-            TraceVerbose(TRACE_INTR,
-                "Legacy Interrupt level: 0x%0x, Vector: 0x%0x\n"
-                , resource_desc->u.Interrupt.Level
-                , resource_desc->u.Interrupt.Vector
-            );
-        }
-        break;
-    }
-
-    if (irq_mgr.intr_type == interrupt_type::LEGACY) {
-        status = setup_legacy_interrupt(resources, resources_translated);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "%s: setup_legacy_interrupt() failed: %!STATUS!", 
-                dev_conf.name, status);
-        }
-    }
-    else if (irq_mgr.intr_type == interrupt_type::MSIX) {
-        status = setup_msix_interrupt(resources, resources_translated);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_INTR, "%s: setup_msix_interrupt() failed: %!STATUS!", 
-                dev_conf.name, status);
-        }
-    }
-    else {
-        TraceError(TRACE_INTR, "%s: Invalid Interrupt Type : %d "
-            "(valid are legacy and msix)", dev_conf.name, (int)irq_mgr.intr_type);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    return status;
-}
-
-void qdma_device::intr_teardown(void)
-{
-    if ((irq_mgr.intr_type == interrupt_type::LEGACY) &&
-        (hw.qdma_legacy_intr_conf != nullptr))
-        hw.qdma_legacy_intr_conf((void *)this, DISABLE);
-    else {
-        /* FIXME: 2018.2 Bitstream issue?? Mask the msix vectors */
-        if (hw_version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-            for (auto i = 0u; i < pcie.get_num_msix_vectors(); ++i) {
-                mask_msi_entry(i);
-            }
-        }
-    }
-}
diff --git a/QDMA/windows/sys/libqdma/source/interrupts.hpp b/QDMA/windows/sys/libqdma/source/interrupts.hpp
deleted file mode 100644
index 9344430..0000000
--- a/QDMA/windows/sys/libqdma/source/interrupts.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "qdma_platform_env.h"
-#include "qdma_config.h"
-#include "qdma_reg_ext.h"
-
-namespace xlnx {
-/* Forward declaration */
-class qdma_device;
-struct queue_pair;
-
-#define VECTOR_TYPE_ERROR           0
-#define VECTOR_TYPE_USER            1
-#define VECTOR_TYPE_DATA_START      2
-
-#define IND_INTR_MAX_DATA_VECTORS   QDMA_NUM_DATA_VEC_FOR_INTR_CXT
-
-enum class interrupt_type {
-    NONE,
-    LEGACY,
-    MSIX
-};
-
-struct intr_queue {
-    static constexpr size_t size = 512;
-    size_t capacity = size;
-    size_t npages = 1;
-
-    UINT16 idx = 0;     /* queue index - relative to this PF */
-    UINT16 idx_abs = 0; /* queue index - abolute across all PF */
-
-    UINT8 color = 1;
-    ULONG vector = 0;
-
-    qdma_intr_cidx_reg_info intr_cidx_info;
-    qdma_device* qdma = nullptr;
-    WDFCOMMONBUFFER buffer = nullptr;
-    void *buffer_va = nullptr;
-
-    volatile UINT32 sw_index = 0; /* Driver CIDX */
-
-    NTSTATUS create(WDFDMAENABLER& dma_enabler);
-    void clear_contents(void);
-
-    void advance_sw_index(void);
-    PFORCEINLINE void update_csr_cidx(queue_pair *q, UINT32 new_cidx);
-    NTSTATUS intring_dump(qdma_intr_ring_info *intring_info);
-};
-
-typedef struct QDMA_IRQ_CONTEXT {
-    bool is_coal;
-    interrupt_type intr_type = interrupt_type::NONE;
-    ULONG vector_id;
-    UINT32 weight;
-
-    /* For user interrupt handling */
-    void *user_data;
-
-    /* For Error interrupt handling */
-    qdma_device *qdma_dev = nullptr;
-
-    /* For direct interrupt handling */
-    LIST_ENTRY queue_list_head;
-
-    /* For indirect interrupt handling */
-    intr_queue *intr_q = nullptr;
-
-    /* Interrupt handler function */
-    void (*interrupt_handler)(QDMA_IRQ_CONTEXT *);
-
-}*PQDMA_IRQ_CONTEXT;
-
-WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(QDMA_IRQ_CONTEXT, get_qdma_irq_context);
-
-struct interrupt_manager {
-    interrupt_type intr_type = interrupt_type::NONE;
-    ULONG err_vector_id = 0;
-    ULONG user_vector_id_start = 0;
-    ULONG user_vector_id_end = 0;
-    ULONG data_vector_id_end = 0;
-    ULONG data_vector_id_start = 0;
-
-    WDFSPINLOCK lock = nullptr;
-    UINT32 irq_weight[qdma_max_msix_vectors_per_pf];
-    WDFINTERRUPT irq[qdma_max_msix_vectors_per_pf];
-    intr_queue intr_q[qdma_max_msix_vectors_per_pf];
-};
-
-} /* namespace xlnx */
-
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma.cpp b/QDMA/windows/sys/libqdma/source/qdma.cpp
deleted file mode 100644
index 645542f..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma.cpp
+++ /dev/null
@@ -1,4235 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma.h"
-#include "interrupts.hpp"
-#include "qdma_platform.h"
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma.tmh"
-#endif
-
-using namespace xlnx;
-
-/* Below are per driver global variables */
-static LIST_ENTRY qdma_dev_list_head;
-static WDFWAITLOCK qdma_list_lock;
-static volatile LONG qdma_active_pf_count = 0;
-
-static struct drv_mode_name mode_name_list[] = {
-    { POLL_MODE,		"poll"},
-    { INTR_MODE,		"direct interrupt"},
-    { INTR_COAL_MODE,	"indirect interrupt"},
-};
-
-NTSTATUS qdma_device::list_add_qdma_device_and_set_gbl_csr(void)
-{
-    if ((LONG)1 == InterlockedIncrement(&qdma_active_pf_count)) {
-        TraceVerbose(TRACE_QDMA, "%s: ** Initializing global device list and wait lock **", dev_conf.name);
-
-        /* First device in the list, Initialize the list head */
-        INIT_LIST_HEAD(&qdma_dev_list_head);
-
-        WDF_OBJECT_ATTRIBUTES attr;
-        WDF_OBJECT_ATTRIBUTES_INIT(&attr);
-        attr.ParentObject = WDFDRIVER();
-
-        NTSTATUS status = WdfWaitLockCreate(&attr, &qdma_list_lock);
-        if (!(NT_SUCCESS(status))) {
-            TraceError(TRACE_QDMA, "%s: Failed to create qdma list wait lock %!STATUS!", dev_conf.name, status);
-            qdma_list_lock = nullptr;
-            return status;
-        }
-    }
-    else {
-        /* To avoid race, Wait for some time
-         * if list head and wait lock initialization already in progress.
-         */
-        LARGE_INTEGER wait_time;
-        wait_time.QuadPart = WDF_REL_TIMEOUT_IN_US(100);
-        KeDelayExecutionThread(KernelMode, FALSE, &wait_time);
-
-        if (nullptr == qdma_list_lock) {
-            TraceError(TRACE_QDMA, "%s: qdma list wait lock not initialized", dev_conf.name);
-            return STATUS_UNSUCCESSFUL;
-        }
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: ++ Active pf count : %u ++", dev_conf.name, qdma_active_pf_count);
-
-    WdfWaitLockAcquire(qdma_list_lock, NULL);
-
-    dev_conf.is_master_pf = is_first_qdma_pf_device();
-    if (true == dev_conf.is_master_pf) {
-        TraceInfo(TRACE_QDMA, "Configuring '%04X:%02X:%02X.%x' as master pf\n", 
-            dev_conf.dev_sbdf.sbdf.seg_no, dev_conf.dev_sbdf.sbdf.bus_no, 
-            dev_conf.dev_sbdf.sbdf.dev_no, dev_conf.dev_sbdf.sbdf.fun_no);
-
-        TraceVerbose(TRACE_QDMA, "%s: Setting Global CSR", dev_conf.name);
-
-        int ret = hw.qdma_set_default_global_csr(this);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: Failed to set global CSR Configuration, ret : %d", dev_conf.name, ret);
-            WdfWaitLockRelease(qdma_list_lock);
-            return hw.qdma_get_error_code(ret);
-        }
-    }
-
-    LIST_ADD_TAIL(&qdma_dev_list_head, &list_entry);
-
-    WdfWaitLockRelease(qdma_list_lock);
-
-    return STATUS_SUCCESS;
-}
-
-bool qdma_device::is_first_qdma_pf_device(void)
-{
-    PLIST_ENTRY entry, temp;
-
-    LIST_FOR_EACH_ENTRY_SAFE(&qdma_dev_list_head, temp, entry) {
-        qdma_device *qdma_dev = CONTAINING_RECORD(entry, qdma_device, list_entry);
-        if (qdma_dev->dev_conf.dev_sbdf.sbdf.bus_no == dev_conf.dev_sbdf.sbdf.bus_no) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-void qdma_device::list_remove_qdma_device(void)
-{
-    if (nullptr == list_entry.Flink && nullptr == list_entry.Blink)
-        return;
-
-    WdfWaitLockAcquire(qdma_list_lock, nullptr);
-    LIST_DEL_NODE(&list_entry);
-    WdfWaitLockRelease(qdma_list_lock);
-    auto cnt = InterlockedDecrement(&qdma_active_pf_count);
-    TraceVerbose(TRACE_QDMA, "%s: -- Active pf count : %u --", dev_conf.name, cnt);
-}
-
-/* --------------------------- debug prints of structs --------------------------- */
-
-#ifdef ENABLE_WPP_TRACING
-
-static void dump(const mm_descriptor& desc)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "descriptor={valid=%u, sop=%u, eop=%u, length=%u, addr=0x%llX,"
-        "dest_addr=0x%llX }",
-        desc.valid, desc.sop, desc.eop, desc.length, desc.addr,
-        desc.dest_addr);
-}
-
-static void dump(const h2c_descriptor& desc)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "descriptor={sop=%u, eop=%u, length=%u, addr=0x%llX}",
-        desc.sop, desc.eop, desc.length, desc.addr);
-}
-
-static void dump(const char* dir, const qdma_descq_hw_ctxt& ctxt)
-{
-    TraceVerbose(
-        TRACE_QDMA,
-        "%s_hw_desc_ctxt={cidx=%u, credit_use=%u, desc_pending=%u, "
-        "idle_stop=%u evt_pending=%u fetch_pending=%u}",
-        dir, ctxt.cidx, ctxt.crd_use, ctxt.dsc_pend, ctxt.idl_stp_b,
-        ctxt.evt_pnd, ctxt.fetch_pnd);
-}
-
-static void dump(const char* dir, const qdma_descq_sw_ctxt& ctxt)
-{
-    TraceVerbose(TRACE_QDMA,
-        "%s_sw_desc_ctxt={pidx=%u irq_arm=%u, funid=%u, qen=%u, "
-        "frcd_en=%u, wbi_chk=%u, wbi_intvl_en=%u at=%u, fetch_max=%u, "
-        "rngsz_idx=%u, desc_sz=%u, bypass=%u, mm_ch=%u wb_en=%u"
-        "irq_en=%u, portid=%u, irq_no_last=%u, err=%u, err_wb=%u, "
-        "irq_req=%u, mrkr_dis=%u is_mm=%u, ring_bs_addr=%llX, "
-        "vec=%u, int_aggr=%u}",
-        dir, ctxt.pidx, ctxt.irq_arm, ctxt.fnc_id, ctxt.qen,
-        ctxt.frcd_en, ctxt.wbi_chk, ctxt.wbi_intvl_en, ctxt.at,
-        ctxt.fetch_max, ctxt.rngsz_idx, ctxt.desc_sz, ctxt.bypass,
-        ctxt.mm_chn, ctxt.wbk_en, ctxt.irq_en, ctxt.port_id,
-        ctxt.irq_no_last, ctxt.err, ctxt.err_wb_sent, ctxt.irq_req,
-        ctxt.mrkr_dis, ctxt.is_mm, ctxt.ring_bs_addr,
-        ctxt.vec, ctxt.intr_aggr);
-}
-
-static void dump(const qdma_descq_prefetch_ctxt& ctxt)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "c2h_prefetch_ctxt={bypass=%u, buffer_size_idx=%u, "
-        "sw_credit=%u, valid=%u}",
-        ctxt.bypass, ctxt.bufsz_idx, ctxt.sw_crdt, ctxt.valid);
-}
-
-static void dump(const qdma_descq_credit_ctxt& ctxt)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "c2h_credit_ctxt={credits=%u}",
-        ctxt.credit);
-}
-
-static void dump(const qdma_descq_cmpt_ctxt& ctxt)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "c2h_cmpt_ctxt={en_stat_desc=%u, en_int=%u, trig_mode=%u, "
-        "funid=%u, cntr_idx=%u, tmr_idx=%u, int_st=%u, color=%u, "
-        "ringsz_idx=%u, bs_addr=%llX, desc_sz=%u, pidx=%u, cidx=%u, "
-        "valid=%u, err=%u, usr_trig_pnd=%u, tmr_runing=%u, fupd=%u, "
-        "ovf_chk_dis=%u, at=%u, vec=%u, int_aggr=%u}",
-        ctxt.en_stat_desc, ctxt.en_int, ctxt.trig_mode, ctxt.fnc_id,
-        ctxt.counter_idx, ctxt.timer_idx, ctxt.in_st, ctxt.color, ctxt.ringsz_idx,
-        ctxt.bs_addr, ctxt.desc_sz, ctxt.pidx, ctxt.cidx, ctxt.valid,
-        ctxt.err, ctxt.user_trig_pend, ctxt.timer_running, ctxt.full_upd,
-        ctxt.ovf_chk_dis, ctxt.at, ctxt.vec, ctxt.int_aggr);
-}
-
-static void dump(const qdma_qid2vec& ctxt) {
-    TraceVerbose(
-        TRACE_DBG,
-        "qid2vec_ctxt={c2h_coal_en=%u, c2h_vec=%u, h2c_coal_en=%u, "
-        "h2c_vec=%u}",
-        ctxt.c2h_en_coal, ctxt.c2h_vector, ctxt.h2c_en_coal, ctxt.h2c_vector);
-}
-
-static void dump(qdma_device *qdma_dev, const queue_type q_type, const UINT16 qid)
-{
-    TraceVerbose(TRACE_DBG, "------------ QUEUE_%u CONTEXT DUMPS ------------", qid);
-    qdma_descq_sw_ctxt sw_ctxt = { 0 };
-    qdma_dev->hw.qdma_sw_ctx_conf((void *)qdma_dev, false, qid, &sw_ctxt, QDMA_HW_ACCESS_READ);
-    dump("H2C", sw_ctxt);
-    qdma_dev->hw.qdma_sw_ctx_conf((void *)qdma_dev, true, qid, &sw_ctxt, QDMA_HW_ACCESS_READ);
-    dump("C2H", sw_ctxt);
-
-    qdma_descq_hw_ctxt hw_ctxt = { 0 };
-    qdma_dev->hw.qdma_hw_ctx_conf((void *)qdma_dev, false, qid, &hw_ctxt, QDMA_HW_ACCESS_READ);
-    dump("H2C", hw_ctxt);
-    qdma_dev->hw.qdma_hw_ctx_conf((void *)qdma_dev, true, qid, &hw_ctxt, QDMA_HW_ACCESS_READ);
-    dump("C2H", hw_ctxt);
-
-    if (qdma_dev->hw.qdma_qid2vec_conf) {
-        qdma_qid2vec qid2vec_ctxt = { 0 };
-        qdma_dev->hw.qdma_qid2vec_conf((void *)qdma_dev, false, qid, &qid2vec_ctxt, QDMA_HW_ACCESS_READ);
-        dump(qid2vec_ctxt);
-        qdma_dev->hw.qdma_qid2vec_conf((void *)qdma_dev, true, qid, &qid2vec_ctxt, QDMA_HW_ACCESS_READ);
-        dump(qid2vec_ctxt);
-    }
-
-    if (q_type == queue_type::STREAMING) {
-        qdma_descq_cmpt_ctxt cmpt_ctxt = { 0 };
-        qdma_dev->hw.qdma_cmpt_ctx_conf((void *)qdma_dev, qid, &cmpt_ctxt, QDMA_HW_ACCESS_READ);
-        dump(cmpt_ctxt);
-
-        qdma_descq_prefetch_ctxt pfch_ctxt = { 0 };
-        qdma_dev->hw.qdma_pfetch_ctx_conf((void *)qdma_dev, qid, &pfch_ctxt, QDMA_HW_ACCESS_READ);
-        dump(pfch_ctxt);
-
-        qdma_descq_credit_ctxt credit_ctxt = { 0 };
-        qdma_dev->hw.qdma_credit_ctx_conf((void *)qdma_dev, true, qid, &credit_ctxt, QDMA_HW_ACCESS_READ);
-        dump(credit_ctxt);
-    }
-    TraceVerbose(TRACE_DBG, "------------  ------------");
-}
-
-static void dump(const c2h_wb_status& status)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "c2h_wb_status={pidx=%u, cidx=%u, color=%u, irq_state=%u}",
-        status.pidx, status.cidx, status.color, status.irq_state);
-}
-
-static void dump(int index, const c2h_wb_header_8B& status)
-{
-    TraceVerbose(
-        TRACE_DBG,
-        "c2h_cmpt_ring[%u]={length=%u, color=%u, desc_error=%u, "
-        "user_defined_0=0x%llx}",
-        index, status.length, status.color, status.desc_error,
-        status.user_defined_0);
-}
-#else
-#define dump(...) (__VA_ARGS__)
-#endif
-
-static size_t get_descriptor_size(qdma_desc_sz desc_sz)
-{
-    size_t size_in_bytes = 0;
-
-    size_in_bytes = static_cast<size_t>(1) << (3 + static_cast<size_t>(desc_sz));
-
-    return size_in_bytes;
-}
-
-//======================= private member function implemenations ==================================
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-void *qdma_interface::operator new(_In_ size_t num_bytes)
-{
-    VERIFY_IS_IRQL_PASSIVE_LEVEL();
-
-    void *mem = qdma_calloc(1, (uint32_t)num_bytes);
-    if (mem)
-        RtlZeroMemory(mem, num_bytes);
-
-    return mem;
-}
-
-_IRQL_requires_max_(PASSIVE_LEVEL)
-void qdma_interface::operator delete(_In_ void *addr)
-{
-    VERIFY_IS_IRQL_PASSIVE_LEVEL();
-    if (addr != nullptr) {
-        qdma_memfree(addr);
-    }
-}
-
-qdma_interface* qdma_interface::create_qdma_device(void)
-{
-    qdma_interface *dev_interface = nullptr;
-
-    dev_interface = new xlnx::qdma_device;
-    if (dev_interface == nullptr)
-        TraceError(TRACE_QDMA, "qdma_interface allocation Failed");
-    else
-        TraceVerbose(TRACE_QDMA, "qdma_interface allocation Success : %d", sizeof(xlnx::qdma_device));
-
-    return dev_interface;
-}
-
-void qdma_interface::remove_qdma_device(qdma_interface *qdma_dev)
-{
-    delete qdma_dev;
-}
-
-NTSTATUS qdma_device::init_qdma_global()
-{
-    NTSTATUS status;
-    int ret;
-
-    status = qdma_read_csr_conf(&csr_conf);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR Configuration", dev_conf.name);
-        return status;
-    }
-
-    ret = hw.qdma_hw_error_enable((void *)this, hw.qdma_max_errors);
-    if (ret < 0) {
-        TraceInfo(TRACE_QDMA, "%s: Failed to enable qdma errors, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::init_func()
-{
-    int ret;
-    struct qdma_fmap_cfg config = { 0 };
-
-    UINT8 h2c = 0, c2h = 1;
-    for (UINT8 i = 0; i < dev_conf.dev_info.mm_channel_max; i++) {
-        ret = hw.qdma_mm_channel_conf((void *)this, i, h2c, TRUE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: Failed to configure H2C MM channel %d, ret : %d",
-                dev_conf.name, i, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        ret = hw.qdma_mm_channel_conf((void *)this, i, c2h, TRUE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: Failed to configure C2H MM channel %d, ret : %d",
-                dev_conf.name, i, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-    }
-
-    config.qbase = static_cast<UINT16>(qbase);
-    config.qmax  = static_cast<UINT16>(drv_conf.qsets_max);
-
-    ret = hw.qdma_fmap_conf((void *)this,
-                            dev_conf.dev_sbdf.sbdf.fun_no,
-                            &config,
-                            QDMA_HW_ACCESS_WRITE);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: Failed FMAP Programming for PF %d, ret: %d",
-            dev_conf.name, dev_conf.dev_sbdf.sbdf.fun_no, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    return STATUS_SUCCESS;
-}
-
-void qdma_device::destroy_func(void)
-{
-    struct qdma_fmap_cfg config = {};
-    config.qbase = 0;
-    config.qmax = 0;
-
-    if (hw.qdma_fmap_conf) {
-        hw.qdma_fmap_conf((void *)this,
-                           dev_conf.dev_sbdf.sbdf.fun_no,
-                           &config,
-                           QDMA_HW_ACCESS_WRITE);
-    }
-}
-
-
-NTSTATUS qdma_device::assign_bar_types()
-{
-    UINT8 user_bar_id = 0;
-    int ret = hw.qdma_get_user_bar((void *)this,
-                                   false,
-                                   dev_conf.dev_sbdf.sbdf.fun_no,
-                                   &user_bar_id);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: Failed to get AXI Master Lite BAR, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-    user_bar_id = user_bar_id / 2;
-
-    NTSTATUS status = pcie.assign_bar_types(user_bar_id);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: pcie assign_bar_types() failed: %!STATUS!", dev_conf.name, status);
-        return status;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::init_dma_queues()
-{
-    NTSTATUS status = STATUS_SUCCESS;
-
-    if (drv_conf.qsets_max == 0)
-        return STATUS_SUCCESS;
-
-    queue_pairs = (queue_pair *)qdma_calloc(drv_conf.qsets_max, sizeof(queue_pair));
-    if (nullptr == queue_pairs) {
-        TraceError(TRACE_QDMA, "%s: Failed to allocate queue_pair memory", dev_conf.name);
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    for (UINT16 qid = 0; qid < drv_conf.qsets_max; qid++) {
-        auto& q = queue_pairs[qid];
-        q.idx = qid;
-        q.idx_abs = qid + static_cast<UINT16>(qbase);
-        q.qdma = this;
-        q.state = queue_state::QUEUE_AVAILABLE;
-
-        if (drv_conf.operation_mode != queue_op_mode::POLL_MODE)
-            q.h2c_q.lib_config.irq_en = q.c2h_q.lib_config.irq_en = true;
-        else
-            q.h2c_q.lib_config.irq_en = q.c2h_q.lib_config.irq_en = false;
-
-        /* clear all context fields for this queue */
-        status = clear_contexts(q);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: queue_pair::clear_contexts() failed for queue %d! %!STATUS!", dev_conf.name, q.idx_abs, status);
-            destroy_dma_queues();
-            return status;
-        }
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: All queue contexts are cleared", dev_conf.name);
-
-    return STATUS_SUCCESS;
-}
-
-void qdma_device::destroy_dma_queues(void)
-{
-    if (nullptr != queue_pairs) {
-        qdma_memfree(queue_pairs);
-        queue_pairs = nullptr;
-    }
-}
-
-NTSTATUS qdma_device::init_interrupt_queues()
-{
-    NTSTATUS status = STATUS_SUCCESS;
-    int ret;
-    qdma_indirect_intr_ctxt intr_ctx = { 0 };
-
-    /* Initialize interrupt queues */
-    for (auto vec = irq_mgr.data_vector_id_start; vec <= irq_mgr.data_vector_id_end; ++vec) {
-        auto& intr_q = irq_mgr.intr_q[vec];
-        intr_q.idx = (UINT16)vec;
-        intr_q.idx_abs = (UINT16)(vec + (dev_conf.dev_sbdf.sbdf.fun_no * qdma_max_msix_vectors_per_pf));
-        intr_q.qdma = this;
-
-        status = intr_q.create(dma_enabler);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: intr_queue::create_resources() failed! %!STATUS!", dev_conf.name, status);
-            return status;
-        }
-
-        /* Any failures onwards does not need cleanup. Common buffer created by q.create()
-         * is freed when dma_enabler object is deleted.
-         */
-
-        /* clear context for this queue */
-        ret = hw.qdma_indirect_intr_ctx_conf((void *)this,
-                                             intr_q.idx_abs,
-                                             NULL,
-                                             QDMA_HW_ACCESS_CLEAR);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: Failed to clear interrupt context \
-                for intr queue %d, ret : %d", dev_conf.name, intr_q.idx_abs, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        /* set the interrupt context for this queue */
-        intr_ctx.valid = true;
-        intr_ctx.vec = (UINT16)intr_q.vector;
-        intr_ctx.color = intr_q.color;
-        intr_ctx.func_id = dev_conf.dev_sbdf.sbdf.fun_no;
-        intr_ctx.page_size = (UINT8)(intr_q.npages - 1);
-        intr_ctx.baddr_4k = WdfCommonBufferGetAlignedLogicalAddress(intr_q.buffer).QuadPart;
-
-        TraceVerbose(TRACE_DBG, "%s: SETTING intr_ctxt={ \
-            BaseAddr=%llX, color=%u, page_sz=%u, vector=%u }",
-            dev_conf.name, intr_ctx.baddr_4k, intr_ctx.color, intr_ctx.page_size, intr_ctx.vec);
-
-        ret = hw.qdma_indirect_intr_ctx_conf((void *)this,
-                                             intr_q.idx_abs,
-                                             &intr_ctx,
-                                             QDMA_HW_ACCESS_WRITE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: Failed to program interrupt \
-                ring for intr queue %d, ret: %d", dev_conf.name, intr_q.idx_abs, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-    }
-
-    return status;
-}
-
-NTSTATUS qdma_device::init_os_resources(
-    WDFCMRESLIST resources,
-    const WDFCMRESLIST resources_translated)
-{
-    WDF_OBJECT_ATTRIBUTES attr;
-    WDF_OBJECT_ATTRIBUTES_INIT(&attr);
-    attr.ParentObject = wdf_dev;
-
-    WdfDeviceSetAlignmentRequirement(wdf_dev, FILE_64_BYTE_ALIGNMENT);
-    WDF_DMA_ENABLER_CONFIG dma_enabler_config;
-    WDF_DMA_ENABLER_CONFIG_INIT(&dma_enabler_config,
-                                WdfDmaProfileScatterGather64Duplex,
-                                1024 * 1024 * 1024); /* TODO: Magic */
-    NTSTATUS status = WdfDmaEnablerCreate(wdf_dev,
-                                          &dma_enabler_config,
-                                          &attr,
-                                          &dma_enabler);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: WdfDmaEnablerCreate() failed: %!STATUS!", dev_conf.name, status);
-        return status;
-    }
-
-    if ((dev_conf.is_master_pf) &&
-        (drv_conf.operation_mode == queue_op_mode::POLL_MODE)) {
-        int ret = hw.qdma_hw_error_enable(this, hw.qdma_max_errors);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s: qdma_error_enable() failed, ret : %d", dev_conf.name, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        /* Create a thread for polling errors */
-        status = th_mgr.create_err_poll_thread(this);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: create_err_poll_thread() failed: %!STATUS!", dev_conf.name, status);
-            return status;
-        }
-    }
-
-    status = th_mgr.create_sys_threads(drv_conf.operation_mode);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: create_sys_threads() failed: %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    /* INTERRUPT HANDLING */
-    if (drv_conf.operation_mode != queue_op_mode::POLL_MODE) {
-        /* Get MSIx vector count */
-        status = pcie.find_num_msix_vectors(wdf_dev);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: pcie.get_num_msix_vectors() failed! %!STATUS!", dev_conf.name, status);
-            goto ErrExit;
-        }
-
-        status = intr_setup(resources, resources_translated);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: intr_setup() failed: %!STATUS!", dev_conf.name, status);
-            goto ErrExit;
-        }
-    }
-
-    return status;
-
-ErrExit:
-    destroy_os_resources();
-    return status;
-}
-
-void qdma_device::destroy_os_resources(void)
-{
-    /* dma_enabler will be free by wdf_dev cleanup */
-
-    if (drv_conf.operation_mode == queue_op_mode::POLL_MODE) {
-        if (dev_conf.is_master_pf)
-            th_mgr.terminate_err_poll_thread();
-    }
-    else {
-        intr_teardown();
-    }
-
-    th_mgr.terminate_sys_threads();
-}
-
-NTSTATUS qdma_device::init_resource_manager()
-{
-    NTSTATUS status = STATUS_SUCCESS;
-
-    if (qdma_resource_lock_init()) {
-        TraceError(TRACE_QDMA, "%s: Resource lock creation failed!", dev_conf.name);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    int ret = qdma_master_resource_create(dev_conf.dev_sbdf.sbdf.bus_no,
-                                          dev_conf.dev_sbdf.sbdf.bus_no,
-                                          QDMA_QBASE,
-                                          QDMA_TOTAL_Q,
-                                          &dma_dev_index);
-    if (ret < 0 && ret != -QDMA_ERR_RM_RES_EXISTS) {
-        TraceError(TRACE_QDMA, "%s: qdma_master_resource_create() failed!, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: Device Index : %u Bus start : %u Bus End : %u",
-        dev_conf.name, dma_dev_index, dev_conf.dev_sbdf.sbdf.bus_no, dev_conf.dev_sbdf.sbdf.bus_no);
-
-    ret = qdma_dev_entry_create(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_dev_entry_create() failed for function : %u, ret : %d",
-            dev_conf.name, dev_conf.dev_sbdf.sbdf.fun_no, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    ret = qdma_dev_update(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, drv_conf.qsets_max, &qbase);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_dev_update() failed for function : %u, ret : %d", 
-            dev_conf.name, dev_conf.dev_sbdf.sbdf.fun_no, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: QDMA Function : %u, qbase : %u, qmax : %u",
-        dev_conf.name, dev_conf.dev_sbdf.sbdf.fun_no, qbase, drv_conf.qsets_max);
-
-    return status;
-
-ErrExit:
-    destroy_resource_manager();
-    return status;
-}
-
-
-void qdma_device::destroy_resource_manager(void)
-{
-    qdma_dev_entry_destroy(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no);
-    qdma_master_resource_destroy(dma_dev_index);
-}
-
-void qdma_device::inc_queue_pair_count(bool is_cmpt_valid)
-{
-    qdma_dev_increment_active_queue(dma_dev_index,
-                                    dev_conf.dev_sbdf.sbdf.fun_no,
-                                    QDMA_DEV_Q_TYPE_H2C);
-
-    qdma_dev_increment_active_queue(dma_dev_index,
-                                    dev_conf.dev_sbdf.sbdf.fun_no,
-                                    QDMA_DEV_Q_TYPE_C2H);
-
-    if (true == is_cmpt_valid) {
-        qdma_dev_increment_active_queue(dma_dev_index,
-                                        dev_conf.dev_sbdf.sbdf.fun_no,
-                                        QDMA_DEV_Q_TYPE_CMPT);
-    }
-}
-
-void qdma_device::dec_queue_pair_count(bool is_cmpt_valid)
-{
-    qdma_dev_decrement_active_queue(dma_dev_index,
-                                    dev_conf.dev_sbdf.sbdf.fun_no,
-                                    QDMA_DEV_Q_TYPE_H2C);
-
-    qdma_dev_decrement_active_queue(dma_dev_index,
-                                    dev_conf.dev_sbdf.sbdf.fun_no,
-                                    QDMA_DEV_Q_TYPE_C2H);
-
-    if (true == is_cmpt_valid) {
-        qdma_dev_decrement_active_queue(dma_dev_index,
-                                        dev_conf.dev_sbdf.sbdf.fun_no,
-                                        QDMA_DEV_Q_TYPE_CMPT);
-    }
-}
-
-
-/* ----- received packet fragment functions ----- */
-NTSTATUS st_c2h_pkt_frag_queue::create(UINT32 entries)
-{
-    max_q_size = entries;
-
-    frags = static_cast<st_c2h_pkt_fragment*>(qdma_calloc(entries,
-                                              sizeof(st_c2h_pkt_fragment)));
-    if (nullptr == frags) {
-        TraceError(TRACE_QDMA, "Failed to allocate memory for rcvd pkts");
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    pidx = cidx = 0;
-    avail_byte_cnt = 0;
-    avail_frag_cnt = 0;
-
-    return STATUS_SUCCESS;
-}
-
-void st_c2h_pkt_frag_queue::destroy(void)
-{
-    if(avail_frag_cnt != 0)
-        TraceError(TRACE_QDMA, "Error: Still there are packets to process in"
-            " received_pkts : count : %d", avail_frag_cnt);
-
-    if (frags != nullptr) {
-        qdma_memfree(frags);
-        frags = nullptr;
-    }
-}
-
-PFORCEINLINE bool st_c2h_pkt_frag_queue::is_queue_full(void)
-{
-    if (((pidx + 1) % max_q_size) == cidx) {
-        return true;
-    }
-    return false;
-}
-
-PFORCEINLINE bool st_c2h_pkt_frag_queue::is_queue_empty(void)
-{
-    if (cidx == pidx) {
-        return true;
-    }
-    return false;
-}
-
-inline LONG st_c2h_pkt_frag_queue::get_avail_frag_cnt(void)
-{
-    return avail_frag_cnt;
-}
-
-inline size_t st_c2h_pkt_frag_queue::get_avail_byte_cnt(void)
-{
-    return avail_byte_cnt;
-}
-
-NTSTATUS st_c2h_pkt_frag_queue::add(st_c2h_pkt_fragment &elem)
-{
-    if(is_queue_full() == true)
-        return STATUS_DESTINATION_ELEMENT_FULL;
-
-    frags[pidx] = elem;
-
-    pidx++;
-    if (pidx >= max_q_size)
-        pidx = 0;
-
-    avail_byte_cnt += elem.length;
-    ++avail_frag_cnt;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS st_c2h_pkt_frag_queue::consume(st_c2h_pkt_fragment &elem)
-{
-    if (is_queue_empty() == true)
-        return STATUS_SOURCE_ELEMENT_EMPTY;
-
-    elem = frags[cidx];
-
-    cidx++;
-    if (cidx >= max_q_size)
-        cidx = 0;
-
-    avail_byte_cnt -= elem.length;
-    --avail_frag_cnt;
-
-    return STATUS_SUCCESS;
-}
-/* ----- -----*/
-
-PFORCEINLINE void ring_buffer::advance_idx(volatile UINT32& idx)
-{
-    NT_ASSERT(idx < capacity);
-
-    /* This condition is to ensure that idx update should happen only once
-       (either  roll back to 0 or increment by 1)
-    */
-    if ((idx + 1) == capacity)
-        idx = 0;
-    else
-        idx++;
-}
-
-PFORCEINLINE void ring_buffer::advance_idx(
-    volatile UINT32& idx,
-    const UINT32 num)
-{
-    if ((idx + num) < capacity)
-        idx = idx + num;
-    else
-        idx = num - (capacity - idx);
-}
-
-NTSTATUS ring_buffer::create(
-    WDFDMAENABLER& dma_enabler,
-    UINT32 num_entries,
-    size_t desc_sz_bytes)
-{
-    const size_t buffer_sz = num_entries * desc_sz_bytes;
-
-    /** Descriptor Capacity of the ring (does not include write back status entry)
-        total ring size = capacity + 1;
-
-        descriptor ring uses (capacity - 1) entries for queue full condition
-      */
-    capacity = num_entries - 1;
-    hw_index = sw_index = 0u;
-    stats.tot_desc_accepted = stats.tot_desc_processed = 0;
-
-    TraceVerbose(TRACE_QDMA, "Allocate DMA buffer size : %llu ring depth : %llu, capacity : %llu",
-        buffer_sz, num_entries, capacity);
-
-    auto status = WdfCommonBufferCreate(dma_enabler,
-                                        buffer_sz,
-                                        WDF_NO_OBJECT_ATTRIBUTES,
-                                        &buffer);
-
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "WdfCommonBufferCreate failed: %!STATUS!", status);
-        return status;
-    }
-
-    buffer_va = WdfCommonBufferGetAlignedVirtualAddress(buffer);
-    RtlZeroMemory(buffer_va, buffer_sz);
-
-    wb_status = WDF_PTR_ADD_OFFSET_TYPE(buffer_va,
-                                        capacity * desc_sz_bytes,
-                                        wb_status_base *);
-
-    wb_status->cidx = wb_status->pidx = 0;
-    return status;
-}
-
-void ring_buffer::destroy(void)
-{
-    capacity = 0;
-    buffer_va = nullptr;
-    wb_status = nullptr;
-    sw_index = 0;
-    hw_index = 0;
-    stats.tot_desc_accepted = 0;
-    stats.tot_desc_processed = 0;
-    if (buffer) {
-        TraceVerbose(TRACE_QDMA, "Deleting buffer object");
-        WdfObjectDelete(buffer);
-        buffer = nullptr;
-    }
-}
-
-PFORCEINLINE UINT32 ring_buffer::idx_delta(UINT32 start_idx, UINT32 end_idx)
-{
-    NT_ASSERT(start_idx < capacity);
-    NT_ASSERT(end_idx < capacity);
-
-    if (start_idx <= end_idx)
-        return end_idx - start_idx;
-    else
-        return capacity - start_idx + end_idx;
-}
-
-void *ring_buffer::get_va(void)
-{
-    return buffer_va;
-}
-
-UINT32 ring_buffer::get_capacity(void)
-{
-    return capacity;
-}
-
-UINT32 ring_buffer::get_num_free_entries(void)
-{
-    /* As hw_index is proper 32-bit aligned address,
-       reading and writing gets done in single cycle
-       and hence not using any synchronization for performance
-    */
-    UINT32 wb_index = hw_index;
-
-    if (wb_index > sw_index)
-        return ((wb_index - sw_index) - 1);
-    else
-        return (capacity - 1 - (sw_index - wb_index));
-}
-
-NTSTATUS h2c_queue::create(
-    qdma_device *qdma,
-    queue_config& q_conf)
-{
-    user_conf = q_conf;
-
-    INIT_LIST_HEAD(&req_list_head);
-
-    if ((user_conf.desc_bypass_en) &&
-        (user_conf.sw_desc_sz == static_cast<UINT8>(qdma_desc_sz::QDMA_DESC_SZ_64B))) {
-        lib_config.desc_sz = qdma_desc_sz::QDMA_DESC_SZ_64B;
-    }
-    else {
-        lib_config.desc_sz = user_conf.is_st ? qdma_desc_sz::QDMA_DESC_SZ_16B : qdma_desc_sz::QDMA_DESC_SZ_32B;
-    }
-
-    size_t desc_sz_bytes = get_descriptor_size(lib_config.desc_sz);
-    lib_config.ring_sz = qdma->csr_conf.ring_sz[user_conf.h2c_ring_sz_index];
-
-    auto status = desc_ring.create(qdma->dma_enabler,
-                                   lib_config.ring_sz,
-                                   desc_sz_bytes);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: desc_ring.create failed: %!STATUS!", 
-            qdma->dev_conf.name, status);
-        return status;
-    }
-
-    init_csr_h2c_pidx_info();
-
-    /** Create and initialize MM/ST_H2C request tracker of
-      * descriptor ring size, This is shadow ring and hence the
-      * size is exact descriptor ring size
-      */
-    status = req_tracker.create(lib_config.ring_sz);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_dma_req_tracker() failed: %!STATUS!", 
-            qdma->dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: WdfSpinLockCreate() failed: %!STATUS!", 
-            qdma->dev_conf.name, status);
-        goto ErrExit;
-    }
-
-#ifdef TEST_64B_DESC_BYPASS_FEATURE
-    if (user_conf.is_st && user_conf.desc_bypass_en && user_conf.sw_desc_sz == 3) {
-        TraceVerbose(TRACE_QDMA, "%s: Initializing the descriptors with "
-            "preloaded data to test TEST_64B_DESC_BYPASS_FEATURE", qdma->dev_conf.name);
-
-        for (UINT32 desc_idx = 0; desc_idx < lib_config.ring_sz; desc_idx++) {
-            UINT8 *desc =
-                WDF_PTR_ADD_OFFSET_TYPE(desc_ring.buffer_va,
-                    (desc_sz_bytes * desc_idx),
-                    UINT8 *);
-            RtlFillMemory(desc, desc_sz_bytes, desc_idx + 1);
-        }
-    }
-#endif
-    return status;
-
-ErrExit:
-    destroy();
-    return status;
-}
-
-void h2c_queue::destroy(void)
-{
-    desc_ring.destroy();
-    req_tracker.destroy();
-    if (nullptr != lock) {
-        WdfObjectDelete(lock);
-        lock = nullptr;
-    }
-}
-
-void h2c_queue::init_csr_h2c_pidx_info(void)
-{
-    csr_pidx_info.irq_en = lib_config.irq_en;
-    csr_pidx_info.pidx = 0u;
-}
-
-NTSTATUS c2h_queue::create(
-    qdma_device *qdma,
-    queue_config& q_conf)
-{
-    user_conf = q_conf;
-
-    INIT_LIST_HEAD(&req_list_head);
-
-    if ((user_conf.desc_bypass_en) &&
-        (user_conf.sw_desc_sz == static_cast<UINT8>(qdma_desc_sz::QDMA_DESC_SZ_64B))) {
-        lib_config.desc_sz = qdma_desc_sz::QDMA_DESC_SZ_64B;
-    }
-    else {
-        lib_config.desc_sz = user_conf.is_st ? qdma_desc_sz::QDMA_DESC_SZ_8B : qdma_desc_sz::QDMA_DESC_SZ_32B;
-    }
-
-    size_t desc_sz_bytes = get_descriptor_size(lib_config.desc_sz);
-    lib_config.ring_sz = qdma->csr_conf.ring_sz[user_conf.c2h_ring_sz_index];
-
-    INT32 cmpt_ring_idx =
-        get_cmpt_ring_index(&qdma->csr_conf.ring_sz[0],
-            user_conf.c2h_ring_sz_index);
-
-    /** If cmpt_ring_idx is found, that is cmpt_ring index */
-    if (cmpt_ring_idx >= 0)
-        lib_config.cmpt_ring_id = cmpt_ring_idx;
-    /** Else, cmpt_ring index is same as descriptor ring index */
-    else
-        lib_config.cmpt_ring_id = user_conf.c2h_ring_sz_index;
-
-    lib_config.cmpt_ring_sz = qdma->csr_conf.ring_sz[lib_config.cmpt_ring_id];
-
-    NTSTATUS status = desc_ring.create(qdma->dma_enabler, lib_config.ring_sz, desc_sz_bytes);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: desc_ring.create failed: %!STATUS!", qdma->dev_conf.name, status);
-        return status;
-    }
-
-    status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_INTR, "%s: WdfSpinLockCreate failed: %!STATUS!", qdma->dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    if (user_conf.is_st) {
-        /** Create and initialize ST C2H dma request tracker of
-          * descriptor ring size to allow minimum of desc_ring entry requests
-          * when each request occupies a single desc_ring entry
-          */
-        status = st_c2h_req_tracker.create(lib_config.ring_sz);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: Failed to init() ST C2H req tracker failed: %!STATUS!", 
-                qdma->dev_conf.name, status);
-            goto ErrExit;
-        }
-    }
-    else {
-        /** Create and initialize MM/ST_H2C request tracker of
-          * descriptor ring size, This is shadow ring and hence the
-          * size is exact descriptor ring size
-          */
-        status = req_tracker.create(lib_config.ring_sz);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: Failed to init() MM C2H req tracker failed: %!STATUS!", 
-                qdma->dev_conf.name, status);
-            goto ErrExit;
-        }
-    }
-
-    init_csr_c2h_pidx_info();
-    is_cmpt_valid = false;
-    if ((user_conf.is_st) ||
-        (!user_conf.is_st && user_conf.en_mm_cmpl && qdma->dev_conf.dev_info.mm_cmpt_en)) {
-        /* Completion ring resources */
-        is_cmpt_valid = true;
-        size_t cmpt_sz_bytes = get_descriptor_size(user_conf.cmpt_sz);
-
-        status = cmpt_ring.create(qdma->dma_enabler, lib_config.cmpt_ring_sz, cmpt_sz_bytes);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: desc_ring.create failed: %!STATUS!", 
-                qdma->dev_conf.name, status);
-            goto ErrExit;
-        }
-
-        init_csr_cmpt_cidx_info();
-
-        /* Identify completion offset */
-        qdma_hw_version_info hw_version_info = { };
-        qdma->qdma_get_hw_version_info(hw_version_info);
-        if (hw_version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-            /* UDD starts from index 2 for Versal Hard IP */
-            cmpt_offset = 2;
-        }
-        else {
-            cmpt_offset = 0;
-        }
-    }
-
-    if (!user_conf.is_st)
-        return status;
-
-    lib_config.data_buf_size = qdma->csr_conf.c2h_buff_sz[user_conf.c2h_buff_sz_index];
-    const auto c2h_desc_ring = static_cast<c2h_descriptor*>(desc_ring.get_va());
-
-    auto desc_ring_capacity = desc_ring.get_capacity();
-    pkt_buffer = static_cast<st_c2h_pkt_buffer *>(qdma_calloc(desc_ring_capacity,
-                                                              sizeof(st_c2h_pkt_buffer)));
-
-    if (nullptr == pkt_buffer) {
-        TraceError(TRACE_QDMA, "%s: rx_buffers qdma_calloc failed: %!STATUS!", 
-            qdma->dev_conf.name, status);
-        status = STATUS_INSUFFICIENT_RESOURCES;
-        goto ErrExit;
-    }
-
-    bool rx_contiguous_alloc;
-    PVOID buff_va = nullptr;
-    PHYSICAL_ADDRESS buff_dma;
-
-    /* Try allocating contigous DMA common buffer */
-    status = pkt_buffer[0].create(qdma->dma_enabler,
-                                  (desc_ring_capacity * lib_config.data_buf_size));
-    if (!NT_SUCCESS(status)) {
-        rx_contiguous_alloc = false;
-        no_allocated_rx_common_buffs = desc_ring_capacity;
-        buff_dma.QuadPart = 0;
-    }
-    else {
-        rx_contiguous_alloc = true;
-        no_allocated_rx_common_buffs = 1;
-        buff_va = pkt_buffer[0].get_va();
-        buff_dma.QuadPart = pkt_buffer[0].get_dma_addr().QuadPart;
-    }
-
-    for (UINT32 i = 0; i < desc_ring_capacity; ++i) {
-        if (true == rx_contiguous_alloc) {
-            /* Split the contiguous buffer */
-            pkt_buffer[i].fill_rx_buff(buff_va, buff_dma);
-
-            buff_va = (PVOID)((UINT8 *)buff_va + lib_config.data_buf_size);
-            buff_dma.QuadPart = buff_dma.QuadPart + lib_config.data_buf_size;
-        }
-        else {
-            /* Allocate DMA buffers for Rx Ring */
-            status = pkt_buffer[i].create(qdma->dma_enabler, lib_config.data_buf_size);
-            if (!NT_SUCCESS(status)) {
-                no_allocated_rx_common_buffs = i - 1;
-                goto ErrExit;
-            }
-        }
-
-        /* Fill DMA Address for QDMA Rx Descriptor Ring */
-        c2h_desc_ring[i].addr = pkt_buffer[i].get_dma_addr().QuadPart;
-    }
-
-    status = pkt_frag_queue.create(lib_config.cmpt_ring_sz);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: received pkts init failed: %!STATUS!", qdma->dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    pkt_frag_list = static_cast<st_c2h_pkt_fragment*>(qdma_calloc(desc_ring_capacity,
-                                                      sizeof(st_c2h_pkt_fragment)));
-    if (nullptr == pkt_frag_list) {
-        TraceError(TRACE_QDMA, "%s: rx_buffers qdma_calloc failed: %!STATUS!", qdma->dev_conf.name, status);
-        status = STATUS_INSUFFICIENT_RESOURCES;
-        goto ErrExit;
-    }
-
-    return status;
-ErrExit:
-    destroy();
-    return status;
-}
-
-void c2h_queue::destroy(void)
-{
-    desc_ring.destroy();
-
-    if (lock) {
-        WdfObjectDelete(lock);
-        lock = nullptr;
-    }
-
-    cmpt_ring.destroy();
-    is_cmpt_valid = false;
-
-    if (user_conf.is_st) {
-        if (pkt_buffer) {
-            TraceVerbose(TRACE_QDMA, "Deleting ST Rx buffer objects");
-
-            for (UINT32 i = 0u; i < no_allocated_rx_common_buffs; ++i) {
-                pkt_buffer[i].destroy();
-            }
-            no_allocated_rx_common_buffs = 0;
-
-            qdma_memfree(pkt_buffer);
-            pkt_buffer = nullptr;
-        }
-
-        st_c2h_req_tracker.destroy();
-        pkt_frag_queue.destroy();
-
-        if (nullptr != pkt_frag_list) {
-            qdma_memfree(pkt_frag_list);
-            pkt_frag_list = nullptr;
-        }
-    }
-    else {
-        req_tracker.destroy();
-    }
-}
-
-INT32 c2h_queue::get_cmpt_ring_index(UINT32* csr_ring_sz_table, UINT32 desc_ring_idx)
-{
-    UINT32 csr_idx;
-
-    /** Completion Ring size deduction */
-    int best_fit_idx = -1;
-    for (csr_idx = 0; csr_idx < QDMA_GLOBAL_CSR_ARRAY_SZ; csr_idx++) {
-        /** Check for ring size larger than descriptor ring size (lib_config.ring_sz) */
-        if (csr_ring_sz_table[csr_idx] > csr_ring_sz_table[desc_ring_idx]) {
-
-            /** best_fit_index is the index where its size is
-              * next higher than descriptor ring size
-              * (should be in one of the CSR ring size registers)
-              */
-            if (best_fit_idx < 0)
-                best_fit_idx = csr_idx;
-            else if ((best_fit_idx >= 0) &&
-                (csr_ring_sz_table[csr_idx] <
-                    csr_ring_sz_table[best_fit_idx]))
-                best_fit_idx = csr_idx;
-        }
-    }
-
-    return best_fit_idx;
-}
-
-void c2h_queue::init_csr_c2h_pidx_info(void)
-{
-    csr_pidx_info.irq_en = lib_config.irq_en;
-    csr_pidx_info.pidx = 0u;
-}
-
-void c2h_queue::init_csr_cmpt_cidx_info(void)
-{
-    csr_cmpt_cidx_info.counter_idx = user_conf.c2h_th_cnt_index;
-    csr_cmpt_cidx_info.irq_en = lib_config.irq_en;
-    csr_cmpt_cidx_info.timer_idx = user_conf.c2h_timer_cnt_index;
-    csr_cmpt_cidx_info.trig_mode = static_cast<uint8_t>(user_conf.trig_mode);
-    csr_cmpt_cidx_info.wrb_en = true;
-    csr_cmpt_cidx_info.wrb_cidx = 0u;
-}
-
-NTSTATUS dma_req_tracker::create(UINT32 entries)
-{
-    requests = static_cast<req_ctx *>(qdma_calloc(entries, sizeof(req_ctx)));
-    if (nullptr == requests) {
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-void dma_req_tracker::destroy()
-{
-    if (nullptr != requests) {
-        qdma_memfree(requests);
-        requests = nullptr;
-    }
-}
-
-NTSTATUS st_c2h_dma_req_tracker::create(UINT32 entries)
-{
-    requests = static_cast<st_c2h_req*>(qdma_calloc(entries, sizeof(st_c2h_req)));
-    if (nullptr == requests) {
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    NTSTATUS status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_INTR, "WdfSpinLockCreate failed: %!STATUS!", status);
-        qdma_memfree(requests);
-        return status;
-    }
-
-    capacity = entries;
-    pidx = cidx = 0u;
-
-    return STATUS_SUCCESS;
-}
-
-void st_c2h_dma_req_tracker::destroy(void)
-{
-    if (nullptr != requests) {
-        qdma_memfree(requests);
-        requests = nullptr;
-    }
-
-    if (nullptr != lock) {
-        WdfObjectDelete(lock);
-        lock = nullptr;
-    }
-}
-
-NTSTATUS st_c2h_dma_req_tracker::st_push_dma_req(st_c2h_req& req)
-{
-    WdfSpinLockAcquire(lock);
-    if (((pidx + 1) % capacity) == cidx) {
-        WdfSpinLockRelease(lock);
-        return STATUS_DESTINATION_ELEMENT_FULL;
-    }
-
-    requests[pidx].len = req.len;
-    requests[pidx].priv = req.priv;
-    requests[pidx].st_compl_cb = req.st_compl_cb;
-
-    pidx = (pidx + 1) % capacity;
-
-    WdfSpinLockRelease(lock);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS st_c2h_dma_req_tracker::st_peek_dma_req(st_c2h_req& req)
-{
-    WdfSpinLockAcquire(lock);
-    if (pidx == cidx) {
-        WdfSpinLockRelease(lock);
-        return STATUS_SOURCE_ELEMENT_EMPTY;
-    }
-    WdfSpinLockRelease(lock);
-
-    /* Released the spin above, this call st_peek_dma_req is
-       designed to use for sequential execution and hence
-       is not thread safe
-    */
-
-    req.len = requests[cidx].len;
-    req.priv = requests[cidx].priv;
-    req.st_compl_cb = requests[cidx].st_compl_cb;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS st_c2h_dma_req_tracker::st_pop_dma_req(void)
-{
-    WdfSpinLockAcquire(lock);
-    if (pidx == cidx) {
-        WdfSpinLockRelease(lock);
-        return STATUS_SOURCE_ELEMENT_EMPTY;
-    }
-    WdfSpinLockRelease(lock);
-
-    /* Released the spin above, this call st_peek_dma_req is
-       designed to use for sequential execution and hence
-       is not thread safe
-    */
-    requests[cidx].len = 0;
-    requests[cidx].priv = nullptr;
-    requests[cidx].st_compl_cb = nullptr;
-
-    cidx = (cidx + 1) % capacity;
-    return STATUS_SUCCESS;
-}
-
-inline NTSTATUS st_c2h_pkt_buffer::create(
-    WDFDMAENABLER dma_enabler,
-    size_t size)
-{
-    WDF_COMMON_BUFFER_CONFIG common_buff_config;
-    WDF_COMMON_BUFFER_CONFIG_INIT(&common_buff_config, FILE_64_BYTE_ALIGNMENT);
-
-    NTSTATUS status = WdfCommonBufferCreateWithConfig(dma_enabler,
-        size,
-        &common_buff_config,
-        WDF_NO_OBJECT_ATTRIBUTES,
-        &rx_buff_common);
-
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "WdfCommonBufferCreate failed %!STATUS!", status);
-        return status;
-    }
-
-    rx_buff_va = WdfCommonBufferGetAlignedVirtualAddress(rx_buff_common);
-    rx_buff_dma = WdfCommonBufferGetAlignedLogicalAddress(rx_buff_common);
-
-    RtlZeroMemory(rx_buff_va, size);
-
-    return status;
-}
-
-inline void st_c2h_pkt_buffer::destroy(void)
-{
-    WdfObjectDelete(rx_buff_common);
-}
-
-inline void st_c2h_pkt_buffer::fill_rx_buff(PVOID buff_va, PHYSICAL_ADDRESS buff_dma)
-{
-    rx_buff_va = buff_va;
-    rx_buff_dma = buff_dma;
-}
-
-inline PHYSICAL_ADDRESS st_c2h_pkt_buffer::get_dma_addr(void)
-{
-    return rx_buff_dma;
-}
-
-inline PVOID st_c2h_pkt_buffer::get_va(void)
-{
-    return rx_buff_va;
-}
-
-NTSTATUS queue_pair::create(
-    queue_config& conf)
-{
-    NTSTATUS status;
-
-    type = conf.is_st ? queue_type::STREAMING : queue_type::MEMORY_MAPPED;
-
-    RtlStringCchPrintfA(name, ARRAYSIZE(name), "%s-%s-%d",
-        qdma->dev_conf.name, ((conf.is_st) ? "ST" : "MM"), idx);
-
-    /* h2c common buffer */
-    status = h2c_q.create(qdma, conf);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s h2c_q.create failed: %!STATUS!", this->name, status);
-        return status;
-    }
-
-    /* c2h common buffer */
-    status = c2h_q.create(qdma, conf);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s c2h_q.create failed: %!STATUS!", this->name, status);
-        h2c_q.destroy();
-        return status;
-    }
-
-    return status;
-}
-
-void queue_pair::destroy(void)
-{
-    h2c_q.destroy();
-    c2h_q.destroy();
-}
-
-void queue_pair::init_csr(void)
-{
-    if (c2h_q.is_cmpt_valid == true) {
-        update_sw_index_with_csr_h2c_pidx(0);
-        update_sw_index_with_csr_wb(0);
-        update_sw_index_with_csr_c2h_pidx(static_cast<UINT32>(c2h_q.desc_ring.capacity - 1));
-    }
-    else {
-        update_sw_index_with_csr_h2c_pidx(0);
-        update_sw_index_with_csr_c2h_pidx(0);
-    }
-}
-
-PFORCEINLINE void queue_pair::update_sw_index_with_csr_h2c_pidx(UINT32 new_pidx)
-{
-    TraceVerbose(TRACE_QDMA, "%s-H2C updating h2c pidx to %u", this->name, new_pidx);
-
-    MemoryBarrier();
-    h2c_q.desc_ring.sw_index = new_pidx;
-    h2c_q.csr_pidx_info.pidx = (UINT16)new_pidx;
-    qdma->hw.qdma_queue_pidx_update(qdma, false /* is_vf */,
-                                    idx, false /* is_c2h */,
-                                    &h2c_q.csr_pidx_info);
-}
-
-PFORCEINLINE void queue_pair::update_sw_index_with_csr_c2h_pidx(UINT32 new_pidx)
-{
-    TraceVerbose(TRACE_QDMA, "%s-C2H updating c2h pidx to %u", this->name, new_pidx);
-
-    MemoryBarrier();
-    c2h_q.desc_ring.sw_index = new_pidx;
-    c2h_q.csr_pidx_info.pidx = (UINT16)new_pidx;
-    qdma->hw.qdma_queue_pidx_update(qdma, false /* is_vf */,
-                                    idx, true /* is_c2h */,
-                                    &c2h_q.csr_pidx_info);
-}
-
-PFORCEINLINE void queue_pair::update_sw_index_with_csr_wb(UINT32 new_cidx)
-{
-    TraceVerbose(TRACE_QDMA, "%s-C2H updating wb cidx to %u", this->name, new_cidx);
-
-    c2h_q.cmpt_ring.sw_index = new_cidx;
-    c2h_q.csr_cmpt_cidx_info.wrb_cidx = (UINT16)new_cidx;
-    qdma->hw.qdma_queue_cmpt_cidx_update(qdma, false, idx,
-                                         &c2h_q.csr_cmpt_cidx_info);
-}
-
-service_status queue_pair::process_mm_request(dma_request* request, size_t* xfer_len)
-{
-    bool                    poll;
-    ring_buffer             *desc_ring;
-    dma_req_tracker         *tracker;
-    ULONG                   no_of_sub_elem = 0;
-    UINT32                  credits = 0;
-    ULONG                   sg_index;
-    WDF_DMA_DIRECTION       direction;
-    PSCATTER_GATHER_LIST    sg_list;
-    LONGLONG                device_offset;
-    dma_completion_cb       compl_cb;
-    VOID                    *priv;
-    poll_operation_entry    *poll_entry;
-    char                    *dir_name;
-    service_status          status = service_status::SERVICE_CONTINUE;
-
-    /** Validate the parameters */
-    if ((request == nullptr) || (xfer_len == NULL))
-        return service_status::SERVICE_ERROR;
-
-    /** Read the request parameters */
-    direction       = request->direction;
-    sg_list         = request->sg_list;
-    device_offset   = (request->device_offset + request->offset_idx);
-    compl_cb        = request->compl_cb;
-    priv            = request->priv;
-
-    if (direction == WdfDmaDirectionWriteToDevice) {
-        desc_ring = &h2c_q.desc_ring;
-        tracker = &h2c_q.req_tracker;
-        poll = !h2c_q.lib_config.irq_en;
-        poll_entry = h2c_q.poll_entry;
-        dir_name = (char *)"H2C";
-    }
-    else {
-        desc_ring = &c2h_q.desc_ring;
-        tracker = &c2h_q.req_tracker;
-        poll = !c2h_q.lib_config.irq_en;
-        poll_entry = c2h_q.poll_entry;
-        dir_name = (char *)"C2H";
-    }
-
-    credits = desc_ring->get_num_free_entries();
-    if (credits == 0) {
-        TraceError(TRACE_QDMA, "%s-%s: No space [%u] in sg dma list", 
-            this->name, dir_name, credits);
-        return status;
-    }
-
-    UINT32 ring_idx = desc_ring->sw_index;
-    bool is_credit_avail = true;
-    size_t dmaed_len = 0;
-
-    TraceVerbose(TRACE_QDMA, "%s-%s enqueueing %u sg list at ring_index=%u FreeDesc : %u",
-        this->name, dir_name, (sg_list->NumberOfElements - request->sg_index), ring_idx, credits);
-
-    const auto desc = static_cast<mm_descriptor*>(desc_ring->get_va());
-
-    for (sg_index = request->sg_index;
-        ((sg_index < sg_list->NumberOfElements) && (is_credit_avail)); sg_index++) {
-
-        size_t len = 0;
-        size_t remain_len = sg_list->Elements[sg_index].Length;
-        size_t frag_len = mm_max_desc_data_len;
-
-        if (sg_list->Elements[sg_index].Length > mm_max_desc_data_len) {
-            UINT32 frag_cnt = (UINT32)(sg_list->Elements[sg_index].Length / sg_frag_len);
-            if (sg_list->Elements[sg_index].Length % sg_frag_len)
-                frag_cnt++;
-
-            if (frag_cnt > credits) {
-                TraceInfo(TRACE_QDMA, "%s-%s Sufficient credts are not available to fit sg element, "
-                    "frag_cnt : %d, credits : %d\n", this->name, dir_name, frag_cnt, credits);
-
-                break;
-            }
-
-            frag_len = sg_frag_len;
-            TraceInfo(TRACE_QDMA, "%s-%s sg_list len > mm_max_desc_data_len(%lld > %lld), "
-                "splitting at idx: %d", this->name, dir_name, sg_list->Elements[sg_index].Length, 
-                mm_max_desc_data_len, sg_index);
-        }
-
-        while (remain_len != 0) {
-            size_t part_len = min(remain_len, frag_len);
-
-            desc[ring_idx].length = part_len;
-            desc[ring_idx].valid = true;
-            desc[ring_idx].sop = (sg_index == 0);
-            desc[ring_idx].eop = (sg_index == (sg_list->NumberOfElements - 1)) && (remain_len == part_len);
-
-            if (direction == WdfDmaDirectionWriteToDevice) {
-                desc[ring_idx].addr = sg_list->Elements[sg_index].Address.QuadPart + len;
-                desc[ring_idx].dest_addr = device_offset;
-            }
-            else {
-                desc[ring_idx].addr = device_offset;
-                desc[ring_idx].dest_addr = sg_list->Elements[sg_index].Address.QuadPart + len;
-            }
-
-            len = len + part_len;
-            remain_len = remain_len - part_len;
-
-            device_offset += part_len;
-            dump(desc[ring_idx]);
-
-            tracker->requests[ring_idx].compl_cb = nullptr;
-            /** Set Call back function if EOP is SET */
-            if (desc[ring_idx].eop == true) {
-                tracker->requests[ring_idx].compl_cb = (dma_completion_cb)compl_cb;
-                tracker->requests[ring_idx].priv = priv;
-                desc[ring_idx].eop = true;
-            }
-
-            desc_ring->advance_idx(ring_idx);
-
-            no_of_sub_elem++;
-            /** Descriptor ring boundary checking */
-            credits--;
-            if (credits == 0) {
-                is_credit_avail = false;
-                break;
-            }
-        }
-        /** Discard the main element count in sg_list->NumberOfElements */
-        no_of_sub_elem--;
-        dmaed_len += len;
-    }
-
-    if (sg_index != request->sg_index) {
-        request->sg_index = sg_index;
-        request->offset_idx = device_offset - request->device_offset;
-
-        /** When sg_index reaches the end, request forward done */
-        if (request->sg_index >= sg_list->NumberOfElements)
-            status = service_status::SERVICE_FINISHED;
-
-        UINT32 accepted_desc = desc_ring->idx_delta(desc_ring->sw_index, ring_idx);
-        desc_ring->stats.tot_desc_accepted += accepted_desc;
-
-        *xfer_len = dmaed_len;
-
-        TraceVerbose(TRACE_QDMA, "%s-%s +++ Request added at : %u +++", 
-            this->name, dir_name, (ring_idx - 1));
-        TraceVerbose(TRACE_QDMA, "%s-%s MM Accepted Desc : %d", 
-            this->name, dir_name, accepted_desc);
-
-#ifdef STRESS_TEST
-        KeStallExecutionProcessor(2);
-#endif
-
-        if (direction == WdfDmaDirectionWriteToDevice) {
-            update_sw_index_with_csr_h2c_pidx(ring_idx);
-            TraceVerbose(TRACE_QDMA, "%s-%s csr[%u].h2c_dsc_pidx=%u", 
-                this->name, dir_name, idx_abs, ring_idx);
-        }
-        else {
-            update_sw_index_with_csr_c2h_pidx(ring_idx);
-            TraceVerbose(TRACE_QDMA, "%s-%s csr[%u].c2h_dsc_pidx=%u", 
-                this->name, dir_name, idx_abs, ring_idx);
-        }
-
-        if (poll)
-            wakeup_thread(poll_entry->thread);
-    }
-
-    return status;
-}
-
-service_status queue_pair::process_st_h2c_request(dma_request* request, size_t* xfer_len)
-{
-    bool                    poll;
-    ring_buffer             *desc_ring;
-    dma_req_tracker         *tracker;
-    poll_operation_entry    *poll_entry;
-    ULONG                   NumberOfElements;
-    ULONG                   no_of_sub_elem = 0;
-    UINT32                  credits;
-    PSCATTER_GATHER_LIST    sg_list;
-    dma_completion_cb       compl_cb;
-    VOID                    *priv;
-    ULONG                   sg_index;
-    service_status          status = service_status::SERVICE_CONTINUE;
-
-    /** Validate the parameters */
-    if ((request == nullptr) || (xfer_len == NULL))
-        return service_status::SERVICE_ERROR;
-
-    /** ST C2H has different execution flow */
-    if (request->direction != WdfDmaDirectionWriteToDevice)
-        return service_status::SERVICE_ERROR;
-
-    /** Read the request parameters */
-    sg_list     = request->sg_list;
-    compl_cb    = request->compl_cb;
-    priv        = request->priv;
-
-    desc_ring           = &h2c_q.desc_ring;
-    tracker             = &h2c_q.req_tracker;
-    poll                = !h2c_q.lib_config.irq_en;
-    poll_entry          = h2c_q.poll_entry;
-    NumberOfElements    = sg_list->NumberOfElements;
-
-    credits = desc_ring->get_num_free_entries();
-    if (credits == 0) {
-        TraceError(TRACE_QDMA, "%s-H2C: No space [%u] in sg dma list", this->name, credits);
-        return status;
-    }
-
-    UINT32 pidx = desc_ring->sw_index;
-    const auto desc = static_cast<h2c_descriptor *>(desc_ring->get_va());
-    bool is_credit_avail = true;
-    size_t dmaed_len = 0;
-    
-    TraceVerbose(TRACE_QDMA, "%s-H2C enqueueing %u sg list at ring_index=%u FreeDesc : %u",
-        this->name, (NumberOfElements - request->sg_index), pidx, credits);
-
-    for (sg_index = request->sg_index; ((sg_index < NumberOfElements) && (is_credit_avail)); sg_index++) {
-        size_t len = 0;
-        size_t remain_len = sg_list->Elements[sg_index].Length;
-        size_t frag_len = st_max_desc_data_len;
-
-        /* If the SG element length is more than ST supported len,
-            * then Fragment the SG element into sub SG elements */
-        if (sg_list->Elements[sg_index].Length > st_max_desc_data_len) {
-            UINT32 frag_cnt = (UINT32)(sg_list->Elements[sg_index].Length / sg_frag_len);
-            if (sg_list->Elements[sg_index].Length % sg_frag_len)
-                frag_cnt++;
-
-            if (frag_cnt > credits) {
-                TraceInfo(TRACE_QDMA, "%s-H2C: Sufficient credits are not available to fit sg element, "
-                    "frag_cnt : %d, credits : %d\n", this->name, frag_cnt, credits);
-
-                break;
-            }
-
-            frag_len = sg_frag_len;
-            TraceInfo(TRACE_QDMA, "%s-H2C sg_list len > st_max_desc_data_len(%lld > %lld), "
-                "splitting at idx: %d", this->name, sg_list->Elements[sg_index].Length, 
-                st_max_desc_data_len, sg_index);
-        }
-
-        /** do while loop is to support ST Zero length packet transfers */
-        do {
-            size_t part_len = min(remain_len, frag_len);
-
-            desc[pidx].addr     = sg_list->Elements[sg_index].Address.QuadPart + len;
-            desc[pidx].length   = (UINT16)part_len;
-            desc[pidx].pld_len  = (UINT16)part_len;
-            desc[pidx].sop      = (sg_index == 0);
-            desc[pidx].eop      = (sg_index == (NumberOfElements - 1) && (remain_len == part_len));
-
-            len = len + part_len;
-            remain_len = remain_len - part_len;
-
-            dump(desc[pidx]);
-
-            tracker->requests[pidx].compl_cb = nullptr;
-            /** Set Call back function if EOP is SET */
-            if (desc[pidx].eop == true) {
-                tracker->requests[pidx].compl_cb = (dma_completion_cb)compl_cb;
-                tracker->requests[pidx].priv = priv;
-            }
-
-            desc_ring->advance_idx(pidx);
-
-            no_of_sub_elem++;
-            /** Descriptor ring boundary checking */
-            credits--;
-            if (credits == 0) {
-                is_credit_avail = false;
-                break;
-            }
-        } while (remain_len != 0);
-        /** Discard the main element count in sg_list->NumberOfElements */
-        no_of_sub_elem--;
-        dmaed_len += len;
-    }
-
-    if (sg_index != request->sg_index) {
-        request->sg_index = sg_index;
-
-        /** When sg_index reaches the end, request forward done */
-        if (request->sg_index >= sg_list->NumberOfElements)
-            status = service_status::SERVICE_FINISHED;
-
-        UINT32 accepted_desc = desc_ring->idx_delta(desc_ring->sw_index, pidx);
-        desc_ring->stats.tot_desc_accepted += accepted_desc;
-
-        *xfer_len = dmaed_len;
-
-        TraceVerbose(TRACE_QDMA, "%s-H2C +++ Request added at : %u +++", this->name, (pidx - 1));
-        TraceVerbose(TRACE_QDMA, "%s-H2C ST Accepted Desc : %d", this->name, accepted_desc);
-
-        update_sw_index_with_csr_h2c_pidx(pidx);
-        TraceVerbose(TRACE_QDMA, "%s-H2C csr[%u].h2c_dsc_pidx=%u", this->name, idx_abs, pidx);
-
-        if (poll)
-            wakeup_thread(poll_entry->thread);
-
-    }
-    return status;
-}
-
-service_status queue_pair::service_mm_st_h2c_completions(ring_buffer *desc_ring, 
-    dma_req_tracker *tracker, UINT32 budget, UINT32 &proc_desc_cnt)
-{
-    UINT32 old_cidx = desc_ring->hw_index;
-    UINT32 new_cidx = desc_ring->wb_status->cidx;
-    UINT32 index;
-
-    /** Complete requests covered by the descriptors in the interval
-      * [old_cidx, new_cidx] */
-    for (index = old_cidx;
-        ((index != new_cidx) && (budget > 0));
-        desc_ring->advance_idx(index), budget--) {
-        req_ctx &completed_req = tracker->requests[index];
-
-        if (completed_req.compl_cb != nullptr) {
-            TraceVerbose(TRACE_QDMA, "%s: --- COMPLETING REQ AT : %u ---", this->name, index);
-            completed_req.compl_cb(completed_req.priv, STATUS_SUCCESS);
-            completed_req.compl_cb = nullptr;
-            completed_req.priv = nullptr;
-        }
-    }
-
-    proc_desc_cnt = desc_ring->idx_delta(old_cidx, index);
-    desc_ring->stats.tot_desc_processed += proc_desc_cnt;
-
-    /* Update stored copy of the ring's consumer index */
-    desc_ring->hw_index = index;
-
-    if (index != new_cidx || desc_ring->sw_index != new_cidx) {
-        /** Ran out of completion budget or still have pending requests.
-          * In interrupt mode while ISR is running, driver might miss the
-          * new interrupts. So, check if any pending jobs are for ring to
-          * continue polling service.
-          */
-        return service_status::SERVICE_CONTINUE;
-    }
-    else {
-        return service_status::SERVICE_FINISHED;
-    }
-}
-
-NTSTATUS queue_pair::check_cmpt_error(c2h_wb_header_8B *cmpt_data)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-
-    if (cmpt_data->data_frmt) {
-        /**
-          * format = 1 does not have length field, so the driver cannot
-          * figure out how many descriptor is used
-          */
-        status = STATUS_UNSUCCESSFUL;
-    }
-
-    if (cmpt_data->desc_error) {
-        /**
-          * descriptor has error
-          */
-        status = STATUS_UNSUCCESSFUL;
-    }
-
-    return status;
-}
-
-PFORCEINLINE void queue_pair::update_c2h_pidx_in_batch(UINT32 processed_desc_cnt)
-{
-    TraceVerbose(TRACE_QDMA, "%s: Completed desc count qid[%u] : %ld", 
-        this->name, idx_abs, processed_desc_cnt);
-    if (processed_desc_cnt) {
-        UINT32 new_pidx = c2h_q.desc_ring.sw_index;
-        c2h_q.desc_ring.advance_idx(new_pidx, processed_desc_cnt);
-        update_sw_index_with_csr_c2h_pidx(new_pidx);
-    }
-}
-
-service_status queue_pair::st_service_c2h_queue(UINT32 budget)
-{
-    NTSTATUS status;
-    service_status ret = service_status::SERVICE_FINISHED;
-    ring_buffer *cmpt_ring = &c2h_q.cmpt_ring;
-    const auto wb_status = reinterpret_cast<volatile c2h_wb_status*>(cmpt_ring->wb_status);
-    auto current_pidx = wb_status->pidx;
-    auto prev_pidx = c2h_q.cmpt_ring.sw_index;
-
-    /* Process WB ring */
-    if (prev_pidx != current_pidx) {
-        TraceVerbose(TRACE_QDMA, "%s: Completion ring sw index : %u hw pidx : %u", this->name, prev_pidx, current_pidx);
-        dump(*const_cast<c2h_wb_status*>(wb_status));
-
-        c2h_wb_header_8B *c2h_cmpt_ring_va;
-        UINT32 wb_desc_shift = (3 + static_cast<size_t>(c2h_q.user_conf.cmpt_sz));
-        const auto c2h_cmpt_ring_base_va = static_cast<c2h_wb_header_8B*>(c2h_q.cmpt_ring.get_va());
-
-        for (; prev_pidx != current_pidx; c2h_q.cmpt_ring.advance_idx(prev_pidx)) {
-            c2h_cmpt_ring_va = (c2h_wb_header_8B *)((UINT8 *)c2h_cmpt_ring_base_va + ((UINT64)prev_pidx << wb_desc_shift));
-
-            dump(prev_pidx, *c2h_cmpt_ring_va);
-
-            /** Check completion descriptor for any errors */
-            status = check_cmpt_error(c2h_cmpt_ring_va);
-            if (!NT_SUCCESS(status)) {
-                TraceError(TRACE_QDMA, "%s: check_cmpt_error returned error", this->name);
-                return service_status::SERVICE_ERROR;
-            }
-
-            if (c2h_cmpt_ring_va->desc_used) {
-                /* Consume the used packet */
-                status = process_st_c2h_data_pkt((void *)c2h_cmpt_ring_va, c2h_cmpt_ring_va->length);
-                if (!NT_SUCCESS(status)) {
-                    TraceError(TRACE_QDMA, "%s: process_st_c2h_data_pkt() failed: %!STATUS!", this->name, status);
-                    break;
-                }
-            }
-            else {
-                /* If user provides a call back function during queue addition,
-                 * callback function will be called and user can process the UDD data,
-                 * else, data will be discarded
-                 *
-                 * This is UDD_ONLY packets, i.e, data is not associated with this completion
-                 * Data associated UDD packets will be given as part of read requests
-                 */
-                if (c2h_q.user_conf.proc_st_udd_cb)
-                    c2h_q.user_conf.proc_st_udd_cb(idx, (void *)c2h_cmpt_ring_va, (void *)qdma);
-            }
-        }
-
-        update_sw_index_with_csr_wb(prev_pidx);
-    }
-
-    /* Process pending ST DMA Requests */
-    UINT32 processed_dma_requests = 0;
-    st_c2h_req req = { 0 };
-    UINT32 processed_desc_cnt = 0;
-    constexpr UINT8 pidx_update_interval = 16;
-
-    /** For ST C2H Queues, budget acts as Upper cut-off for
-      * the dma requests from user that are pending for completion */
-    while (processed_dma_requests < budget) {
-        status = c2h_q.st_c2h_req_tracker.st_peek_dma_req(req);
-        if (!NT_SUCCESS(status)) {
-            /* No more pending requests, Update PIDX and break the loop */
-            update_c2h_pidx_in_batch(processed_desc_cnt);
-            LONG pkt_cnt = c2h_q.pkt_frag_queue.get_avail_frag_cnt();
-            if (pkt_cnt) {
-                TraceVerbose(TRACE_QDMA, "%s: No pending requests. Available Packets : %Iu", this->name, pkt_cnt);
-                ret = service_status::SERVICE_CONTINUE;
-            }
-            break;
-        }
-
-        if (req.len <= c2h_q.pkt_frag_queue.get_avail_byte_cnt()) {
-            UINT32 n = 0;
-            /* For Zero length packets */
-            if (req.len == 0) {
-                status = c2h_q.pkt_frag_queue.consume(c2h_q.pkt_frag_list[n]);
-                if (!NT_SUCCESS(status)) {
-                    break;
-                }
-                n++;
-            }
-            else {
-                size_t length;
-                for (n = 0u, length = 0u; ((n < c2h_q.desc_ring.get_capacity()) &&
-                    (length < req.len)); ++n) {
-                    status = c2h_q.pkt_frag_queue.consume(c2h_q.pkt_frag_list[n]);
-                    if (!NT_SUCCESS(status)) {
-                        break;
-                    }
-                    length += c2h_q.pkt_frag_list[n].length;
-                }
-            }
-
-            if (req.st_compl_cb != nullptr) {
-                req.st_compl_cb(c2h_q.pkt_frag_list, n, req.priv, status);
-                req.st_compl_cb = nullptr;
-            }
-
-            c2h_q.st_c2h_req_tracker.st_pop_dma_req();
-            ++processed_dma_requests;
-            processed_desc_cnt += n;
-            c2h_q.desc_ring.stats.tot_desc_processed += n;
-
-            if (processed_desc_cnt >= pidx_update_interval) {
-                /* Return ST Buffers to desc ring */
-                update_c2h_pidx_in_batch(processed_desc_cnt);
-                processed_desc_cnt = 0;
-            }
-        }
-        else {
-            TraceInfo(TRACE_QDMA, "%s: req_len : %lld, rxd_len:%lld", 
-                this->name, req.len, c2h_q.pkt_frag_queue.get_avail_byte_cnt());
-            update_c2h_pidx_in_batch(processed_desc_cnt);
-            ret = service_status::SERVICE_CONTINUE;
-            break;
-        }
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: Completed Request count : %ld", 
-        this->name, processed_dma_requests);
-    return ret;
-}
-
-void process_queue_req(queue_pair* queue, WDFSPINLOCK lock, PLIST_ENTRY req_list_head)
-{
-    PLIST_ENTRY entry;
-    PLIST_ENTRY temp;
-    service_status status;
-    UINT32 req_service_cnt = 0;
-    size_t xfer_len = 0;
-
-    if ((queue == nullptr) || (lock == nullptr) || (req_list_head == nullptr)) {
-        TraceError(TRACE_QDMA, "Invalid Parameters : queue : %p, "
-            "lock : %p, req_list_head : %p", queue, lock, req_list_head);
-        return;
-    }
-
-    if (queue->state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state: %d", 
-            queue->name, queue->state);
-        return;
-    }
-
-    /** Come out of the loop only
-      * "when the list is empty" or
-      * "when there is no room in descriptor ring (!SERVICE_FINISHED)" or
-      * "when max request service reached"
-      */
-    LIST_FOR_EACH_ENTRY_SAFE(req_list_head, temp, entry) {
-        dma_request* request = LIST_GET_ENTRY(entry, dma_request, list_entry);
-        if (queue->type == queue_type::STREAMING) {
-            status = queue->process_st_h2c_request(request, &xfer_len);
-        }
-        else {
-            status = queue->process_mm_request(request, &xfer_len);
-        }
-        switch (status) {
-        case service_status::SERVICE_CONTINUE:
-            /** Exit the loop as there is no room in descriptor ring */
-            req_service_cnt = max_req_service_cnt;
-            TraceVerbose(TRACE_QDMA, "%s-%s: Request Split", queue->name, 
-                ((request->direction == WdfDmaDirectionReadFromDevice) ? "C2H" : "H2C"));
-            break;
-
-        case service_status::SERVICE_FINISHED:
-            req_service_cnt++;
-            WdfSpinLockAcquire(lock);
-            LIST_DEL_NODE(entry);
-            WdfSpinLockRelease(lock);
-            qdma_memfree(request);
-            break;
-
-        case service_status::SERVICE_ERROR:
-            /** Remove the request from the list,
-              * Can be NULL pointer or ST C2H packet */
-            WdfSpinLockAcquire(lock);
-            LIST_DEL_NODE(entry);
-            WdfSpinLockRelease(lock);
-
-            if (request) {
-                TraceError(TRACE_QDMA, "%s-%s: queue->process_XXX_request() SERVICE_ERROR", 
-                    ((request->direction == WdfDmaDirectionReadFromDevice) ? "C2H" : "H2C"), 
-                    queue->name);
-                qdma_memfree(request);
-            }
-            break;
-        default:
-            TraceError(TRACE_QDMA, "%s-%s: queue->process_XXX_request() "
-                "invalid return value (0x%X)", queue->name, 
-                ((request->direction == WdfDmaDirectionReadFromDevice)? "C2H" : "H2C"), 
-                static_cast<UINT32>(status));
-            break;
-        }
-
-        if (req_service_cnt >= max_req_service_cnt) {
-            TraceInfo(TRACE_QDMA, "%s: Max Requests serviced (%d)", queue->name, req_service_cnt);
-            break;
-        }
-    }
-}
-
-void process_mm_h2c_req(void* arg)
-{
-    queue_pair* queue = static_cast<queue_pair*>(arg);
-
-    process_queue_req(queue, queue->h2c_q.lock, &queue->h2c_q.req_list_head);
-}
-
-void process_mm_c2h_req(void* arg)
-{
-    queue_pair* queue = static_cast<queue_pair*>(arg);
-
-    process_queue_req(queue, queue->c2h_q.lock, &queue->c2h_q.req_list_head);
-}
-
-void service_h2c_mm_queue(void* arg)
-{
-    queue_pair *queue = static_cast<queue_pair *>(arg);
-    UINT32 budget = mm_h2c_completion_weight;
-    ring_buffer *desc_ring = &queue->h2c_q.desc_ring;
-    dma_req_tracker *tracker = &queue->h2c_q.req_tracker;
-    UINT32 proc_desc_cnt = 0;
-
-    service_status status =
-        queue->service_mm_st_h2c_completions(desc_ring, tracker, budget, proc_desc_cnt);
-    switch (status) {
-    case service_status::SERVICE_CONTINUE:
-        if (proc_desc_cnt != 0) {
-            TraceVerbose(TRACE_QDMA, "%s: MM H2C [%u] Flag request, "
-                "proc_desc_cnt:%d", queue->name, queue->idx_abs, proc_desc_cnt);
-            wakeup_thread(queue->h2c_q.req_proc_entry->thread);
-        }
-        wakeup_thread(queue->h2c_q.poll_entry->thread);
-        break;
-    case service_status::SERVICE_ERROR:
-        TraceError(TRACE_QDMA, "%s: MM H2C [%u] service error", queue->name, queue->idx_abs);
-        break;
-    case service_status::SERVICE_FINISHED:
-        wakeup_thread(queue->h2c_q.req_proc_entry->thread);
-        TraceVerbose(TRACE_QDMA, "%s: ervice_h2c_mm_queue [%u] Completed", queue->name, queue->idx_abs);
-    default:
-        break;
-    }
-}
-
-void service_c2h_mm_queue(void *arg)
-{
-    queue_pair *queue = static_cast<queue_pair *>(arg);
-    UINT32 budget = mm_c2h_completion_weight;
-    ring_buffer* desc_ring = &queue->c2h_q.desc_ring;
-    dma_req_tracker* tracker = &queue->c2h_q.req_tracker;
-    UINT32 proc_desc_cnt = 0;
-
-    service_status status =
-        queue->service_mm_st_h2c_completions(desc_ring, tracker, budget, proc_desc_cnt);
-    switch (status) {
-    case service_status::SERVICE_CONTINUE:
-        if (proc_desc_cnt != 0) {
-            TraceVerbose(TRACE_QDMA, "%s: MM C2H [%u] Flag request, "
-                "proc_desc_cnt:%d", queue->name, queue->idx_abs, proc_desc_cnt);
-            wakeup_thread(queue->c2h_q.req_proc_entry->thread);
-        }
-        wakeup_thread(queue->c2h_q.poll_entry->thread);
-        break;
-    case service_status::SERVICE_ERROR:
-        TraceError(TRACE_QDMA, "%s: MM C2H [%u] service error", queue->name, queue->idx_abs);
-        break;
-    case service_status::SERVICE_FINISHED:
-        wakeup_thread(queue->c2h_q.req_proc_entry->thread);
-        TraceVerbose(TRACE_QDMA, "%s: service_c2h_mm_queue [%u] Completed", queue->name, queue->idx_abs);
-    default:
-        break;
-    }
-}
-
-void process_st_h2c_req(void* arg)
-{
-    queue_pair* queue = static_cast<queue_pair*>(arg);
-
-    process_queue_req(queue, queue->h2c_q.lock, &queue->h2c_q.req_list_head);
-}
-
-void service_h2c_st_queue(void *arg)
-{
-    queue_pair *queue = static_cast<queue_pair *>(arg);
-    UINT32 budget = st_h2c_completion_weight;
-    ring_buffer* desc_ring = &queue->h2c_q.desc_ring;
-    dma_req_tracker* tracker = &queue->h2c_q.req_tracker;
-    UINT32 proc_desc_cnt = 0;
-
-    service_status status =
-        queue->service_mm_st_h2c_completions(desc_ring, tracker, budget, proc_desc_cnt);
-    switch (status) {
-    case service_status::SERVICE_CONTINUE:
-        if (proc_desc_cnt != 0) {
-            TraceVerbose(TRACE_QDMA, "%s: ST H2C [%u] Flag request, "
-                "proc_desc_cnt:%d", queue->name, queue->idx_abs, proc_desc_cnt);
-            wakeup_thread(queue->h2c_q.req_proc_entry->thread);
-        }
-        wakeup_thread(queue->h2c_q.poll_entry->thread);
-        break;
-    case service_status::SERVICE_ERROR:
-        TraceError(TRACE_QDMA, "%s: ST H2C [%u] service error", queue->name, queue->idx_abs);
-        break;
-    case service_status::SERVICE_FINISHED:
-        wakeup_thread(queue->h2c_q.req_proc_entry->thread);
-        TraceVerbose(TRACE_QDMA, "%s: service_h2c_st_queue [%u] Completed", queue->name, queue->idx_abs);
-    default:
-        break;
-    }
-}
-
-void service_c2h_st_queue(void *arg)
-{
-    queue_pair *queue = static_cast<queue_pair *>(arg);
-    UINT32 budget = st_c2h_completion_weight;
-    service_status status = queue->st_service_c2h_queue(budget);
-
-    switch (status) {
-    case service_status::SERVICE_CONTINUE:
-        wakeup_thread(queue->c2h_q.poll_entry->thread);
-        break;
-    case service_status::SERVICE_ERROR:
-        TraceError(TRACE_QDMA, "%s: ST C2H [%u] service error", queue->name, queue->idx_abs);
-        break;
-    case service_status::SERVICE_FINISHED:
-        TraceVerbose(TRACE_QDMA, "%s: service_c2h_st_queue [%u] Completed", queue->name, queue->idx_abs);
-    default:
-        break;
-    }
-}
-
-NTSTATUS queue_pair::enqueue_dma_request(dma_request *request)
-{
-    WDFSPINLOCK lock;
-    PLIST_ENTRY req_list_head;
-    dma_request* req_entry;
-    poll_operation_entry* req_proc_entry;
-    char *dir_name;
-
-    if (request == nullptr)
-        return STATUS_INVALID_PARAMETER;
-
-    /** This function Only Support MM H2C, MM C2H and ST C2H.
-      * Rule out the unsupported case
-      */
-    if ((request->is_st == true) && 
-        (request->direction != WdfDmaDirectionWriteToDevice)) {
-        return STATUS_NOT_SUPPORTED;
-    }
-
-    if (request->direction == WdfDmaDirectionWriteToDevice) {
-        lock = h2c_q.lock;
-        req_list_head = &h2c_q.req_list_head;
-        req_proc_entry = h2c_q.req_proc_entry;
-        dir_name = (char *)"H2C";
-    }
-    else {
-        lock = c2h_q.lock;
-        req_list_head = &c2h_q.req_list_head;
-        req_proc_entry = c2h_q.req_proc_entry;
-        dir_name = (char*)"C2H";
-    }
-
-    req_entry = static_cast<dma_request*>(qdma_calloc(1, sizeof(dma_request)));
-    if (req_entry == nullptr) {
-        TraceError(TRACE_QDMA, "%s: req_entry allocation failed", this->name);
-        return STATUS_NO_MEMORY;
-    }
-
-    /** Copy the request details */
-    RtlCopyMemory(req_entry, request, sizeof(dma_request));
-
-    TraceVerbose(TRACE_QDMA, "%s-%s Req Added, Abs Queue: %d, Entry : %p",
-        this->name, dir_name, idx_abs, 
-        static_cast<void*>(&req_entry->list_entry));
-
-    /** Add to the request linked list head */
-    WdfSpinLockAcquire(lock);
-    LIST_ADD_TAIL(req_list_head, &req_entry->list_entry);
-    WdfSpinLockRelease(lock);
-
-    /** Wake up the thread to forward the request to DMA engine */
-    wakeup_thread(req_proc_entry->thread);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS queue_pair::enqueue_dma_request(
-    size_t length,
-    st_rx_completion_cb compl_cb,
-    void *priv)
-{
-    bool poll = !c2h_q.lib_config.irq_en;
-    st_c2h_req req;
-    req.len = length;
-    req.priv = priv;
-    req.st_compl_cb = compl_cb;
-
-    NTSTATUS status = c2h_q.st_c2h_req_tracker.st_push_dma_req(req);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: Failed to add ST C2H request  %!STATUS!", this->name, status);
-        return status;
-    }
-
-    if (poll) {
-        wakeup_thread(c2h_q.poll_entry->thread);
-    }
-
-    return status;
-}
-
-NTSTATUS queue_pair::process_st_c2h_data_pkt(
-    void *udd_ptr,
-    const UINT32 length)
-{
-    st_c2h_pkt_fragment elem;
-    UINT32 data_buff_sz = c2h_q.lib_config.data_buf_size;
-    UINT32 remain_len = length;
-    auto num_descriptors = (length + data_buff_sz - 1) / data_buff_sz;
-    auto& c2h_hw_idx = c2h_q.desc_ring.hw_index;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    /* For Zero Length Packet */
-    if (length == 0) {
-        num_descriptors = 1;
-    }
-
-    for (UINT32 i = 0; i < num_descriptors; ++i) {
-        elem.pkt_type = st_c2h_pkt_type::ST_C2H_DATA_PKT;
-        elem.data = c2h_q.pkt_buffer[c2h_hw_idx].get_va();
-        elem.length = min(remain_len, data_buff_sz);
-        remain_len -= data_buff_sz;
-
-        if (i == (UINT32)0) {
-            elem.udd_data = udd_ptr;
-            elem.sop = 1;
-            elem.eop = 0;
-        }
-        else {
-            elem.udd_data = nullptr;
-            elem.sop = elem.eop = 0 ;
-        }
-
-        elem.eop = (i == num_descriptors - 1) ? 1 : 0;
-
-        status = c2h_q.pkt_frag_queue.add(elem);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: add fragment failed: %!STATUS!", this->name, status);
-            return status;
-        }
-
-        c2h_q.desc_ring.advance_idx(c2h_hw_idx);
-    }
-
-    return status;
-}
-
-void queue_pair::cancel_mm_st_h2c_pending_requests(
-    ring_buffer *desc_ring,
-    dma_req_tracker *tracker,
-    WDFSPINLOCK lock)
-{
-    /** From hw_index to sw_index [all pending requests in queue],
-      * cancel all the requests for given descriptor ring */
-
-    /* Acquire spin lock for rundown protection */
-    WdfSpinLockAcquire(lock);
-    for (UINT32 index = desc_ring->hw_index;
-        index != desc_ring->sw_index; desc_ring->advance_idx(index)) {
-        if (tracker->requests[index].compl_cb != nullptr) {
-            dma_completion_cb compl_cb = tracker->requests[index].compl_cb;
-            compl_cb(tracker->requests[index].priv, STATUS_CANCELLED);
-            tracker->requests[index].compl_cb = nullptr;
-            tracker->requests[index].priv = nullptr;
-        }
-    }
-    WdfSpinLockRelease(lock);
-}
-
-void queue_pair::flush_queue(void)
-{
-    /* Cancel all the pending requests */
-    cancel_mm_st_h2c_pending_requests(&h2c_q.desc_ring, &h2c_q.req_tracker, h2c_q.lock);
-    if (type == queue_type::MEMORY_MAPPED) {
-        cancel_mm_st_h2c_pending_requests(&c2h_q.desc_ring, &c2h_q.req_tracker, c2h_q.lock);
-    }
-    else {
-        /** Cancelling ST C2H pending requests */
-        st_c2h_req req;
-        while (NT_SUCCESS(c2h_q.st_c2h_req_tracker.st_peek_dma_req(req))) {
-            if (req.st_compl_cb != nullptr) {
-                req.st_compl_cb(nullptr, 0, req.priv, STATUS_CANCELLED);
-                req.st_compl_cb = nullptr;
-            }
-            c2h_q.st_c2h_req_tracker.st_pop_dma_req();
-        }
-    }
-}
-
-NTSTATUS queue_pair::read_st_udd_data(void *addr, UINT8 *buf, UINT32 *len)
-{
-    UINT32 udd_len = (UINT32)get_descriptor_size(c2h_q.user_conf.cmpt_sz);
-    UINT8 *cmpt = (UINT8 *)addr;
-    UINT8 loc = 0;
-    UINT32 index = c2h_q.cmpt_offset;
-
-    if ((nullptr == addr) || (nullptr == buf) || (nullptr == len))
-        return STATUS_INVALID_PARAMETER;
-
-    for (loc = 0; index < udd_len; loc++, index++) {
-        if (loc == 0) {
-            buf[loc] = cmpt[index] & 0xF0;
-        }
-        else {
-            buf[loc] = cmpt[index];
-        }
-    }
-
-    *len = loc;
-
-    TraceVerbose(TRACE_QDMA, "%s: UDD Len : %u", this->name, loc);
-
-    return STATUS_SUCCESS;
-}
-
-void * queue_pair::get_last_udd_addr(void)
-{
-    UINT8 *udd_addr = nullptr;
-    UINT32 udd_len = (UINT32)get_descriptor_size(c2h_q.user_conf.cmpt_sz);
-    const auto c2h_cmpt_ring_va = static_cast<c2h_wb_header_8B*>(c2h_q.cmpt_ring.get_va());
-
-    volatile wb_status_base *wb_status = c2h_q.cmpt_ring.wb_status;
-    UINT16 latest_pidx = wb_status->pidx;
-
-    if (latest_pidx == 0)
-        latest_pidx = (UINT16)(c2h_q.cmpt_ring.get_capacity() - 1);
-    else
-        latest_pidx = latest_pidx - 1;
-
-    udd_addr = (UINT8 *)c2h_cmpt_ring_va + ((UINT64)latest_pidx * udd_len);
-
-    return udd_addr;
-}
-
-NTSTATUS queue_pair::desc_dump(qdma_desc_info *desc_info)
-{
-    size_t desc_sz;
-    size_t desc_len;
-    size_t len;
-    size_t buf_idx;
-    ring_buffer *desc_ring;
-    UINT8 *desc_buff_addr;
-    UINT8 *buf = desc_info->pbuffer;
-    size_t buff_sz = desc_info->buffer_sz;
-    WDFSPINLOCK lock;
-
-
-    if (desc_info->desc_type == qdma_desc_type::CMPT_DESCRIPTOR) {
-        if (c2h_q.is_cmpt_valid == true) {
-            desc_ring = &c2h_q.cmpt_ring;
-            desc_sz = (size_t)c2h_q.user_conf.cmpt_sz;
-            lock = c2h_q.lock;
-        }
-        else {
-            TraceError(TRACE_QDMA, "%s: MM CMPT is not valid, HW MM CMPT EN : %d, SW MM CMPT EN : %d\n",
-                this->name, qdma->dev_conf.dev_info.mm_cmpt_en, c2h_q.user_conf.en_mm_cmpl);
-            return STATUS_NOT_SUPPORTED;
-        }
-    }
-    else {
-        if (desc_info->dir == qdma_queue_dir::QDMA_QUEUE_DIR_H2C) {
-            desc_ring = &h2c_q.desc_ring;
-            desc_sz = static_cast<size_t>(h2c_q.lib_config.desc_sz);
-            lock = h2c_q.lock;
-        }
-        else {
-            desc_ring = &c2h_q.desc_ring;
-            desc_sz = static_cast<size_t>(c2h_q.lib_config.desc_sz);
-            lock = c2h_q.lock;
-        }
-    }
-
-    if ((desc_info->desc_start > desc_ring->get_capacity()) ||
-        (desc_info->desc_end > desc_ring->get_capacity())) {
-        TraceError(TRACE_QDMA, "%s: Descriptor Range is incorrect : start : %d, end : %d, RING SIZE : %d",
-            this->name, desc_info->desc_start, desc_info->desc_end, desc_ring->get_capacity());
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    desc_len = (static_cast<size_t>(1) << (3 + desc_sz));
-
-    desc_info->desc_sz = desc_len;
-
-    /** This lock is to prevent queue stop/delete operations when descriptor
-      * data is captured. There is no guarantee that the descriptor data
-      * won't change (Ex: completion entries are filled by HW).
-      *
-      * This will grab instantaneous information present in the descriptors
-      */
-    WdfSpinLockAcquire(lock);
-    if (desc_info->desc_start <= desc_info->desc_end) {
-        len = ((size_t)desc_info->desc_end - (size_t)desc_info->desc_start + 1) * desc_len;
-        if (buff_sz < len) {
-            WdfSpinLockRelease(lock);
-            return STATUS_BUFFER_TOO_SMALL;
-        }
-
-        buf_idx = desc_info->desc_start * desc_len;
-        desc_buff_addr = &((UINT8 *)desc_ring->get_va())[buf_idx];
-        RtlCopyMemory(buf, desc_buff_addr, len);
-        desc_info->data_sz = len;
-    }
-    else {
-        len = ((size_t)desc_ring->get_capacity() - (size_t)desc_info->desc_start + 1) * desc_len;
-        if (buff_sz < len) {
-            WdfSpinLockRelease(lock);
-            return STATUS_BUFFER_TOO_SMALL;
-        }
-
-        buf_idx = desc_info->desc_start * desc_len;
-        desc_buff_addr = &((UINT8 *)desc_ring->get_va())[buf_idx];
-        RtlCopyMemory(buf, desc_buff_addr, len);
-        desc_info->data_sz = len;
-
-        size_t remain_len = ((size_t)desc_info->desc_end + 1) * desc_len;
-        if ((buff_sz - len) < remain_len) {
-            WdfSpinLockRelease(lock);
-            return STATUS_BUFFER_TOO_SMALL;
-        }
-
-        desc_buff_addr = &((UINT8 *)desc_ring->get_va())[0];
-        RtlCopyMemory(&buf[desc_info->data_sz], desc_buff_addr, len);
-        desc_info->data_sz += len;
-    }
-    WdfSpinLockRelease(lock);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS queue_pair::read_mm_cmpt_data(qdma_cmpt_info *cmpt_info)
-{
-    if (type != queue_type::MEMORY_MAPPED) {
-        TraceError(TRACE_QDMA, "%s: read_mm_cmpt_data supported only for MM queues", this->name);
-        return STATUS_NOT_SUPPORTED;
-    }
-
-    if (!c2h_q.is_cmpt_valid) {
-        TraceError(TRACE_QDMA, "%s: MM Completion is not enabled, "
-            "HW En Status : %d, SW En Status : %d", this->name,
-            qdma->dev_conf.dev_info.mm_cmpt_en, c2h_q.user_conf.en_mm_cmpl);
-
-        return STATUS_NOT_CAPABLE;
-    }
-
-    WdfSpinLockAcquire(c2h_q.lock);
-    const auto wb_status = reinterpret_cast<volatile c2h_wb_status*>(c2h_q.cmpt_ring.wb_status);
-    auto prev_pidx = c2h_q.cmpt_ring.sw_index;
-    auto current_pidx = wb_status->pidx;
-
-    if (prev_pidx == current_pidx) {
-        TraceError(TRACE_QDMA, "%s: No Completion data available : "
-            "Prev PIDX : %d, Pres PIDX : %d", this->name, prev_pidx, current_pidx);
-        WdfSpinLockRelease(c2h_q.lock);
-        return STATUS_SOURCE_ELEMENT_EMPTY;
-    }
-
-    UINT8 *dest_buff = cmpt_info->pbuffer;
-    size_t index = 0;
-    const UINT8 *src_buff = static_cast<UINT8 *>(c2h_q.cmpt_ring.get_va());
-    size_t desc_sz = get_descriptor_size(c2h_q.user_conf.cmpt_sz);;
-
-    for (; prev_pidx != current_pidx; c2h_q.cmpt_ring.advance_idx(prev_pidx)) {
-
-        if ((index >= cmpt_info->buffer_len) || ((index + desc_sz) > cmpt_info->buffer_len)) {
-            break;
-        }
-
-        memcpy_s(&dest_buff[index], (cmpt_info->buffer_len - index), &src_buff[prev_pidx * desc_sz], desc_sz);
-        /** The first 4 bits are example design specific and
-          * which contains Err, color, two user logic bits.
-          *
-          * Its the user design choice on the format of the completion data and
-          * This part of the code is to demonstrate the MM CMPT functionality
-          */
-        dest_buff[index] = dest_buff[index] & 0xF0;
-        index = index + desc_sz;
-    }
-
-    cmpt_info->ret_len = index;
-    cmpt_info->cmpt_desc_sz = desc_sz;
-
-    update_sw_index_with_csr_wb(prev_pidx);
-
-    WdfSpinLockRelease(c2h_q.lock);
-
-    return STATUS_SUCCESS;
-}
-
-//======================= indirect programming ====================================================
-
-NTSTATUS qdma_device::clear_queue_contexts(bool is_c2h, UINT16 qid, qdma_hw_access_type context_op) const
-{
-    const bool irq_enable = (drv_conf.operation_mode == queue_op_mode::POLL_MODE) ? false : true;
-    int ret = hw.qdma_sw_ctx_conf((void *)this, is_c2h, qid, nullptr, context_op);
-    if (ret < 0)
-        return hw.qdma_get_error_code(ret);
-
-    ret = hw.qdma_hw_ctx_conf((void *)this, is_c2h, qid, nullptr, context_op);
-    if (ret < 0)
-        return hw.qdma_get_error_code(ret);
-
-    ret = hw.qdma_credit_ctx_conf((void *)this, is_c2h, qid, nullptr, context_op);
-    if (ret < 0)
-        return hw.qdma_get_error_code(ret);
-
-    if ((nullptr != hw.qdma_qid2vec_conf) && irq_enable) {
-        /** Versal Hard IP supports explicit qid2vec context programming.
-          * For other versions, vector Id is accommodated in software context.
-          */
-        ret = hw.qdma_qid2vec_conf((void *)this, is_c2h, qid, nullptr, context_op);
-        if (ret < 0) {
-            return hw.qdma_get_error_code(ret);
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::clear_cmpt_contexts(UINT16 qid, qdma_hw_access_type context_op) const
-{
-    int ret = hw.qdma_cmpt_ctx_conf((void *)this, qid, nullptr, context_op);
-    if (ret < 0)
-        return hw.qdma_get_error_code(ret);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::clear_pfetch_contexts(UINT16 qid, qdma_hw_access_type context_op) const
-{
-    int ret = hw.qdma_pfetch_ctx_conf((void *)this, qid, nullptr, context_op);
-    if (ret < 0)
-        return hw.qdma_get_error_code(ret);
-
-    return STATUS_SUCCESS;
-}
-
-
-NTSTATUS qdma_device::clear_contexts(queue_pair& q, bool invalidate) const
-{
-    auto idx_abs = q.idx_abs;
-    qdma_hw_access_type context_op = (invalidate == true) ? QDMA_HW_ACCESS_INVALIDATE : QDMA_HW_ACCESS_CLEAR;
-
-    /* Clear/Invalidate H2C contexts */
-    NTSTATUS status = clear_queue_contexts(false, idx_abs, context_op);
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    /* Clear/Invalidate C2H contexts */
-    status = clear_queue_contexts(true, idx_abs, context_op);
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    /**
-     * clear Completion context when completion ring is valid for the queue
-     */
-    if(q.c2h_q.is_cmpt_valid == true) {
-        status = clear_cmpt_contexts(idx_abs, context_op);
-        if (!NT_SUCCESS(status)) {
-            return status;
-        }
-    }
-
-    /**
-     * Clear Prefetch context if queue is added in streaming mode
-     */
-    if (q.c2h_q.user_conf.is_st) {
-        status = clear_pfetch_contexts(idx_abs, context_op);
-        if (!NT_SUCCESS(status)) {
-            return status;
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::set_h2c_ctx(
-    queue_pair& q)
-{
-    int ret;
-
-    TraceVerbose(TRACE_QDMA, "%s setting h2c contexts...", q.name);
-
-    const bool irq_enable = (drv_conf.operation_mode == queue_op_mode::POLL_MODE) ? false : true;
-
-    if (irq_enable)
-        TraceVerbose(TRACE_QDMA, "%s Programming with IRQ", q.name);
-
-    qdma_descq_sw_ctxt sw_ctx = {};
-
-    sw_ctx.pidx = 0;
-    sw_ctx.qen = true;
-    sw_ctx.frcd_en = false;
-    sw_ctx.wbi_chk = true;
-    sw_ctx.wbi_intvl_en = true;
-    sw_ctx.fnc_id = dev_conf.dev_sbdf.sbdf.fun_no;
-    sw_ctx.rngsz_idx = q.h2c_q.user_conf.h2c_ring_sz_index;
-    sw_ctx.bypass = q.h2c_q.user_conf.desc_bypass_en;
-    sw_ctx.mm_chn = 0;
-    sw_ctx.wbk_en = true;
-    sw_ctx.irq_en = irq_enable;
-    sw_ctx.is_mm = q.type == queue_type::MEMORY_MAPPED ? 1 : 0;
-    sw_ctx.desc_sz = (UINT8)q.h2c_q.lib_config.desc_sz;
-    sw_ctx.at = 0;
-    sw_ctx.ring_bs_addr = WdfCommonBufferGetAlignedLogicalAddress(q.h2c_q.desc_ring.buffer).QuadPart;
-
-    if (irq_enable) {
-        sw_ctx.vec = (UINT16)q.h2c_q.lib_config.vector_id;
-        sw_ctx.intr_aggr = (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) ? true : false;
-    }
-
-    ret = hw.qdma_sw_ctx_conf((void *)this, false, q.idx_abs, &sw_ctx, QDMA_HW_ACCESS_WRITE);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s Failed to program H2C Software context! ret : %d", q.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    if ((nullptr != hw.qdma_qid2vec_conf) && irq_enable) {
-        /** Versal Hard IP supports explicit qid2vec context programming.
-          * For other versions, vector Id is accommodated in software context.
-          */
-        qdma_qid2vec intr_ctx = {};
-        intr_ctx.h2c_vector = (UINT8)q.h2c_q.lib_config.vector_id;
-        intr_ctx.h2c_en_coal = (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) ? true : false;
-
-        ret = hw.qdma_qid2vec_conf((void *)this, false, q.idx_abs, &intr_ctx, QDMA_HW_ACCESS_WRITE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to program qid2vec context! ret : %d", q.name, ret);
-            clear_queue_contexts(false, q.idx_abs, QDMA_HW_ACCESS_CLEAR);
-            return hw.qdma_get_error_code(ret);
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::set_c2h_ctx(
-    queue_pair& q)
-{
-    int ret;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    TraceVerbose(TRACE_QDMA, "%s setting c2h contexts...", q.name);
-
-    const bool irq_enable = (drv_conf.operation_mode == queue_op_mode::POLL_MODE) ? false : true;
-
-    if (irq_enable)
-        TraceVerbose(TRACE_QDMA, "%s Programming with IRQ", q.name);
-
-    qdma_descq_sw_ctxt sw_ctx = {};
-
-    sw_ctx.pidx = 0;
-    sw_ctx.qen = true;
-    sw_ctx.frcd_en = false;
-    sw_ctx.wbi_chk = true;
-    sw_ctx.wbi_intvl_en = false;
-    sw_ctx.fnc_id = dev_conf.dev_sbdf.sbdf.fun_no;
-    sw_ctx.rngsz_idx = q.c2h_q.user_conf.c2h_ring_sz_index;
-    sw_ctx.bypass = q.c2h_q.user_conf.desc_bypass_en;
-    sw_ctx.wbk_en = true;
-    sw_ctx.irq_en = irq_enable;
-    sw_ctx.is_mm = q.type == queue_type::MEMORY_MAPPED ? 1 : 0;
-    sw_ctx.desc_sz = (UINT8)q.c2h_q.lib_config.desc_sz;
-    sw_ctx.at = 0;
-    sw_ctx.ring_bs_addr = WdfCommonBufferGetAlignedLogicalAddress(q.c2h_q.desc_ring.buffer).QuadPart;
-
-    if (q.type == queue_type::STREAMING) {
-        sw_ctx.frcd_en = true;
-    }
-
-    if (irq_enable) {
-        sw_ctx.vec = (UINT16)q.c2h_q.lib_config.vector_id;
-        sw_ctx.intr_aggr = (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) ? true : false;
-    }
-
-    ret = hw.qdma_sw_ctx_conf((void *)this, true, q.idx_abs, &sw_ctx, QDMA_HW_ACCESS_WRITE);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s Failed to program C2H Software context! ret : %d", q.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    if ((nullptr != hw.qdma_qid2vec_conf) && irq_enable) {
-        /** Versal Hard IP supports explicit qid2vec context programming.
-          * For other versions, vector Id is accommodated in software context.
-          */
-        qdma_qid2vec intr_ctx = {};
-        intr_ctx.c2h_vector = (UINT8)q.c2h_q.lib_config.vector_id;
-        intr_ctx.c2h_en_coal = (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) ? true : false;
-
-        ret = hw.qdma_qid2vec_conf((void *)this, true, q.idx_abs, &intr_ctx, QDMA_HW_ACCESS_WRITE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to program qid2vec context!, ret : %d", q.name, ret);
-            status = hw.qdma_get_error_code(ret);
-            goto ErrExit;
-        }
-    }
-
-    /* CMPT context programming */
-    if (q.c2h_q.is_cmpt_valid == true) {
-        qdma_descq_cmpt_ctxt cmp_ctx = {};
-        cmp_ctx.en_stat_desc = true;
-        cmp_ctx.en_int = irq_enable;
-        cmp_ctx.trig_mode = (uint8_t)q.c2h_q.user_conf.trig_mode;
-        cmp_ctx.fnc_id = dev_conf.dev_sbdf.sbdf.fun_no;
-        cmp_ctx.counter_idx = q.c2h_q.user_conf.c2h_th_cnt_index;
-        cmp_ctx.timer_idx = q.c2h_q.user_conf.c2h_timer_cnt_index;
-        cmp_ctx.ringsz_idx = (UINT8)q.c2h_q.lib_config.cmpt_ring_id;
-        cmp_ctx.ovf_chk_dis = q.c2h_q.user_conf.cmpl_ovf_dis;
-        cmp_ctx.color = 1;
-        cmp_ctx.pidx = 0;
-        cmp_ctx.valid = true;
-        cmp_ctx.full_upd = false;
-        cmp_ctx.desc_sz = (uint8_t)q.c2h_q.user_conf.cmpt_sz;
-        cmp_ctx.bs_addr = WdfCommonBufferGetAlignedLogicalAddress(q.c2h_q.cmpt_ring.buffer).QuadPart;
-
-        if (irq_enable) {
-            cmp_ctx.vec = (UINT16)q.c2h_q.lib_config.vector_id;
-            cmp_ctx.int_aggr = (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) ? true : false;
-        }
-
-        ret = hw.qdma_cmpt_ctx_conf((void *)this, q.idx_abs, &cmp_ctx, QDMA_HW_ACCESS_WRITE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to program completion context! ret : %d", q.name, ret);
-            status = hw.qdma_get_error_code(ret);
-            goto ErrExit;
-        }
-    }
-
-    /* Pre-fetch context programming */
-    if (q.type == queue_type::STREAMING) {
-        qdma_descq_prefetch_ctxt pf_ctx = {};
-        pf_ctx.bufsz_idx = q.c2h_q.user_conf.c2h_buff_sz_index;
-        pf_ctx.valid = true;
-        pf_ctx.pfch_en = q.c2h_q.user_conf.pfch_en;
-        pf_ctx.bypass = q.c2h_q.user_conf.pfch_bypass_en;
-
-        ret = hw.qdma_pfetch_ctx_conf((void *)this, q.idx_abs, &pf_ctx, QDMA_HW_ACCESS_WRITE);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to program prefetch context!, ret : %d", q.name, ret);
-            status = hw.qdma_get_error_code(ret);
-            goto ErrExit;
-        }
-    }
-
-    return STATUS_SUCCESS;
-
-ErrExit:
-    clear_queue_contexts(true, q.idx_abs, QDMA_HW_ACCESS_CLEAR);
-
-    if (q.c2h_q.is_cmpt_valid == true) {
-        clear_cmpt_contexts(q.idx_abs, QDMA_HW_ACCESS_CLEAR);
-    }
-
-    if (q.type == queue_type::STREAMING) {
-        clear_pfetch_contexts(q.idx_abs, QDMA_HW_ACCESS_CLEAR);
-    }
-
-    return status;
-}
-
-NTSTATUS qdma_device::queue_program(
-    queue_pair& q)
-{
-    TraceVerbose(TRACE_QDMA, "%s programming...", q.name);
-
-    auto status = set_h2c_ctx(q);
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    status = set_c2h_ctx(q);
-    if (!NT_SUCCESS(status)) {
-        /* Clear H2C queue contexts */
-        clear_queue_contexts(false, q.idx_abs, QDMA_HW_ACCESS_CLEAR);
-        return status;
-    }
-
-    return status;
-}
-
-/* ---------- public qdma member function implemenations ---------- */
-
-NTSTATUS qdma_device::init(qdma_drv_config conf)
-{
-    NTSTATUS status;
-
-    TraceInfo(TRACE_QDMA, "Xilinx QDMA PF Reference Driver v%u.%u.%u",
-        qdma_version.major, qdma_version.minor, qdma_version.patch);
-
-    InterlockedExchange(&qdma_device_state, device_state::DEVICE_INIT);
-
-    drv_conf = conf;
-    status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &register_access_lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "Register access lock creation failed!");
-        return status;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-ULONG qdma_device::qdma_conf_reg_read(size_t offset)
-{
-    return pcie.conf_reg_read(offset);
-}
-
-void qdma_device::qdma_conf_reg_write(size_t offset, ULONG data)
-{
-    pcie.conf_reg_write(offset, data);
-}
-
-NTSTATUS qdma_device::read_bar(
-    qdma_bar_type bar_type,
-    size_t offset,
-    void* data,
-    size_t size)
-{
-    return pcie.read_bar(bar_type, offset, data, size);
-}
-
-NTSTATUS qdma_device::write_bar(
-    qdma_bar_type bar_type,
-    size_t offset,
-    void* data,
-    size_t size)
-{
-    return pcie.write_bar(bar_type, offset, data, size);
-}
-
-NTSTATUS qdma_device::get_bar_info(
-    qdma_bar_type bar_type,
-    PVOID &bar_base,
-    size_t &bar_length)
-{
-    return pcie.get_bar_info(bar_type, bar_base, bar_length);
-}
-
-NTSTATUS qdma_device::qdma_is_queue_in_range(UINT16 qid)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Provided qid : %u is more than allocated : %u", dev_conf.name, qid, drv_conf.qsets_max);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-_IRQL_requires_(PASSIVE_LEVEL)
-NTSTATUS qdma_device::qdma_get_queues_state(
-    _In_  UINT16 qid,
-    _Out_ enum queue_state *qstate,
-    _Out_writes_(str_maxlen) CHAR *str,
-    _In_  size_t str_maxlen)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-    if (qstate == NULL) {
-        TraceError(TRACE_QDMA, "%s: qstate is NULL", dev_conf.name);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    switch (queue_pairs[qid].state) {
-    case queue_state::QUEUE_ADDED:
-        *qstate = queue_state::QUEUE_ADDED;
-        if (str != NULL)
-            status = RtlStringCchCopyA(str, str_maxlen, "QUEUE ADDED");
-        break;
-    case queue_state::QUEUE_STARTED:
-        *qstate = queue_state::QUEUE_STARTED;
-        if (str != NULL)
-            status = RtlStringCchCopyA(str, str_maxlen, "QUEUE ACTIVE");
-        break;
-    case queue_state::QUEUE_AVAILABLE:
-        *qstate = queue_state::QUEUE_AVAILABLE;
-        if (str != NULL)
-            status = RtlStringCchCopyA(str, str_maxlen, "QUEUE IS AVAILABLE");
-        break;
-    case queue_state::QUEUE_BUSY:
-        *qstate = queue_state::QUEUE_BUSY;
-        if (str != NULL)
-            status = RtlStringCchCopyA(str, str_maxlen, "QUEUE BUSY");
-        break;
-    default:
-        NT_ASSERT(FALSE);
-        *qstate = queue_state::QUEUE_INVALID_STATE;
-        if (str != NULL)
-            status = RtlStringCchCopyA(str, str_maxlen, "<INVALID>");
-        break;
-    }
-
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_set_qmax(UINT32 queue_max)
-{
-    INT32 queue_base = -1;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    LONG state = InterlockedCompareExchange(&qdma_device_state,
-                                            device_state::DEVICE_OFFLINE,
-                                            device_state::DEVICE_ONLINE);
-    if (state == device_state::DEVICE_OFFLINE) {
-        TraceError(TRACE_QDMA, "%s: Device OFFLINE, Can't proceed.", dev_conf.name);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    UINT32 active_queues = qdma_get_active_queue_count(dma_dev_index);
-    if (active_queues) {
-        TraceError(TRACE_QDMA, "%s: Not possible to update qmax, %u queues are active", 
-            dev_conf.name, active_queues);
-        status = STATUS_INVALID_PARAMETER;
-        goto ErrExit;
-    }
-
-    int rv = qdma_dev_update(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, queue_max, &queue_base);
-    if (rv < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_dev_update() Failed! %d", dev_conf.name, rv);
-        status = hw.qdma_get_error_code(rv);
-        goto ErrExit;
-    }
-
-    rv = qdma_dev_qinfo_get(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, &queue_base, &queue_max);
-    if (rv < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_dev_qinfo_get() Failed! %d", dev_conf.name, rv);
-        status = hw.qdma_get_error_code(rv);
-        goto ErrExit;
-    }
-
-    TraceInfo(TRACE_QDMA, "%s: qmax updated. Old qmax : %u, New qmax : %u, "
-        "Old qbase : %d, New qbase : %d",
-        dev_conf.name, drv_conf.qsets_max, queue_max, qbase, queue_base);
-
-    drv_conf.qsets_max = queue_max;
-    qbase = queue_base;
-
-    if (queue_pairs) {
-        qdma_memfree(queue_pairs);
-        queue_pairs = nullptr;
-    }
-
-    status = init_dma_queues();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_dma_queues() failed! %!STATUS!", dev_conf.name, status);
-        drv_conf.qsets_max = 0u;
-        qbase = -1;
-    }
-
-    status = init_func();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_func() failed! %!STATUS!", dev_conf.name, status);
-        return status;
-    }
-
-ErrExit:
-    InterlockedExchange(&qdma_device_state, device_state::DEVICE_ONLINE);
-    return status;
-}
-
-NTSTATUS qdma_device::validate_qconfig(queue_config& conf)
-{
-    /** check if the requested mode is enabled?
-     *  the request modes are read from the HW.
-     *  before serving any request, first check if the
-     *  HW has the capability or not, else return error
-     */
-
-    if ((conf.is_st && !dev_conf.dev_info.st_en) ||
-        (!conf.is_st && !dev_conf.dev_info.mm_en)) {
-        TraceError(TRACE_QDMA, "%s: %s mode is not enabled in device", 
-            dev_conf.name, (conf.is_st ? "ST" : "MM"));
-        return STATUS_INVALID_PARAMETER;
-    }
-
-
-    if ((hw_version_info.ip_type == EQDMA_SOFT_IP) &&
-        (hw_version_info.vivado_release >= QDMA_VIVADO_2020_2)) {
-
-        if (dev_conf.dev_info.desc_eng_mode == QDMA_DESC_ENG_BYPASS_ONLY) {
-            TraceError(TRACE_QDMA, "Bypass only mode design is not supported");
-            return STATUS_NOT_SUPPORTED;
-        }
-
-        if ((conf.desc_bypass_en == true) && 
-            (dev_conf.dev_info.desc_eng_mode == QDMA_DESC_ENG_INTERNAL_ONLY)) {
-            TraceError(TRACE_QDMA,
-                "Queue config in bypass "
-                "mode not supported on internal only mode design");
-            return STATUS_NOT_SUPPORTED;
-        }
-    }
-
-
-    if ((conf.h2c_ring_sz_index >= QDMA_GLBL_CSR_REG_CNT) ||
-        (conf.c2h_ring_sz_index >= QDMA_GLBL_CSR_REG_CNT) ||
-        (conf.c2h_buff_sz_index >= QDMA_GLBL_CSR_REG_CNT) ||
-        (conf.c2h_th_cnt_index >= QDMA_GLBL_CSR_REG_CNT)  ||
-        (conf.c2h_timer_cnt_index >= QDMA_GLBL_CSR_REG_CNT)) {
-        TraceError(TRACE_QDMA, "%s: One or more invalid global CSR indexes provided", dev_conf.name);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if (conf.cmpt_sz >= qdma_desc_sz::QDMA_DESC_SZ_MAX) {
-        TraceError(TRACE_QDMA, "%s: Invalid completion descriptor size provided", dev_conf.name);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if (conf.trig_mode >= qdma_trig_mode::QDMA_TRIG_MODE_MAX) {
-        TraceError(TRACE_QDMA, "%s: Invalid Trigger mode provided", dev_conf.name);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((conf.en_mm_cmpl) && (!dev_conf.dev_info.mm_cmpt_en)) {
-        TraceError(TRACE_QDMA, "%s: MM Completion not supported in HW", dev_conf.name);
-        return STATUS_NOT_SUPPORTED;
-    }
-
-    if ((conf.cmpl_ovf_dis) && (!dev_conf.dev_info.cmpt_ovf_chk_dis)) {
-        TraceError(TRACE_QDMA, "%s: Completion overflow disable option not supported in HW", dev_conf.name);
-        return STATUS_NOT_SUPPORTED;
-    }
-
-    if (hw_version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-        /** 64B Descriptors not supportd for the versal hard IP (i.e., s80 device) */
-        if ((conf.sw_desc_sz == static_cast<UINT8>(qdma_desc_sz::QDMA_DESC_SZ_64B)) ||
-            (conf.cmpt_sz == qdma_desc_sz::QDMA_DESC_SZ_64B)) {
-            TraceError(TRACE_QDMA, "%s: 64B Descriptor not supported for Versal Hard IP(S80)", dev_conf.name);
-            return STATUS_NOT_SUPPORTED;
-        }
-
-        if ((conf.trig_mode == qdma_trig_mode::QDMA_TRIG_MODE_USER_TIMER_COUNT) ||
-            (conf.trig_mode == qdma_trig_mode::QDMA_TRIG_MODE_USER_COUNT)) {
-            TraceError(TRACE_QDMA, "%s: Counter, Timer+Counter modes are not supported for Versal Hard IP(S80)", dev_conf.name);
-            return STATUS_NOT_SUPPORTED;
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_add_queue(UINT16 qid, queue_config& conf)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    NTSTATUS status = validate_qconfig(conf);
-    if (!NT_SUCCESS(status))
-        return status;
-
-    auto& q = queue_pairs[qid];
-
-    auto old_state = InterlockedCompareExchange(&q.state,
-                                                queue_state::QUEUE_BUSY,
-                                                queue_state::QUEUE_AVAILABLE);
-    if (old_state != queue_state::QUEUE_AVAILABLE) {
-        TraceError(TRACE_QDMA, "%s : Queue %u is not available, q_state %d!", dev_conf.name, qid, q.state);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: Adding the queue : %u", dev_conf.name, qid);
-
-    status = q.create(conf);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: Failed to allocate resource for queue %u, status: %!STATUS!", dev_conf.name, qid, status);
-        goto ErrExit;
-    }
-
-    /* Increament resource manager active queue count */
-    inc_queue_pair_count(q.c2h_q.is_cmpt_valid);
-
-    InterlockedExchange(&q.state, queue_state::QUEUE_ADDED);
-
-    TraceInfo(TRACE_QDMA, "%s: queue added : %s", dev_conf.name, q.name);
-
-    return status;
-
-ErrExit:
-    InterlockedExchange(&q.state, queue_state::QUEUE_AVAILABLE);
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_start_queue(UINT16 qid)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    auto old_state = InterlockedCompareExchange(&q.state,
-                                                queue_state::QUEUE_BUSY,
-                                                queue_state::QUEUE_ADDED);
-    if (old_state != queue_state::QUEUE_ADDED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s: Starting the queue : %u", dev_conf.name, qid);
-
-    bool is_intr_vec_allocated = false;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    if (drv_conf.operation_mode != queue_op_mode::POLL_MODE) {
-        auto vec = assign_interrupt_vector(q);
-        if (vec < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to assign interrupt vector", q.name);
-            status = STATUS_UNSUCCESSFUL;
-            goto ErrExit;
-        }
-
-        q.h2c_q.lib_config.vector_id = q.c2h_q.lib_config.vector_id = vec;
-        is_intr_vec_allocated = true;
-
-        TraceInfo(TRACE_QDMA, "%s Allocated vector Id : %u", q.name, q.c2h_q.lib_config.vector_id);
-    }
-
-    /* H2C request process function registration */
-    poll_op req_op;
-    bool is_st = q.h2c_q.user_conf.is_st;
-    req_op.fn = is_st ? process_st_h2c_req : process_mm_h2c_req;
-    req_op.arg = &queue_pairs[qid];
-
-    q.h2c_q.req_proc_entry = th_mgr.register_poll_function(req_op);
-    if (nullptr == q.h2c_q.req_proc_entry) {
-        TraceError(TRACE_QDMA, "%s Failed to register H2C request process method", q.name);
-        status = STATUS_UNSUCCESSFUL;
-        goto ErrExit;
-    }
-
-    /* C2H request process function registration */
-    is_st = q.c2h_q.user_conf.is_st;
-    if (is_st == false) {
-        req_op.fn = process_mm_c2h_req;
-
-        q.c2h_q.req_proc_entry = th_mgr.register_poll_function(req_op);
-        if (nullptr == q.c2h_q.req_proc_entry) {
-            TraceError(TRACE_QDMA, "%s Failed to register C2H request process method", q.name);
-            status = STATUS_UNSUCCESSFUL;
-            goto ErrExit;
-        }
-    }
-
-    /* H2C Poll function registration */
-    poll_op compl_op;
-    is_st = q.h2c_q.user_conf.is_st;
-    compl_op.fn = is_st ? service_h2c_st_queue : service_h2c_mm_queue;
-    compl_op.arg = &queue_pairs[qid];
-
-    q.h2c_q.poll_entry = th_mgr.register_poll_function(compl_op);
-    if (nullptr == q.h2c_q.poll_entry) {
-        TraceError(TRACE_QDMA, "%s Failed to register H2C Completion poll method", q.name);
-        status = STATUS_UNSUCCESSFUL;
-        goto ErrExit;
-    }
-
-    /* C2H Poll function registration */
-    is_st = q.c2h_q.user_conf.is_st;
-    compl_op.fn = is_st ? service_c2h_st_queue : service_c2h_mm_queue;
-
-    q.c2h_q.poll_entry = th_mgr.register_poll_function(compl_op);
-    if (nullptr == q.c2h_q.poll_entry) {
-        TraceError(TRACE_QDMA, "%s Failed to register C2H Completion poll method", q.name);
-        status = STATUS_UNSUCCESSFUL;
-        goto ErrExit;
-    }
-
-    status = queue_program(q);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s failed to program contexts, status : %!STATUS!", q.name, status);
-        goto ErrExit;
-    }
-
-    dump(this, q.type, q.idx_abs);
-
-    q.init_csr();
-
-    InterlockedExchange(&q.state, queue_state::QUEUE_STARTED);
-
-    TraceInfo(TRACE_QDMA, "%s: queue started : %s", dev_conf.name, q.name);
-
-    return status;
-
-ErrExit:
-    if (nullptr != q.h2c_q.poll_entry) {
-        th_mgr.unregister_poll_function(q.h2c_q.req_proc_entry);
-        q.h2c_q.req_proc_entry = nullptr;
-    }
-
-    if (q.c2h_q.req_proc_entry) {
-        if (q.type == queue_type::MEMORY_MAPPED) {
-            th_mgr.unregister_poll_function(q.c2h_q.req_proc_entry);
-            q.c2h_q.req_proc_entry = nullptr;
-        }
-    }
-
-    if (nullptr != q.h2c_q.poll_entry) {
-        th_mgr.unregister_poll_function(q.h2c_q.poll_entry);
-        q.h2c_q.poll_entry = nullptr;
-    }
-
-    if (nullptr != q.c2h_q.poll_entry) {
-        th_mgr.unregister_poll_function(q.c2h_q.poll_entry);
-        q.c2h_q.poll_entry = nullptr;
-    }
-
-    if (is_intr_vec_allocated)
-        free_interrupt_vector(q, q.c2h_q.lib_config.vector_id);
-
-    InterlockedExchange(&q.state, queue_state::QUEUE_ADDED);
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_stop_queue(UINT16 qid)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    NTSTATUS status = STATUS_SUCCESS;
-
-    auto& q = queue_pairs[qid];
-
-    TraceVerbose(TRACE_QDMA, "%s: Stopping the queue : %u", dev_conf.name, qid);
-
-    /* Stop further traffic on the queue */
-    auto old_state = InterlockedCompareExchange(&q.state,
-                                                 queue_state::QUEUE_BUSY,
-                                                 queue_state::QUEUE_STARTED);
-    if (old_state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    /* Wait till incoming traffic stops & let HW finish any pending jobs */
-    LARGE_INTEGER wait_time;
-    wait_time.QuadPart = WDF_REL_TIMEOUT_IN_MS(2);
-    /** Re-adjust the system tick for better resolution 
-      * 
-      * As the system tick in windows can go up to 15.625 msec
-      * the delay is varying between 1 msec to 15 msec
-      */
-    ExSetTimerResolution((ULONG)(2 * WDF_TIMEOUT_TO_MS), TRUE);
-
-    KeDelayExecutionThread(KernelMode, FALSE, &wait_time);
-    
-    /** Revert back the system tick to default */
-    ExSetTimerResolution(0, FALSE);
-
-    th_mgr.unregister_poll_function(q.h2c_q.poll_entry);
-    th_mgr.unregister_poll_function(q.c2h_q.poll_entry);
-
-    th_mgr.unregister_poll_function(q.h2c_q.req_proc_entry);
-    if (q.type == queue_type::MEMORY_MAPPED)
-        th_mgr.unregister_poll_function(q.c2h_q.req_proc_entry);
-
-    q.h2c_q.poll_entry = nullptr;
-    q.c2h_q.poll_entry = nullptr;
-
-    if (drv_conf.operation_mode != queue_op_mode::POLL_MODE)
-        free_interrupt_vector(q, q.c2h_q.lib_config.vector_id);
-
-    /* Drain any pending requests */
-    q.flush_queue();
-
-    /* Invalidate the contexts */
-    status = clear_contexts(q, true);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s Failed to invalidate the context", q.name);
-        /* Continue further even in error scenario */
-    }
-
-    InterlockedExchange(&q.state, queue_state::QUEUE_ADDED);
-
-    TraceInfo(TRACE_QDMA, "%s: queue stopped : %s", dev_conf.name, q.name);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_remove_queue(UINT16 qid)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    TraceVerbose(TRACE_QDMA, "%s: Removing the queue : %u", dev_conf.name, qid);
-
-    auto old_state = InterlockedCompareExchange(&q.state,
-                                                queue_state::QUEUE_BUSY,
-                                                queue_state::QUEUE_ADDED);
-    if (old_state != queue_state::QUEUE_ADDED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    /* Clear queue context */
-    NTSTATUS status = clear_contexts(q);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s Failed to clear the context", q.name);
-        /* Continue further even in error scenario */
-    }
-
-    auto is_cmpt_valid = q.c2h_q.is_cmpt_valid;
-
-    q.destroy();
-
-    /* Decreament resource manager active queue count */
-    dec_queue_pair_count(is_cmpt_valid);
-
-    InterlockedExchange(&q.state, queue_state::QUEUE_AVAILABLE);
-
-    TraceInfo(TRACE_QDMA, "%s: queue removed : %s", dev_conf.name, q.name);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_enqueue_mm_request(
-    UINT16 qid,
-    WDF_DMA_DIRECTION direction,
-    PSCATTER_GATHER_LIST sg_list,
-    LONGLONG device_offset,
-    dma_completion_cb compl_cb,
-    VOID *priv)
-{
-    if ((qid >= drv_conf.qsets_max) || (compl_cb == nullptr) ||
-        (sg_list == nullptr)) {
-        TraceError(TRACE_QDMA, "%s : Incorrect Parameters, qid : %d, "
-            "compl_cb : %p, sg_list : %p", dev_conf.name, qid, compl_cb, sg_list);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::MEMORY_MAPPED) {
-        TraceError(TRACE_QDMA, "%s is not configured in MM mode!", q.name);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s enqueue request", q.name);
-
-    dma_request request;
-
-    request.is_st = false;
-    request.direction = direction;
-    request.sg_list = sg_list;
-    request.device_offset = device_offset;
-    request.compl_cb = compl_cb;
-    request.priv = priv;
-    request.sg_index = 0;
-    request.offset_idx = 0;
-
-    NTSTATUS status = q.enqueue_dma_request(&request);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s Failed to enqueue the MM request, Status : %!STATUS!", q.name, status);
-        return status;
-    }
-
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_enqueue_st_tx_request(
-    UINT16 qid,
-    PSCATTER_GATHER_LIST sg_list,
-    dma_completion_cb compl_cb,
-    VOID *priv)
-{
-    if ((qid >= drv_conf.qsets_max) || (compl_cb == nullptr) ||
-        (sg_list == nullptr)) {
-        TraceError(TRACE_QDMA, "%s : Incorrect Parameters, qid : %d, "
-            "compl_cb : %p, sg_list : %p", dev_conf.name, qid, compl_cb, sg_list);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::STREAMING) {
-        TraceError(TRACE_QDMA, "Queue %d is not configured in ST mode!", qid);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s TX enqueue request", q.name);
-
-    dma_request request;
-
-    request.is_st = true;
-    request.direction = WdfDmaDirectionWriteToDevice;
-    request.sg_list = sg_list;
-    request.compl_cb = compl_cb;
-    request.priv = priv;
-    request.sg_index = 0;
-    request.offset_idx = 0;
-
-    NTSTATUS status = q.enqueue_dma_request(&request);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s Failed to enqueue the ST TX request, Status : %!STATUS!", q.name, status);
-        return status;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_enqueue_st_rx_request(
-    UINT16 qid,
-    size_t length,
-    st_rx_completion_cb compl_cb,
-    VOID *priv)
-{
-    if ((qid >= drv_conf.qsets_max) || (compl_cb == nullptr)) {
-        TraceError(TRACE_QDMA, "%s: Incorrect Parameters, qid : %d, compl_cb : %p len : %Iu",
-            dev_conf.name, qid, compl_cb, length);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::STREAMING) {
-        TraceError(TRACE_QDMA, "Queue %d is not configured in ST mode!", qid);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s RX enqueue request", q.name);
-
-    NTSTATUS status = q.enqueue_dma_request(length, compl_cb, priv);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s Failed to enqueue the ST RX request, Status : %!STATUS!", q.name, status);
-    }
-
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_retrieve_st_udd_data(UINT16 qid, void *addr, UINT8 *buf, UINT32 *len)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((addr == nullptr) || (buf == nullptr) || (len == nullptr))
-        return STATUS_INVALID_PARAMETER;
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::STREAMING) {
-        TraceError(TRACE_QDMA, "Queue %d is not configured in ST mode!", qid);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s Retrieving UDD data", q.name);
-
-    return q.read_st_udd_data(addr, buf, len);
-}
-
-NTSTATUS qdma_device::qdma_retrieve_last_st_udd_data(UINT16 qid, UINT8 *buf, UINT32 *len)
-{
-    if (qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((buf == nullptr) || (len == nullptr))
-        return STATUS_INVALID_PARAMETER;
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::STREAMING) {
-        TraceError(TRACE_QDMA, "Queue %d is not configured in ST mode!", qid);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s Reading latest UDD data", q.name);
-
-    void *udd_addr = q.get_last_udd_addr();
-
-    return q.read_st_udd_data(udd_addr, buf, len);
-}
-
-NTSTATUS qdma_device::qdma_queue_desc_dump(qdma_desc_info *desc_info)
-{
-    if (desc_info->qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, desc_info->qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((desc_info == nullptr) || (desc_info->pbuffer == nullptr) || (desc_info->buffer_sz == 0))
-        return STATUS_INVALID_PARAMETER;
-
-    auto& q = queue_pairs[desc_info->qid];
-
-    auto old_state = InterlockedCompareExchange(&q.state,
-                                                queue_state::QUEUE_BUSY,
-                                                queue_state::QUEUE_ADDED);
-    if (old_state == queue_state::QUEUE_AVAILABLE) {
-        TraceError(TRACE_QDMA, "Queue %u is not added or started to get dump", desc_info->qid);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s descripor data dump", q.name);
-
-    NTSTATUS status = q.desc_dump(desc_info);
-
-    InterlockedExchange(&q.state, old_state);
-
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_read_mm_cmpt_data(qdma_cmpt_info *cmpt_info)
-{
-    if (cmpt_info->qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, cmpt_info->qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((cmpt_info == nullptr) || (cmpt_info->pbuffer == nullptr) || (cmpt_info->buffer_len == 0))
-        return STATUS_INVALID_PARAMETER;
-
-    auto& q = queue_pairs[cmpt_info->qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    if (q.type != queue_type::MEMORY_MAPPED) {
-        TraceError(TRACE_QDMA, "Queue %d is not configured in MM mode!", cmpt_info->qid);
-        return STATUS_ACCESS_VIOLATION;
-    }
-
-    TraceVerbose(TRACE_QDMA, "%s Read MM completion data", q.name);
-
-    return q.read_mm_cmpt_data(cmpt_info);
-}
-
-NTSTATUS qdma_device::qdma_queue_context_read(UINT16 qid, enum qdma_dev_q_type ctx_type, struct qdma_descq_context *ctxt)
-{
-    if ((qid >= drv_conf.qsets_max) ||
-        (ctx_type >= qdma_dev_q_type::QDMA_DEV_Q_TYPE_MAX) ||
-        (ctxt == nullptr)) {
-        TraceError(TRACE_QDMA, "%s: Incorrect Parameters, qid : %d, ctx_type : %d, ctxt : %p",
-            dev_conf.name, qid, ctx_type, ctxt);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    auto& q = queue_pairs[qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    uint8_t is_c2h = (ctx_type == qdma_dev_q_type::QDMA_DEV_Q_TYPE_C2H) ? true : false;
-    uint16_t hw_qid = q.idx_abs;
-    int ret;
-    bool dump = false;
-
-    if (ctx_type != qdma_dev_q_type::QDMA_DEV_Q_TYPE_CMPT) {
-        ret = hw.qdma_sw_ctx_conf(this, is_c2h, hw_qid, &ctxt->sw_ctxt, QDMA_HW_ACCESS_READ);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to read SW context, ret : %d", q.name, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        ret = hw.qdma_hw_ctx_conf(this, is_c2h, hw_qid, &ctxt->hw_ctxt, QDMA_HW_ACCESS_READ);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to read HW context, ret : %d", q.name, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        ret = hw.qdma_credit_ctx_conf(this, is_c2h, hw_qid, &ctxt->cr_ctxt, QDMA_HW_ACCESS_READ);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to read credit context, ret : %d", q.name, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-
-        if ((q.type == queue_type::STREAMING) && (is_c2h)) {
-            ret = hw.qdma_pfetch_ctx_conf(this, hw_qid, &ctxt->pfetch_ctxt, QDMA_HW_ACCESS_READ);
-            if (ret < 0) {
-                TraceError(TRACE_QDMA, "%s Failed to read pre-fetch context, ret : %d", q.name, ret);
-                return hw.qdma_get_error_code(ret);
-            }
-        }
-
-        dump = true;
-    }
-
-    if (((q.type == queue_type::STREAMING) && (is_c2h)) ||
-        ((q.type == queue_type::MEMORY_MAPPED) && (ctx_type == qdma_dev_q_type::QDMA_DEV_Q_TYPE_CMPT) &&
-        (dev_conf.dev_info.mm_cmpt_en) && (q.c2h_q.user_conf.en_mm_cmpl))) {
-
-        ret = hw.qdma_cmpt_ctx_conf(this, hw_qid, &ctxt->cmpt_ctxt, QDMA_HW_ACCESS_READ);
-        if (ret < 0) {
-            TraceError(TRACE_QDMA, "%s Failed to read completion "
-                "context, ret : %d", q.name, ret);
-            return hw.qdma_get_error_code(ret);
-        }
-        dump = true;
-    }
-
-    if (!dump)
-        return STATUS_UNSUCCESSFUL;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_intr_context_read(UINT8 ring_idx_abs, struct qdma_indirect_intr_ctxt *ctxt)
-{
-    int ret;
-
-    if (drv_conf.operation_mode != queue_op_mode::INTR_COAL_MODE)
-        return STATUS_ACCESS_VIOLATION;
-
-    ret = hw.qdma_indirect_intr_ctx_conf(this, ring_idx_abs, ctxt, QDMA_HW_ACCESS_READ);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s : Failed to read interrupt context for ring index %d!, ret : %d",
-            dev_conf.name, ring_idx_abs, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_queue_dump_context(qdma_ctx_info *ctx_info)
-{
-    if (ctx_info->qid >= drv_conf.qsets_max) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, ctx_info->qid);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((ctx_info == nullptr) ||
-        (ctx_info->ring_type >= qdma_q_type::QDMA_Q_TYPE_MAX) ||
-        (ctx_info->pbuffer == nullptr) || (ctx_info->buffer_sz == 0))
-        return STATUS_INVALID_PARAMETER;
-
-    queue_pair &q = queue_pairs[ctx_info->qid];
-
-    if (q.state != queue_state::QUEUE_STARTED) {
-        TraceError(TRACE_QDMA, "%s invalid state, q_state %d", q.name, q.state);
-        return STATUS_INVALID_DEVICE_STATE;
-    }
-
-    uint8_t st = (q.type == queue_type::STREAMING) ? 1 : 0;
-    size_t len = 0;
-    NTSTATUS status;
-    bool dump = false;
-
-    if (ctx_info->ring_type != qdma_q_type::QDMA_Q_TYPE_CMPT) {
-        dump = true;
-    }
-    else if ((q.type == queue_type::MEMORY_MAPPED) &&
-        (ctx_info->ring_type == qdma_q_type::QDMA_Q_TYPE_CMPT) &&
-        (dev_conf.dev_info.mm_cmpt_en) && (q.c2h_q.user_conf.en_mm_cmpl)) {
-        dump = true;
-    }
-
-    if (!dump)
-        return STATUS_UNSUCCESSFUL;
-
-    int ctx_len = hw.qdma_read_dump_queue_context(this, q.idx_abs,
-        st, (qdma_dev_q_type)ctx_info->ring_type,
-        ctx_info->pbuffer, (uint32_t)ctx_info->buffer_sz);
-    if (ctx_len < 0) {
-        TraceError(TRACE_QDMA, "%s hw.qdma_dump_queue_context failed : %d", q.name, ctx_len);
-        return hw.qdma_get_error_code(ctx_len);
-    }
-
-    len = len + ctx_len;
-
-    if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) {
-        if (ctx_info->buffer_sz < len) {
-            TraceError(TRACE_QDMA, "%s Insufficient Buffer Length, "
-                "buffer has %lld bytes, needs %lld bytes", q.name, ctx_info->buffer_sz, len);
-            return STATUS_BUFFER_TOO_SMALL;
-        }
-
-        UINT8 ring_index = 0;
-        if (ctx_info->ring_type == qdma_q_type::QDMA_Q_TYPE_H2C)
-            ring_index = (UINT8)q.h2c_q.lib_config.vector_id;
-        else if (ctx_info->ring_type != qdma_q_type::QDMA_Q_TYPE_MAX)
-            ring_index = (UINT8)q.c2h_q.lib_config.vector_id;
-
-        struct qdma_indirect_intr_ctxt intr_ctxt;
-        status = qdma_intr_context_read(ring_index, &intr_ctxt);
-        if (!NT_SUCCESS(status))
-            return status;
-
-        int intr_len = hw.qdma_dump_intr_context(this, &intr_ctxt, ring_index,
-            &ctx_info->pbuffer[len], (uint32_t)(ctx_info->buffer_sz - len));
-        if (intr_len < 0) {
-            TraceError(TRACE_QDMA, "%s : hw.qdma_dump_intr_context returned error : %d", dev_conf.name, intr_len);
-            return hw.qdma_get_error_code(intr_len);
-        }
-
-        len = len + intr_len;
-    }
-
-    ctx_info->ret_sz = len;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_intring_dump(qdma_intr_ring_info *intring_info)
-{
-    if (drv_conf.operation_mode != queue_op_mode::INTR_COAL_MODE) {
-        TraceError(TRACE_QDMA, "Interrupt ring is valid only in Aggregation Mode");
-        return STATUS_INVALID_DEVICE_REQUEST;
-    }
-
-    if ((intring_info == nullptr) ||
-        (intring_info->pbuffer == nullptr) || (intring_info->buffer_len == 0)) {
-        TraceError(TRACE_QDMA, "Invalid Parameters");
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if ((intring_info->vec_id < irq_mgr.data_vector_id_start) ||
-        (intring_info->vec_id >= irq_mgr.data_vector_id_end)) {
-        TraceError(TRACE_QDMA, "Invalid Vector ID : %d, Valid range : %u ~ %u",
-            intring_info->vec_id, irq_mgr.data_vector_id_start, irq_mgr.data_vector_id_end);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    if (drv_conf.operation_mode != queue_op_mode::INTR_COAL_MODE) {
-        TraceError(TRACE_QDMA, "%s is not configured in Interrupt Aggregation mode", dev_conf.name);
-        return STATUS_INVALID_DEVICE_REQUEST;
-    }
-
-    NTSTATUS status = irq_mgr.intr_q[intring_info->vec_id].intring_dump(intring_info);
-
-    return status;
-}
-
-NTSTATUS qdma_device::qdma_regdump(qdma_reg_dump_info *regdump_info)
-{
-    bool is_vf = false;
-
-    if ((regdump_info == nullptr) || (regdump_info->pbuffer == nullptr) || (regdump_info->buffer_len == 0))
-        return STATUS_INVALID_PARAMETER;
-
-    int len = hw.qdma_dump_config_regs(this, is_vf, regdump_info->pbuffer, (uint32_t)regdump_info->buffer_len);
-    if (len < 0) {
-        TraceError(TRACE_QDMA, " %s : hw.qdma_dump_config_regs failed with err : %d", dev_conf.name, len);
-        return hw.qdma_get_error_code(len);
-    }
-
-    regdump_info->ret_len = len;
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_get_qstats_info(qdma_qstat_info &qstats)
-{
-    INT32 queue_base = -1; /* qdma_dev_qinfo_get() requires qbase to be int pointer */
-
-    qdma_dev_qinfo_get(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, &queue_base, &qstats.qmax);
-    qstats.qbase = queue_base;
-    qstats.active_h2c_queues =
-        qdma_get_device_active_queue_count(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, QDMA_DEV_Q_TYPE_H2C);
-    qstats.active_c2h_queues =
-        qdma_get_device_active_queue_count(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, QDMA_DEV_Q_TYPE_C2H);
-    qstats.active_cmpt_queues =
-        qdma_get_device_active_queue_count(dma_dev_index, dev_conf.dev_sbdf.sbdf.fun_no, QDMA_DEV_Q_TYPE_CMPT);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_get_reg_info(qdma_reg_info* reg_info)
-{
-    int len = 0;
-
-    if (reg_info == nullptr)
-        return STATUS_INVALID_PARAMETER;
-
-    if (!hw.qdma_dump_reg_info)
-        return STATUS_NOT_SUPPORTED;
-
-    len = hw.qdma_dump_reg_info(this,
-        reg_info->address, reg_info->reg_cnt, 
-        reg_info->pbuffer, (int)reg_info->buf_len);
-
-    if (len < 0) {
-        TraceError(TRACE_QDMA, "hw.qdma_dump_reg_info Failed with error : %d", len);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    if (len == 0) {
-        TraceError(TRACE_QDMA, "Register %d is not present in the design", reg_info->address);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    reg_info->ret_len = len;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::open(const WDFDEVICE device, WDFCMRESLIST resources,
-                           const WDFCMRESLIST resources_translated)
-{
-    NTSTATUS status = STATUS_SUCCESS;
-    int ret = 0;
-
-    wdf_dev = device;
-
-    status = pcie.get_bdf(wdf_dev, dev_conf.dev_sbdf.val);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "pcie.get_bdf failed! %!STATUS!", status);
-        return status;
-    }
-
-    RtlStringCchPrintfA(dev_conf.name,
-        ARRAYSIZE(dev_conf.name), "qdma%02X%02X%x",
-        dev_conf.dev_sbdf.sbdf.bus_no,
-        dev_conf.dev_sbdf.sbdf.dev_no,
-        dev_conf.dev_sbdf.sbdf.fun_no);
-
-    TraceInfo(TRACE_QDMA, "%04X:%02X:%02X.%X: func : %X, p/v 1/0", 
-        dev_conf.dev_sbdf.sbdf.seg_no, dev_conf.dev_sbdf.sbdf.bus_no, 
-        dev_conf.dev_sbdf.sbdf.dev_no, dev_conf.dev_sbdf.sbdf.fun_no, 
-        dev_conf.dev_sbdf.sbdf.fun_no);
-
-    status = pcie.map(resources_translated);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s : pcie.map failed! %!STATUS!", dev_conf.name, status);
-        return status;
-    }
-
-    status = pcie.assign_config_bar(drv_conf.cfg_bar);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: Failed to assign config BAR", dev_conf.name);
-        return status;
-    }
-
-    ret = qdma_hw_access_init((void*)this, 0, &hw);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: Failed to initialize hw access", dev_conf.name);
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    /** Change device state to offline after acquiring the HW callbacks */
-    InterlockedExchange(&qdma_device_state, device_state::DEVICE_OFFLINE);
-
-    ret = hw.qdma_get_version((void *)this, QDMA_DEV_PF, &hw_version_info);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_get_version failed!, ret : %d", dev_conf.name, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    status = assign_bar_types();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s : assign_bar_types failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    ret = hw.qdma_get_device_attributes((void *)this, &dev_conf.dev_info);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_get_device_attributes failed!, ret : %d", dev_conf.name, ret);
-        status = hw.qdma_get_error_code(ret);
-        goto ErrExit;
-    }
-
-    TraceInfo(TRACE_QDMA, "qdma_get_device_attributes: %s: num_pfs:%d, num_qs:%d, flr_present:%d, st_en:%d, "
-        "mm_en:%d, mm_cmpt_en:%d, mailbox_en:%d, mm_channel_max:%d, qid2vec_ctx:%d, ",
-        dev_conf.name,
-        dev_conf.dev_info.num_pfs,
-        dev_conf.dev_info.num_qs,
-        dev_conf.dev_info.flr_present,
-        dev_conf.dev_info.st_en,
-        dev_conf.dev_info.mm_en,
-        dev_conf.dev_info.mm_cmpt_en,
-        dev_conf.dev_info.mailbox_en,
-        dev_conf.dev_info.mm_channel_max,
-        dev_conf.dev_info.qid2vec_ctx);
-
-    TraceInfo(TRACE_QDMA, "cmpt_ovf_chk_dis:%d, mailbox_intr:%d, sw_desc_64b:%d, cmpt_desc_64b:%d, "
-        "dynamic_bar:%d, legacy_intr:%d, cmpt_trig_count_timer:%d",
-        dev_conf.dev_info.cmpt_ovf_chk_dis,
-        dev_conf.dev_info.mailbox_intr,
-        dev_conf.dev_info.sw_desc_64b,
-        dev_conf.dev_info.cmpt_desc_64b,
-        dev_conf.dev_info.dynamic_bar,
-        dev_conf.dev_info.legacy_intr,
-        dev_conf.dev_info.cmpt_trig_count_timer);
-
-    if ((dev_conf.dev_info.st_en == 0) &&
-        (dev_conf.dev_info.mm_en == 0)) {
-        TraceError(TRACE_QDMA, "%s: None of the modes ( ST or MM) are enabled", dev_conf.name);
-        status = STATUS_INVALID_HW_PROFILE;
-        goto ErrExit;
-    }
-
-    status = list_add_qdma_device_and_set_gbl_csr();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: list_add_qdma_device_and_set_gbl_csr failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    TraceInfo(TRACE_QDMA, "Driver is loaded in %s(%d) mode",
-        mode_name_list[drv_conf.operation_mode].name, drv_conf.operation_mode);
-
-    status = init_resource_manager();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_resource_manager failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    status = init_os_resources(resources, resources_translated);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_os_resources() failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    status = init_qdma_global();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_qdma_global() failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    status = init_func();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_func() failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    status = init_dma_queues();
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_QDMA, "%s: init_dma_queues() failed! %!STATUS!", dev_conf.name, status);
-        goto ErrExit;
-    }
-
-    if (drv_conf.operation_mode == queue_op_mode::INTR_COAL_MODE) {
-        status = init_interrupt_queues();
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "%s: init_interrupt_queues() failed! %!STATUS!", dev_conf.name, status);
-            goto ErrExit;
-        }
-    }
-
-    InterlockedExchange(&qdma_device_state, device_state::DEVICE_ONLINE);
-
-    TraceInfo(TRACE_QDMA, "%s, %05x, qdma_device %p, ch %u, q %u.",
-        dev_conf.name, dev_conf.dev_sbdf.val, this,
-        dev_conf.dev_info.mm_channel_max, drv_conf.qsets_max);
-
-    return status;
-
-ErrExit:
-    close();
-    return status;
-}
-
-void qdma_device::close()
-{
-    /** Make sure to not perform multiple cleanups on same device */
-    if (qdma_device_state != device_state::DEVICE_INIT) {
-
-        TraceInfo(TRACE_QDMA, "%04X:%02X:%02X.%X qdma_device 0x%p, %s.\n",
-            dev_conf.dev_sbdf.sbdf.seg_no, dev_conf.dev_sbdf.sbdf.bus_no, 
-            dev_conf.dev_sbdf.sbdf.dev_no, dev_conf.dev_sbdf.sbdf.fun_no, 
-            this, dev_conf.name);
-
-        destroy_dma_queues();
-
-        destroy_func();
-
-        destroy_os_resources();
-
-        destroy_resource_manager();
-
-        list_remove_qdma_device();
-
-        pcie.unmap();
-
-        if (nullptr != register_access_lock) {
-            WdfObjectDelete(register_access_lock);
-            register_access_lock = nullptr;
-        }
-        InterlockedExchange(&qdma_device_state, device_state::DEVICE_INIT);
-    }
-}
-
-bool qdma_device::qdma_is_device_online(void)
-{
-    if (qdma_device_state == device_state::DEVICE_ONLINE)
-        return true;
-
-    return false;
-}
-
-NTSTATUS qdma_device::qdma_read_csr_conf(qdma_glbl_csr_conf *conf)
-{
-    int ret;
-
-    ret = hw.qdma_global_csr_conf((void *)this, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-            conf->ring_sz, QDMA_CSR_RING_SZ, QDMA_HW_ACCESS_READ);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR global ring size, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    ret = hw.qdma_global_csr_conf((void *)this, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-            conf->c2h_timer_cnt, QDMA_CSR_TIMER_CNT, QDMA_HW_ACCESS_READ);
-    if ((ret < 0) && (ret != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR global timer count, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    ret = hw.qdma_global_csr_conf((void *)this, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-            conf->c2h_th_cnt, QDMA_CSR_CNT_TH, QDMA_HW_ACCESS_READ);
-    if ((ret < 0) && (ret != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR global counter threshold, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    ret = hw.qdma_global_csr_conf((void *)this, 0, QDMA_GLOBAL_CSR_ARRAY_SZ,
-            conf->c2h_buff_sz, QDMA_CSR_BUF_SZ, QDMA_HW_ACCESS_READ);
-    if ((ret < 0) && (ret != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR global buffer size, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    ret = hw.qdma_global_writeback_interval_conf((void *)this,
-            (qdma_wrb_interval *)&conf->wb_interval, QDMA_HW_ACCESS_READ);
-    if ((ret < 0) && (ret != -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED)) {
-        TraceError(TRACE_QDMA, "%s: Failed to read CSR global write back interval, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS qdma_device::qdma_get_dev_capabilities_info(qdma_device_attributes_info &dev_attr)
-{
-    int ret;
-    struct qdma_dev_attributes dev_info;
-
-    ret = hw.qdma_get_device_attributes((void *)this, &dev_info);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_get_device_attributes Failed, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    dev_attr.num_pfs            = dev_info.num_pfs;
-    dev_attr.num_qs             = dev_info.num_qs;
-    dev_attr.flr_present        = dev_info.flr_present;
-    dev_attr.st_en              = dev_info.st_en;
-    dev_attr.mm_en              = dev_info.mm_en;
-    dev_attr.mm_cmpl_en         = dev_info.mm_cmpt_en;
-    dev_attr.mailbox_en         = dev_info.mailbox_en;
-    dev_attr.num_mm_channels    = dev_info.mm_channel_max;
-    dev_attr.debug_mode         = dev_info.debug_mode;
-    dev_attr.desc_eng_mode      = dev_info.desc_eng_mode;
-
-    return STATUS_SUCCESS;
-}
-void qdma_device::qdma_get_hw_version_info(
-    qdma_hw_version_info &version_info)
-{
-    version_info = hw_version_info;
-}
-
-_IRQL_requires_(PASSIVE_LEVEL)
-NTSTATUS qdma_device::qdma_device_version_info(
-    qdma_version_info &version_info)
-{
-    NTSTATUS status;
-    struct qdma_hw_version_info info;
-
-    int ret = hw.qdma_get_version((void *)this, QDMA_DEV_PF, &info);
-    if (ret < 0) {
-        TraceError(TRACE_QDMA, "%s: qdma_get_version failed!, ret : %d", dev_conf.name, ret);
-        return hw.qdma_get_error_code(ret);
-    }
-
-    status = RtlStringCchCopyNA(version_info.qdma_rtl_version_str,
-        ARRAYSIZE(version_info.qdma_rtl_version_str),
-        info.qdma_rtl_version_str,
-        ARRAYSIZE(info.qdma_rtl_version_str));
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    status = RtlStringCchCopyNA(version_info.qdma_vivado_release_id_str,
-        ARRAYSIZE(version_info.qdma_vivado_release_id_str),
-        info.qdma_vivado_release_id_str,
-        ARRAYSIZE(info.qdma_vivado_release_id_str));
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    status = RtlStringCchCopyNA(version_info.qdma_device_type_str,
-        ARRAYSIZE(version_info.qdma_device_type_str),
-        info.qdma_device_type_str,
-        ARRAYSIZE(info.qdma_device_type_str));
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    status = RtlStringCchCopyNA(version_info.qdma_versal_ip_type_str,
-        ARRAYSIZE(version_info.qdma_versal_ip_type_str),
-        info.qdma_ip_type_str,
-        ARRAYSIZE(info.qdma_ip_type_str));
-    if (!NT_SUCCESS(status)) {
-        return status;
-    }
-
-    status = RtlStringCchPrintfA(version_info.qdma_sw_version_str,
-        ARRAYSIZE(version_info.qdma_sw_version_str),
-        "%d.%d.%d", qdma_version.major,
-        qdma_version.minor, qdma_version.patch);
-
-    return status;
-}
-
-queue_pair *qdma_device::qdma_get_queue_pair_by_hwid(UINT16 qid_abs)
-{
-    if (qid_abs >= (qbase + drv_conf.qsets_max)) {
-        TraceError(TRACE_QDMA, "%s: Invalid Qid %d provided", dev_conf.name, qid_abs);
-        return nullptr;
-    }
-
-    UINT16 qid_rel = qid_abs - static_cast<UINT16>(qbase);
-    TraceVerbose(TRACE_QDMA, "%s: Absolute qid : %u Relative qid : %u", dev_conf.name, qid_abs, qid_rel);
-    return &queue_pairs[qid_rel];
-}
\ No newline at end of file
diff --git a/QDMA/windows/sys/libqdma/source/qdma.h b/QDMA/windows/sys/libqdma/source/qdma.h
deleted file mode 100644
index 4949f6a..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma.h
+++ /dev/null
@@ -1,616 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-/**
- * @file
- * @brief This file contains the declarations for libqdma interfaces
- *
- */
-
-#include "qdma_platform_env.h"
-#include "xversion.hpp"
-#include "xpcie.hpp"
-#include "qdma_reg_ext.h"
-#include "qdma_config.h"
-#include "thread.h"
-#include "qdma_exports.h"
-#include "qdma_access_common.h"
-#include "qdma_resource_mgmt.h"
-#include "interrupts.hpp"
-#include "qdma_platform.h"
-
-/* Xilinx namespace */
-namespace xlnx {
-
-#pragma pack(1)
-struct version {
-    UINT8 patch;
-    UINT8 minor;
-    UINT16 major;
-
-    constexpr version(const UINT16 major_, const UINT8 minor_, const UINT8 patch_)
-        : patch(patch_), minor(minor_), major(major_) {}
-
-    constexpr UINT32 hash() const {
-        return UINT32((major << 16) + (minor << 8) + patch);
-    }
-
-    constexpr bool operator==(const version& other) const {
-        return hash() == other.hash();
-    }
-
-    constexpr bool operator!=(const version& other) const {
-        return !(*this == other);
-    }
-};
-#pragma pack()
-
-/* ensure that version is evaluated at compile time */
-static_assert(version(65535, 0, 0).major == 65535 &&
-    version(0, 255, 0).minor == 255 &&
-    version(0, 0, 255).patch == 255, "incorrect bits in version");
-static_assert(sizeof(version) == sizeof(UINT32), "size of version struct is not 32bits");
-
-static_assert(version(0x1234, 0x56, 0x78).hash() == 0x12345678, "error in version hash function");
-
-static_assert(version(1, 2, 3) == version(1, 2, 3), "error in version equality comparison");
-static_assert(version(1, 2, 3) != version(1, 2, 0), "error in version equality comparison");
-static_assert(version(1, 2, 3) != version(1, 0, 3), "error in version equality comparison");
-static_assert(version(1, 2, 3) != version(0, 2, 3), "error in version equality comparison");
-
-
-
-/** libqdma version number */
-static constexpr version qdma_version = version(VER_PRODUCTMAJORVERSION, VER_PRODUCTMINORVERSION, VER_PRODUCTREVISION);
-
-static constexpr size_t sg_frag_len = 61440; /** 15 * 4K Fragment size */
-static constexpr size_t st_max_desc_data_len = 65535;
-static constexpr size_t mm_max_desc_data_len  = 65535;
-
-static constexpr unsigned int mm_h2c_completion_weight = 2048;
-static constexpr unsigned int mm_c2h_completion_weight = 2048;
-static constexpr unsigned int st_h2c_completion_weight = 2048;
-static constexpr unsigned int st_c2h_completion_weight = 2048;
-
-static constexpr unsigned int max_req_service_cnt = 10;
-
-/**
- * Structure to hold the driver name and mode
- */
-struct drv_mode_name {
-    /**  Mode of the function */
-    queue_op_mode mode;
-    /**  Driver Name */
-    char name[20];
-};
-
-class qdma_device;
-struct queue_pair;
-
-#define IS_LIST_EMPTY(list_head) \
-    IsListEmpty(list_head)
-
-#define INIT_LIST_HEAD(list_head) \
-    InitializeListHead(list_head)
-
-#define LIST_ADD_HEAD(list_head, entry) \
-    InsertHeadList(list_head, entry)
-
-#define LIST_ADD_TAIL(list_head, entry) \
-    InsertTailList(list_head, entry)
-
-#define LIST_DEL_NODE(entry) \
-    RemoveEntryList(entry)
-
-#define LIST_FOR_EACH_ENTRY(list_head, entry)   \
-    for ((entry)= (list_head)->Flink; (entry) != (list_head); (entry) = (entry)->Flink)
-
-#define LIST_FOR_EACH_ENTRY_SAFE(list_head, n, entry)   \
-    for ((entry) = (list_head)->Flink, (n) = (entry)->Flink; (entry) != (list_head); (entry) = (n), (n) = (entry)->Flink)
-
-#define LIST_GET_ENTRY(entry, type, member)  \
-    CONTAINING_RECORD(entry, type, member)
-
-/** queue_type - QDMA queue type */
-enum class queue_type {
-    /** Memory mapped queue type */
-    MEMORY_MAPPED,
-    /** Streaming queue type */
-    STREAMING,
-    /** Invalid queue type */
-    NONE
-};
-
-/** device_state - State of the QDMA device */
-enum device_state {
-    /** Device is in Init State */
-    DEVICE_INIT,
-    /** Device is offline */
-    DEVICE_OFFLINE,
-    /** Device is online */
-    DEVICE_ONLINE,
-};
-
-/**
- *    Maxinum length of the QDMA device name
- */
-#define QDMA_DEV_NAME_MAXLEN    32
-
- /**
-  * QDMA_QUEUE_NAME_MAXLEN - Maximum queue name length
-  */
-#define QDMA_QUEUE_NAME_MAXLEN	32
-
- /**
-  * qdma_dev_conf - defines the per-device qdma property.
-  */
-struct qdma_dev_conf {
-    /** PCIe Segment-Bus-Device-Function of QDMA device */
-    union pci_sbdf dev_sbdf;
-    /** Indicates whether this QDMA device is master */
-    UINT32  is_master_pf : 1;
-    /** Reserved Field, not being used */
-    UINT32  reserved02 : 31;
-    /** The name of the QDMA device, in 'qdma<BBDDF>' format */
-    char    name[QDMA_DEV_NAME_MAXLEN];
-    /** Attributes of the QDMA device specifies the supported features */
-    struct qdma_dev_attributes dev_info;
-};
-
-/**
- * st_c2h_pkt_frag_queue - Structure to manage streamed
- *                         c2h packet fragments.
- */
-struct st_c2h_pkt_frag_queue {
-    st_c2h_pkt_fragment *frags = nullptr;
-    UINT32 avail_frag_cnt = 0;
-    size_t avail_byte_cnt = 0;
-    /** Maximum size of the queue,
-      * (max_q_size - 1) packets will fit in this queue
-      */
-    UINT32 max_q_size;
-    UINT32 pidx;
-    UINT32 cidx;
-
-    NTSTATUS create(UINT32 entries);
-    void destroy(void);
-    NTSTATUS add(st_c2h_pkt_fragment &elem);
-    NTSTATUS consume(st_c2h_pkt_fragment &elem);
-    PFORCEINLINE bool is_queue_full(void);
-    PFORCEINLINE bool is_queue_empty(void);
-    inline LONG get_avail_frag_cnt(void);
-    inline size_t get_avail_byte_cnt(void);
-};
-
-struct ring_buffer {
-    UINT32 capacity; /* NOT including status write-back */
-
-    WDFCOMMONBUFFER buffer = nullptr;
-    void *buffer_va = nullptr;
-    volatile wb_status_base* wb_status = nullptr;
-
-    volatile UINT32 sw_index = 0;   /* usage: e.g. [1] pidx for MM C2H, MM H2C, ST H2C. [2] cidx for ST WB */
-    volatile UINT32 hw_index = 0;   /* usage: e.g. [1] cidx for MM C2H, MM H2C, ST H2C. [2] pidx for ST WB */
-
-    struct {
-        UINT32 tot_desc_accepted;
-        UINT32 tot_desc_processed;
-    }stats;
-
-    PFORCEINLINE void advance_idx(volatile UINT32& idx);
-    PFORCEINLINE void advance_idx(volatile UINT32& idx, UINT32 num);
-    PFORCEINLINE UINT32 idx_delta(UINT32 start_idx, UINT32 end_idx);
-
-    NTSTATUS create(WDFDMAENABLER& dma_enabler, UINT32 num_entries, size_t desc_sz_in_bytes);
-    void destroy(void);
-    UINT32 get_num_free_entries(void);
-    void *get_va(void);
-    UINT32 get_capacity(void);
-};
-
-/** libqdma_queue_config -- This structure holds
-  * the QDMA configuration parameters which are
-  * deduced from the user requested while adding the queue
-  */
-struct libqdma_queue_config {
-    /** Flag indicates the interrupt enabled or not */
-    bool irq_en;
-    /** Holds the vector id (MSIX/Legacy) assigned for the queue */
-    UINT32 vector_id;
-    /** Holds the descriptor size of the ring */
-    qdma_desc_sz desc_sz;
-    /** Holds the size of the descriptor ring (i.e., no of entries) */
-    UINT32 ring_sz;
-    /** Holds the size of the completion ring (i.e., no of entries) */
-    UINT32 cmpt_ring_sz;
-    /** Holds the index of the completion ring (one of the Global CSR register index) */
-    UINT32 cmpt_ring_id;
-    /** Holds the size of the single data buffer (Valid for ST C2H only) */
-    UINT32 data_buf_size;
-};
-
-/** req_ctx -- Stores the request completion parameters */
-struct req_ctx {
-    /** User supplied private data */
-    void *priv;
-    /** Completion callback routine */
-    dma_completion_cb compl_cb;
-};
-
-/**  dma_req_tracker -- This is a shadow ring tracker for
-  *  MM and ST H2C transfers. This structure holds the data
-  *  required for making request completions
-  *
-  *  This shadow ring tracker is used to avoid the
-  *  use of synchronization primitives for the performance
-  *  cost
-  */
-struct dma_req_tracker {
-    /** Holds the completion parameters for user requests */
-    req_ctx *requests = nullptr;
-
-    /** Allocates and initializes the request tracker */
-    NTSTATUS create(UINT32 entries);
-    /** Frees the memory allocated for request tracker */
-    void destroy();
-};
-
-/** st_c2h_req -- Stores the ST C2H request completion parameters */
-struct st_c2h_req {
-    /** Length of the packet requested */
-    size_t len;
-    /** User supplied private data */
-    void *priv;
-    /** Completion callback routine */
-    st_rx_completion_cb st_compl_cb;
-};
-
-/** st_c2h_dma_req_tracker -- This structure holds the user requests
-  * for ST C2H direction. This tracker has the same size as descriptor
-  * ring (i.e., no of entries)
-  */
-struct st_c2h_dma_req_tracker {
-    st_c2h_req *requests = nullptr;
-
-    /* This lock is to ensure enqueueing/adding
-       ST C2H requests properly to request tracker and
-       dequeueing/popping the requests during completions
-    */
-    WDFSPINLOCK lock = nullptr;
-
-    /** The size of this request tracker (no of entries)
-      * This tracker is a bounded queue with max capacity specified
-      * during initialization by the caller.
-      */
-    UINT32 capacity;
-    UINT32 pidx;
-    UINT32 cidx;
-
-    NTSTATUS create(UINT32 entries);
-    void destroy(void);
-
-    NTSTATUS st_push_dma_req(st_c2h_req& req);
-    NTSTATUS st_peek_dma_req(st_c2h_req& req);
-    NTSTATUS st_pop_dma_req(void);
-};
-
-struct st_c2h_pkt_buffer {
-    WDFCOMMONBUFFER rx_buff_common;
-    PVOID rx_buff_va;
-    PHYSICAL_ADDRESS rx_buff_dma;
-
-    NTSTATUS create(WDFDMAENABLER dma_enabler, size_t size);
-    void destroy(void);
-    void fill_rx_buff(PVOID buff_va, PHYSICAL_ADDRESS buff_dma);
-    PHYSICAL_ADDRESS get_dma_addr(void);
-    PVOID get_va(void);
-};
-
-struct dma_request {
-    /** Linked list entry to form request queue */
-    LIST_ENTRY              list_entry;
-    /** DMA Mode (ST/MM) */
-    bool                    is_st;
-    /** Direction of DMA */
-    WDF_DMA_DIRECTION       direction;
-    /** SG list of request */
-    PSCATTER_GATHER_LIST    sg_list;
-    /** Completion callback handler */
-    dma_completion_cb       compl_cb;
-    /** Private data to pass during completion callback */
-    VOID                    *priv;
-    /** The device address to/from DMA
-     *  (Only Valid for MM transfers) */
-    LONGLONG                device_offset;
-    /** Holds the next index to resume
-      * request transfer for split request */
-    UINT32                  sg_index;
-    /** Holds the next device offset to resume
-      * request transfer for split request
-      * (Only valid for MM transfers ) */
-    LONGLONG                offset_idx;
-};
-
-struct h2c_queue {
-    queue_config user_conf;
-    libqdma_queue_config lib_config;
-
-    ring_buffer desc_ring;
-    dma_req_tracker req_tracker;
-
-    /** This forms a chain of h2c requests */
-    LIST_ENTRY req_list_head;
-
-    /* This lock is to ensure enqueueing/adding
-       the requests to the descriptor ring properly
-
-       During completions this lock is not needed and
-       request tracker design will make sure proper execution
-    */
-    WDFSPINLOCK lock = nullptr;
-    poll_operation_entry *req_proc_entry;
-    poll_operation_entry *poll_entry;
-    qdma_q_pidx_reg_info csr_pidx_info;
-
-    NTSTATUS create(qdma_device *qdma, queue_config& conf);
-    void destroy(void);
-    void init_csr_h2c_pidx_info(void);
-};
-
-struct c2h_queue {
-    queue_config user_conf;
-    libqdma_queue_config lib_config;
-
-    ring_buffer desc_ring;
-    dma_req_tracker req_tracker;
-
-    /** This forms a chain of c2h requests */
-    LIST_ENTRY req_list_head;
-
-    /* This lock is to ensure MM enqueueing/adding
-       the requests to the descriptor ring properly
-
-       For completions of MM requests: lock is not needed
-       request tracker design takes care
-    */
-    WDFSPINLOCK lock = nullptr;
-    poll_operation_entry *req_proc_entry;
-    poll_operation_entry *poll_entry;
-    qdma_q_pidx_reg_info csr_pidx_info;
-    qdma_q_cmpt_cidx_reg_info csr_cmpt_cidx_info;
-    bool is_cmpt_valid = false;
-    UINT32 cmpt_offset = 0;
-    ring_buffer cmpt_ring;
-
-    /* Only for streaming */
-    st_c2h_dma_req_tracker st_c2h_req_tracker;
-    UINT32 no_allocated_rx_common_buffs = 0;
-    st_c2h_pkt_buffer *pkt_buffer = nullptr;
-    st_c2h_pkt_fragment *pkt_frag_list = nullptr;
-    st_c2h_pkt_frag_queue pkt_frag_queue;
-
-    NTSTATUS create(qdma_device *qdma, queue_config& conf);
-    void destroy(void);
-    INT32 get_cmpt_ring_index(UINT32* csr_ring_sz_table, UINT32 desc_ring_index);
-    void init_csr_c2h_pidx_info(void);
-    void init_csr_cmpt_cidx_info(void);
-};
-
-enum class service_status {
-    SERVICE_CONTINUE,
-    SERVICE_FINISHED,
-    SERVICE_ERROR,
-};
-
-struct queue_pair {
-    LIST_ENTRY list_entry;
-    qdma_device *qdma = nullptr;
-
-    queue_type type;
-    char name[QDMA_QUEUE_NAME_MAXLEN];
-    volatile LONG state;
-
-    UINT16 idx = 0;     /* queue index - relative to this PF */
-    UINT16 idx_abs = 0; /* queue index - absolute across all PF */
-
-    h2c_queue h2c_q;
-    c2h_queue c2h_q;
-
-    /** Initialization and De-Initialization functions */
-    NTSTATUS create(queue_config& conf);
-    void destroy(void);
-    void init_csr(void);
-
-    /** CSR update functions */
-    PFORCEINLINE void update_sw_index_with_csr_wb(UINT32 new_cidx);
-    PFORCEINLINE void update_sw_index_with_csr_h2c_pidx(UINT32 new_pidx);
-    PFORCEINLINE void update_sw_index_with_csr_c2h_pidx(UINT32 new_pidx);
-
-    /** Transfer initiate functions */
-    NTSTATUS enqueue_dma_request(dma_request *request);
-    NTSTATUS enqueue_dma_request(size_t length, st_rx_completion_cb compl_cb, void *priv);
-
-    /** Transfer processing functions */
-    service_status process_mm_request(dma_request* request, size_t* xfer_len);
-    service_status process_st_h2c_request(dma_request* request, size_t* xfer_len);
-    NTSTATUS process_st_c2h_data_pkt(void* udd_ptr, const UINT32 length);
-
-    /** Transfer completion functions */
-    service_status service_mm_st_h2c_completions(ring_buffer *desc_ring, dma_req_tracker *tracker, UINT32 budget, UINT32& proc_desc_cnt);
-    service_status st_service_c2h_queue(UINT32 budget);
-
-    PFORCEINLINE void update_c2h_pidx_in_batch(UINT32 processed_desc_cnt);
-    NTSTATUS check_cmpt_error(c2h_wb_header_8B *cmpt_data);
-
-    /** User-Defined Data(Side band data) funtions */
-    NTSTATUS read_st_udd_data(void *addr, UINT8 *buf, UINT32 *len);
-    void * get_last_udd_addr(void);
-
-    /** Reads MM Completion ring (UDD) data,
-      * This is independent ring and not related to data packets */
-    NTSTATUS read_mm_cmpt_data(qdma_cmpt_info *cmpt_info);
-
-    /** Cleanup related functions */
-    void flush_queue(void);
-    void cancel_mm_st_h2c_pending_requests(ring_buffer* desc_ring, dma_req_tracker* tracker, WDFSPINLOCK lock);
-
-    /** Debug Functions */
-    NTSTATUS desc_dump(qdma_desc_info *desc_info);
-};
-
-/**
- * qdma_device - Master class for QDMA device
- *
- * This class defines the interface structures/unions/classes
- * and interface functions that can be used while using
- * the libqdma library
- */
-class qdma_device : public qdma_interface {
-public:
-    /** Spinlock to serialize all the HW registers */
-    WDFSPINLOCK register_access_lock = nullptr;
-    /** Structure that provides set of call back functions to access hardware */
-    qdma_hw_access hw;
-    /** Structure that provides QDMA device properties */
-    qdma_dev_conf dev_conf;
-    /** Structure that contains QDMA global CSR registers information */
-    qdma_glbl_csr_conf csr_conf;
-    /** Structure that contains QDMA driver configuration */
-    qdma_drv_config drv_conf;
-
-    /** DMA Initialization/Teardown APIs */
-    NTSTATUS init(qdma_drv_config conf);
-    NTSTATUS open(WDFDEVICE device, WDFCMRESLIST resources, WDFCMRESLIST resources_translated);
-    void close(void);
-    bool qdma_is_device_online(void);
-
-    /** PCIe BAR Read and Write APIs */
-    NTSTATUS read_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size);
-    NTSTATUS write_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size);
-    ULONG qdma_conf_reg_read(size_t offset);
-    void qdma_conf_reg_write(size_t offset, ULONG data);
-    NTSTATUS get_bar_info(qdma_bar_type bar_type, PVOID &bar_base, size_t &bar_length);
-
-    /** Queue Configuration APIs (Add, Start Stop, Delete, state) */
-    NTSTATUS qdma_add_queue(UINT16 qid, queue_config& conf);
-    NTSTATUS qdma_start_queue(UINT16 qid);
-    NTSTATUS qdma_stop_queue(UINT16 qid);
-    NTSTATUS qdma_remove_queue(UINT16 qid);
-    NTSTATUS qdma_is_queue_in_range(UINT16 qid);
-    NTSTATUS qdma_get_queues_state(UINT16 qid, enum queue_state *qstate, CHAR *str, size_t str_maxlen);
-    NTSTATUS qdma_set_qmax(UINT32 queue_max);
-
-    /** DMA transfer APIs (From Device and To Device) */
-    NTSTATUS qdma_enqueue_mm_request(UINT16 qid, WDF_DMA_DIRECTION direction, PSCATTER_GATHER_LIST sg_list, LONGLONG device_offset, dma_completion_cb compl_cb, VOID *priv);
-    NTSTATUS qdma_enqueue_st_tx_request(UINT16 qid, PSCATTER_GATHER_LIST sg_list, dma_completion_cb compl_cb, VOID *priv);
-    NTSTATUS qdma_enqueue_st_rx_request(UINT16 qid, size_t length, st_rx_completion_cb compl_cb, VOID *priv);
-
-    /** DMA Completion ring APIs */
-    NTSTATUS qdma_retrieve_st_udd_data(UINT16 qid, void *addr, UINT8 *buf, UINT32 *len);
-    NTSTATUS qdma_retrieve_last_st_udd_data(UINT16 qid, UINT8 *buf, UINT32 *len);
-    NTSTATUS qdma_read_mm_cmpt_data(qdma_cmpt_info *cmpt_info);
-
-    /** DMA Configuration Read APIs */
-    NTSTATUS qdma_read_csr_conf(qdma_glbl_csr_conf *conf);
-    NTSTATUS qdma_get_dev_capabilities_info(qdma_device_attributes_info &dev_attr);
-    NTSTATUS qdma_queue_context_read(UINT16 qid, enum qdma_dev_q_type ctx_type, struct qdma_descq_context *ctxt);
-
-    /** DMA Configuration dump APIs */
-    NTSTATUS qdma_queue_desc_dump(qdma_desc_info *desc_info);
-    NTSTATUS qdma_queue_dump_context(qdma_ctx_info *ctx_info);
-    NTSTATUS qdma_intring_dump(qdma_intr_ring_info *intring_info);
-    NTSTATUS qdma_regdump(qdma_reg_dump_info *regdump_info);
-    NTSTATUS qdma_get_qstats_info(qdma_qstat_info &qstats);
-    NTSTATUS qdma_get_reg_info(qdma_reg_info *reg_info);
-
-    /** DMA Versioning APIs */
-    NTSTATUS qdma_device_version_info(qdma_version_info &version_info);
-    void qdma_get_hw_version_info(qdma_hw_version_info &version_info);
-
-    /** Misc APIs */
-    queue_pair *qdma_get_queue_pair_by_hwid(UINT16 qid_abs);
-private:
-    LIST_ENTRY list_entry;
-    /** Identifier returned by resource manager */
-    UINT32 dma_dev_index = 0;
-    /** Start/base queue number for this device */
-    INT32 qbase = -1;
-    /** Device state */
-    volatile LONG qdma_device_state;
-
-    xpcie_device pcie;
-    WDFDEVICE wdf_dev = nullptr;
-    qdma_hw_version_info hw_version_info;
-    queue_pair *queue_pairs = nullptr;
-    interrupt_manager irq_mgr;
-    thread_manager th_mgr;
-
-    NTSTATUS validate_qconfig(queue_config& conf);
-
-    /* QDMA Device(s) list helper functions */
-    NTSTATUS list_add_qdma_device_and_set_gbl_csr(void);
-    bool is_first_qdma_pf_device(void);
-    void list_remove_qdma_device(void);
-
-    /* Context programming */
-    NTSTATUS clear_queue_contexts(bool is_c2h, UINT16 qid, qdma_hw_access_type context_op) const;
-    NTSTATUS clear_cmpt_contexts(UINT16 qid, qdma_hw_access_type context_op) const;
-    NTSTATUS clear_pfetch_contexts(UINT16 qid, qdma_hw_access_type context_op) const;
-    NTSTATUS clear_contexts(queue_pair& q, bool invalidate = false) const;
-    NTSTATUS queue_program(queue_pair& q);
-    NTSTATUS set_h2c_ctx(queue_pair& q);
-    NTSTATUS set_c2h_ctx(queue_pair& q);
-
-    NTSTATUS init_qdma_global();
-    NTSTATUS init_func();
-    NTSTATUS assign_bar_types();
-    NTSTATUS init_dma_queues();
-    NTSTATUS init_interrupt_queues();
-    NTSTATUS init_os_resources(WDFCMRESLIST resources, const WDFCMRESLIST resources_translated);
-    NTSTATUS init_resource_manager();
-    void inc_queue_pair_count(bool is_cmpt_valid);
-    void dec_queue_pair_count(bool is_cmpt_valid);
-
-    void destroy_dma_queues(void);
-    void destroy_os_resources(void);
-    void destroy_func(void);
-    void destroy_resource_manager(void);
-
-    NTSTATUS configure_irq(PQDMA_IRQ_CONTEXT irq_context, ULONG vec);
-    NTSTATUS intr_setup(WDFCMRESLIST resources, const WDFCMRESLIST resources_translated);
-    void intr_teardown(void);
-    NTSTATUS setup_legacy_interrupt(WDFCMRESLIST resources, const WDFCMRESLIST resources_translated);
-    int setup_legacy_vector(queue_pair& q);
-    void clear_legacy_vector(queue_pair& q, UINT32 vector);
-    NTSTATUS arrange_msix_vector_types(void);
-    NTSTATUS setup_msix_interrupt(WDFCMRESLIST resources, const WDFCMRESLIST resources_translated);
-    UINT32 alloc_msix_vector_position(queue_pair& q);
-    int assign_interrupt_vector(queue_pair& q);
-    void free_interrupt_vector(queue_pair& q, UINT32 vec_id);
-    void free_msix_vector_position(queue_pair& q, UINT32 vector);
-    void mask_msi_entry(UINT32 vector);
-    void unmask_msi_entry(UINT32 vector);
-    NTSTATUS qdma_intr_context_read(UINT8 ring_idx_abs, struct qdma_indirect_intr_ctxt *ctxt);
-};
-
-typedef struct devices_list {
-    qdma_device *qdma_dev;
-    devices_list *next;
-}devices_list, *pdevices_list;
-
-} /* namespace xlnx */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.c b/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.c
deleted file mode 100644
index 90c6bba..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.c
+++ /dev/null
@@ -1,5868 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "eqdma_soft_access.h"
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_access.tmh"
-#endif
-
-/** EQDMA Context array size */
-#define EQDMA_SW_CONTEXT_NUM_WORDS           8
-#define EQDMA_HW_CONTEXT_NUM_WORDS           2
-#define EQDMA_PFETCH_CONTEXT_NUM_WORDS       2
-#define EQDMA_CR_CONTEXT_NUM_WORDS           1
-#define EQDMA_CMPT_CONTEXT_NUM_WORDS         6
-#define EQDMA_IND_INTR_CONTEXT_NUM_WORDS     4
-
-#define EQDMA_VF_USER_BAR_ID                 2
-
-#define EQDMA_REG_GROUP_1_START_ADDR	0x000
-#define EQDMA_REG_GROUP_2_START_ADDR	0x804
-#define EQDMA_REG_GROUP_3_START_ADDR	0xB00
-#define EQDMA_REG_GROUP_4_START_ADDR	0x5014
-
-#define EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS   9
-#define EQDMA_GLBL_TRQ_ERR_ALL_MASK          0XB3
-#define EQDMA_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define EQDMA_C2H_ERR_ALL_MASK				0X3F6DF
-#define EQDMA_C2H_FATAL_ERR_ALL_MASK		0X1FDF1B
-#define EQDMA_H2C_ERR_ALL_MASK				0X3F
-#define EQDMA_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define EQDMA_DBE_ERR_ALL_MASK				0XFFFFFFFF
-
-/* H2C Throttle settings */
-#define EQDMA_H2C_THROT_DATA_THRESH       0x5000
-#define EQDMA_THROT_EN_DATA               1
-#define EQDMA_THROT_EN_REQ                0
-#define EQDMA_H2C_THROT_REQ_THRESH        0xC0
-
-
-/** Auxillary Bitmasks for fields spanning multiple words */
-#define EQDMA_SW_CTXT_PASID_GET_H_MASK              GENMASK(21, 12)
-#define EQDMA_SW_CTXT_PASID_GET_L_MASK              GENMASK(11, 0)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK    GENMASK_ULL(63, 53)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK    GENMASK_ULL(52, 21)
-#define EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK    GENMASK_ULL(20, 0)
-#define EQDMA_CMPL_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_CMPL_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-#define EQDMA_INTR_CTXT_PASID_GET_H_MASK            GENMASK(21, 9)
-#define EQDMA_INTR_CTXT_PASID_GET_L_MASK            GENMASK(8, 0)
-
-
-#define EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT		0x10C
-
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT		0x104
-#define QDMA_GLBL2_PF3_BAR_MAP_MASK				GENMASK(23, 18)
-#define QDMA_GLBL2_PF2_BAR_MAP_MASK				GENMASK(17, 12)
-#define QDMA_GLBL2_PF1_BAR_MAP_MASK				GENMASK(11, 6)
-#define QDMA_GLBL2_PF0_BAR_MAP_MASK				GENMASK(5, 0)
-
-#define EQDMA_GLBL2_DBG_MODE_EN_MASK			BIT(4)
-#define EQDMA_GLBL2_DESC_ENG_MODE_MASK			GENMASK(3, 2)
-#define EQDMA_GLBL2_FLR_PRESENT_MASK			BIT(1)
-#define EQDMA_GLBL2_MAILBOX_EN_MASK				BIT(0)
-
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl);
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl);
-static void eqdma_hw_desc_err_process(void *dev_hndl);
-static void eqdma_hw_trq_err_process(void *dev_hndl);
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct eqdma_hw_err_info eqdma_err_info[EQDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		EQDMA_DSC_ERR_POISON,
-		"Poison error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_BCNT,
-		"Unexpected Byte count in completion error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_BCNT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR,
-		"FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-	{
-		EQDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		EQDMA_GLBL_DSC_ERR_MSK_ADDR,
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&eqdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_VF_ACCESS,
-		"VF attempted to access Global register space or Function map",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-		"Access targeted unmapped register via queue space pathway",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-		"Timeout on request to dma internal queue space register",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-	{
-		EQDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		EQDMA_GLBL_TRQ_ERR_MSK_ADDR,
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&eqdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-		"A Shared CMPT queue has encountered a descriptor error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-		"Available ring fetch returns descriptor with error",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-		"multi-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-		"single-bit ecc error on c2h packet header",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		EQDMA_C2H_ERR_MASK_ADDR,
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-		"RAM double bit fatal error",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-	{
-		EQDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		EQDMA_C2H_FATAL_ERR_MASK_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&eqdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-		"A non-EOP descriptor received",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_PAR,
-		"Internal data parity error",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-	{
-		EQDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		EQDMA_H2C_ERR_MASK_ADDR,
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&eqdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Even RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM 1 single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_1_ERR_ALL,
-		"All SBE Errors.",
-		EQDMA_RAM_SBE_MSK_1_A_ADDR,
-		EQDMA_RAM_SBE_STS_1_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-{
-		EQDMA_SBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slavle FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM single bit ECC error",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM single bit ECC error.",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-	{
-		EQDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		EQDMA_RAM_SBE_MSK_A_ADDR,
-		EQDMA_RAM_SBE_STS_A_ADDR,
-		EQDMA_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&eqdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-		"Tag Odd Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-		"Tag Even Ram double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-		"Pfch Ctxt CAM RAM 0 double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-		"Pfch Ctxt CAM RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_1_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_1_A_ADDR,
-		EQDMA_RAM_DBE_STS_1_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C1_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C2_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_H2C3_DAT,
-		"H2C MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H1_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H2_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_C2H3_DAT,
-		"C2H MM data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-		"TL Slave FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_PEND_FIFO_RAM,
-		"Pend FIFO RAM double bit ECC error",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-		"RC RRQ Odd RAM double bit ECC error.",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	},
-	{
-		EQDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		EQDMA_RAM_DBE_MSK_A_ADDR,
-		EQDMA_RAM_DBE_STS_A_ADDR,
-		EQDMA_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&eqdma_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_eqdma_hw_errs[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	EQDMA_DSC_ERR_ALL,
-	EQDMA_TRQ_ERR_ALL,
-	EQDMA_ST_C2H_ERR_ALL,
-	EQDMA_ST_FATAL_ERR_ALL,
-	EQDMA_ST_H2C_ERR_ALL,
-	EQDMA_SBE_1_ERR_ALL,
-	EQDMA_SBE_ERR_ALL,
-	EQDMA_DBE_1_ERR_ALL,
-	EQDMA_DBE_ERR_ALL
-};
-
-static struct qctx_entry eqdma_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Interrupt with VF", 0},
-	{"Pack descriptor output interface", 0},
-	{"Irq Bypass", 0},
-};
-
-static struct qctx_entry eqdma_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry eqdma_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry eqdma_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Addr High (L)[37:6]", 0},
-	{"Base Addr High(H)[63:38]", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-	{"Disable Insterrupt with VF", 0},
-	{"c2h Direction", 0},
-	{"Base Addr Low[5:2]", 0},
-	{"Shared Completion Queue", 0},
-};
-
-static struct qctx_entry eqdma_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Variable Descriptor", 0},
-	{"Number of descriptors prefetched", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry eqdma_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-	{"Function Id", 0},
-};
-
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t eqdma_get_config_num_regs(void)
-{
-	return eqdma_config_num_regs_get();
-}
-
-struct xreg_info *eqdma_get_config_regs(void)
-{
-	return eqdma_config_regs_get();
-}
-
-uint32_t eqdma_reg_dump_buf_len(void)
-{
-	uint32_t length = (eqdma_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int len = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-			sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(eqdma_sw_ctxt_entries) /
-				sizeof(eqdma_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_hw_ctxt_entries) /
-			sizeof(eqdma_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(eqdma_credit_ctxt_entries) /
-			sizeof(eqdma_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof(eqdma_cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(eqdma_c2h_pftch_ctxt_entries) /
-				sizeof(eqdma_c2h_pftch_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return 0;
-}
-
-static uint32_t eqdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof(eqdma_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * eqdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int eqdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = EQDMA_IND_CTXT_DATA_ADDR;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-		 index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, EQDMA_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * eqdma_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void eqdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	int i = 0;
-
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pidx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_arm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fnc_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->qen;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->frcd_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_chk;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbi_intvl_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->at;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->fetch_max;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->rngsz_idx;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->desc_sz;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->bypass;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mm_chn;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->wbk_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_en;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->port_id;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_no_last;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->err_wb_sent;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_req;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->mrkr_dis;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->is_mm;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->vec;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->intr_aggr;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->dis_intr_on_vf;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->pack_byp_out;
-	eqdma_sw_ctxt_entries[i++].value = sw_ctxt->irq_byp;
-
-}
-
-/*
- * eqdma_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void eqdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	int i = 0;
-
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_stat_desc;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->en_int;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->trig_mode;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->fnc_id;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->counter_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->in_st;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->color;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ringsz_idx;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->desc_sz;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->pidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->cidx;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->valid;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->err;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->user_trig_pend;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->timer_running;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->full_upd;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->ovf_chk_dis;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->at;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->vec;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->int_aggr;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dis_intr_on_vf;
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->dir_c2h;
-	eqdma_cmpt_ctxt_entries[i++].value = (uint32_t)FIELD_GET(
-				EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				cmpt_ctxt->bs_addr);
-	eqdma_cmpt_ctxt_entries[i++].value = cmpt_ctxt->sh_cmpt;
-}
-
-/*
- * eqdma_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void eqdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	int i = 0;
-
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->cidx;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->crd_use;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->dsc_pend;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->idl_stp_b;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->evt_pnd;
-	eqdma_hw_ctxt_entries[i++].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * eqdma_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void eqdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	eqdma_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * eqdma_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void eqdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt
-		*pfetch_ctxt)
-{
-	int i = 0;
-
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bypass;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->bufsz_idx;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->port_id;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->var_desc;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->num_pftch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->err;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch_en;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->pfch;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->sw_crdt;
-	eqdma_c2h_pftch_ctxt_entries[i++].value = pfetch_ctxt->valid;
-}
-
-/*
- * eqdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void eqdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	int i = 0;
-
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->valid;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->vec;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->int_st;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->color;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->page_size;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->pidx;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->at;
-	eqdma_ind_intr_ctxt_entries[i++].value = intr_ctxt->func_id;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-
-		cfg_val = qdma_reg_read(dev_hndl,
-				EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR);
-
-		reg_val =
-			FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-					DEFAULT_PFCH_STOP_THRESH);
-		qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_ADDR, reg_val);
-
-		reg_val = FIELD_SET(C2H_PFCH_CFG_1_QCNT_MASK, (cfg_val >> 1)) |
-				  FIELD_SET(C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK,
-						((cfg_val >> 1) - 2));
-		qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_1_ADDR, reg_val);
-
-		reg_val = FIELD_SET(C2H_PFCH_CFG_2_NUM_MASK,
-					DEFAULT_PFCH_NUM_ENTRIES_PER_Q);
-
-		qdma_reg_write(dev_hndl, EQDMA_C2H_PFCH_CFG_2_ADDR, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, EQDMA_C2H_INT_TIMER_TICK_ADDR,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR);
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, EQDMA_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-		/* H2C throttle Configuration*/
-
-		reg_val =
-			FIELD_SET(H2C_REQ_THROT_PCIE_DATA_THRESH_MASK,
-					EQDMA_H2C_THROT_DATA_THRESH) |
-			FIELD_SET(H2C_REQ_THROT_PCIE_EN_DATA_MASK,
-					EQDMA_THROT_EN_DATA) |
-			FIELD_SET(H2C_REQ_THROT_PCIE_MASK,
-					EQDMA_H2C_THROT_REQ_THRESH) |
-			FIELD_SET(H2C_REQ_THROT_PCIE_EN_REQ_MASK,
-					EQDMA_THROT_EN_REQ);
-		qdma_reg_write(dev_hndl, EQDMA_H2C_REQ_THROT_PCIE_ADDR,
-			reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * dump_eqdma_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		eqdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		eqdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		eqdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			eqdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			eqdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(eqdma_sw_ctxt_entries) /
-				sizeof((eqdma_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_sw_ctxt_entries[i].name,
-				eqdma_sw_ctxt_entries[i].value,
-				eqdma_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(eqdma_hw_ctxt_entries) /
-				sizeof((eqdma_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_hw_ctxt_entries[i].name,
-				eqdma_hw_ctxt_entries[i].value,
-				eqdma_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(eqdma_credit_ctxt_entries) /
-			sizeof((eqdma_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_credit_ctxt_entries[i].name,
-				eqdma_credit_ctxt_entries[i].value,
-				eqdma_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(eqdma_cmpt_ctxt_entries) /
-				sizeof((eqdma_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_cmpt_ctxt_entries[i].name,
-				eqdma_cmpt_ctxt_entries[i].value,
-				eqdma_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(eqdma_c2h_pftch_ctxt_entries) /
-			sizeof(eqdma_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				eqdma_c2h_pftch_ctxt_entries[i].name,
-				eqdma_c2h_pftch_ctxt_entries[i].value,
-				eqdma_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * dump_eqdma_intr_context() - Helper function to dump interrupt context into
- * string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_eqdma_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	eqdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(eqdma_ind_intr_ctxt_entries) /
-			sizeof((eqdma_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			eqdma_ind_intr_ctxt_entries[i].name,
-			eqdma_ind_intr_ctxt_entries[i].value,
-			eqdma_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_version() - Function to get the eqdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? EQDMA_OFFSET_VF_VERSION :
-			EQDMA_GLBL2_MISC_CAP_ADDR;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	pasid_l =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_SW_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	virtio_desc_base_l = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_m = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-		ctxt->virtio_dsc_base);
-	virtio_desc_base_h = (uint32_t)FIELD_GET(
-		EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-		ctxt->virtio_dsc_base);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_FNC_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-				  ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->intr_aggr) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				ctxt->virtio_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				ctxt->pack_byp_out) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK, ctxt->irq_byp) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				virtio_desc_base_l);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				virtio_desc_base_m);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				virtio_desc_base_h);
-
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[EQDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint32_t pasid_l, pasid_h;
-	uint32_t virtio_desc_base_l, virtio_desc_base_m, virtio_desc_base_h;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-				sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_FNC_MASK,
-				sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(SW_IND_CTXT_DATA_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		(uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK,
-				sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-				sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-				sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-				sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-				sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-				sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-				sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-				sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-				sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(SW_IND_CTXT_DATA_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr = (uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_INT_AGGR_MASK,
-			sw_ctxt[4]));
-	ctxt->dis_intr_on_vf =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				sw_ctxt[4]));
-	ctxt->virtio_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK,
-				sw_ctxt[4]));
-	ctxt->pack_byp_out =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK,
-				sw_ctxt[4]));
-	ctxt->irq_byp =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK,
-				sw_ctxt[4]));
-	ctxt->host_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W4_HOST_ID_MASK,
-				sw_ctxt[4]));
-	pasid_l = FIELD_GET(SW_IND_CTXT_DATA_W4_PASID_L_MASK, sw_ctxt[4]);
-
-	pasid_h = FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_H_MASK, sw_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(SW_IND_CTXT_DATA_W5_PASID_EN_MASK,
-			sw_ctxt[5]);
-	virtio_desc_base_l =
-		FIELD_GET(SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK,
-				sw_ctxt[5]);
-	virtio_desc_base_m =
-		FIELD_GET(SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK,
-				sw_ctxt[6]);
-
-	virtio_desc_base_h =
-		FIELD_GET(SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK,
-				sw_ctxt[6]);
-
-	ctxt->pasid =
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_L_MASK, pasid_l) |
-			FIELD_SET(EQDMA_SW_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	ctxt->virtio_dsc_base =
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_L_MASK,
-					(uint64_t)virtio_desc_base_l) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_M_MASK,
-					(uint64_t)virtio_desc_base_m) |
-			FIELD_SET(EQDMA_SW_CTXT_VIRTIO_DSC_BASE_GET_H_MASK,
-					(uint64_t)virtio_desc_base_h);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK,
-				ctxt->num_pftch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				ctxt->var_desc) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[EQDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK,
-			pfetch_ctxt[0]);
-	ctxt->num_pftch = (uint16_t) FIELD_GET(
-			PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->var_desc = (uint8_t)
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK,
-				pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr4_high_l, baddr4_high_h,
-			baddr4_low, pidx_l, pidx_h, pasid_l, pasid_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr4_high_l = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-			ctxt->bs_addr);
-	baddr4_high_h = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-			ctxt->bs_addr);
-	baddr4_low = (uint32_t)FIELD_GET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	pasid_l =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK, ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK, baddr4_high_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK, baddr4_high_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, ctxt->full_upd) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, ctxt->int_aggr) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				ctxt->dis_intr_on_vf) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_VIO_MASK, ctxt->vio) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK, ctxt->dir_c2h) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W4_PASID_L_MASK, pasid_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_H_MASK, pasid_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-				ctxt->pasid_en) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK,
-				baddr4_low) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK, ctxt->vio_eop) |
-		FIELD_SET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK, ctxt->sh_cmpt);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[EQDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr4_high_l, baddr4_high_h, baddr4_low,
-			pidx_l, pidx_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_CNTER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr4_high_l = FIELD_GET(CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK,
-			cmpt_ctxt[1]);
-
-	baddr4_high_h = FIELD_GET(CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK,
-			cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(CMPL_CTXT_DATA_W4_FULL_UPD_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(CMPL_CTXT_DATA_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(CMPL_CTXT_DATA_W4_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(CMPL_CTXT_DATA_W4_INT_AGGR_MASK, cmpt_ctxt[4]));
-	ctxt->dis_intr_on_vf = (uint8_t)
-		FIELD_GET(CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK,
-				cmpt_ctxt[4]);
-	ctxt->vio = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_VIO_MASK,
-			cmpt_ctxt[4]);
-	ctxt->dir_c2h = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_DIR_C2H_MASK,
-			cmpt_ctxt[4]);
-	ctxt->host_id = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W4_HOST_ID_MASK,
-			cmpt_ctxt[4]);
-	pasid_l = FIELD_GET(CMPL_CTXT_DATA_W4_PASID_L_MASK, cmpt_ctxt[4]);
-
-	pasid_h = (uint32_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_H_MASK,
-			cmpt_ctxt[5]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_PASID_EN_MASK,
-			cmpt_ctxt[5]);
-	baddr4_low = (uint8_t)FIELD_GET(
-			CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK, cmpt_ctxt[5]);
-	ctxt->vio_eop = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_VIO_EOP_MASK,
-			cmpt_ctxt[5]);
-	ctxt->sh_cmpt = (uint8_t)FIELD_GET(CMPL_CTXT_DATA_W5_SH_CMPT_MASK,
-			cmpt_ctxt[5]);
-
-	ctxt->bs_addr =
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK,
-				(uint64_t)baddr4_high_l) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK,
-				(uint64_t)baddr4_high_h) |
-		FIELD_SET(EQDMA_COMPL_CTXT_BADDR_LOW_MASK,
-				(uint64_t)baddr4_low);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_CMPL_CTXT_PASID_GET_H_MASK,
-				(uint64_t)pasid_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[EQDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-					hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-					hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_EVT_PND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[EQDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			EQDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	pasid_l =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, ctxt->pasid);
-	pasid_h =
-		FIELD_GET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, ctxt->pasid);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(INTR_CTXT_DATA_W2_AT_MASK, ctxt->at) |
-		FIELD_SET(INTR_CTXT_DATA_W2_HOST_ID_MASK, ctxt->host_id) |
-		FIELD_SET(INTR_CTXT_DATA_W2_PASID_L_MASK, pasid_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_H_MASK, pasid_h) |
-		FIELD_SET(INTR_CTXT_DATA_W3_PASID_EN_MASK, ctxt->pasid_en) |
-		FIELD_SET(INTR_CTXT_DATA_W3_FUNC_MASK, ctxt->func_id);
-
-	return eqdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[EQDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h, pasid_l, pasid_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			EQDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_M_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W2_BADDR_4K_H_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(INTR_CTXT_DATA_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_AT_MASK, intr_ctxt[2]));
-	ctxt->host_id = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_HOST_ID_MASK,
-			intr_ctxt[2]));
-	pasid_l = (uint8_t)(FIELD_GET(INTR_CTXT_DATA_W2_PASID_L_MASK,
-			intr_ctxt[2]));
-
-	pasid_h = FIELD_GET(INTR_CTXT_DATA_W3_PASID_H_MASK, intr_ctxt[3]);
-	ctxt->pasid_en = (uint8_t)FIELD_GET(INTR_CTXT_DATA_W3_PASID_EN_MASK,
-			intr_ctxt[3]);
-
-	ctxt->func_id = (uint16_t)FIELD_GET(INTR_CTXT_DATA_W3_FUNC_MASK,
-			intr_ctxt[3]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	ctxt->pasid =
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_L_MASK, pasid_l) |
-		FIELD_SET(EQDMA_INTR_CTXT_PASID_GET_H_MASK, pasid_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return eqdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = eqdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = eqdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < eqdma_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s", reg_info[i].name);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_cpm_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @context:	Queue Context
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_intr_context() - Function to get qdma interrupt context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @intr_ctx:	Interrupt Context
- * @ring_index: Ring index
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = eqdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_eqdma_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = eqdma_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = eqdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt), QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = eqdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = eqdma_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = eqdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-
-	rv = dump_eqdma_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_user_bar() - Function to get the AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite bar number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  EQDMA_OFFSET_VF_USER_BAR :
-			EQDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: AXI Master Lite bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-	user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_SBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-	eqdma_dump_reg_info(dev_hndl, EQDMA_RAM_DBE_STS_1_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		EQDMA_GLBL_DSC_ERR_STS_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG0_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG1_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT0_ADDR,
-		EQDMA_GLBL_DSC_DBG_DAT1_ADDR,
-		EQDMA_GLBL_DSC_ERR_LOG2_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		EQDMA_GLBL_TRQ_ERR_STS_ADDR,
-		EQDMA_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		EQDMA_H2C_ERR_STAT_ADDR,
-		EQDMA_H2C_FIRST_ERR_QID_ADDR,
-		EQDMA_H2C_DBG_REG0_ADDR,
-		EQDMA_H2C_DBG_REG1_ADDR,
-		EQDMA_H2C_DBG_REG2_ADDR,
-		EQDMA_H2C_DBG_REG3_ADDR,
-		EQDMA_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void eqdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		EQDMA_C2H_ERR_STAT_ADDR,
-		EQDMA_C2H_FATAL_ERR_STAT_ADDR,
-		EQDMA_C2H_FIRST_ERR_QID_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		eqdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-
-/*****************************************************************************/
-/**
- * eqdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *eqdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum eqdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return eqdma_err_info[(enum eqdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		EQDMA_DSC_ERR_POISON,
-		EQDMA_TRQ_ERR_CSR_UNMAPPED,
-		EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-		EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_SBE_ERR_MI_H2C0_DAT,
-		EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-		EQDMA_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR);
-
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, EQDMA_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == EQDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == EQDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				eqdma_err_info[bit].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			eqdma_err_info[bit].eqdma_hw_err_process(
-						dev_hndl);
-			for (idx = bit; idx < all_eqdma_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				eqdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						eqdma_hw_get_error_name(idx));
-			}
-			qdma_reg_write(dev_hndl,
-					eqdma_err_info[bit].stat_reg_addr,
-					err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > EQDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum eqdma_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == EQDMA_ERRS_ALL) {
-		for (i = 0; i < EQDMA_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_eqdma_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == EQDMA_ST_C2H_ERR_ALL ||
-					idx == EQDMA_ST_FATAL_ERR_ALL ||
-					idx == EQDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = eqdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				eqdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					EQDMA_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				eqdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= EQDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= EQDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(eqdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				eqdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(eqdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_get_device_attributes() - Function to get the qdma device
- * attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs =
-			FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en = FIELD_GET(EQDMA_GLBL2_MAILBOX_EN_MASK,
-		reg_val);
-	dev_info->flr_present = FIELD_GET(EQDMA_GLBL2_FLR_PRESENT_MASK,
-		reg_val);
-	dev_info->mm_cmpt_en  = 0;
-	dev_info->debug_mode = FIELD_GET(EQDMA_GLBL2_DBG_MODE_EN_MASK,
-		reg_val);
-	dev_info->desc_eng_mode = FIELD_GET(EQDMA_GLBL2_DESC_ENG_MODE_MASK,
-		reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK, reg_val)) ? 1 : 0;
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	eqdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-				((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = eqdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		eqdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-
-	reg_info = eqdma_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[reg_count].is_debug_reg == 1)
-			continue;
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *eqdma_config_regs = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = EQDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = EQDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = EQDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = EQDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &eqdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		/* If Debug Mode not enabled and the current register
-		 * is debug register, skip reading it.
-		 */
-		if (dev_cap.debug_mode == 0 &&
-				reg_info[i].is_debug_reg == 1)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, EQDMA_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_TIMER_CNT_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				EQDMA_C2H_TIMER_CNT_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_CNT_TH_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, EQDMA_C2H_BUF_SZ_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = eqdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = eqdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			eqdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			eqdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-		qdma_reg_write(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int eqdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, EQDMA_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * eqdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = eqdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = eqdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * eqdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  EQDMA_C2H_MM_CTL_ADDR :
-			EQDMA_H2C_MM_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en)
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-
-
-	return QDMA_SUCCESS;
-}
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = eqdma_config_num_regs_get();
-	struct xreg_info *config_regs  = eqdma_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	eqdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-			/* If Debug Mode not enabled and the current register
-			 * is debug register, skip reading it.
-			 */
-			if (dev_cap.debug_mode == 0 &&
-					config_regs[j].is_debug_reg == 1)
-				continue;
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-}
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.h b/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.h
deleted file mode 100644
index 4f37f24..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_access.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __EQDMA_SOFT_ACCESS_H_
-#define __EQDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum eqdma_error_idx {
-	/* Descriptor errors */
-	EQDMA_DSC_ERR_POISON,
-	EQDMA_DSC_ERR_UR_CA,
-	EQDMA_DSC_ERR_BCNT,
-	EQDMA_DSC_ERR_PARAM,
-	EQDMA_DSC_ERR_ADDR,
-	EQDMA_DSC_ERR_TAG,
-	EQDMA_DSC_ERR_FLR,
-	EQDMA_DSC_ERR_TIMEOUT,
-	EQDMA_DSC_ERR_DAT_POISON,
-	EQDMA_DSC_ERR_FLR_CANCEL,
-	EQDMA_DSC_ERR_DMA,
-	EQDMA_DSC_ERR_DSC,
-	EQDMA_DSC_ERR_RQ_CANCEL,
-	EQDMA_DSC_ERR_DBE,
-	EQDMA_DSC_ERR_SBE,
-	EQDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	EQDMA_TRQ_ERR_CSR_UNMAPPED,
-	EQDMA_TRQ_ERR_VF_ACCESS,
-	EQDMA_TRQ_ERR_TCP_CSR_TIMEOUT,
-	EQDMA_TRQ_ERR_QSPC_UNMAPPED,
-	EQDMA_TRQ_ERR_QID_RANGE,
-	EQDMA_TRQ_ERR_TCP_QSPC_TIMEOUT,
-	EQDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	EQDMA_ST_C2H_ERR_MTY_MISMATCH,
-	EQDMA_ST_C2H_ERR_LEN_MISMATCH,
-	EQDMA_ST_C2H_ERR_SH_CMPT_DSC,
-	EQDMA_ST_C2H_ERR_QID_MISMATCH,
-	EQDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	EQDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	EQDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	EQDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	EQDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	EQDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	EQDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	EQDMA_ST_C2H_ERR_AVL_RING_DSC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_UNC,
-	EQDMA_ST_C2H_ERR_HDR_ECC_COR,
-	EQDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	EQDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	EQDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	EQDMA_ST_FATAL_ERR_QID_MISMATCH,
-	EQDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_CMPT_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	EQDMA_ST_FATAL_ERR_AVL_RING_FIFO_RAM_RDBE,
-	EQDMA_ST_FATAL_ERR_HDR_ECC_UNC,
-	EQDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	EQDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	EQDMA_ST_H2C_ERR_SDI_MRKR_REQ_MOP,
-	EQDMA_ST_H2C_ERR_NO_DMA_DSC,
-	EQDMA_ST_H2C_ERR_SBE,
-	EQDMA_ST_H2C_ERR_DBE,
-	EQDMA_ST_H2C_ERR_PAR,
-	EQDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_SBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_SBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_SBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_SBE_1_ERR_ALL,
-
-	/* Single bit errors */
-	EQDMA_SBE_ERR_MI_H2C0_DAT,
-	EQDMA_SBE_ERR_MI_H2C1_DAT,
-	EQDMA_SBE_ERR_MI_H2C2_DAT,
-	EQDMA_SBE_ERR_MI_H2C3_DAT,
-	EQDMA_SBE_ERR_MI_C2H0_DAT,
-	EQDMA_SBE_ERR_MI_C2H1_DAT,
-	EQDMA_SBE_ERR_MI_C2H2_DAT,
-	EQDMA_SBE_ERR_MI_C2H3_DAT,
-	EQDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_SBE_ERR_FUNC_MAP,
-	EQDMA_SBE_ERR_DSC_HW_CTXT,
-	EQDMA_SBE_ERR_DSC_CRD_RCV,
-	EQDMA_SBE_ERR_DSC_SW_CTXT,
-	EQDMA_SBE_ERR_DSC_CPLI,
-	EQDMA_SBE_ERR_DSC_CPLD,
-	EQDMA_SBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_SBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_SBE_ERR_QID_FIFO_RAM,
-	EQDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_SBE_ERR_INT_CTXT_RAM,
-	EQDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_SBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_SBE_ERR_WRB_CTXT_RAM,
-	EQDMA_SBE_ERR_PFCH_LL_RAM,
-	EQDMA_SBE_ERR_PEND_FIFO_RAM,
-	EQDMA_SBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_1_ERR_RC_RRQ_EVEN_RAM,
-	EQDMA_DBE_1_ERR_TAG_ODD_RAM,
-	EQDMA_DBE_1_ERR_TAG_EVEN_RAM,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_0,
-	EQDMA_DBE_1_ERR_PFCH_CTXT_CAM_RAM_1,
-	EQDMA_DBE_1_ERR_ALL,
-
-	/* Double bit Errors */
-	EQDMA_DBE_ERR_MI_H2C0_DAT,
-	EQDMA_DBE_ERR_MI_H2C1_DAT,
-	EQDMA_DBE_ERR_MI_H2C2_DAT,
-	EQDMA_DBE_ERR_MI_H2C3_DAT,
-	EQDMA_DBE_ERR_MI_C2H0_DAT,
-	EQDMA_DBE_ERR_MI_C2H1_DAT,
-	EQDMA_DBE_ERR_MI_C2H2_DAT,
-	EQDMA_DBE_ERR_MI_C2H3_DAT,
-	EQDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	EQDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	EQDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	EQDMA_DBE_ERR_FUNC_MAP,
-	EQDMA_DBE_ERR_DSC_HW_CTXT,
-	EQDMA_DBE_ERR_DSC_CRD_RCV,
-	EQDMA_DBE_ERR_DSC_SW_CTXT,
-	EQDMA_DBE_ERR_DSC_CPLI,
-	EQDMA_DBE_ERR_DSC_CPLD,
-	EQDMA_DBE_ERR_MI_TL_SLV_FIFO_RAM,
-	EQDMA_DBE_ERR_TIMER_FIFO_RAM,
-	EQDMA_DBE_ERR_QID_FIFO_RAM,
-	EQDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	EQDMA_DBE_ERR_INT_CTXT_RAM,
-	EQDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	EQDMA_DBE_ERR_PFCH_CTXT_RAM,
-	EQDMA_DBE_ERR_WRB_CTXT_RAM,
-	EQDMA_DBE_ERR_PFCH_LL_RAM,
-	EQDMA_DBE_ERR_PEND_FIFO_RAM,
-	EQDMA_DBE_ERR_RC_RRQ_ODD_RAM,
-	EQDMA_DBE_ERR_ALL,
-
-	EQDMA_ERRS_ALL
-};
-
-struct eqdma_hw_err_info {
-	enum eqdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*eqdma_hw_err_process)(void *dev_hndl);
-};
-
-#define EQDMA_OFFSET_VF_VERSION           0x5014
-#define EQDMA_OFFSET_VF_USER_BAR		  0x5018
-
-#define EQDMA_OFFSET_MBOX_BASE_PF         0x22400
-#define EQDMA_OFFSET_MBOX_BASE_VF         0x5000
-
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_H_MASK             GENMASK_ULL(63, 38)
-#define EQDMA_COMPL_CTXT_BADDR_HIGH_L_MASK             GENMASK_ULL(37, 6)
-#define EQDMA_COMPL_CTXT_BADDR_LOW_MASK                GENMASK_ULL(5, 2)
-
-int eqdma_init_ctxt_memory(void *dev_hndl);
-
-int eqdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int eqdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_sw_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_descq_credit_ctxt *ctxt,
-		enum qdma_hw_access_type access_type);
-
-int eqdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_prefetch_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-			struct qdma_indirect_intr_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int eqdma_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int eqdma_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-uint32_t eqdma_reg_dump_buf_len(void);
-
-int eqdma_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int eqdma_hw_error_process(void *dev_hndl);
-const char *eqdma_hw_get_error_name(uint32_t err_idx);
-int eqdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int eqdma_read_dump_queue_context(void *dev_hndl,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int eqdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int eqdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar);
-
-int eqdma_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int eqdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int eqdma_set_default_global_csr(void *dev_hndl);
-
-int eqdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int eqdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int eqdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t eqdma_get_config_num_regs(void);
-
-struct xreg_info *eqdma_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __EQDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg.h b/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
deleted file mode 100644
index eac97ed..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg.h
+++ /dev/null
@@ -1,1226 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
- 
-#ifndef __EQDMA_SOFT_REG_H
-#define __EQDMA_SOFT_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t eqdma_config_num_regs_get(void);
-struct xreg_info *eqdma_config_regs_get(void);
-#define EQDMA_CFG_BLK_IDENTIFIER_ADDR                      0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR               0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK                GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(2, 0)
-#define EQDMA_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR          0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK           GENMASK(6, 4)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_SYSTEM_ID_ADDR                       0x10
-#define CFG_BLK_SYSTEM_ID_RSVD_1_MASK                      GENMASK(31, 17)
-#define CFG_BLK_SYSTEM_ID_INST_TYPE_MASK                   BIT(16)
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define EQDMA_CFG_BLK_MSIX_ENABLE_ADDR                     0x014
-#define CFG_BLK_MSIX_ENABLE_MASK                          GENMASK(31, 0)
-#define EQDMA_CFG_PCIE_DATA_WIDTH_ADDR                     0x18
-#define CFG_PCIE_DATA_WIDTH_RSVD_1_MASK                    GENMASK(31, 3)
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define EQDMA_CFG_PCIE_CTL_ADDR                            0x1C
-#define CFG_PCIE_CTL_RSVD_1_MASK                           GENMASK(31, 18)
-#define CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK                   GENMASK(17, 16)
-#define CFG_PCIE_CTL_RSVD_2_MASK                           GENMASK(15, 2)
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define EQDMA_CFG_BLK_MSI_ENABLE_ADDR                      0x20
-#define CFG_BLK_MSI_ENABLE_MASK                           GENMASK(31, 0)
-#define EQDMA_CFG_AXI_USER_MAX_PLD_SIZE_ADDR               0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK              GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK              BIT(3)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define EQDMA_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR          0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK         GENMASK(31, 7)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK         BIT(3)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define EQDMA_CFG_BLK_MISC_CTL_ADDR                        0x4C
-#define CFG_BLK_MISC_CTL_RSVD_1_MASK                       GENMASK(31, 24)
-#define CFG_BLK_MISC_CTL_10B_TAG_EN_MASK                   BIT(23)
-#define CFG_BLK_MISC_CTL_RSVD_2_MASK                       BIT(22)
-#define CFG_BLK_MISC_CTL_AXI_WBK_MASK                      BIT(21)
-#define CFG_BLK_MISC_CTL_AXI_DSC_MASK                      BIT(20)
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RSVD_3_MASK                       GENMASK(7, 5)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define EQDMA_CFG_PL_CRED_CTL_ADDR                         0x68
-#define CFG_PL_CRED_CTL_RSVD_1_MASK                        GENMASK(31, 5)
-#define CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK                 BIT(4)
-#define CFG_PL_CRED_CTL_RSVD_2_MASK                        GENMASK(3, 1)
-#define CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK                BIT(0)
-#define EQDMA_CFG_BLK_SCRATCH_ADDR                         0x80
-#define CFG_BLK_SCRATCH_MASK                              GENMASK(31, 0)
-#define EQDMA_CFG_GIC_ADDR                                 0xA0
-#define CFG_GIC_RSVD_1_MASK                                GENMASK(31, 1)
-#define CFG_GIC_GIC_IRQ_MASK                               BIT(0)
-#define EQDMA_RAM_SBE_MSK_1_A_ADDR                         0xE0
-#define RAM_SBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_1_A_ADDR                         0xE4
-#define RAM_SBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_DBE_MSK_1_A_ADDR                         0xE8
-#define RAM_DBE_MSK_1_A_MASK                          GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_1_A_ADDR                         0xEC
-#define RAM_DBE_STS_1_A_RSVD_MASK                          GENMASK(31, 5)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK           BIT(4)
-#define RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK           BIT(3)
-#define RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK                  BIT(2)
-#define RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK                   BIT(1)
-#define RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK               BIT(0)
-#define EQDMA_RAM_SBE_MSK_A_ADDR                           0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_SBE_STS_A_ADDR                           0xF4
-#define RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_SBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_SBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_SBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_SBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_SBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_SBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_RAM_DBE_MSK_A_ADDR                           0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define EQDMA_RAM_DBE_STS_A_ADDR                           0xFC
-#define RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK                  BIT(31)
-#define RAM_DBE_STS_A_PEND_FIFO_RAM_MASK                   BIT(30)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(29)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(28)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(27)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(26)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(23)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  GENMASK(22, 19)
-#define RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK              BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(16)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(14)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(13)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(12)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(8)
-#define RAM_DBE_STS_A_MI_C2H3_DAT_MASK                     BIT(7)
-#define RAM_DBE_STS_A_MI_C2H2_DAT_MASK                     BIT(6)
-#define RAM_DBE_STS_A_MI_C2H1_DAT_MASK                     BIT(5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_MI_H2C3_DAT_MASK                     BIT(3)
-#define RAM_DBE_STS_A_MI_H2C2_DAT_MASK                     BIT(2)
-#define RAM_DBE_STS_A_MI_H2C1_DAT_MASK                     BIT(1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define EQDMA_GLBL2_IDENTIFIER_ADDR                        0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define EQDMA_GLBL2_CHANNEL_INST_ADDR                      0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_MDMA_ADDR                      0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_STRM_ADDR                      0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 12)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    GENMASK(11, 8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 4)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    GENMASK(3, 0)
-#define EQDMA_GLBL2_CHANNEL_CAP_ADDR                       0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define EQDMA_GLBL2_CHANNEL_PASID_CAP_ADDR                 0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define EQDMA_GLBL2_SYSTEM_ID_ADDR                         0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define EQDMA_GLBL2_MISC_CAP_ADDR                          0x134
-#define GLBL2_MISC_CAP_MASK                               GENMASK(31, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ0_ADDR                      0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 9)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(8, 2)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(1, 0)
-#define EQDMA_GLBL2_DBG_PCIE_RQ1_ADDR                      0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 21)
-#define GLBL2_PCIE_RQ1_TAG_FL_MASK                     GENMASK(20, 19)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(18)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(17)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(16)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(15)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(14, 12)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK                BIT(8)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(7)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(6)
-#define GLBL2_PCIE_RQ1_RREQ0_RDY_MASK                  BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RDY_MASK                  BIT(2)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(1)
-#define GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK              BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR0_ADDR                     0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_WR1_ADDR                     0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD0_ADDR                     0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(16)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(15, 13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define EQDMA_GLBL2_DBG_AXIMM_RD1_ADDR                     0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define EQDMA_GLBL2_DBG_FAB0_ADDR                          0x1D0
-#define GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK            BIT(31)
-#define GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK            BIT(30)
-#define GLBL2_FAB0_H2C_SEG_IN_VLD_MASK                 BIT(29)
-#define GLBL2_FAB0_H2C_SEG_IN_RDY_MASK                 BIT(28)
-#define GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK                GENMASK(27, 24)
-#define GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK                BIT(23)
-#define GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK              GENMASK(22, 16)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK             BIT(15)
-#define GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK            BIT(14)
-#define GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK              GENMASK(13, 10)
-#define GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK              BIT(9)
-#define GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK              BIT(8)
-#define GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK              BIT(7)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK         BIT(6)
-#define GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK         BIT(5)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK        BIT(4)
-#define GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK       BIT(3)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK              BIT(2)
-#define GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK             BIT(1)
-#define GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK            BIT(0)
-#define EQDMA_GLBL2_DBG_FAB1_ADDR                          0x1D4
-#define GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK              GENMASK(31, 25)
-#define GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK           GENMASK(24, 18)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK             BIT(17)
-#define GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK            BIT(16)
-#define GLBL2_FAB1_RSVD_1_MASK                         GENMASK(15, 13)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK          BIT(12)
-#define GLBL2_FAB1_RSVD_2_MASK                         GENMASK(11, 9)
-#define GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK         BIT(8)
-#define GLBL2_FAB1_RSVD_3_MASK                         GENMASK(7, 5)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK          BIT(4)
-#define GLBL2_FAB1_RSVD_4_MASK                         GENMASK(3, 1)
-#define GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK         BIT(0)
-#define EQDMA_GLBL2_DBG_MATCH_SEL_ADDR                     0x1F4
-#define GLBL2_MATCH_SEL_RSV_MASK                       GENMASK(31, 18)
-#define GLBL2_MATCH_SEL_CSR_SEL_MASK                   GENMASK(17, 13)
-#define GLBL2_MATCH_SEL_CSR_EN_MASK                    BIT(12)
-#define GLBL2_MATCH_SEL_ROTATE1_MASK                   GENMASK(11, 10)
-#define GLBL2_MATCH_SEL_ROTATE0_MASK                   GENMASK(9, 8)
-#define GLBL2_MATCH_SEL_SEL_MASK                       GENMASK(7, 0)
-#define EQDMA_GLBL2_DBG_MATCH_MSK_ADDR                     0x1F8
-#define GLBL2_MATCH_MSK_MASK                      GENMASK(31, 0)
-#define EQDMA_GLBL2_DBG_MATCH_PAT_ADDR                     0x1FC
-#define GLBL2_MATCH_PAT_PATTERN_MASK                   GENMASK(31, 0)
-#define EQDMA_GLBL_RNG_SZ_1_ADDR                           0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_2_ADDR                           0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_3_ADDR                           0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_4_ADDR                           0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_5_ADDR                           0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_6_ADDR                           0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_7_ADDR                           0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_8_ADDR                           0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_9_ADDR                           0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_A_ADDR                           0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_B_ADDR                           0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_C_ADDR                           0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_D_ADDR                           0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_E_ADDR                           0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_F_ADDR                           0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define EQDMA_GLBL_RNG_SZ_10_ADDR                          0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define EQDMA_GLBL_ERR_STAT_ADDR                           0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 18)
-#define GLBL_ERR_STAT_ERR_FAB_MASK                         BIT(17)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(16)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(15)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                GENMASK(14, 9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define EQDMA_GLBL_ERR_MASK_ADDR                           0x24C
-#define GLBL_ERR_MASK                            GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_CFG_ADDR                            0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_STS_ADDR                        0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 26)
-#define GLBL_DSC_ERR_STS_PORT_ID_MASK                      BIT(25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(8)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(6)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(5)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(4)
-#define GLBL_DSC_ERR_STS_BCNT_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(1)
-#define EQDMA_GLBL_DSC_ERR_MSK_ADDR                        0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG0_ADDR                       0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(30)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(29, 13)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG1_ADDR                       0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_ERR_LOG1_CIDX_MASK                        GENMASK(27, 12)
-#define GLBL_DSC_ERR_LOG1_RSVD_2_MASK                      GENMASK(11, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define EQDMA_GLBL_TRQ_ERR_STS_ADDR                        0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 8)
-#define GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK             BIT(7)
-#define GLBL_TRQ_ERR_STS_RSVD_2_MASK                       BIT(6)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(5)
-#define GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK                BIT(4)
-#define GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK              BIT(3)
-#define GLBL_TRQ_ERR_STS_RSVD_3_MASK                       BIT(2)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(1)
-#define GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK                 BIT(0)
-#define EQDMA_GLBL_TRQ_ERR_MSK_ADDR                        0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_GLBL_TRQ_ERR_LOG_ADDR                        0x26C
-#define GLBL_TRQ_ERR_LOG_SRC_MASK                          BIT(31)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(30, 27)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(26, 17)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(16, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT0_ADDR                       0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define EQDMA_GLBL_DSC_DBG_DAT1_ADDR                       0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define EQDMA_GLBL_DSC_DBG_CTL_ADDR                        0x278
-#define GLBL_DSC_CTL_RSVD_1_MASK                       GENMASK(31, 3)
-#define GLBL_DSC_CTL_SELECT_MASK                       GENMASK(2, 0)
-#define EQDMA_GLBL_DSC_ERR_LOG2_ADDR                       0x27c
-#define GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK                    GENMASK(31, 16)
-#define GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK                    GENMASK(15, 0)
-#define EQDMA_GLBL_GLBL_INTERRUPT_CFG_ADDR                 0x2c4
-#define GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK                GENMASK(31, 2)
-#define GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK     BIT(1)
-#define GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK          BIT(0)
-#define EQDMA_GLBL_VCH_HOST_PROFILE_ADDR                   0x2c8
-#define GLBL_VCH_HOST_PROFILE_RSVD_1_MASK                  GENMASK(31, 28)
-#define GLBL_VCH_HOST_PROFILE_2C_MM_MASK                   GENMASK(27, 24)
-#define GLBL_VCH_HOST_PROFILE_2C_ST_MASK                   GENMASK(23, 20)
-#define GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK                 GENMASK(19, 16)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK             GENMASK(15, 12)
-#define GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK            GENMASK(11, 8)
-#define GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK                GENMASK(7, 4)
-#define GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK             GENMASK(3, 0)
-#define EQDMA_GLBL_BRIDGE_HOST_PROFILE_ADDR                0x308
-#define GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK               GENMASK(31, 4)
-#define GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK                GENMASK(3, 0)
-#define EQDMA_AXIMM_IRQ_DEST_ADDR_ADDR                     0x30c
-#define AXIMM_IRQ_DEST_ADDR_ADDR_MASK                      GENMASK(31, 0)
-#define EQDMA_FAB_ERR_LOG_ADDR                             0x314
-#define FAB_ERR_LOG_RSVD_1_MASK                            GENMASK(31, 7)
-#define FAB_ERR_LOG_SRC_MASK                               GENMASK(6, 0)
-#define EQDMA_GLBL_REQ_ERR_STS_ADDR                        0x318
-#define GLBL_REQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 11)
-#define GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK               BIT(10)
-#define GLBL_REQ_ERR_STS_RC_PRTY_MASK                      BIT(9)
-#define GLBL_REQ_ERR_STS_RC_FLR_MASK                       BIT(8)
-#define GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK                   BIT(7)
-#define GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK                  BIT(6)
-#define GLBL_REQ_ERR_STS_RC_INV_TAG_MASK                   BIT(5)
-#define GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK         BIT(4)
-#define GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK        BIT(3)
-#define GLBL_REQ_ERR_STS_RC_NO_DATA_MASK                   BIT(2)
-#define GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK                 BIT(1)
-#define GLBL_REQ_ERR_STS_RC_POISONED_MASK                  BIT(0)
-#define EQDMA_GLBL_REQ_ERR_MSK_ADDR                        0x31C
-#define GLBL_REQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define EQDMA_IND_CTXT_DATA_ADDR                           0x804
-#define IND_CTXT_DATA_DATA_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_MASK_ADDR                           0x824
-#define IND_CTXT_MASK                            GENMASK(31, 0)
-#define EQDMA_IND_CTXT_CMD_ADDR                            0x844
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 20)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(19, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SEL_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define EQDMA_C2H_TIMER_CNT_ADDR                           0xA00
-#define C2H_TIMER_CNT_RSVD_1_MASK                          GENMASK(31, 16)
-#define C2H_TIMER_CNT_MASK                                GENMASK(15, 0)
-#define EQDMA_C2H_CNT_TH_ADDR                              0xA40
-#define C2H_CNT_TH_RSVD_1_MASK                             GENMASK(31, 16)
-#define C2H_CNT_TH_THESHOLD_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR            0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR            0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR          0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_AXIS_PKG_CMP_ADDR                   0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ACCEPTED_ADDR              0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_CMP_ADDR                   0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WRQ_OUT_ADDR                        0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_WPL_REN_ACCEPTED_ADDR               0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WRQ_LEN_ADDR                  0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_STAT_TOTAL_WPL_LEN_ADDR                  0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define EQDMA_C2H_BUF_SZ_ADDR                              0xAB0
-#define C2H_BUF_SZ_IZE_MASK                                GENMASK(31, 0)
-#define EQDMA_C2H_ERR_STAT_ADDR                            0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 21)
-#define C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK                  BIT(20)
-#define C2H_ERR_STAT_HDR_PAR_ERR_MASK                      BIT(19)
-#define C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK                  BIT(18)
-#define C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK                  BIT(17)
-#define C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK                 BIT(16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK                  BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define EQDMA_C2H_ERR_MASK_ADDR                            0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_STAT_ADDR                      0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 21)
-#define C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK            BIT(20)
-#define C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK     BIT(19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK         BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_RESERVED2_MASK                  BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RESERVED1_MASK                  BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define EQDMA_C2H_FATAL_ERR_MASK_ADDR                      0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define EQDMA_C2H_FATAL_ERR_ENABLE_ADDR                    0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define EQDMA_GLBL_ERR_INT_ADDR                            0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 30)
-#define GLBL_ERR_INT_HOST_ID_MASK                          GENMASK(29, 26)
-#define GLBL_ERR_INT_DIS_INTR_ON_VF_MASK                   BIT(25)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(24)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(23)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(22, 12)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_CFG_ADDR                            0xB08
-#define C2H_PFCH_CFG_EVTFL_TH_MASK                         GENMASK(31, 16)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_1_ADDR                          0xA80
-#define C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK                    GENMASK(31, 16)
-#define C2H_PFCH_CFG_1_QCNT_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CFG_2_ADDR                          0xA84
-#define C2H_PFCH_CFG_2_FENCE_MASK                          BIT(31)
-#define C2H_PFCH_CFG_2_RSVD_MASK                           GENMASK(30, 29)
-#define C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK               BIT(28)
-#define C2H_PFCH_CFG_2_LL_SZ_TH_MASK                       GENMASK(27, 12)
-#define C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK                   GENMASK(11, 6)
-#define C2H_PFCH_CFG_2_NUM_MASK                            GENMASK(5, 0)
-#define EQDMA_C2H_INT_TIMER_TICK_ADDR                      0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR         0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR          0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DESC_REQ_ADDR                       0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_0_ADDR                  0xB1C
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK      BIT(31)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK      BIT(30)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK      GENMASK(29, 27)
-#define C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK      GENMASK(26, 24)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK        BIT(23)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK        BIT(22)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK       BIT(21)
-#define C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK       GENMASK(20, 9)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK        BIT(8)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_1_ADDR                  0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_2_ADDR                  0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 29)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK       GENMASK(28, 18)
-#define C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 7)
-#define C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK        GENMASK(6, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_3_ADDR                  0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_C2H_DBG_PFCH_ERR_CTXT_ADDR                   0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define EQDMA_C2H_FIRST_ERR_QID_ADDR                       0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_RSVD_MASK                        GENMASK(15, 13)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_STAT_NUM_WRB_IN_ADDR                         0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_OUT_ADDR                        0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_WRB_DRP_ADDR                        0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define EQDMA_STAT_NUM_STAT_DESC_OUT_ADDR                  0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_DSC_CRDT_SENT_ADDR                  0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define EQDMA_STAT_NUM_FCH_DSC_RCVD_ADDR                   0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define EQDMA_STAT_NUM_BYP_DSC_RCVD_ADDR                   0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define EQDMA_C2H_WRB_COAL_CFG_ADDR                        0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define EQDMA_C2H_INTR_H2C_REQ_ADDR                        0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_MM_REQ_ADDR                     0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_ERR_INT_REQ_ADDR                    0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_REQ_ADDR                     0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR        0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR       0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR    0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define EQDMA_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR      0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_ACK_ADDR                0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR               0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_NO_MSIX_ADDR                 0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define EQDMA_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR              0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_WR_CMP_ADDR                         0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_4_ADDR                  0xB88
-#define C2H_STAT_DMA_ENG_4_RSVD_1_MASK                 GENMASK(31, 24)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK       GENMASK(23, 19)
-#define C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK       BIT(18)
-#define C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK       BIT(17)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK    BIT(16)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK BIT(15)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK BIT(14)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK BIT(13)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK BIT(12)
-#define C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK   BIT(11)
-#define C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK   BIT(10)
-#define C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK    BIT(9)
-#define C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK                BIT(8)
-#define C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK                BIT(7)
-#define C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK       BIT(6)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK     BIT(2)
-#define C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK        BIT(1)
-#define C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK     BIT(0)
-#define EQDMA_C2H_STAT_DBG_DMA_ENG_5_ADDR                  0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK         BIT(29)
-#define C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK        GENMASK(28, 24)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK       GENMASK(23, 22)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK  GENMASK(21, 6)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK BIT(5)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK BIT(4)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK BIT(3)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK BIT(2)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK BIT(1)
-#define C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK BIT(0)
-#define EQDMA_C2H_DBG_PFCH_QID_ADDR                        0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 16)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(15)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(14, 12)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(11, 0)
-#define EQDMA_C2H_DBG_PFCH_ADDR                            0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define EQDMA_C2H_INT_DBG_ADDR                             0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define EQDMA_C2H_STAT_IMM_ACCEPTED_ADDR                   0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_STAT_MARKER_ACCEPTED_ADDR                0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define EQDMA_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR           0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define EQDMA_C2H_PLD_FIFO_CRDT_CNT_ADDR                   0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_REQ_ADDR                        0xBAC
-#define C2H_INTR_DYN_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_DYN_REQ_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_INTR_DYN_MISC_ADDR                       0xBB0
-#define C2H_INTR_DYN_MISC_RSVD_1_MASK                      GENMASK(31, 18)
-#define C2H_INTR_DYN_MISC_CNT_MASK                         GENMASK(17, 0)
-#define EQDMA_C2H_DROP_LEN_MISMATCH_ADDR                   0xBB4
-#define C2H_DROP_LEN_MISMATCH_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_LEN_MISMATCH_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_DESC_RSP_LEN_ADDR                   0xBB8
-#define C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_DESC_RSP_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_QID_FIFO_LEN_ADDR                   0xBBC
-#define C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_DROP_QID_FIFO_LEN_CNT_MASK                     GENMASK(17, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_ADDR                        0xBC0
-#define C2H_DROP_PLD_CNT_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_CNT_MASK                          GENMASK(17, 0)
-#define EQDMA_C2H_CMPT_FORMAT_0_ADDR                       0xBC4
-#define C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_0_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_1_ADDR                       0xBC8
-#define C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_1_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_2_ADDR                       0xBCC
-#define C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_2_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_3_ADDR                       0xBD0
-#define C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_3_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_4_ADDR                       0xBD4
-#define C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_4_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_5_ADDR                       0xBD8
-#define C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_5_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_CMPT_FORMAT_6_ADDR                       0xBDC
-#define C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK                GENMASK(31, 16)
-#define C2H_CMPT_FORMAT_6_COLOR_LOC_MASK                   GENMASK(15, 0)
-#define EQDMA_C2H_PFCH_CACHE_DEPTH_ADDR                    0xBE0
-#define C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK                GENMASK(23, 16)
-#define C2H_PFCH_CACHE_DEPTH_MASK                         GENMASK(7, 0)
-#define EQDMA_C2H_WRB_COAL_BUF_DEPTH_ADDR                  0xBE4
-#define C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK                 GENMASK(31, 8)
-#define C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK                 GENMASK(7, 0)
-#define EQDMA_C2H_PFCH_CRDT_ADDR                           0xBE8
-#define C2H_PFCH_CRDT_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_PFCH_CRDT_RSVD_2_MASK                          BIT(0)
-#define EQDMA_C2H_STAT_HAS_CMPT_ACCEPTED_ADDR              0xBEC
-#define C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK                GENMASK(17, 0)
-#define EQDMA_C2H_STAT_HAS_PLD_ACCEPTED_ADDR               0xBF0
-#define C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK                 GENMASK(17, 0)
-#define EQDMA_C2H_PLD_PKT_ID_ADDR                          0xBF4
-#define C2H_PLD_PKT_ID_CMPT_WAIT_MASK                      GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_DATA_MASK                           GENMASK(15, 0)
-#define EQDMA_C2H_PLD_PKT_ID_1_ADDR                        0xBF8
-#define C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK                    GENMASK(31, 16)
-#define C2H_PLD_PKT_ID_1_DATA_MASK                         GENMASK(15, 0)
-#define EQDMA_C2H_DROP_PLD_CNT_1_ADDR                      0xBFC
-#define C2H_DROP_PLD_CNT_1_RSVD_1_MASK                     GENMASK(31, 18)
-#define C2H_DROP_PLD_CNT_1_CNT_MASK                        GENMASK(17, 0)
-#define EQDMA_H2C_ERR_STAT_ADDR                            0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 6)
-#define H2C_ERR_STAT_PAR_ERR_MASK                          BIT(5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define EQDMA_H2C_ERR_MASK_ADDR                            0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define EQDMA_H2C_FIRST_ERR_QID_ADDR                       0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 13)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(12, 0)
-#define EQDMA_H2C_DBG_REG0_ADDR                            0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG1_ADDR                            0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG2_ADDR                            0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_DBG_REG3_ADDR                            0xE18
-#define H2C_REG3_RSVD_1_MASK                           BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define EQDMA_H2C_DBG_REG4_ADDR                            0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define EQDMA_H2C_FATAL_ERR_EN_ADDR                        0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define EQDMA_H2C_REQ_THROT_PCIE_ADDR                      0xE24
-#define H2C_REQ_THROT_PCIE_EN_REQ_MASK                     BIT(31)
-#define H2C_REQ_THROT_PCIE_MASK                           GENMASK(30, 19)
-#define H2C_REQ_THROT_PCIE_EN_DATA_MASK                    BIT(18)
-#define H2C_REQ_THROT_PCIE_DATA_THRESH_MASK                GENMASK(17, 0)
-#define EQDMA_H2C_ALN_DBG_REG0_ADDR                        0xE28
-#define H2C_ALN_REG0_NUM_PKT_SENT_MASK                 GENMASK(15, 0)
-#define EQDMA_H2C_REQ_THROT_AXIMM_ADDR                     0xE2C
-#define H2C_REQ_THROT_AXIMM_EN_REQ_MASK                    BIT(31)
-#define H2C_REQ_THROT_AXIMM_MASK                          GENMASK(30, 19)
-#define H2C_REQ_THROT_AXIMM_EN_DATA_MASK                   BIT(18)
-#define H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK               GENMASK(17, 0)
-#define EQDMA_C2H_MM_CTL_ADDR                              0x1004
-#define C2H_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define C2H_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define C2H_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define C2H_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_C2H_MM_STATUS_ADDR                           0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_C2H_MM_CMPL_DESC_CNT_ADDR                    0x1048
-#define C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK         BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK         GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define EQDMA_C2H_MM_ERR_CODE_ADDR                         0x1058
-#define C2H_MM_ERR_CODE_RESERVED1_MASK                     GENMASK(31, 28)
-#define C2H_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define C2H_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define C2H_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_C2H_MM_ERR_INFO_ADDR                         0x105C
-#define C2H_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define C2H_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_C2H_MM_PERF_MON_CTL_ADDR                     0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR              0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR              0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT0_ADDR               0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_C2H_MM_PERF_MON_DATA_CNT1_ADDR               0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_C2H_MM_DBG_ADDR                              0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_H2C_MM_CTL_ADDR                              0x1204
-#define H2C_MM_CTL_RESERVED1_MASK                          GENMASK(31, 9)
-#define H2C_MM_CTL_ERRC_EN_MASK                            BIT(8)
-#define H2C_MM_CTL_RESERVED0_MASK                          GENMASK(7, 1)
-#define H2C_MM_CTL_RUN_MASK                                BIT(0)
-#define EQDMA_H2C_MM_STATUS_ADDR                           0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define EQDMA_H2C_MM_CMPL_DESC_CNT_ADDR                    0x1248
-#define H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK                   GENMASK(31, 0)
-#define EQDMA_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR             0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK         GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK         GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK         GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK         GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK         GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK         BIT(0)
-#define EQDMA_H2C_MM_ERR_CODE_ADDR                         0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 28)
-#define H2C_MM_ERR_CODE_CIDX_MASK                          GENMASK(27, 12)
-#define H2C_MM_ERR_CODE_RESERVED0_MASK                     GENMASK(11, 10)
-#define H2C_MM_ERR_CODE_SUB_TYPE_MASK                      GENMASK(9, 5)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define EQDMA_H2C_MM_ERR_INFO_ADDR                         0x125C
-#define H2C_MM_ERR_INFO_VALID_MASK                         BIT(31)
-#define H2C_MM_ERR_INFO_SEL_MASK                           BIT(30)
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(29, 24)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(23, 0)
-#define EQDMA_H2C_MM_PERF_MON_CTL_ADDR                     0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR              0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR              0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT0_ADDR               0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define EQDMA_H2C_MM_PERF_MON_DATA_CNT1_ADDR               0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define EQDMA_H2C_MM_DBG_ADDR                              0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define EQDMA_C2H_CRDT_COAL_CFG_1_ADDR                     0x1400
-#define C2H_CRDT_COAL_CFG_1_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK               GENMASK(17, 10)
-#define C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK                  GENMASK(9, 0)
-#define EQDMA_C2H_CRDT_COAL_CFG_2_ADDR                     0x1404
-#define C2H_CRDT_COAL_CFG_2_RSVD_1_MASK                    GENMASK(31, 24)
-#define C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK                   GENMASK(23, 16)
-#define C2H_CRDT_COAL_CFG_2_RESERVED1_MASK                 GENMASK(15, 11)
-#define C2H_CRDT_COAL_CFG_2_NT_TH_MASK                     GENMASK(10, 0)
-#define EQDMA_C2H_PFCH_BYP_QID_ADDR                        0x1408
-#define C2H_PFCH_BYP_QID_RSVD_1_MASK                       GENMASK(31, 12)
-#define C2H_PFCH_BYP_QID_MASK                             GENMASK(11, 0)
-#define EQDMA_C2H_PFCH_BYP_TAG_ADDR                        0x140C
-#define C2H_PFCH_BYP_TAG_RSVD_1_MASK                       GENMASK(31, 20)
-#define C2H_PFCH_BYP_TAG_BYP_QID_MASK                      GENMASK(19, 8)
-#define C2H_PFCH_BYP_TAG_RSVD_2_MASK                       BIT(7)
-#define C2H_PFCH_BYP_TAG_MASK                             GENMASK(6, 0)
-#define EQDMA_C2H_WATER_MARK_ADDR                          0x1500
-#define C2H_WATER_MARK_HIGH_WM_MASK                        GENMASK(31, 16)
-#define C2H_WATER_MARK_LOW_WM_MASK                         GENMASK(15, 0)
-#define SW_IND_CTXT_DATA_W7_VIRTIO_DSC_BASE_H_MASK        GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W6_VIRTIO_DSC_BASE_M_MASK        GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W5_VIRTIO_DSC_BASE_L_MASK        GENMASK(31, 11)
-#define SW_IND_CTXT_DATA_W5_PASID_EN_MASK                 BIT(10)
-#define SW_IND_CTXT_DATA_W5_PASID_H_MASK                  GENMASK(9, 0)
-#define SW_IND_CTXT_DATA_W4_PASID_L_MASK                  GENMASK(31, 20)
-#define SW_IND_CTXT_DATA_W4_HOST_ID_MASK                  GENMASK(19, 16)
-#define SW_IND_CTXT_DATA_W4_IRQ_BYP_MASK                  BIT(15)
-#define SW_IND_CTXT_DATA_W4_PACK_BYP_OUT_MASK             BIT(14)
-#define SW_IND_CTXT_DATA_W4_VIRTIO_EN_MASK                BIT(13)
-#define SW_IND_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK           BIT(12)
-#define SW_IND_CTXT_DATA_W4_INT_AGGR_MASK                 BIT(11)
-#define SW_IND_CTXT_DATA_W4_VEC_MASK                      GENMASK(10, 0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(11, 9)
-#define SW_IND_CTXT_DATA_W1_FETCH_MAX_MASK                GENMASK(8, 5)
-#define SW_IND_CTXT_DATA_W1_AT_MASK                       BIT(4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 29)
-#define SW_IND_CTXT_DATA_W0_FNC_MASK                      GENMASK(28, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   BIT(15)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                GENMASK(14, 11)
-#define HW_IND_CTXT_DATA_W1_EVT_PND_MASK                  BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_2_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 22)
-#define PREFETCH_CTXT_DATA_W0_PFCH_NEED_MASK              GENMASK(21, 16)
-#define PREFETCH_CTXT_DATA_W0_NUM_PFCH_MASK               GENMASK(15, 10)
-#define PREFETCH_CTXT_DATA_W0_VIRTIO_MASK                 BIT(9)
-#define PREFETCH_CTXT_DATA_W0_VAR_DESC_MASK               BIT(8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SZ_IDX_MASK             GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W6_RSVD_1_H_MASK                   GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W5_RSVD_1_L_MASK                   GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W5_PORT_ID_MASK                    GENMASK(22, 20)
-#define CMPL_CTXT_DATA_W5_SH_CMPT_MASK                    BIT(19)
-#define CMPL_CTXT_DATA_W5_VIO_EOP_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W5_BADDR4_LOW_MASK                 GENMASK(17, 14)
-#define CMPL_CTXT_DATA_W5_PASID_EN_MASK                   BIT(13)
-#define CMPL_CTXT_DATA_W5_PASID_H_MASK                    GENMASK(12, 0)
-#define CMPL_CTXT_DATA_W4_PASID_L_MASK                    GENMASK(31, 23)
-#define CMPL_CTXT_DATA_W4_HOST_ID_MASK                    GENMASK(22, 19)
-#define CMPL_CTXT_DATA_W4_DIR_C2H_MASK                    BIT(18)
-#define CMPL_CTXT_DATA_W4_VIO_MASK                        BIT(17)
-#define CMPL_CTXT_DATA_W4_DIS_INTR_ON_VF_MASK             BIT(16)
-#define CMPL_CTXT_DATA_W4_INT_AGGR_MASK                   BIT(15)
-#define CMPL_CTXT_DATA_W4_VEC_MASK                        GENMASK(14, 4)
-#define CMPL_CTXT_DATA_W4_AT_MASK                         BIT(3)
-#define CMPL_CTXT_DATA_W4_OVF_CHK_DIS_MASK                BIT(2)
-#define CMPL_CTXT_DATA_W4_FULL_UPD_MASK                   BIT(1)
-#define CMPL_CTXT_DATA_W4_TIMER_RUNNING_MASK              BIT(0)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(31)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(30, 29)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(28)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(27, 12)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(11, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(27, 26)
-#define CMPL_CTXT_DATA_W2_BADDR4_HIGH_H_MASK              GENMASK(25, 0)
-#define CMPL_CTXT_DATA_W1_BADDR4_HIGH_L_MASK              GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_QSIZE_IX_MASK                   GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(27)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W0_TIMER_IX_MASK                   GENMASK(24, 21)
-#define CMPL_CTXT_DATA_W0_CNTER_IX_MASK                   GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(16, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W3_FUNC_MASK                       GENMASK(29, 18)
-#define INTR_CTXT_DATA_W3_RSVD_MASK                       GENMASK(17, 14)
-#define INTR_CTXT_DATA_W3_PASID_EN_MASK                   BIT(13)
-#define INTR_CTXT_DATA_W3_PASID_H_MASK                    GENMASK(12, 0)
-#define INTR_CTXT_DATA_W2_PASID_L_MASK                    GENMASK(31, 23)
-#define INTR_CTXT_DATA_W2_HOST_ID_MASK                    GENMASK(22, 19)
-#define INTR_CTXT_DATA_W2_AT_MASK                         BIT(18)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(17, 6)
-#define INTR_CTXT_DATA_W2_PAGE_SIZE_MASK                  GENMASK(5, 3)
-#define INTR_CTXT_DATA_W2_BADDR_4K_H_MASK                 GENMASK(2, 0)
-#define INTR_CTXT_DATA_W1_BADDR_4K_M_MASK                 GENMASK(31, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 15)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(14)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(13)
-#define INTR_CTXT_DATA_W0_RSVD1_MASK                      BIT(12)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(11, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c b/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
deleted file mode 100644
index 8d3c088..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/eqdma_soft_access/eqdma_soft_reg_dump.c
+++ /dev/null
@@ -1,3938 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-
-#include "eqdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "eqdma_soft_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_PROG_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ISSUED_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID_RSVD_1",
-		CFG_BLK_SYSTEM_ID_RSVD_1_MASK},
-	{"CFG_BLK_SYSTEM_ID_INST_TYPE",
-		CFG_BLK_SYSTEM_ID_INST_TYPE_MASK},
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msix_enable_field_info[] = {
-	{"CFG_BLK_MSIX_ENABLE",
-		CFG_BLK_MSIX_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_RSVD_1",
-		CFG_PCIE_DATA_WIDTH_RSVD_1_MASK},
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RSVD_1",
-		CFG_PCIE_CTL_RSVD_1_MASK},
-	{"CFG_PCIE_CTL_MGMT_AXIL_CTRL",
-		CFG_PCIE_CTL_MGMT_AXIL_CTRL_MASK},
-	{"CFG_PCIE_CTL_RSVD_2",
-		CFG_PCIE_CTL_RSVD_2_MASK},
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE",
-		CFG_BLK_MSI_ENABLE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_PLD_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_1_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_RSVD_2_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_RSVD_1",
-		CFG_BLK_MISC_CTL_RSVD_1_MASK},
-	{"CFG_BLK_MISC_CTL_10B_TAG_EN",
-		CFG_BLK_MISC_CTL_10B_TAG_EN_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_2",
-		CFG_BLK_MISC_CTL_RSVD_2_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_WBK",
-		CFG_BLK_MISC_CTL_AXI_WBK_MASK},
-	{"CFG_BLK_MISC_CTL_AXI_DSC",
-		CFG_BLK_MISC_CTL_AXI_DSC_MASK},
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RSVD_3",
-		CFG_BLK_MISC_CTL_RSVD_3_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pl_cred_ctl_field_info[] = {
-	{"CFG_PL_CRED_CTL_RSVD_1",
-		CFG_PL_CRED_CTL_RSVD_1_MASK},
-	{"CFG_PL_CRED_CTL_SLAVE_CRD_RLS",
-		CFG_PL_CRED_CTL_SLAVE_CRD_RLS_MASK},
-	{"CFG_PL_CRED_CTL_RSVD_2",
-		CFG_PL_CRED_CTL_RSVD_2_MASK},
-	{"CFG_PL_CRED_CTL_MASTER_CRD_RST",
-		CFG_PL_CRED_CTL_MASTER_CRD_RST_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_field_info[] = {
-	{"CFG_BLK_SCRATCH",
-		CFG_BLK_SCRATCH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_gic_field_info[] = {
-	{"CFG_GIC_RSVD_1",
-		CFG_GIC_RSVD_1_MASK},
-	{"CFG_GIC_GIC_IRQ",
-		CFG_GIC_GIC_IRQ_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_1_a_field_info[] = {
-	{"RAM_SBE_MSK_1_A",
-		RAM_SBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_1_a_field_info[] = {
-	{"RAM_SBE_STS_1_A_RSVD",
-		RAM_SBE_STS_1_A_RSVD_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_SBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_SBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_SBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_SBE_STS_1_A_TAG_ODD_RAM",
-		RAM_SBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_SBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_1_a_field_info[] = {
-	{"RAM_DBE_MSK_1_A",
-		RAM_DBE_MSK_1_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_1_a_field_info[] = {
-	{"RAM_DBE_STS_1_A_RSVD",
-		RAM_DBE_STS_1_A_RSVD_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_1_MASK},
-	{"RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0",
-		RAM_DBE_STS_1_A_PFCH_CTXT_CAM_RAM_0_MASK},
-	{"RAM_DBE_STS_1_A_TAG_EVEN_RAM",
-		RAM_DBE_STS_1_A_TAG_EVEN_RAM_MASK},
-	{"RAM_DBE_STS_1_A_TAG_ODD_RAM",
-		RAM_DBE_STS_1_A_TAG_ODD_RAM_MASK},
-	{"RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM",
-		RAM_DBE_STS_1_A_RC_RRQ_EVEN_RAM_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_SBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_SBE_STS_A_PEND_FIFO_RAM",
-		RAM_SBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_SBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H3_DAT",
-		RAM_SBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H2_DAT",
-		RAM_SBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H1_DAT",
-		RAM_SBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C3_DAT",
-		RAM_SBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C2_DAT",
-		RAM_SBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C1_DAT",
-		RAM_SBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RC_RRQ_ODD_RAM",
-		RAM_DBE_STS_A_RC_RRQ_ODD_RAM_MASK},
-	{"RAM_DBE_STS_A_PEND_FIFO_RAM",
-		RAM_DBE_STS_A_PEND_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM",
-		RAM_DBE_STS_A_MI_TL_SLV_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H3_DAT",
-		RAM_DBE_STS_A_MI_C2H3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H2_DAT",
-		RAM_DBE_STS_A_MI_C2H2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H1_DAT",
-		RAM_DBE_STS_A_MI_C2H1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C3_DAT",
-		RAM_DBE_STS_A_MI_H2C3_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C2_DAT",
-		RAM_DBE_STS_A_MI_H2C2_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C1_DAT",
-		RAM_DBE_STS_A_MI_H2C1_DAT_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP",
-		GLBL2_MISC_CAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_TAG_FL",
-		GLBL2_PCIE_RQ1_TAG_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RDY",
-		GLBL2_PCIE_RQ1_RREQ0_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RDY",
-		GLBL2_PCIE_RQ1_RREQ1_RDY_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_STRADDLE",
-		GLBL2_PCIE_RQ1_WTLP_STRADDLE_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab0_field_info[] = {
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_VLD",
-		GLBL2_FAB0_H2C_INB_CONV_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_INB_CONV_IN_RDY",
-		GLBL2_FAB0_H2C_INB_CONV_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_VLD",
-		GLBL2_FAB0_H2C_SEG_IN_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_IN_RDY",
-		GLBL2_FAB0_H2C_SEG_IN_RDY_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_VLD",
-		GLBL2_FAB0_H2C_SEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_H2C_SEG_OUT_RDY",
-		GLBL2_FAB0_H2C_SEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_H2C_MST_CRDT_STAT",
-		GLBL2_FAB0_H2C_MST_CRDT_STAT_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_FULL",
-		GLBL2_FAB0_C2H_SLV_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_SLV_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_VLD",
-		GLBL2_FAB0_C2H_DESEG_SEG_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_SEG_RDY",
-		GLBL2_FAB0_C2H_DESEG_SEG_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_VLD",
-		GLBL2_FAB0_C2H_DESEG_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_DESEG_OUT_RDY",
-		GLBL2_FAB0_C2H_DESEG_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_VLD_MASK},
-	{"GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY",
-		GLBL2_FAB0_C2H_INB_DECONV_OUT_RDY_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY",
-		GLBL2_FAB0_C2H_DSC_CRDT_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_FULL",
-		GLBL2_FAB0_IRQ_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY",
-		GLBL2_FAB0_IRQ_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY",
-		GLBL2_FAB0_IMM_CRD_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_fab1_field_info[] = {
-	{"GLBL2_FAB1_BYP_OUT_CRDT_STAT",
-		GLBL2_FAB1_BYP_OUT_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_TM_DSC_STS_CRDT_STAT",
-		GLBL2_FAB1_TM_DSC_STS_CRDT_STAT_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_CMN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_CMN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_1",
-		GLBL2_FAB1_RSVD_1_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_2",
-		GLBL2_FAB1_RSVD_2_MASK},
-	{"GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_C2H_BYP_IN_AFIFO_EMPTY_MASK},
-	{"GLBL2_FAB1_RSVD_3",
-		GLBL2_FAB1_RSVD_3_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_FULL_MASK},
-	{"GLBL2_FAB1_RSVD_4",
-		GLBL2_FAB1_RSVD_4_MASK},
-	{"GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY",
-		GLBL2_FAB1_H2C_BYP_IN_AFIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_sel_field_info[] = {
-	{"GLBL2_MATCH_SEL_RSV",
-		GLBL2_MATCH_SEL_RSV_MASK},
-	{"GLBL2_MATCH_SEL_CSR_SEL",
-		GLBL2_MATCH_SEL_CSR_SEL_MASK},
-	{"GLBL2_MATCH_SEL_CSR_EN",
-		GLBL2_MATCH_SEL_CSR_EN_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE1",
-		GLBL2_MATCH_SEL_ROTATE1_MASK},
-	{"GLBL2_MATCH_SEL_ROTATE0",
-		GLBL2_MATCH_SEL_ROTATE0_MASK},
-	{"GLBL2_MATCH_SEL_SEL",
-		GLBL2_MATCH_SEL_SEL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_msk_field_info[] = {
-	{"GLBL2_MATCH_MSK",
-		GLBL2_MATCH_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_match_pat_field_info[] = {
-	{"GLBL2_MATCH_PAT_PATTERN",
-		GLBL2_MATCH_PAT_PATTERN_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_FAB",
-		GLBL_ERR_STAT_ERR_FAB_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_PORT_ID",
-		GLBL_DSC_ERR_STS_PORT_ID_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_BCNT",
-		GLBL_DSC_ERR_STS_BCNT_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_CIDX",
-		GLBL_DSC_ERR_LOG1_CIDX_MASK},
-	{"GLBL_DSC_ERR_LOG1_RSVD_2",
-		GLBL_DSC_ERR_LOG1_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_QSPC_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_2",
-		GLBL_TRQ_ERR_STS_RSVD_2_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_QSPC_UNMAPPED",
-		GLBL_TRQ_ERR_STS_QSPC_UNMAPPED_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_CSR_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_RSVD_3",
-		GLBL_TRQ_ERR_STS_RSVD_3_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_CSR_UNMAPPED",
-		GLBL_TRQ_ERR_STS_CSR_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_SRC",
-		GLBL_TRQ_ERR_LOG_SRC_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_ctl_field_info[] = {
-	{"GLBL_DSC_CTL_RSVD_1",
-		GLBL_DSC_CTL_RSVD_1_MASK},
-	{"GLBL_DSC_CTL_SELECT",
-		GLBL_DSC_CTL_SELECT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log2_field_info[] = {
-	{"GLBL_DSC_ERR_LOG2_OLD_PIDX",
-		GLBL_DSC_ERR_LOG2_OLD_PIDX_MASK},
-	{"GLBL_DSC_ERR_LOG2_NEW_PIDX",
-		GLBL_DSC_ERR_LOG2_NEW_PIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_glbl_interrupt_cfg_field_info[] = {
-	{"GLBL_GLBL_INTERRUPT_CFG_RSVD_1",
-		GLBL_GLBL_INTERRUPT_CFG_RSVD_1_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING",
-		GLBL_GLBL_INTERRUPT_CFG_LGCY_INTR_PENDING_MASK},
-	{"GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR",
-		GLBL_GLBL_INTERRUPT_CFG_EN_LGCY_INTR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_vch_host_profile_field_info[] = {
-	{"GLBL_VCH_HOST_PROFILE_RSVD_1",
-		GLBL_VCH_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_MM",
-		GLBL_VCH_HOST_PROFILE_2C_MM_MASK},
-	{"GLBL_VCH_HOST_PROFILE_2C_ST",
-		GLBL_VCH_HOST_PROFILE_2C_ST_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_DSC",
-		GLBL_VCH_HOST_PROFILE_VCH_DSC_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_MSG",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_MSG_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR",
-		GLBL_VCH_HOST_PROFILE_VCH_INT_AGGR_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_CMPT",
-		GLBL_VCH_HOST_PROFILE_VCH_CMPT_MASK},
-	{"GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD",
-		GLBL_VCH_HOST_PROFILE_VCH_C2H_PLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl_bridge_host_profile_field_info[] = {
-	{"GLBL_BRIDGE_HOST_PROFILE_RSVD_1",
-		GLBL_BRIDGE_HOST_PROFILE_RSVD_1_MASK},
-	{"GLBL_BRIDGE_HOST_PROFILE_BDGID",
-		GLBL_BRIDGE_HOST_PROFILE_BDGID_MASK},
-};
-
-
-static struct regfield_info
-	aximm_irq_dest_addr_field_info[] = {
-	{"AXIMM_IRQ_DEST_ADDR_ADDR",
-		AXIMM_IRQ_DEST_ADDR_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	fab_err_log_field_info[] = {
-	{"FAB_ERR_LOG_RSVD_1",
-		FAB_ERR_LOG_RSVD_1_MASK},
-	{"FAB_ERR_LOG_SRC",
-		FAB_ERR_LOG_SRC_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_sts_field_info[] = {
-	{"GLBL_REQ_ERR_STS_RSVD_1",
-		GLBL_REQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_REQ_ERR_STS_RC_DISCONTINUE",
-		GLBL_REQ_ERR_STS_RC_DISCONTINUE_MASK},
-	{"GLBL_REQ_ERR_STS_RC_PRTY",
-		GLBL_REQ_ERR_STS_RC_PRTY_MASK},
-	{"GLBL_REQ_ERR_STS_RC_FLR",
-		GLBL_REQ_ERR_STS_RC_FLR_MASK},
-	{"GLBL_REQ_ERR_STS_RC_TIMEOUT",
-		GLBL_REQ_ERR_STS_RC_TIMEOUT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_BCNT",
-		GLBL_REQ_ERR_STS_RC_INV_BCNT_MASK},
-	{"GLBL_REQ_ERR_STS_RC_INV_TAG",
-		GLBL_REQ_ERR_STS_RC_INV_TAG_MASK},
-	{"GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_START_ADDR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH",
-		GLBL_REQ_ERR_STS_RC_RID_TC_ATTR_MISMCH_MASK},
-	{"GLBL_REQ_ERR_STS_RC_NO_DATA",
-		GLBL_REQ_ERR_STS_RC_NO_DATA_MASK},
-	{"GLBL_REQ_ERR_STS_RC_UR_CA_CRS",
-		GLBL_REQ_ERR_STS_RC_UR_CA_CRS_MASK},
-	{"GLBL_REQ_ERR_STS_RC_POISONED",
-		GLBL_REQ_ERR_STS_RC_POISONED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_req_err_msk_field_info[] = {
-	{"GLBL_REQ_ERR_MSK",
-		GLBL_REQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_field_info[] = {
-	{"IND_CTXT_DATA_DATA",
-		IND_CTXT_DATA_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_mask_field_info[] = {
-	{"IND_CTXT",
-		IND_CTXT_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SEL",
-		IND_CTXT_CMD_SEL_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_field_info[] = {
-	{"C2H_TIMER_CNT_RSVD_1",
-		C2H_TIMER_CNT_RSVD_1_MASK},
-	{"C2H_TIMER_CNT",
-		C2H_TIMER_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_field_info[] = {
-	{"C2H_CNT_TH_RSVD_1",
-		C2H_CNT_TH_RSVD_1_MASK},
-	{"C2H_CNT_TH_THESHOLD_CNT",
-		C2H_CNT_TH_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_field_info[] = {
-	{"C2H_BUF_SZ_IZE",
-		C2H_BUF_SZ_IZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PORT_ID_ERR",
-		C2H_ERR_STAT_WRB_PORT_ID_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_PAR_ERR",
-		C2H_ERR_STAT_HDR_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_COR_ERR",
-		C2H_ERR_STAT_HDR_ECC_COR_ERR_MASK},
-	{"C2H_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_ERR_STAT_AVL_RING_DSC_ERR",
-		C2H_ERR_STAT_AVL_RING_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_SH_CMPT_DSC_ERR",
-		C2H_ERR_STAT_SH_CMPT_DSC_ERR_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR",
-		C2H_FATAL_ERR_STAT_HDR_ECC_UNC_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_AVL_RING_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_CMPT_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED2",
-		C2H_FATAL_ERR_STAT_RESERVED2_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RESERVED1",
-		C2H_FATAL_ERR_STAT_RESERVED1_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_HOST_ID",
-		GLBL_ERR_INT_HOST_ID_MASK},
-	{"GLBL_ERR_INT_DIS_INTR_ON_VF",
-		GLBL_ERR_INT_DIS_INTR_ON_VF_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVTFL_TH",
-		C2H_PFCH_CFG_EVTFL_TH_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_1_field_info[] = {
-	{"C2H_PFCH_CFG_1_EVT_QCNT_TH",
-		C2H_PFCH_CFG_1_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_1_QCNT",
-		C2H_PFCH_CFG_1_QCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_2_field_info[] = {
-	{"C2H_PFCH_CFG_2_FENCE",
-		C2H_PFCH_CFG_2_FENCE_MASK},
-	{"C2H_PFCH_CFG_2_RSVD",
-		C2H_PFCH_CFG_2_RSVD_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NO_DROP",
-		C2H_PFCH_CFG_2_VAR_DESC_NO_DROP_MASK},
-	{"C2H_PFCH_CFG_2_LL_SZ_TH",
-		C2H_PFCH_CFG_2_LL_SZ_TH_MASK},
-	{"C2H_PFCH_CFG_2_VAR_DESC_NUM",
-		C2H_PFCH_CFG_2_VAR_DESC_NUM_MASK},
-	{"C2H_PFCH_CFG_2_NUM",
-		C2H_PFCH_CFG_2_NUM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_C2H_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TVALID_MASK},
-	{"C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY",
-		C2H_STAT_DMA_ENG_0_S_AXIS_WRB_TREADY_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID",
-		C2H_STAT_DMA_ENG_0_ARB_FIFO_OUT_QID_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT",
-		C2H_STAT_DMA_ENG_2_PLD_ST_FIFO_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_3_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_VLD",
-		C2H_STAT_DMA_ENG_3_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_3_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_3_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_TYPE",
-		C2H_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"C2H_FIRST_ERR_QID_RSVD",
-		C2H_FIRST_ERR_QID_RSVD_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_RSVD_1",
-		C2H_STAT_DMA_ENG_4_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_QID_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_EOP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_AVL_IDX_ENABLE_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_CNT_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_DESC_RSP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0",
-		C2H_STAT_DMA_ENG_4_PLD_PKT_ID_LARGER_0_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_VLD",
-		C2H_STAT_DMA_ENG_4_WRQ_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY",
-		C2H_STAT_DMA_ENG_4_WRQ_FIFO_OUT_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_DROP_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_ERR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR",
-		C2H_STAT_DMA_ENG_4_WRQ_PACKET_PRE_EOR_MASK},
-	{"C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WCP_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_PLD_ST_FIFO_IN_RDY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_WRB_SM_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ",
-		C2H_STAT_DMA_ENG_5_WRB_FIFO_IN_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_LEN_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VIRT_CH_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_VAR_DESC_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_DROP_REQ_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_NUM_BUF_OV_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_MARKER_MASK},
-	{"C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT",
-		C2H_STAT_DMA_ENG_5_ARB_FIFO_OUT_DATA_HAS_CMPT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_req_field_info[] = {
-	{"C2H_INTR_DYN_REQ_RSVD_1",
-		C2H_INTR_DYN_REQ_RSVD_1_MASK},
-	{"C2H_INTR_DYN_REQ_CNT",
-		C2H_INTR_DYN_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_dyn_misc_field_info[] = {
-	{"C2H_INTR_DYN_MISC_RSVD_1",
-		C2H_INTR_DYN_MISC_RSVD_1_MASK},
-	{"C2H_INTR_DYN_MISC_CNT",
-		C2H_INTR_DYN_MISC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_len_mismatch_field_info[] = {
-	{"C2H_DROP_LEN_MISMATCH_RSVD_1",
-		C2H_DROP_LEN_MISMATCH_RSVD_1_MASK},
-	{"C2H_DROP_LEN_MISMATCH_CNT",
-		C2H_DROP_LEN_MISMATCH_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_desc_rsp_len_field_info[] = {
-	{"C2H_DROP_DESC_RSP_LEN_RSVD_1",
-		C2H_DROP_DESC_RSP_LEN_RSVD_1_MASK},
-	{"C2H_DROP_DESC_RSP_LEN_CNT",
-		C2H_DROP_DESC_RSP_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_qid_fifo_len_field_info[] = {
-	{"C2H_DROP_QID_FIFO_LEN_RSVD_1",
-		C2H_DROP_QID_FIFO_LEN_RSVD_1_MASK},
-	{"C2H_DROP_QID_FIFO_LEN_CNT",
-		C2H_DROP_QID_FIFO_LEN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_field_info[] = {
-	{"C2H_DROP_PLD_CNT_RSVD_1",
-		C2H_DROP_PLD_CNT_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_CNT",
-		C2H_DROP_PLD_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_0_field_info[] = {
-	{"C2H_CMPT_FORMAT_0_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_0_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_0_COLOR_LOC",
-		C2H_CMPT_FORMAT_0_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_1_field_info[] = {
-	{"C2H_CMPT_FORMAT_1_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_1_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_1_COLOR_LOC",
-		C2H_CMPT_FORMAT_1_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_2_field_info[] = {
-	{"C2H_CMPT_FORMAT_2_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_2_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_2_COLOR_LOC",
-		C2H_CMPT_FORMAT_2_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_3_field_info[] = {
-	{"C2H_CMPT_FORMAT_3_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_3_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_3_COLOR_LOC",
-		C2H_CMPT_FORMAT_3_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_4_field_info[] = {
-	{"C2H_CMPT_FORMAT_4_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_4_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_4_COLOR_LOC",
-		C2H_CMPT_FORMAT_4_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_5_field_info[] = {
-	{"C2H_CMPT_FORMAT_5_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_5_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_5_COLOR_LOC",
-		C2H_CMPT_FORMAT_5_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cmpt_format_6_field_info[] = {
-	{"C2H_CMPT_FORMAT_6_DESC_ERR_LOC",
-		C2H_CMPT_FORMAT_6_DESC_ERR_LOC_MASK},
-	{"C2H_CMPT_FORMAT_6_COLOR_LOC",
-		C2H_CMPT_FORMAT_6_COLOR_LOC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cache_depth_field_info[] = {
-	{"C2H_PFCH_CACHE_DEPTH_MAX_STBUF",
-		C2H_PFCH_CACHE_DEPTH_MAX_STBUF_MASK},
-	{"C2H_PFCH_CACHE_DEPTH",
-		C2H_PFCH_CACHE_DEPTH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_buf_depth_field_info[] = {
-	{"C2H_WRB_COAL_BUF_DEPTH_RSVD_1",
-		C2H_WRB_COAL_BUF_DEPTH_RSVD_1_MASK},
-	{"C2H_WRB_COAL_BUF_DEPTH_BUFFER",
-		C2H_WRB_COAL_BUF_DEPTH_BUFFER_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_crdt_field_info[] = {
-	{"C2H_PFCH_CRDT_RSVD_1",
-		C2H_PFCH_CRDT_RSVD_1_MASK},
-	{"C2H_PFCH_CRDT_RSVD_2",
-		C2H_PFCH_CRDT_RSVD_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_cmpt_accepted_field_info[] = {
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_CMPT_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_CMPT_ACCEPTED_CNT",
-		C2H_STAT_HAS_CMPT_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_has_pld_accepted_field_info[] = {
-	{"C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1",
-		C2H_STAT_HAS_PLD_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_HAS_PLD_ACCEPTED_CNT",
-		C2H_STAT_HAS_PLD_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_field_info[] = {
-	{"C2H_PLD_PKT_ID_CMPT_WAIT",
-		C2H_PLD_PKT_ID_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_DATA",
-		C2H_PLD_PKT_ID_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_pkt_id_1_field_info[] = {
-	{"C2H_PLD_PKT_ID_1_CMPT_WAIT",
-		C2H_PLD_PKT_ID_1_CMPT_WAIT_MASK},
-	{"C2H_PLD_PKT_ID_1_DATA",
-		C2H_PLD_PKT_ID_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_drop_pld_cnt_1_field_info[] = {
-	{"C2H_DROP_PLD_CNT_1_RSVD_1",
-		C2H_DROP_PLD_CNT_1_RSVD_1_MASK},
-	{"C2H_DROP_PLD_CNT_1_CNT",
-		C2H_DROP_PLD_CNT_1_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_PAR_ERR",
-		H2C_ERR_STAT_PAR_ERR_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3_RSVD_1",
-		H2C_REG3_RSVD_1_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_pcie_field_info[] = {
-	{"H2C_REQ_THROT_PCIE_EN_REQ",
-		H2C_REQ_THROT_PCIE_EN_REQ_MASK},
-	{"H2C_REQ_THROT_PCIE",
-		H2C_REQ_THROT_PCIE_MASK},
-	{"H2C_REQ_THROT_PCIE_EN_DATA",
-		H2C_REQ_THROT_PCIE_EN_DATA_MASK},
-	{"H2C_REQ_THROT_PCIE_DATA_THRESH",
-		H2C_REQ_THROT_PCIE_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	h2c_aln_dbg_reg0_field_info[] = {
-	{"H2C_ALN_REG0_NUM_PKT_SENT",
-		H2C_ALN_REG0_NUM_PKT_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_req_throt_aximm_field_info[] = {
-	{"H2C_REQ_THROT_AXIMM_EN_REQ",
-		H2C_REQ_THROT_AXIMM_EN_REQ_MASK},
-	{"H2C_REQ_THROT_AXIMM",
-		H2C_REQ_THROT_AXIMM_MASK},
-	{"H2C_REQ_THROT_AXIMM_EN_DATA",
-		H2C_REQ_THROT_AXIMM_EN_DATA_MASK},
-	{"H2C_REQ_THROT_AXIMM_DATA_THRESH",
-		H2C_REQ_THROT_AXIMM_DATA_THRESH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_ctl_field_info[] = {
-	{"C2H_MM_CTL_RESERVED1",
-		C2H_MM_CTL_RESERVED1_MASK},
-	{"C2H_MM_CTL_ERRC_EN",
-		C2H_MM_CTL_ERRC_EN_MASK},
-	{"C2H_MM_CTL_RESERVED0",
-		C2H_MM_CTL_RESERVED0_MASK},
-	{"C2H_MM_CTL_RUN",
-		C2H_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_cmpl_desc_cnt_field_info[] = {
-	{"C2H_MM_CMPL_DESC_CNT_C2H_CO",
-		C2H_MM_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED1",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RESERVED0",
-		C2H_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RESERVED1",
-		C2H_MM_ERR_CODE_RESERVED1_MASK},
-	{"C2H_MM_ERR_CODE_CIDX",
-		C2H_MM_ERR_CODE_CIDX_MASK},
-	{"C2H_MM_ERR_CODE_RESERVED0",
-		C2H_MM_ERR_CODE_RESERVED0_MASK},
-	{"C2H_MM_ERR_CODE_SUB_TYPE",
-		C2H_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_VALID",
-		C2H_MM_ERR_INFO_VALID_MASK},
-	{"C2H_MM_ERR_INFO_SEL",
-		C2H_MM_ERR_INFO_SEL_MASK},
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_ctl_field_info[] = {
-	{"H2C_MM_CTL_RESERVED1",
-		H2C_MM_CTL_RESERVED1_MASK},
-	{"H2C_MM_CTL_ERRC_EN",
-		H2C_MM_CTL_ERRC_EN_MASK},
-	{"H2C_MM_CTL_RESERVED0",
-		H2C_MM_CTL_RESERVED0_MASK},
-	{"H2C_MM_CTL_RUN",
-		H2C_MM_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_cmpl_desc_cnt_field_info[] = {
-	{"H2C_MM_CMPL_DESC_CNT_H2C_CO",
-		H2C_MM_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED5",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED4",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED3",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED2",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED1",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RESERVED0",
-		H2C_MM_ERR_CODE_ENABLE_RESERVED0_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_CIDX",
-		H2C_MM_ERR_CODE_CIDX_MASK},
-	{"H2C_MM_ERR_CODE_RESERVED0",
-		H2C_MM_ERR_CODE_RESERVED0_MASK},
-	{"H2C_MM_ERR_CODE_SUB_TYPE",
-		H2C_MM_ERR_CODE_SUB_TYPE_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_VALID",
-		H2C_MM_ERR_INFO_VALID_MASK},
-	{"H2C_MM_ERR_INFO_SEL",
-		H2C_MM_ERR_INFO_SEL_MASK},
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_1_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_1_RSVD_1",
-		C2H_CRDT_COAL_CFG_1_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH",
-		C2H_CRDT_COAL_CFG_1_PLD_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_1_TIMER_TH",
-		C2H_CRDT_COAL_CFG_1_TIMER_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_crdt_coal_cfg_2_field_info[] = {
-	{"C2H_CRDT_COAL_CFG_2_RSVD_1",
-		C2H_CRDT_COAL_CFG_2_RSVD_1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_FIFO_TH",
-		C2H_CRDT_COAL_CFG_2_FIFO_TH_MASK},
-	{"C2H_CRDT_COAL_CFG_2_RESERVED1",
-		C2H_CRDT_COAL_CFG_2_RESERVED1_MASK},
-	{"C2H_CRDT_COAL_CFG_2_NT_TH",
-		C2H_CRDT_COAL_CFG_2_NT_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_qid_field_info[] = {
-	{"C2H_PFCH_BYP_QID_RSVD_1",
-		C2H_PFCH_BYP_QID_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_QID",
-		C2H_PFCH_BYP_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_byp_tag_field_info[] = {
-	{"C2H_PFCH_BYP_TAG_RSVD_1",
-		C2H_PFCH_BYP_TAG_RSVD_1_MASK},
-	{"C2H_PFCH_BYP_TAG_BYP_QID",
-		C2H_PFCH_BYP_TAG_BYP_QID_MASK},
-	{"C2H_PFCH_BYP_TAG_RSVD_2",
-		C2H_PFCH_BYP_TAG_RSVD_2_MASK},
-	{"C2H_PFCH_BYP_TAG",
-		C2H_PFCH_BYP_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_water_mark_field_info[] = {
-	{"C2H_WATER_MARK_HIGH_WM",
-		C2H_WATER_MARK_HIGH_WM_MASK},
-	{"C2H_WATER_MARK_LOW_WM",
-		C2H_WATER_MARK_LOW_WM_MASK},
-};
-
-static struct xreg_info eqdma_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSIX_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msix_enable_field_info),
-	cfg_blk_msix_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x20,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_PL_CRED_CTL", 0x68,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pl_cred_ctl_field_info),
-	cfg_pl_cred_ctl_field_info
-},
-{"CFG_BLK_SCRATCH", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_field_info),
-	cfg_blk_scratch_field_info
-},
-{"CFG_GIC", 0xa0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_gic_field_info),
-	cfg_gic_field_info
-},
-{"RAM_SBE_MSK_1_A", 0xe0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_1_a_field_info),
-	ram_sbe_msk_1_a_field_info
-},
-{"RAM_SBE_STS_1_A", 0xe4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_1_a_field_info),
-	ram_sbe_sts_1_a_field_info
-},
-{"RAM_DBE_MSK_1_A", 0xe8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_1_a_field_info),
-	ram_dbe_msk_1_a_field_info
-},
-{"RAM_DBE_STS_1_A", 0xec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_1_a_field_info),
-	ram_dbe_sts_1_a_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL2_DBG_FAB0", 0x1d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab0_field_info),
-	glbl2_dbg_fab0_field_info
-},
-{"GLBL2_DBG_FAB1", 0x1d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_fab1_field_info),
-	glbl2_dbg_fab1_field_info
-},
-{"GLBL2_DBG_MATCH_SEL", 0x1f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_sel_field_info),
-	glbl2_dbg_match_sel_field_info
-},
-{"GLBL2_DBG_MATCH_MSK", 0x1f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_msk_field_info),
-	glbl2_dbg_match_msk_field_info
-},
-{"GLBL2_DBG_MATCH_PAT", 0x1fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_match_pat_field_info),
-	glbl2_dbg_match_pat_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"GLBL_DSC_DBG_CTL", 0x278,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_ctl_field_info),
-	glbl_dsc_dbg_ctl_field_info
-},
-{"GLBL_DSC_ERR_LOG2", 0x27c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log2_field_info),
-	glbl_dsc_err_log2_field_info
-},
-{"GLBL_GLBL_INTERRUPT_CFG", 0x2c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_glbl_interrupt_cfg_field_info),
-	glbl_glbl_interrupt_cfg_field_info
-},
-{"GLBL_VCH_HOST_PROFILE", 0x2c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_vch_host_profile_field_info),
-	glbl_vch_host_profile_field_info
-},
-{"GLBL_BRIDGE_HOST_PROFILE", 0x308,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_bridge_host_profile_field_info),
-	glbl_bridge_host_profile_field_info
-},
-{"AXIMM_IRQ_DEST_ADDR", 0x30c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(aximm_irq_dest_addr_field_info),
-	aximm_irq_dest_addr_field_info
-},
-{"FAB_ERR_LOG", 0x314,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(fab_err_log_field_info),
-	fab_err_log_field_info
-},
-{"GLBL_REQ_ERR_STS", 0x318,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_sts_field_info),
-	glbl_req_err_sts_field_info
-},
-{"GLBL_REQ_ERR_MSK", 0x31c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl_req_err_msk_field_info),
-	glbl_req_err_msk_field_info
-},
-{"IND_CTXT_DATA", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_field_info),
-	ind_ctxt_data_field_info
-},
-{"IND_CTXT_MASK", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_mask_field_info),
-	ind_ctxt_mask_field_info
-},
-{"IND_CTXT_CMD", 0x844,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_field_info),
-	c2h_timer_cnt_field_info
-},
-{"C2H_CNT_TH", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_field_info),
-	c2h_cnt_th_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_field_info),
-	c2h_buf_sz_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_PFCH_CFG_1", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_1_field_info),
-	c2h_pfch_cfg_1_field_info
-},
-{"C2H_PFCH_CFG_2", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_2_field_info),
-	c2h_pfch_cfg_2_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"C2H_INTR_DYN_REQ", 0xbac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_req_field_info),
-	c2h_intr_dyn_req_field_info
-},
-{"C2H_INTR_DYN_MISC", 0xbb0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_dyn_misc_field_info),
-	c2h_intr_dyn_misc_field_info
-},
-{"C2H_DROP_LEN_MISMATCH", 0xbb4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_len_mismatch_field_info),
-	c2h_drop_len_mismatch_field_info
-},
-{"C2H_DROP_DESC_RSP_LEN", 0xbb8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_desc_rsp_len_field_info),
-	c2h_drop_desc_rsp_len_field_info
-},
-{"C2H_DROP_QID_FIFO_LEN", 0xbbc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_qid_fifo_len_field_info),
-	c2h_drop_qid_fifo_len_field_info
-},
-{"C2H_DROP_PLD_CNT", 0xbc0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_field_info),
-	c2h_drop_pld_cnt_field_info
-},
-{"C2H_CMPT_FORMAT_0", 0xbc4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_0_field_info),
-	c2h_cmpt_format_0_field_info
-},
-{"C2H_CMPT_FORMAT_1", 0xbc8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_1_field_info),
-	c2h_cmpt_format_1_field_info
-},
-{"C2H_CMPT_FORMAT_2", 0xbcc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_2_field_info),
-	c2h_cmpt_format_2_field_info
-},
-{"C2H_CMPT_FORMAT_3", 0xbd0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_3_field_info),
-	c2h_cmpt_format_3_field_info
-},
-{"C2H_CMPT_FORMAT_4", 0xbd4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_4_field_info),
-	c2h_cmpt_format_4_field_info
-},
-{"C2H_CMPT_FORMAT_5", 0xbd8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_5_field_info),
-	c2h_cmpt_format_5_field_info
-},
-{"C2H_CMPT_FORMAT_6", 0xbdc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cmpt_format_6_field_info),
-	c2h_cmpt_format_6_field_info
-},
-{"C2H_PFCH_CACHE_DEPTH", 0xbe0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cache_depth_field_info),
-	c2h_pfch_cache_depth_field_info
-},
-{"C2H_WRB_COAL_BUF_DEPTH", 0xbe4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_buf_depth_field_info),
-	c2h_wrb_coal_buf_depth_field_info
-},
-{"C2H_PFCH_CRDT", 0xbe8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_crdt_field_info),
-	c2h_pfch_crdt_field_info
-},
-{"C2H_STAT_HAS_CMPT_ACCEPTED", 0xbec,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_cmpt_accepted_field_info),
-	c2h_stat_has_cmpt_accepted_field_info
-},
-{"C2H_STAT_HAS_PLD_ACCEPTED", 0xbf0,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_has_pld_accepted_field_info),
-	c2h_stat_has_pld_accepted_field_info
-},
-{"C2H_PLD_PKT_ID", 0xbf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_field_info),
-	c2h_pld_pkt_id_field_info
-},
-{"C2H_PLD_PKT_ID_1", 0xbf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_pkt_id_1_field_info),
-	c2h_pld_pkt_id_1_field_info
-},
-{"C2H_DROP_PLD_CNT_1", 0xbfc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_drop_pld_cnt_1_field_info),
-	c2h_drop_pld_cnt_1_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"H2C_REQ_THROT_PCIE", 0xe24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_pcie_field_info),
-	h2c_req_throt_pcie_field_info
-},
-{"H2C_ALN_DBG_REG0", 0xe28,
-	1, 0, 0, 0,
-	1, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_aln_dbg_reg0_field_info),
-	h2c_aln_dbg_reg0_field_info
-},
-{"H2C_REQ_THROT_AXIMM", 0xe2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_req_throt_aximm_field_info),
-	h2c_req_throt_aximm_field_info
-},
-{"C2H_MM_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_ctl_field_info),
-	c2h_mm_ctl_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_MM_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_cmpl_desc_cnt_field_info),
-	c2h_mm_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_MM_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_ctl_field_info),
-	h2c_mm_ctl_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_MM_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_cmpl_desc_cnt_field_info),
-	h2c_mm_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"C2H_CRDT_COAL_CFG_1", 0x1400,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_1_field_info),
-	c2h_crdt_coal_cfg_1_field_info
-},
-{"C2H_CRDT_COAL_CFG_2", 0x1404,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_crdt_coal_cfg_2_field_info),
-	c2h_crdt_coal_cfg_2_field_info
-},
-{"C2H_PFCH_BYP_QID", 0x1408,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_qid_field_info),
-	c2h_pfch_byp_qid_field_info
-},
-{"C2H_PFCH_BYP_TAG", 0x140c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_byp_tag_field_info),
-	c2h_pfch_byp_tag_field_info
-},
-{"C2H_WATER_MARK", 0x1500,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_water_mark_field_info),
-	c2h_water_mark_field_info
-},
-
-};
-
-uint32_t eqdma_config_num_regs_get(void)
-{
-	return (sizeof(eqdma_config_regs)/
-		sizeof(eqdma_config_regs[0]));
-}
-
-struct xreg_info *eqdma_config_regs_get(void)
-{
-	return eqdma_config_regs;
-}
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.c
deleted file mode 100644
index 1419c63..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.c
+++ /dev/null
@@ -1,1284 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma_access_common.h"
-#include "qdma_platform.h"
-#include "qdma_soft_reg.h"
-#include "qdma_soft_access.h"
-#include "qdma_s80_hard_access.h"
-#include "eqdma_soft_access.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_access_common.tmh"
-#endif
-
-/* qdma version info */
-#define RTL_BASE_VERSION                        2
-#define RTL_PATCH_VERSION                       3
-
-/**
- * enum qdma_ip - To hold ip type
- */
-enum qdma_ip {
-	QDMA_OR_VERSAL_IP,
-	EQDMA_IP
-};
-
-
-/*
- * hw_monitor_reg() - polling a register repeatly until
- *	(the register value & mask) == val or time is up
- *
- * return -QDMA_BUSY_IIMEOUT_ERR if register value didn't match, 0 other wise
- */
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us, uint32_t timeout_us)
-{
-	int count;
-	uint32_t v;
-
-	if (!interval_us)
-		interval_us = QDMA_REG_POLL_DFLT_INTERVAL_US;
-	if (!timeout_us)
-		timeout_us = QDMA_REG_POLL_DFLT_TIMEOUT_US;
-
-	count = timeout_us / interval_us;
-
-	do {
-		v = qdma_reg_read(dev_hndl, reg);
-		if ((v & mask) == val)
-			return QDMA_SUCCESS;
-		qdma_udelay(interval_us);
-	} while (--count);
-
-	v = qdma_reg_read(dev_hndl, reg);
-	if ((v & mask) == val)
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: Reg read=%u Expected=%u, err:%d\n",
-				   __func__, v, val,
-				   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-	return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_rtl_version() - Function to get the rtl_version in
- * string format
- *
- * @rtl_version: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_rtl_version(enum qdma_rtl_version rtl_version)
-{
-	switch (rtl_version) {
-	case QDMA_RTL_PATCH:
-		return "RTL Patch";
-	case QDMA_RTL_BASE:
-		return "RTL Base";
-	default:
-		qdma_log_error("%s: invalid rtl_version(%d), err:%d\n",
-				__func__, rtl_version, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_ip_type() - Function to get the ip type in string format
- *
- * @ip_type: IP Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_ip_type(enum qdma_ip_type ip_type)
-{
-	switch (ip_type) {
-	case QDMA_VERSAL_HARD_IP:
-		return "Versal Hard IP";
-	case QDMA_VERSAL_SOFT_IP:
-		return "Versal Soft IP";
-	case QDMA_SOFT_IP:
-		return "QDMA Soft IP";
-	case EQDMA_SOFT_IP:
-		return "EQDMA Soft IP";
-	default:
-		qdma_log_error("%s: invalid ip type(%d), err:%d\n",
-				__func__, ip_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_type() - Function to get the device type in
- * string format
- *
- * @device_type: Device Type
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_device_type(enum qdma_device_type device_type)
-{
-	switch (device_type) {
-	case QDMA_DEVICE_SOFT:
-		return "Soft IP";
-	case QDMA_DEVICE_VERSAL:
-		return "Versal S80 Hard IP";
-	default:
-		qdma_log_error("%s: invalid device type(%d), err:%d\n",
-				__func__, device_type, -QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_vivado_release_id() - Function to get the vivado release id in
- * string format
- *
- * @vivado_release_id: Vivado release ID
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-static const char *qdma_get_vivado_release_id(
-				enum qdma_vivado_release_id vivado_release_id)
-{
-	switch (vivado_release_id) {
-	case QDMA_VIVADO_2018_3:
-		return "vivado 2018.3";
-	case QDMA_VIVADO_2019_1:
-		return "vivado 2019.1";
-	case QDMA_VIVADO_2019_2:
-		return "vivado 2019.2";
-	case QDMA_VIVADO_2020_1:
-		return "vivado 2020.1";
-	case QDMA_VIVADO_2020_2:
-		return "vivado 2020.2";
-	default:
-		qdma_log_error("%s: invalid vivado_release_id(%d), err:%d\n",
-				__func__,
-				vivado_release_id,
-				-QDMA_ERR_INV_PARAM);
-		return NULL;
-	}
-}
-
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	for (index = idx; index < (idx + cnt); index++) {
-		reg_addr = reg_offst + (index * sizeof(uint32_t));
-		qdma_reg_write(dev_hndl, reg_addr, values[index - idx]);
-	}
-}
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values)
-{
-	uint32_t index, reg_addr;
-
-	reg_addr = reg_offst + (idx * sizeof(uint32_t));
-	for (index = 0; index < cnt; index++) {
-		values[index] = qdma_reg_read(dev_hndl, reg_addr +
-					      (index * sizeof(uint32_t)));
-	}
-}
-
-void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t rtl_version, vivado_release_id, ip_type, device_type;
-	const char *version_str;
-
-	if (!is_vf) {
-		rtl_version = FIELD_GET(QDMA_GLBL2_RTL_VERSION_MASK,
-				version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type = FIELD_GET(QDMA_GLBL2_VERSAL_IP_MASK,
-				version_reg_val);
-	} else {
-		rtl_version =
-			FIELD_GET(QDMA_GLBL2_VF_RTL_VERSION_MASK,
-					version_reg_val);
-		vivado_release_id =
-			FIELD_GET(QDMA_GLBL2_VF_VIVADO_RELEASE_MASK,
-					version_reg_val);
-		device_type = FIELD_GET(QDMA_GLBL2_VF_DEVICE_ID_MASK,
-				version_reg_val);
-		ip_type =
-			FIELD_GET(QDMA_GLBL2_VF_VERSAL_IP_MASK,
-					version_reg_val);
-	}
-
-	switch (rtl_version) {
-	case 0:
-		version_info->rtl_version = QDMA_RTL_BASE;
-		break;
-	case 1:
-		version_info->rtl_version = QDMA_RTL_PATCH;
-		break;
-	default:
-		version_info->rtl_version = QDMA_RTL_NONE;
-		break;
-	}
-
-	version_str = qdma_get_rtl_version(version_info->rtl_version);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_rtl_version_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-	switch (device_type) {
-	case 0:
-		version_info->device_type = QDMA_DEVICE_SOFT;
-		break;
-	case 1:
-		version_info->device_type = QDMA_DEVICE_VERSAL;
-		break;
-	default:
-		version_info->device_type = QDMA_DEVICE_NONE;
-		break;
-	}
-
-	version_str = qdma_get_device_type(version_info->device_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_device_type_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-
-
-	if (version_info->device_type == QDMA_DEVICE_SOFT) {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_SOFT_IP;
-			break;
-		case 1:
-			version_info->ip_type = EQDMA_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	} else {
-		switch (ip_type) {
-		case 0:
-			version_info->ip_type = QDMA_VERSAL_HARD_IP;
-			break;
-		case 1:
-			version_info->ip_type = QDMA_VERSAL_SOFT_IP;
-			break;
-		default:
-			version_info->ip_type = QDMA_NONE_IP;
-		}
-	}
-
-	version_str = qdma_get_ip_type(version_info->ip_type);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_ip_type_str,
-			version_str,
-			QDMA_HW_VERSION_STRING_LEN);
-
-	if (version_info->ip_type == QDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2018_3;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2019_1;
-			break;
-		case 2:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else if (version_info->ip_type == EQDMA_SOFT_IP) {
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2020_1;
-			break;
-		case 1:
-			version_info->vivado_release = QDMA_VIVADO_2020_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	} else { /* Versal case */
-		switch (vivado_release_id) {
-		case 0:
-			version_info->vivado_release = QDMA_VIVADO_2019_2;
-			break;
-		default:
-			version_info->vivado_release = QDMA_VIVADO_NONE;
-			break;
-		}
-	}
-
-	version_str = qdma_get_vivado_release_id(
-			version_info->vivado_release);
-	if (version_str != NULL)
-		qdma_strncpy(version_info->qdma_vivado_release_id_str,
-				version_str,
-				QDMA_HW_VERSION_STRING_LEN);
-}
-
-
-/*
- * dump_reg() - Helper function to dump register value into string
- *
- * return len - length of the string copied into buffer
- */
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval)
-{
-	/* length of the line should be minimum 80 chars.
-	 * If below print pattern is changed, check for
-	 * new buffer size requirement
-	 */
-	if (buf_sz < DEBGFS_LINE_SZ) {
-		qdma_log_error("%s: buf_sz(%d) < expected(%d): err: %d\n",
-						__func__,
-						buf_sz, DEBGFS_LINE_SZ,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return QDMA_SNPRINTF_S(buf, buf_sz, DEBGFS_LINE_SZ,
-			"[%#7x] %-47s %#-10x %u\n",
-			raddr, rname, rval, rval);
-
-}
-
-void qdma_memset(void *to, uint8_t val, uint32_t size)
-{
-	uint32_t i;
-	uint8_t *_to = (uint8_t *)to;
-
-	for (i = 0; i < size; i++)
-		_to[i] = val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_read() - function to read the CMPT CIDX register
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	pointer to array to hold the values read
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_queue_cmpt_cidx_read(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-			QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	reg_addr += qid * QDMA_CMPT_CIDX_STEP;
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	reg_info->wrb_cidx =
-		FIELD_GET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK, reg_val);
-	reg_info->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-			reg_val));
-	reg_info->wrb_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-			reg_val));
-	reg_info->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_val));
-	reg_info->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK, reg_val));
-	reg_info->trig_mode =
-		(uint8_t)(FIELD_GET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK, reg_val));
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_initiate_flr() - function to initiate Function Level Reset
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_initiate_flr(void *dev_hndl, uint8_t is_vf)
-{
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, reg_addr, 1);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_flr_done() - function to check whether the FLR is done or not
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @done:	if FLR process completed ,  done is 1 else 0.
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_flr_done(void *dev_hndl, uint8_t is_vf, uint8_t *done)
-{
-	int rv;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_REG_FLR_STATUS :
-			QDMA_OFFSET_PF_REG_FLR_STATUS;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!done) {
-		qdma_log_error("%s: done is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* wait for it to become zero */
-	rv = hw_monitor_reg(dev_hndl, reg_addr, QDMA_FLR_STATUS_MASK,
-			0, 5 * QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US);
-	if (rv < 0)
-		*done = 0;
-	else
-		*done = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_is_config_bar() - function for the config bar verification
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_is_config_bar(void *dev_hndl, uint8_t is_vf, enum qdma_ip *ip)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_CONFIG_BLOCK_ID;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	/** TODO: Version register for VFs is 0x5014 for EQDMA and
-	 *  0x1014 for QDMA/Versal. First time reading 0x5014 for
-	 *  all the device and based on the upper 16 bits value
-	 *  (i.e. 0x1fd3), finding out whether its EQDMA or QDMA/Versal
-	 *  for EQDMA VFs.
-	 *  Need to modify this logic once the hardware team
-	 *  comes up with a common register for VFs
-	 */
-	if (is_vf) {
-		if (FIELD_GET(QDMA_GLBL2_VF_UNIQUE_ID_MASK, reg_val)
-				!= QDMA_MAGIC_NUMBER) {
-			/* Its either QDMA or Versal */
-			*ip = EQDMA_IP;
-			reg_addr = EQDMA_OFFSET_VF_VERSION;
-			reg_val = qdma_reg_read(dev_hndl, reg_addr);
-		} else {
-			*ip = QDMA_OR_VERSAL_IP;
-			return QDMA_SUCCESS;
-		}
-	}
-
-	if (FIELD_GET(QDMA_CONFIG_BLOCK_ID_MASK, reg_val)
-			!= QDMA_MAGIC_NUMBER) {
-		qdma_log_error("%s: Invalid config bar, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_INV_CONFIG_BAR);
-		return -QDMA_ERR_HWACC_INV_CONFIG_BAR;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, int *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = qdma_soft_reg_dump_buf_len();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		len = qdma_s80_hard_reg_dump_buf_len();
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_reg_info_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, int *buflen, int *num_regs)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buflen) {
-		qdma_log_error("%s: buflen is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!num_regs) {
-		qdma_log_error("%s: num_regs is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		len = 0;
-		*num_regs = 0;
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		len = qdma_s80_hard_reg_dump_buf_len();
-		*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		break;
-	case EQDMA_SOFT_IP:
-		len = eqdma_reg_dump_buf_len();
-		*num_regs = (int)((len / REG_DUMP_SIZE_PER_LINE) - 1);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*buflen = (int)len;
-	return rv;
-}
-
-int qdma_acc_context_buf_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	int rv = 0;
-
-	*buflen = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_context_buf_len(st, q_type, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_context_buf_len(st, q_type, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_context_buf_len(st, q_type, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-int qdma_acc_get_num_config_regs(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint32_t *num_regs)
-{
-	int rv = 0;
-
-	*num_regs = 0;
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_get_config_num_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_get_config_num_regs();
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_get_config_num_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*num_regs = rv;
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_get_config_regs() - Function to get qdma config registers.
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @reg_data:   pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		uint32_t *reg_data)
-{
-	struct xreg_info *reg_info;
-	uint32_t count = 0;
-	uint32_t num_regs;
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Get Config regs not valid for VF, err:%d\n",
-			__func__,
-			-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (reg_data == NULL) {
-		qdma_log_error("%s: reg_data is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		num_regs = qdma_get_config_num_regs();
-		reg_info = qdma_get_config_regs();
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		num_regs = qdma_s80_hard_get_config_num_regs();
-		reg_info = qdma_s80_hard_get_config_regs();
-		break;
-	case EQDMA_SOFT_IP:
-		num_regs = eqdma_get_config_num_regs();
-		reg_info = eqdma_get_config_regs();
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (count = 0; count < num_regs - 1; count++) {
-		reg_data[count] = qdma_reg_read(dev_hndl,
-				reg_info[count].addr);
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv =  qdma_soft_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_regs(dev_hndl, is_vf,
-				buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to dump fileds in
- * a specified register.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf || !buflen) {
-		qdma_log_error("%s: Invalid input buffer, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		QDMA_SNPRINTF_S(buf, buflen, DEBGFS_LINE_SZ,
-		"QDMA reg field info not supported for QDMA_SOFT_IP\n");
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_reg_info(dev_hndl, reg_addr,
-				num_regs, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @st:		Queue Mode (ST or MM)
- * @q_type:	Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_queue_context(dev_hndl,
-				st, q_type, ctxt_data, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP type
- * @hw_qid:     queue id
- * @st:		Queue Mode(ST or MM)
- * @q_type:	Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_read_dump_queue_context(dev_hndl,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_read_dump_queue_context(dev_hndl,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_read_dump_queue_context(dev_hndl,
-				qid_hw, st, q_type, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA ip type
- * @num_regs :		Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-
-	switch (ip_type) {
-	case QDMA_SOFT_IP:
-		rv = qdma_soft_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	case QDMA_VERSAL_HARD_IP:
-		rv = qdma_s80_hard_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	case EQDMA_SOFT_IP:
-		rv = eqdma_dump_config_reg_list(dev_hndl,
-				num_regs,
-				reg_list, buf, buflen);
-		break;
-	default:
-		qdma_log_error("%s: Invalid version number, err = %d",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_get_function_number() - Function to get the function number
- *
- * @dev_hndl:	device handle
- * @func_id:	pointer to hold the function id
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_get_function_number(void *dev_hndl, uint8_t *func_id)
-{
-	if (!dev_hndl || !func_id) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	*func_id = (uint8_t)qdma_reg_read(dev_hndl,
-			QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_setup() - Function to set up the qdma error
- * interrupt
- *
- * @dev_hndl:	device handle
- * @func_id:	Function id
- * @err_intr_index:	Interrupt vector
- * @rearm:	rearm or not
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_setup(void *dev_hndl, uint16_t func_id,
-		uint8_t err_intr_index)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val =
-		FIELD_SET(QDMA_GLBL_ERR_FUNC_MASK, func_id) |
-		FIELD_SET(QDMA_GLBL_ERR_VEC_MASK, err_intr_index);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_intr_rearm() - Function to re-arm the error interrupt
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_error_intr_rearm(void *dev_hndl)
-{
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT);
-	reg_val |= FIELD_SET(QDMA_GLBL_ERR_ARM_MASK, 1);
-
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_INT, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code)
-{
-	return qdma_get_err_code(acc_err_code);
-}
-
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access)
-{
-	int rv = QDMA_SUCCESS;
-	enum qdma_ip ip = EQDMA_IP;
-
-	struct qdma_hw_version_info version_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!hw_access) {
-		qdma_log_error("%s: hw_access is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_is_config_bar(dev_hndl, is_vf, &ip);
-	if (rv != QDMA_SUCCESS) {
-		qdma_log_error("%s: config bar passed is INVALID, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	qdma_memset(hw_access, 0, sizeof(struct qdma_hw_access));
-
-	if (ip == EQDMA_IP)
-		hw_access->qdma_get_version = &eqdma_get_version;
-	else
-		hw_access->qdma_get_version = &qdma_get_version;
-	hw_access->qdma_init_ctxt_memory = &qdma_init_ctxt_memory;
-	hw_access->qdma_fmap_conf = &qdma_fmap_conf;
-	hw_access->qdma_sw_ctx_conf = &qdma_sw_ctx_conf;
-	hw_access->qdma_pfetch_ctx_conf = &qdma_pfetch_ctx_conf;
-	hw_access->qdma_cmpt_ctx_conf = &qdma_cmpt_ctx_conf;
-	hw_access->qdma_hw_ctx_conf = &qdma_hw_ctx_conf;
-	hw_access->qdma_credit_ctx_conf = &qdma_credit_ctx_conf;
-	hw_access->qdma_indirect_intr_ctx_conf = &qdma_indirect_intr_ctx_conf;
-	hw_access->qdma_set_default_global_csr = &qdma_set_default_global_csr;
-	hw_access->qdma_global_csr_conf = &qdma_global_csr_conf;
-	hw_access->qdma_global_writeback_interval_conf =
-					&qdma_global_writeback_interval_conf;
-	hw_access->qdma_queue_pidx_update = &qdma_queue_pidx_update;
-	hw_access->qdma_queue_cmpt_cidx_read = &qdma_queue_cmpt_cidx_read;
-	hw_access->qdma_queue_cmpt_cidx_update = &qdma_queue_cmpt_cidx_update;
-	hw_access->qdma_queue_intr_cidx_update = &qdma_queue_intr_cidx_update;
-	hw_access->qdma_mm_channel_conf = &qdma_mm_channel_conf;
-	hw_access->qdma_get_user_bar = &qdma_get_user_bar;
-	hw_access->qdma_get_function_number = &qdma_get_function_number;
-	hw_access->qdma_get_device_attributes = &qdma_get_device_attributes;
-	hw_access->qdma_hw_error_intr_setup = &qdma_hw_error_intr_setup;
-	hw_access->qdma_hw_error_intr_rearm = &qdma_hw_error_intr_rearm;
-	hw_access->qdma_hw_error_enable = &qdma_hw_error_enable;
-	hw_access->qdma_hw_get_error_name = &qdma_hw_get_error_name;
-	hw_access->qdma_hw_error_process = &qdma_hw_error_process;
-	hw_access->qdma_dump_config_regs = &qdma_soft_dump_config_regs;
-	hw_access->qdma_dump_queue_context = &qdma_soft_dump_queue_context;
-	hw_access->qdma_read_dump_queue_context =
-					&qdma_soft_read_dump_queue_context;
-	hw_access->qdma_dump_intr_context = &qdma_dump_intr_context;
-	hw_access->qdma_is_legacy_intr_pend = &qdma_is_legacy_intr_pend;
-	hw_access->qdma_clear_pend_legacy_intr = &qdma_clear_pend_legacy_intr;
-	hw_access->qdma_legacy_intr_conf = &qdma_legacy_intr_conf;
-	hw_access->qdma_initiate_flr = &qdma_initiate_flr;
-	hw_access->qdma_is_flr_done = &qdma_is_flr_done;
-	hw_access->qdma_get_error_code = &qdma_get_error_code;
-	hw_access->qdma_read_reg_list = &qdma_read_reg_list;
-	hw_access->qdma_dump_config_reg_list =
-			&qdma_soft_dump_config_reg_list;
-	hw_access->qdma_dump_reg_info = &qdma_dump_reg_info;
-	hw_access->mbox_base_pf = QDMA_OFFSET_MBOX_BASE_PF;
-	hw_access->mbox_base_vf = QDMA_OFFSET_MBOX_BASE_VF;
-	hw_access->qdma_max_errors = QDMA_ERRS_ALL;
-
-	rv = hw_access->qdma_get_version(dev_hndl, is_vf, &version_info);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	qdma_log_info("Device Type: %s\n",
-			qdma_get_device_type(version_info.device_type));
-
-	qdma_log_info("IP Type: %s\n",
-			qdma_get_ip_type(version_info.ip_type));
-
-	qdma_log_info("Vivado Release: %s\n",
-		qdma_get_vivado_release_id(version_info.vivado_release));
-
-	if (version_info.ip_type == QDMA_VERSAL_HARD_IP) {
-		hw_access->qdma_init_ctxt_memory =
-				&qdma_s80_hard_init_ctxt_memory;
-		hw_access->qdma_qid2vec_conf = &qdma_s80_hard_qid2vec_conf;
-		hw_access->qdma_fmap_conf = &qdma_s80_hard_fmap_conf;
-		hw_access->qdma_sw_ctx_conf = &qdma_s80_hard_sw_ctx_conf;
-		hw_access->qdma_pfetch_ctx_conf =
-				&qdma_s80_hard_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &qdma_s80_hard_cmpt_ctx_conf;
-		hw_access->qdma_hw_ctx_conf = &qdma_s80_hard_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf =
-				&qdma_s80_hard_credit_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&qdma_s80_hard_indirect_intr_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-					&qdma_s80_hard_set_default_global_csr;
-		hw_access->qdma_queue_pidx_update =
-				&qdma_s80_hard_queue_pidx_update;
-		hw_access->qdma_queue_cmpt_cidx_update =
-				&qdma_s80_hard_queue_cmpt_cidx_update;
-		hw_access->qdma_queue_intr_cidx_update =
-				&qdma_s80_hard_queue_intr_cidx_update;
-		hw_access->qdma_get_user_bar = &qdma_cmp_get_user_bar;
-		hw_access->qdma_get_device_attributes =
-				&qdma_s80_hard_get_device_attributes;
-		hw_access->qdma_dump_config_regs =
-				&qdma_s80_hard_dump_config_regs;
-		hw_access->qdma_dump_intr_context =
-				&qdma_s80_hard_dump_intr_context;
-		hw_access->qdma_hw_error_enable =
-				&qdma_s80_hard_hw_error_enable;
-		hw_access->qdma_hw_error_process =
-				&qdma_s80_hard_hw_error_process;
-		hw_access->qdma_hw_get_error_name =
-				&qdma_s80_hard_hw_get_error_name;
-		hw_access->qdma_legacy_intr_conf = NULL;
-		hw_access->qdma_read_reg_list = &qdma_s80_hard_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&qdma_s80_hard_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&qdma_s80_hard_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&qdma_s80_hard_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &qdma_s80_hard_dump_reg_info;
-		hw_access->qdma_max_errors = QDMA_S80_HARD_ERRS_ALL;
-	}
-
-	if (version_info.ip_type == EQDMA_SOFT_IP) {
-		hw_access->qdma_init_ctxt_memory = &eqdma_init_ctxt_memory;
-		hw_access->qdma_sw_ctx_conf = &eqdma_sw_ctx_conf;
-		hw_access->qdma_pfetch_ctx_conf = &eqdma_pfetch_ctx_conf;
-		hw_access->qdma_cmpt_ctx_conf = &eqdma_cmpt_ctx_conf;
-		hw_access->qdma_indirect_intr_ctx_conf =
-				&eqdma_indirect_intr_ctx_conf;
-		hw_access->qdma_dump_config_regs = &eqdma_dump_config_regs;
-		hw_access->qdma_dump_intr_context = &eqdma_dump_intr_context;
-		hw_access->qdma_hw_error_enable = &eqdma_hw_error_enable;
-		hw_access->qdma_hw_error_process = &eqdma_hw_error_process;
-		hw_access->qdma_hw_get_error_name = &eqdma_hw_get_error_name;
-		hw_access->qdma_hw_ctx_conf = &eqdma_hw_ctx_conf;
-		hw_access->qdma_credit_ctx_conf = &eqdma_credit_ctx_conf;
-		hw_access->qdma_set_default_global_csr =
-				&eqdma_set_default_global_csr;
-		hw_access->qdma_get_device_attributes =
-				&eqdma_get_device_attributes;
-		hw_access->qdma_get_user_bar = &eqdma_get_user_bar;
-		hw_access->qdma_read_reg_list = &eqdma_read_reg_list;
-		hw_access->qdma_dump_config_reg_list =
-				&eqdma_dump_config_reg_list;
-		hw_access->qdma_dump_queue_context =
-				&eqdma_dump_queue_context;
-		hw_access->qdma_read_dump_queue_context =
-				&eqdma_read_dump_queue_context;
-		hw_access->qdma_dump_reg_info = &eqdma_dump_reg_info;
-		/* All CSR and Queue space register belongs to Window 0.
-		 * Mailbox and MSIX register belongs to Window 1
-		 * Therefore, Mailbox offsets are different for EQDMA
-		 * Mailbox offset for PF : 128K + original address
-		 * Mailbox offset for VF : 16K + original address
-		 */
-		hw_access->mbox_base_pf = EQDMA_OFFSET_MBOX_BASE_PF;
-		hw_access->mbox_base_vf = EQDMA_OFFSET_MBOX_BASE_VF;
-		hw_access->qdma_max_errors = EQDMA_ERRS_ALL;
-	}
-
-	return QDMA_SUCCESS;
-}
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.h
deleted file mode 100644
index d2dbf4a..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_common.h
+++ /dev/null
@@ -1,902 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_ACCESS_COMMON_H_
-#define __QDMA_ACCESS_COMMON_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_access_export.h"
-#include "qdma_access_errors.h"
-
-/* QDMA HW version string array length */
-#define QDMA_HW_VERSION_STRING_LEN			32
-
-#define ENABLE_INIT_CTXT_MEMORY			1
-
-#ifdef GCC_COMPILER
-static inline uint32_t get_trailing_zeros(uint64_t x)
-{
-	uint32_t rv =
-		__builtin_ffsll(x) - 1;
-	return rv;
-}
-#else
-static inline uint32_t get_trailing_zeros(uint64_t value)
-{
-	uint32_t pos = 0;
-
-	if ((value & 0xffffffff) == 0) {
-		pos += 32;
-		value >>= 32;
-	}
-	if ((value & 0xffff) == 0) {
-		pos += 16;
-		value >>= 16;
-	}
-	if ((value & 0xff) == 0) {
-		pos += 8;
-		value >>= 8;
-	}
-	if ((value & 0xf) == 0) {
-		pos += 4;
-		value >>= 4;
-	}
-	if ((value & 0x3) == 0) {
-		pos += 2;
-		value >>= 2;
-	}
-	if ((value & 0x1) == 0)
-		pos += 1;
-
-	return pos;
-}
-#endif
-
-#define FIELD_SHIFT(mask)       get_trailing_zeros(mask)
-#define FIELD_SET(mask, val)    ((val << FIELD_SHIFT(mask)) & mask)
-#define FIELD_GET(mask, reg)    ((reg & mask) >> FIELD_SHIFT(mask))
-
-
-/* CSR Default values */
-#define DEFAULT_MAX_DSC_FETCH               6
-#define DEFAULT_WRB_INT                     QDMA_WRB_INTERVAL_128
-#define DEFAULT_PFCH_STOP_THRESH            256
-#define DEFAULT_PFCH_NUM_ENTRIES_PER_Q      8
-#define DEFAULT_PFCH_MAX_Q_CNT              16
-#define DEFAULT_C2H_INTR_TIMER_TICK         25
-#define DEFAULT_CMPT_COAL_TIMER_CNT         5
-#define DEFAULT_CMPT_COAL_TIMER_TICK        25
-#define DEFAULT_CMPT_COAL_MAX_BUF_SZ        32
-
-#define QDMA_BAR_NUM                        6
-
-/** Maximum data vectors to be used for each function
- * TODO: Please note that for 2018.2 only one vector would be used
- * per pf and only one ring would be created for this vector
- * It is also assumed that all functions have the same number of data vectors
- * and currently different number of vectors per PF is not supported
- */
-#define QDMA_NUM_DATA_VEC_FOR_INTR_CXT  1
-
-enum ind_ctxt_cmd_op {
-	QDMA_CTXT_CMD_CLR,
-	QDMA_CTXT_CMD_WR,
-	QDMA_CTXT_CMD_RD,
-	QDMA_CTXT_CMD_INV
-};
-
-enum ind_ctxt_cmd_sel {
-	QDMA_CTXT_SEL_SW_C2H,
-	QDMA_CTXT_SEL_SW_H2C,
-	QDMA_CTXT_SEL_HW_C2H,
-	QDMA_CTXT_SEL_HW_H2C,
-	QDMA_CTXT_SEL_CR_C2H,
-	QDMA_CTXT_SEL_CR_H2C,
-	QDMA_CTXT_SEL_CMPT,
-	QDMA_CTXT_SEL_PFTCH,
-	QDMA_CTXT_SEL_INT_COAL,
-	QDMA_CTXT_SEL_PASID_RAM_LOW,
-	QDMA_CTXT_SEL_PASID_RAM_HIGH,
-	QDMA_CTXT_SEL_TIMER,
-	QDMA_CTXT_SEL_FMAP,
-};
-
-/* polling a register */
-#define	QDMA_REG_POLL_DFLT_INTERVAL_US	10		    /* 10us per poll */
-#define	QDMA_REG_POLL_DFLT_TIMEOUT_US	(500*1000)	/* 500ms */
-
-/** Constants */
-#define QDMA_NUM_RING_SIZES                                 16
-#define QDMA_NUM_C2H_TIMERS                                 16
-#define QDMA_NUM_C2H_BUFFER_SIZES                           16
-#define QDMA_NUM_C2H_COUNTERS                               16
-#define QDMA_MM_CONTROL_RUN                                 0x1
-#define QDMA_MM_CONTROL_STEP                                0x100
-#define QDMA_MAGIC_NUMBER                                   0x1fd3
-#define QDMA_PIDX_STEP                                      0x10
-#define QDMA_CMPT_CIDX_STEP                                 0x10
-#define QDMA_INT_CIDX_STEP                                  0x10
-
-
-/** QDMA_IND_REG_SEL_PFTCH */
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK                  GENMASK(15, 3)
-#define QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK                  GENMASK(2, 0)
-
-/** QDMA_IND_REG_SEL_CMPT */
-#define QDMA_COMPL_CTXT_BADDR_GET_H_MASK                    GENMASK_ULL(63, 38)
-#define QDMA_COMPL_CTXT_BADDR_GET_L_MASK                    GENMASK_ULL(37, 12)
-#define QDMA_COMPL_CTXT_PIDX_GET_H_MASK                     GENMASK(15, 4)
-#define QDMA_COMPL_CTXT_PIDX_GET_L_MASK                     GENMASK(3, 0)
-
-#define QDMA_INTR_CTXT_BADDR_GET_H_MASK                     GENMASK_ULL(63, 61)
-#define QDMA_INTR_CTXT_BADDR_GET_M_MASK                     GENMASK_ULL(60, 29)
-#define QDMA_INTR_CTXT_BADDR_GET_L_MASK                     GENMASK_ULL(28, 12)
-
-#define     QDMA_GLBL2_MM_CMPT_EN_MASK                      BIT(2)
-#define     QDMA_GLBL2_FLR_PRESENT_MASK                     BIT(1)
-#define     QDMA_GLBL2_MAILBOX_EN_MASK                      BIT(0)
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-
-/* ------------------------ indirect register context fields -----------*/
-union qdma_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:11;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-#define QDMA_IND_CTXT_DATA_NUM_REGS                         8
-
-/**
- * struct qdma_indirect_ctxt_regs - Inirect Context programming registers
- */
-struct qdma_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_IND_CTXT_DATA_NUM_REGS];
-	union qdma_ind_ctxt_cmd cmd;
-};
-
-/**
- * struct qdma_fmap_cfg - fmap config data structure
- */
-struct qdma_fmap_cfg {
-
-	/** @qbase - queue base for the function */
-	uint16_t qbase;
-	/** @qmax - maximum queues in the function */
-	uint16_t qmax;
-};
-
-/**
- * struct qdma_qid2vec - qid to vector mapping data structure
- */
-struct qdma_qid2vec {
-
-	/** @c2h_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t c2h_vector;
-	/** @c2h_en_coal - C2H Interrupt aggregation enable */
-	uint8_t c2h_en_coal;
-	/** @h2c_vector - For direct interrupt, it is the interrupt
-	 * vector index of msix table;
-	 * for indirect interrupt, it is the ring index
-	 */
-	uint8_t h2c_vector;
-	/** @h2c_en_coal - H2C Interrupt aggregation enable */
-	uint8_t h2c_en_coal;
-};
-
-/**
- * struct qdma_descq_sw_ctxt - descq SW context config data structure
- */
-struct qdma_descq_sw_ctxt {
-
-	/** @ring_bs_addr - ring base address */
-	uint64_t ring_bs_addr;
-	/** @vec - vector number */
-	uint16_t vec;
-	/** @pidx - initial producer index */
-	uint16_t pidx;
-	/** @irq_arm - Interrupt Arm */
-	uint8_t irq_arm;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @qen - Indicates that the queue is enabled */
-	uint8_t qen;
-	/** @frcd_en -Enable fetch credit */
-	uint8_t frcd_en;
-	/** @wbi_chk -Writeback/Interrupt after pending check */
-	uint8_t wbi_chk;
-	/** @wbi_intvl_en -Write back/Interrupt interval */
-	uint8_t wbi_intvl_en;
-	/** @at - Address tanslation */
-	uint8_t at;
-	/** @fetch_max - Maximum number of descriptor fetches outstanding */
-	uint8_t fetch_max;
-	/** @rngsz_idx - Descriptor ring size index */
-	uint8_t rngsz_idx;
-	/** @desc_sz -Descriptor fetch size */
-	uint8_t desc_sz;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @mm_chn - MM channel */
-	uint8_t mm_chn;
-	/** @wbk_en -Writeback enable */
-	uint8_t wbk_en;
-	/** @irq_en -Interrupt enable */
-	uint8_t irq_en;
-	/** @port_id -Port_id */
-	uint8_t port_id;
-	/** @irq_no_last - No interrupt was sent */
-	uint8_t irq_no_last;
-	/** @err - Error status */
-	uint8_t err;
-	/** @err_wb_sent -writeback/interrupt was sent for an error */
-	uint8_t err_wb_sent;
-	/** @irq_req - Interrupt due to error waiting to be sent */
-	uint8_t irq_req;
-	/** @mrkr_dis - Marker disable */
-	uint8_t mrkr_dis;
-	/** @is_mm - MM mode */
-	uint8_t is_mm;
-	/** @intr_aggr - interrupt aggregation enable */
-	uint8_t intr_aggr;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @virtio_en - Queue is in Virtio Mode */
-	uint8_t virtio_en;
-	/** @pack_byp_out - descs on desc output interface can be packed */
-	uint8_t pack_byp_out;
-	/** @irq_byp - IRQ Bypass mode */
-	uint8_t irq_byp;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @virtio_dsc_base - Virtio Desc Base Address */
-	uint64_t virtio_dsc_base;
-};
-
-/**
- * struct qdma_descq_hw_ctxt - descq hw context config data structure
- */
-struct qdma_descq_hw_ctxt {
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @crd_use - credits consumed */
-	uint16_t crd_use;
-	/** @dsc_pend - descriptors pending */
-	uint8_t dsc_pend;
-	/** @idl_stp_b -Queue invalid and no descriptors pending */
-	uint8_t idl_stp_b;
-	/** @evt_pnd - Event pending */
-	uint8_t evt_pnd;
-	/** @fetch_pnd -Descriptor fetch pending */
-	uint8_t fetch_pnd;
-};
-
-/**
- * struct qdma_descq_credit_ctxt - descq credit context config data structure
- */
-struct qdma_descq_credit_ctxt {
-
-	/** @credit -Fetch credits received. */
-	uint32_t credit;
-};
-
-/**
- * struct qdma_descq_prefetch_ctxt - descq pfetch context config data structure
- */
-struct qdma_descq_prefetch_ctxt {
-	/** @sw_crdt -Software credit */
-	uint16_t sw_crdt;
-	/** @bypass - bypass enable */
-	uint8_t bypass;
-	/** @bufsz_idx - c2h buffer size index */
-	uint8_t bufsz_idx;
-	/** @port_id - port ID */
-	uint8_t port_id;
-	/** @var_desc - Variable Descriptor */
-	uint8_t var_desc;
-	/** @num_pftch - Number of descs prefetched */
-	uint16_t num_pftch;
-	/** @err -Error detected on this queue */
-	uint8_t err;
-	/** @pfch_en - Enable prefetch */
-	uint8_t pfch_en;
-	/** @pfch - Queue is in prefetch */
-	uint8_t pfch;
-	/** @valid - context is valid */
-	uint8_t valid;
-};
-
-/**
- * struct qdma_descq_cmpt_ctxt - descq completion context config data structure
- */
-struct qdma_descq_cmpt_ctxt {
-	/** @bs_addr - completion ring base address */
-	uint64_t bs_addr;
-	/** @vec - Interrupt Vector */
-	uint16_t vec;
-	/** @pidx_l - producer index low */
-	uint16_t pidx;
-	/** @cidx - consumer index */
-	uint16_t cidx;
-	/** @en_stat_desc - Enable Completion Status writes */
-	uint8_t en_stat_desc;
-	/** @en_int - Enable Completion interrupts */
-	uint8_t en_int;
-	/** @trig_mode - Interrupt and Completion Status Write Trigger Mode */
-	uint8_t trig_mode;
-	/** @fnc_id - Function ID */
-	uint8_t fnc_id;
-	/** @counter_idx - Index to counter register */
-	uint8_t counter_idx;
-	/** @timer_idx - Index to timer register */
-	uint8_t timer_idx;
-	/** @in_st - Interrupt State */
-	uint8_t in_st;
-	/** @color - initial color bit to be used on Completion */
-	uint8_t color;
-	/** @ringsz_idx - Completion ring size index to ring size registers */
-	uint8_t ringsz_idx;
-	/** @desc_sz  -descriptor size */
-	uint8_t desc_sz;
-	/** @valid  - context valid */
-	uint8_t valid;
-	/** @err - error status */
-	uint8_t err;
-	/**
-	 * @user_trig_pend - user logic initiated interrupt is
-	 * pending to be generate
-	 */
-	uint8_t user_trig_pend;
-	/** @timer_running - timer is running on this queue */
-	uint8_t timer_running;
-	/** @full_upd - Full update */
-	uint8_t full_upd;
-	/** @ovf_chk_dis - Completion Ring Overflow Check Disable */
-	uint8_t ovf_chk_dis;
-	/** @at -Address Translation */
-	uint8_t at;
-	/** @int_aggr -Interrupt Aggregation */
-	uint8_t int_aggr;
-	/** @dis_intr_on_vf - Disbale interrupt with VF */
-	uint8_t dis_intr_on_vf;
-	/** @vio - queue is in VirtIO mode */
-	uint8_t vio;
-	/** @dir_c2h - DMA direction is C2H */
-	uint8_t dir_c2h;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @vio_eop - Virtio End-of-packet */
-	uint8_t vio_eop;
-	/** @sh_cmpt - Shared Completion Queue */
-	uint8_t sh_cmpt;
-};
-
-/**
- * struct qdma_indirect_intr_ctxt - indirect interrupt context config data
- * structure
- */
-struct qdma_indirect_intr_ctxt {
-	/** @baddr_4k -Base address of Interrupt Aggregation Ring */
-	uint64_t baddr_4k;
-	/** @vec - Interrupt vector index in msix table */
-	uint16_t vec;
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @valid - context valid */
-	uint8_t valid;
-	/** @int_st -Interrupt State */
-	uint8_t int_st;
-	/** @color - Color bit */
-	uint8_t color;
-	/** @page_size - Interrupt Aggregation Ring size */
-	uint8_t page_size;
-	/** @at - Address translation */
-	uint8_t at;
-	/** @host_id - Host ID */
-	uint8_t host_id;
-	/** @pasid - PASID */
-	uint32_t pasid;
-	/** @pasid_en - PASID Enable */
-	uint8_t pasid_en;
-	/** @func_id - Function ID */
-	uint16_t func_id;
-};
-
-struct qdma_hw_version_info {
-	/** @rtl_version - RTL Version */
-	enum qdma_rtl_version rtl_version;
-	/** @vivado_release - Vivado Release id */
-	enum qdma_vivado_release_id vivado_release;
-	/** @versal_ip_state - Versal IP state */
-	enum qdma_ip_type ip_type;
-	/** @device_type - Device Type */
-	enum qdma_device_type device_type;
-	/** @qdma_rtl_version_str - RTL Version string*/
-	char qdma_rtl_version_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_vivado_release_id_str - Vivado Release id string*/
-	char qdma_vivado_release_id_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_device_type_str - Qdma device type string*/
-	char qdma_device_type_str[QDMA_HW_VERSION_STRING_LEN];
-	/** @qdma_versal_ip_state_str - Versal IP state string*/
-	char qdma_ip_type_str[QDMA_HW_VERSION_STRING_LEN];
-};
-
-#define CTXT_ENTRY_NAME_SZ        64
-struct qctx_entry {
-	char		name[CTXT_ENTRY_NAME_SZ];
-	uint32_t	value;
-};
-
-/**
- * @struct - qdma_descq_context
- * @brief	queue context information
- */
-struct qdma_descq_context {
-	struct qdma_qid2vec qid2vec;
-	struct qdma_fmap_cfg fmap;
-	struct qdma_descq_sw_ctxt sw_ctxt;
-	struct qdma_descq_hw_ctxt hw_ctxt;
-	struct qdma_descq_credit_ctxt cr_ctxt;
-	struct qdma_descq_prefetch_ctxt pfetch_ctxt;
-	struct qdma_descq_cmpt_ctxt cmpt_ctxt;
-};
-
-/**
- * struct qdma_q_pidx_reg_info - Software PIDX register fields
- */
-struct qdma_q_pidx_reg_info {
-	/** @pidx - Producer Index */
-	uint16_t pidx;
-	/** @irq_en - Interrupt enable */
-	uint8_t irq_en;
-};
-
-/**
- * struct qdma_q_intr_cidx_reg_info - Interrupt Ring CIDX register fields
- */
-struct qdma_intr_cidx_reg_info {
-	/** @sw_cidx - Software Consumer Index */
-	uint16_t sw_cidx;
-	/** @rng_idx - Ring Index of the Interrupt Aggregation ring */
-	uint8_t rng_idx;
-};
-
-/**
- * struct qdma_q_cmpt_cidx_reg_info - CMPT CIDX register fields
- */
-struct qdma_q_cmpt_cidx_reg_info {
-	/** @wrb_cidx - CMPT Consumer Index */
-	uint16_t wrb_cidx;
-	/** @counter_idx - Counter Threshold Index */
-	uint8_t counter_idx;
-	/** @timer_idx - Timer Count Index */
-	uint8_t timer_idx;
-	/** @trig_mode - Trigger mode */
-	uint8_t trig_mode;
-	/** @wrb_en - Enable status descriptor for CMPT */
-	uint8_t wrb_en;
-	/** @irq_en - Enable Interrupt for CMPT */
-	uint8_t irq_en;
-};
-
-
-/**
- * struct qdma_csr_info - Global CSR info data structure
- */
-struct qdma_csr_info {
-	/** @ringsz: ring size values */
-	uint16_t ringsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @bufsz: buffer size values */
-	uint16_t bufsz[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @timer_cnt: timer threshold values */
-	uint8_t timer_cnt[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @cnt_thres: counter threshold values */
-	uint8_t cnt_thres[QDMA_GLOBAL_CSR_ARRAY_SZ];
-	/** @wb_intvl: writeback interval */
-	uint8_t wb_intvl;
-};
-
-#define QDMA_MAX_REGISTER_DUMP	14
-
-/**
- * struct qdma_reg_data - Structure to
- * hold address value and pair
- */
-struct qdma_reg_data {
-	/** @reg_addr: register address */
-	uint32_t reg_addr;
-	/** @reg_val: register value */
-	uint32_t reg_val;
-};
-
-/**
- * enum qdma_hw_access_type - To hold hw access type
- */
-enum qdma_hw_access_type {
-	QDMA_HW_ACCESS_READ,
-	QDMA_HW_ACCESS_WRITE,
-	QDMA_HW_ACCESS_CLEAR,
-	QDMA_HW_ACCESS_INVALIDATE,
-	QDMA_HW_ACCESS_MAX
-};
-
-/**
- * enum qdma_global_csr_type - To hold global csr type
- */
-enum qdma_global_csr_type {
-	QDMA_CSR_RING_SZ,
-	QDMA_CSR_TIMER_CNT,
-	QDMA_CSR_CNT_TH,
-	QDMA_CSR_BUF_SZ,
-	QDMA_CSR_MAX
-};
-
-/**
- * enum status_type - To hold enable/disable status type
- */
-enum status_type {
-	DISABLE = 0,
-	ENABLE = 1,
-};
-
-/**
- * enum qdma_reg_read_type - Indicates reg read type
- */
-enum qdma_reg_read_type {
-	/** @QDMA_REG_READ_PF_ONLY: Read the register for PFs only */
-	QDMA_REG_READ_PF_ONLY,
-	/** @QDMA_REG_READ_VF_ONLY: Read the register for VFs only */
-	QDMA_REG_READ_VF_ONLY,
-	/** @QDMA_REG_READ_PF_VF: Read the register for both PF and VF */
-	QDMA_REG_READ_PF_VF,
-	/** @QDMA_REG_READ_MAX: Reg read enum max */
-	QDMA_REG_READ_MAX
-};
-
-/**
- * enum qdma_reg_read_groups - Indicates reg read groups
- */
-enum qdma_reg_read_groups {
-	/** @QDMA_REG_READ_GROUP_1: Read the register from  0x000 to 0x288 */
-	QDMA_REG_READ_GROUP_1,
-	/** @QDMA_REG_READ_GROUP_2: Read the register from 0x400 to 0xAFC */
-	QDMA_REG_READ_GROUP_2,
-	/** @QDMA_REG_READ_GROUP_3: Read the register from 0xB00 to 0xE28 */
-	QDMA_REG_READ_GROUP_3,
-	/** @QDMA_REG_READ_GROUP_4: Read the register Mailbox Registers */
-	QDMA_REG_READ_GROUP_4,
-	/** @QDMA_REG_READ_GROUP_MAX: Reg read max groups */
-	QDMA_REG_READ_GROUP_MAX
-};
-
-void qdma_write_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, const uint32_t *values);
-
-void qdma_read_csr_values(void *dev_hndl, uint32_t reg_offst,
-		uint32_t idx, uint32_t cnt, uint32_t *values);
-
-int dump_reg(char *buf, int buf_sz, uint32_t raddr,
-		const char *rname, uint32_t rval);
-
-int hw_monitor_reg(void *dev_hndl, uint32_t reg, uint32_t mask,
-		uint32_t val, uint32_t interval_us,
-		uint32_t timeout_us);
-
-void qdma_memset(void *to, uint8_t val, uint32_t size);
-
-int qdma_acc_reg_dump_buf_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, int *buflen);
-
-int qdma_acc_reg_info_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, int *buflen, int *num_regs);
-
-int qdma_acc_context_buf_len(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_acc_get_num_config_regs(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint32_t *num_regs);
-
-/*
- * struct qdma_hw_access - Structure to hold HW access function pointers
- */
-struct qdma_hw_access {
-	int (*qdma_set_default_global_csr)(void *dev_hndl);
-	int (*qdma_global_csr_conf)(void *dev_hndl, uint8_t index,
-					uint8_t count, uint32_t *csr_val,
-					enum qdma_global_csr_type csr_type,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_global_writeback_interval_conf)(void *dev_hndl,
-					enum qdma_wrb_interval *wb_int,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_init_ctxt_memory)(void *dev_hndl);
-	int (*qdma_qid2vec_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				 struct qdma_qid2vec *ctxt,
-				 enum qdma_hw_access_type access_type);
-	int (*qdma_fmap_conf)(void *dev_hndl, uint16_t func_id,
-					struct qdma_fmap_cfg *config,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_sw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_sw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_pfetch_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_prefetch_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_cmpt_ctx_conf)(void *dev_hndl, uint16_t hw_qid,
-					struct qdma_descq_cmpt_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_hw_ctx_conf)(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-					struct qdma_descq_hw_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_credit_ctx_conf)(void *dev_hndl, uint8_t c2h,
-					uint16_t hw_qid,
-					struct qdma_descq_credit_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_indirect_intr_ctx_conf)(void *dev_hndl, uint16_t ring_index,
-					struct qdma_indirect_intr_ctxt *ctxt,
-					enum qdma_hw_access_type access_type);
-	int (*qdma_queue_pidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				uint8_t is_c2h,
-				const struct qdma_q_pidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_read)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_cmpt_cidx_update)(void *dev_hndl, uint8_t is_vf,
-			uint16_t qid,
-			const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-	int (*qdma_queue_intr_cidx_update)(void *dev_hndl, uint8_t is_vf,
-				uint16_t qid,
-				const struct qdma_intr_cidx_reg_info *reg_info);
-	int (*qdma_mm_channel_conf)(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h, uint8_t enable);
-	int (*qdma_get_user_bar)(void *dev_hndl, uint8_t is_vf,
-				uint8_t func_id, uint8_t *user_bar);
-	int (*qdma_get_function_number)(void *dev_hndl, uint8_t *func_id);
-	int (*qdma_get_version)(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_version_info *version_info);
-	int (*qdma_get_device_attributes)(void *dev_hndl,
-					struct qdma_dev_attributes *dev_info);
-	int (*qdma_hw_error_intr_setup)(void *dev_hndl, uint16_t func_id,
-					uint8_t err_intr_index);
-	int (*qdma_hw_error_intr_rearm)(void *dev_hndl);
-	int (*qdma_hw_error_enable)(void *dev_hndl,
-			uint32_t err_idx);
-	const char *(*qdma_hw_get_error_name)(uint32_t err_idx);
-	int (*qdma_hw_error_process)(void *dev_hndl);
-	int (*qdma_dump_config_regs)(void *dev_hndl, uint8_t is_vf, char *buf,
-					uint32_t buflen);
-	int (*qdma_dump_reg_info)(void *dev_hndl, uint32_t reg_addr,
-				  uint32_t num_regs,
-				  char *buf,
-				  uint32_t buflen);
-	int (*qdma_dump_queue_context)(void *dev_hndl,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			struct qdma_descq_context *ctxt_data,
-			char *buf, uint32_t buflen);
-	int (*qdma_read_dump_queue_context)(void *dev_hndl,
-			uint16_t qid_hw,
-			uint8_t st,
-			enum qdma_dev_q_type q_type,
-			char *buf, uint32_t buflen);
-	int (*qdma_dump_intr_context)(void *dev_hndl,
-			struct qdma_indirect_intr_ctxt *intr_ctx,
-			int ring_index,
-			char *buf, uint32_t buflen);
-	int (*qdma_is_legacy_intr_pend)(void *dev_hndl);
-	int (*qdma_clear_pend_legacy_intr)(void *dev_hndl);
-	int (*qdma_legacy_intr_conf)(void *dev_hndl, enum status_type enable);
-	int (*qdma_initiate_flr)(void *dev_hndl, uint8_t is_vf);
-	int (*qdma_is_flr_done)(void *dev_hndl, uint8_t is_vf, uint8_t *done);
-	int (*qdma_get_error_code)(int acc_err_code);
-	int (*qdma_read_reg_list)(void *dev_hndl, uint8_t is_vf,
-			uint16_t reg_rd_group,
-			uint16_t *total_regs,
-			struct qdma_reg_data *reg_list);
-	int (*qdma_dump_config_reg_list)(void *dev_hndl,
-			uint32_t num_regs,
-			struct qdma_reg_data *reg_list,
-			char *buf, uint32_t buflen);
-	uint32_t mbox_base_pf;
-	uint32_t mbox_base_vf;
-	uint32_t qdma_max_errors;
-};
-
-/*****************************************************************************/
-/**
- * qdma_hw_access_init() - Function to get the QDMA hardware
- *			access function pointers
- *	This function should be called once per device from
- *	device_open()/probe(). Caller shall allocate memory for
- *	qdma_hw_access structure and store pointer to it in their
- *	per device structure. Config BAR validation will be done
- *	inside this function
- *
- * @dev_hndl: device handle
- * @is_vf: Whether PF or VF
- * @hw_access: qdma_hw_access structure pointer.
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_access_init(void *dev_hndl, uint8_t is_vf,
-				struct qdma_hw_access *hw_access);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config registers
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @reg_data:  pointer to register data to be filled
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_get_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		uint32_t *reg_data);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @ip_type:	QDMA IP Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		enum qdma_ip_type ip_type,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_reg_info() - Function to get qdma reg info in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @reg_addr:   Register Address
- * @num_regs:   Number of Registers
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_reg_info(void *dev_hndl,
-		enum qdma_ip_type ip_type, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_queue_context() - Function to dump qdma queue context data in a
- * buffer where context information is already available in 'ctxt_data'
- * structure pointer buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @ctxt_data:	Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_dump_queue_context(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_acc_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @ip_type:	QDMA IP Type
- * @qid_hw:     queue id
- * @st:		ST or MM
- * @q_type:	Queue Type
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_acc_read_dump_queue_context(void *dev_hndl,
-				enum qdma_ip_type ip_type,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-
-/*****************************************************************************/
-/**
- * qdma_acc_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @ip_type:		QDMA IP Type
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_acc_dump_config_reg_list(void *dev_hndl,
-		enum qdma_ip_type ip_type,
-		uint32_t num_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-/*****************************************************************************/
-/**
- * qdma_get_error_code() - function to get the qdma access mapped
- *				error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_error_code(int acc_err_code);
-
-/*****************************************************************************/
-/**
- * qdma_fetch_version_details() - Function to fetch the version details from the
- *  version register value
- *
- * @is_vf           :    Whether PF or VF
- * @version_reg_val :    Value of the version register
- * @version_info :       Pointer to store the version details.
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_fetch_version_details(uint8_t is_vf, uint32_t version_reg_val,
-		struct qdma_hw_version_info *version_info);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* QDMA_ACCESS_COMMON_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_errors.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_errors.h
deleted file mode 100644
index f260bdb..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_errors.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_ACCESS_ERRORS_H_
-#define __QDMA_ACCESS_ERRORS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library error codes definitions
- *
- * Header file *qdma_access_errors.h* defines error codes for common library
- */
-
-struct err_code_map {
-	int acc_err_code;
-	int err_code;
-};
-
-#define QDMA_HW_ERR_NOT_DETECTED		1
-
-enum qdma_access_error_codes {
-	QDMA_SUCCESS = 0,
-	QDMA_ERR_INV_PARAM,
-	QDMA_ERR_NO_MEM,
-	QDMA_ERR_HWACC_BUSY_TIMEOUT,
-	QDMA_ERR_HWACC_INV_CONFIG_BAR,
-	QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,
-	QDMA_ERR_HWACC_BAR_NOT_FOUND,
-	QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,   /* 7 */
-
-	QDMA_ERR_RM_RES_EXISTS,				/* 8 */
-	QDMA_ERR_RM_RES_NOT_EXISTS,
-	QDMA_ERR_RM_DEV_EXISTS,
-	QDMA_ERR_RM_DEV_NOT_EXISTS,
-	QDMA_ERR_RM_NO_QUEUES_LEFT,
-	QDMA_ERR_RM_QMAX_CONF_REJECTED,		/* 13 */
-
-	QDMA_ERR_MBOX_FMAP_WR_FAILED,		/* 14 */
-	QDMA_ERR_MBOX_NUM_QUEUES,
-	QDMA_ERR_MBOX_INV_QID,
-	QDMA_ERR_MBOX_INV_RINGSZ,
-	QDMA_ERR_MBOX_INV_BUFSZ,
-	QDMA_ERR_MBOX_INV_CNTR_TH,
-	QDMA_ERR_MBOX_INV_TMR_TH,
-	QDMA_ERR_MBOX_INV_MSG,
-	QDMA_ERR_MBOX_SEND_BUSY,
-	QDMA_ERR_MBOX_NO_MSG_IN,
-	QDMA_ERR_MBOX_REG_READ_FAILED,
-	QDMA_ERR_MBOX_ALL_ZERO_MSG,			/* 25 */
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_ERRORS_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_export.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_export.h
deleted file mode 100644
index 736af87..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_export.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_ACCESS_EXPORT_H_
-#define __QDMA_ACCESS_EXPORT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-
-/** QDMA Global CSR array size */
-#define QDMA_GLOBAL_CSR_ARRAY_SZ        16
-
-/**
- * struct qdma_dev_attributes - QDMA device attributes
- */
-struct qdma_dev_attributes {
-	/** @num_pfs - Num of PFs*/
-	uint8_t num_pfs;
-	/** @num_qs - Num of Queues */
-	uint16_t num_qs;
-	/** @flr_present - FLR resent or not? */
-	uint8_t flr_present:1;
-	/** @st_en - ST mode supported or not? */
-	uint8_t st_en:1;
-	/** @mm_en - MM mode supported or not? */
-	uint8_t mm_en:1;
-	/** @mm_cmpt_en - MM with Completions supported or not? */
-	uint8_t mm_cmpt_en:1;
-	/** @mailbox_en - Mailbox supported or not? */
-	uint8_t mailbox_en:1;
-	/** @debug_mode - Debug mode is enabled/disabled for IP */
-	uint8_t debug_mode:1;
-	/** @desc_eng_mode - Descriptor Engine mode:
-	 * Internal only/Bypass only/Internal & Bypass
-	 */
-	uint8_t desc_eng_mode:2;
-	/** @mm_channel_max - Num of MM channels */
-	uint8_t mm_channel_max;
-
-	/** Below are the list of HW features which are populated by qdma_access
-	 * based on RTL version
-	 */
-	/** @qid2vec_ctx - To indicate support of qid2vec context */
-	uint8_t qid2vec_ctx:1;
-	/** @cmpt_ovf_chk_dis - To indicate support of overflow check
-	 * disable in CMPT ring
-	 */
-	uint8_t cmpt_ovf_chk_dis:1;
-	/** @mailbox_intr - To indicate support of mailbox interrupt */
-	uint8_t mailbox_intr:1;
-	/** @sw_desc_64b - To indicate support of 64 bytes C2H/H2C
-	 * descriptor format
-	 */
-	uint8_t sw_desc_64b:1;
-	/** @cmpt_desc_64b - To indicate support of 64 bytes CMPT
-	 * descriptor format
-	 */
-	uint8_t cmpt_desc_64b:1;
-	/** @dynamic_bar - To indicate support of dynamic bar detection */
-	uint8_t dynamic_bar:1;
-	/** @legacy_intr - To indicate support of legacy interrupt */
-	uint8_t legacy_intr:1;
-	/** @cmpt_trig_count_timer - To indicate support of counter + timer
-	 * trigger mode
-	 */
-	uint8_t cmpt_trig_count_timer:1;
-};
-
-/** qdma_dev_attributes structure size */
-#define QDMA_DEV_ATTR_STRUCT_SIZE	(sizeof(struct qdma_dev_attributes))
-
-/** global_csr_conf structure size */
-#define QDMA_DEV_GLOBAL_CSR_STRUCT_SIZE	(sizeof(struct global_csr_conf))
-
-/**
- * enum qdma_dev_type - To hold qdma device type
- */
-enum qdma_dev_type {
-	QDMA_DEV_PF,
-	QDMA_DEV_VF
-};
-
-/**
- * enum qdma_dev_q_type: Q type
- */
-enum qdma_dev_q_type {
-	/** @QDMA_DEV_Q_TYPE_H2C: H2C Q */
-	QDMA_DEV_Q_TYPE_H2C,
-	/** @QDMA_DEV_Q_TYPE_C2H: C2H Q */
-	QDMA_DEV_Q_TYPE_C2H,
-	/** @QDMA_DEV_Q_TYPE_CMPT: CMPT Q */
-	QDMA_DEV_Q_TYPE_CMPT,
-	/** @QDMA_DEV_Q_TYPE_MAX: Total Q types */
-	QDMA_DEV_Q_TYPE_MAX
-};
-
-/**
- * @enum qdma_desc_size - QDMA queue descriptor size
- */
-enum qdma_desc_size {
-	/** @QDMA_DESC_SIZE_8B - 8 byte descriptor */
-	QDMA_DESC_SIZE_8B,
-	/** @QDMA_DESC_SIZE_16B - 16 byte descriptor */
-	QDMA_DESC_SIZE_16B,
-	/** @QDMA_DESC_SIZE_32B - 32 byte descriptor */
-	QDMA_DESC_SIZE_32B,
-	/** @QDMA_DESC_SIZE_64B - 64 byte descriptor */
-	QDMA_DESC_SIZE_64B
-};
-
-/**
- * @enum qdma_cmpt_update_trig_mode - Interrupt and Completion status write
- * trigger mode
- */
-enum qdma_cmpt_update_trig_mode {
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_DIS - disabled */
-	QDMA_CMPT_UPDATE_TRIG_MODE_DIS,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_EVERY - every */
-	QDMA_CMPT_UPDATE_TRIG_MODE_EVERY,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT - user counter */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_CNT,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR - user */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR - user timer */
-	QDMA_CMPT_UPDATE_TRIG_MODE_USR_TMR,
-	/** @QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR - timer + counter combo */
-	QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR
-};
-
-
-/**
- * @enum qdma_indirect_intr_ring_size - Indirect interrupt ring size
- */
-enum qdma_indirect_intr_ring_size {
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_4KB - Accommodates 512 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_4KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_8KB - Accommodates 1024 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_8KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_12KB - Accommodates 1536 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_12KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_16KB - Accommodates 2048 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_16KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_20KB - Accommodates 2560 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_20KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_24KB - Accommodates 3072 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_24KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_28KB - Accommodates 3584 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_28KB,
-	/** @QDMA_INDIRECT_INTR_RING_SIZE_32KB - Accommodates 4096 entries */
-	QDMA_INDIRECT_INTR_RING_SIZE_32KB
-};
-
-/**
- * @enum qdma_wrb_interval - writeback update interval
- */
-enum qdma_wrb_interval {
-	/** @QDMA_WRB_INTERVAL_4 - writeback update interval of 4 */
-	QDMA_WRB_INTERVAL_4,
-	/** @QDMA_WRB_INTERVAL_8 - writeback update interval of 8 */
-	QDMA_WRB_INTERVAL_8,
-	/** @QDMA_WRB_INTERVAL_16 - writeback update interval of 16 */
-	QDMA_WRB_INTERVAL_16,
-	/** @QDMA_WRB_INTERVAL_32 - writeback update interval of 32 */
-	QDMA_WRB_INTERVAL_32,
-	/** @QDMA_WRB_INTERVAL_64 - writeback update interval of 64 */
-	QDMA_WRB_INTERVAL_64,
-	/** @QDMA_WRB_INTERVAL_128 - writeback update interval of 128 */
-	QDMA_WRB_INTERVAL_128,
-	/** @QDMA_WRB_INTERVAL_256 - writeback update interval of 256 */
-	QDMA_WRB_INTERVAL_256,
-	/** @QDMA_WRB_INTERVAL_512 - writeback update interval of 512 */
-	QDMA_WRB_INTERVAL_512,
-	/** @QDMA_NUM_WRB_INTERVALS - total number of writeback intervals */
-	QDMA_NUM_WRB_INTERVALS
-};
-
-enum qdma_rtl_version {
-	/** @QDMA_RTL_BASE - RTL Base  */
-	QDMA_RTL_BASE,
-	/** @QDMA_RTL_PATCH - RTL Patch  */
-	QDMA_RTL_PATCH,
-	/** @QDMA_RTL_NONE - Not a valid RTL version */
-	QDMA_RTL_NONE,
-};
-
-enum qdma_vivado_release_id {
-	/** @QDMA_VIVADO_2018_3 - Vivado version 2018.3  */
-	QDMA_VIVADO_2018_3,
-	/** @QDMA_VIVADO_2019_1 - Vivado version 2019.1  */
-	QDMA_VIVADO_2019_1,
-	/** @QDMA_VIVADO_2019_2 - Vivado version 2019.2  */
-	QDMA_VIVADO_2019_2,
-	/** @QDMA_VIVADO_2020_1 - Vivado version 2020.1  */
-	QDMA_VIVADO_2020_1,
-	/** @QDMA_VIVADO_2020_2 - Vivado version 2020.2  */
-	QDMA_VIVADO_2020_2,
-	/** @QDMA_VIVADO_NONE - Not a valid Vivado version*/
-	QDMA_VIVADO_NONE
-};
-
-enum qdma_ip_type {
-	/** @QDMA_VERSAL_HARD_IP - Hard IP  */
-	QDMA_VERSAL_HARD_IP,
-	/** @QDMA_VERSAL_SOFT_IP - Soft IP  */
-	QDMA_VERSAL_SOFT_IP,
-	/** @QDMA_SOFT_IP - Hard IP  */
-	QDMA_SOFT_IP,
-	/** @EQDMA_SOFT_IP - Soft IP  */
-	EQDMA_SOFT_IP,
-	/** @QDMA_VERSAL_NONE - Not versal device  */
-	QDMA_NONE_IP
-};
-
-
-enum qdma_device_type {
-	/** @QDMA_DEVICE_SOFT - UltraScale+ IP's  */
-	QDMA_DEVICE_SOFT,
-	/** @QDMA_DEVICE_VERSAL -VERSAL IP  */
-	QDMA_DEVICE_VERSAL,
-	/** @QDMA_DEVICE_NONE - Not a valid device  */
-	QDMA_DEVICE_NONE
-};
-
-enum qdma_desc_eng_mode {
-	/** @QDMA_DESC_ENG_INTERNAL_BYPASS - Internal and Bypass mode */
-	QDMA_DESC_ENG_INTERNAL_BYPASS,
-	/** @QDMA_DESC_ENG_BYPASS_ONLY - Only Bypass mode  */
-	QDMA_DESC_ENG_BYPASS_ONLY,
-	/** @QDMA_DESC_ENG_INTERNAL_ONLY - Only Internal mode  */
-	QDMA_DESC_ENG_INTERNAL_ONLY,
-	/** @QDMA_DESC_ENG_MODE_MAX - Max of desc engine modes  */
-	QDMA_DESC_ENG_MODE_MAX
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_ACCESS_EXPORT_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_version.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_version.h
deleted file mode 100644
index 9b6d442..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_access_version.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_ACCESS_VERSION_H_
-#define __QDMA_ACCESS_VERSION_H_
-
-
-#define QDMA_VERSION_MAJOR	2020
-#define QDMA_VERSION_MINOR	2
-#define QDMA_VERSION_PATCH	0
-
-#define QDMA_VERSION_STR	\
-	__stringify(QDMA_VERSION_MAJOR) "." \
-	__stringify(QDMA_VERSION_MINOR) "." \
-	__stringify(QDMA_VERSION_PATCH)
-
-#define QDMA_VERSION  \
-	((QDMA_VERSION_MAJOR)*1000 + \
-	 (QDMA_VERSION_MINOR)*100 + \
-	  QDMA_VERSION_PATCH)
-
-
-#endif /* __QDMA_ACCESS_VERSION_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.c
deleted file mode 100644
index 46691a8..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma_list.h"
-
-void qdma_list_init_head(struct qdma_list_head *head)
-{
-	if (head)
-		head->prev = head->next = head;
-}
-
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head)
-{
-	head->prev->next = node;
-	node->next = head;
-	node->prev = head->prev;
-	head->prev = node;
-}
-
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node)
-{
-	node->prev->next = new_node;
-	new_node->prev = node->prev;
-	new_node->next = node;
-	node->prev = new_node;
-}
-
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node)
-{
-	new_node->prev = node;
-	new_node->next = node->next;
-	node->next->prev = new_node;
-	node->next = new_node;
-}
-
-
-void qdma_list_del(struct qdma_list_head *node)
-{
-	if (node) {
-		if (node->prev)
-			node->prev->next = node->next;
-		if (node->next)
-			node->next->prev = node->prev;
-	}
-}
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.h
deleted file mode 100644
index f6a59c8..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_list.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_LIST_H_
-#define __QDMA_LIST_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library provided list implementation definitions
- *
- * Header file *qdma_list.h* defines APIs for creating and managing list.
- */
-
-/**
- * struct qdma_list_head - data type for creating a list node
- */
-struct qdma_list_head {
-	struct qdma_list_head *prev;
-	struct qdma_list_head *next;
-	void *priv;
-};
-
-#define QDMA_LIST_HEAD_INIT(name) { &(name), &(name), NULL }
-
-#define QDMA_LIST_HEAD(name) \
-	struct qdma_list_head name = QDMA_LIST_HEAD_INIT(name)
-
-#define QDMA_LIST_GET_DATA(node) (node->priv)
-#define QDMA_LIST_SET_DATA(node, data) ((node)->priv = data)
-
-
-#define qdma_list_for_each_safe(pos, n, head) \
-	for (pos = (head)->next, n = pos->next; pos != (head); \
-		pos = n, n = pos->next)
-
-
-#define qdma_list_is_last_entry(entry, head) ((entry)->next == (head))
-
-#define qdma_list_is_empty(head) ((head)->next == (head))
-
-/*****************************************************************************/
-/**
- * qdma_list_init_head(): Init the list head
- *
- * @head:     head of the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_init_head(struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_add_tail(): add the given @node at the end of the list with @head
- *
- * @node:     new entry which has to be added at the end of the list with @head
- * @head:     head of the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_add_tail(struct qdma_list_head *node,
-			  struct qdma_list_head *head);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_before(): add the given @node at the before a @node
- *
- * @new_node:     new entry which has to be added before @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_before(struct qdma_list_head *new_node,
-				    struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_insert_after(): add the given @node at the after a @node
- *
- * @new_node:     new entry which has to be added after @node
- * @node:         reference node in the list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_insert_after(struct qdma_list_head *new_node,
-				   struct qdma_list_head *node);
-
-/*****************************************************************************/
-/**
- * qdma_list_del(): delete an node from the list
- *
- * @node:     node in a list
- *
- * This API needs to be called with holding the lock to the list
- *
- * Return:	None
- *****************************************************************************/
-void qdma_list_del(struct qdma_list_head *node);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_LIST_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_platform.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_platform.h
deleted file mode 100644
index cd7d64d..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_platform.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_PLATFORM_H_
-#define __QDMA_PLATFORM_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA platform specific interface definitions
- *
- * Header file *qdma_platform_env.h* defines function signatures that are
- * required to be implemented by platform specific drivers.
- */
-
-#include "qdma_access_common.h"
-
-/*****************************************************************************/
-/**
- * qdma_calloc(): allocate memory and initialize with 0
- *
- * @num_blocks:  number of blocks of contiguous memory of @size
- * @size:    size of each chunk of memory
- *
- * Return: pointer to the memory block created on success and NULL on failure
- *****************************************************************************/
-void *qdma_calloc(uint32_t num_blocks, uint32_t size);
-
-/*****************************************************************************/
-/**
- * qdma_memfree(): free the memory
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_memfree(void *memptr);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_init() - Init lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-int qdma_resource_lock_init(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_take() - take lock to access resource management APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_take(void);
-
-/*****************************************************************************/
-/**
- * qdma_resource_lock_give() - release lock after accessing resource management
- * APIs
- *
- * @return	None
- *****************************************************************************/
-void qdma_resource_lock_give(void);
-
-/*****************************************************************************/
-/**
- * qdma_reg_write() - Register write API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to write
- * @val:	value to be written
- *
- * Return:	Nothing
- *****************************************************************************/
-void qdma_reg_write(void *dev_hndl, uint32_t reg_offst, uint32_t val);
-
-/*****************************************************************************/
-/**
- * qdma_reg_read() - Register read API.
- *
- * @dev_hndl:   device handle
- * @reg_offst:  QDMA Config bar register offset to be read
- *
- * Return: Value read
- *****************************************************************************/
-uint32_t qdma_reg_read(void *dev_hndl, uint32_t reg_offst);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_lock() - Lock function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_lock(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_reg_access_release() - Release function for Register access
- *
- * @dev_hndl:   device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_reg_access_release(void *dev_hndl);
-
-/*****************************************************************************/
-/**
- * qdma_udelay() - delay function to be used in the common library
- *
- * @delay_usec:   delay in microseconds
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_udelay(uint32_t delay_usec);
-
-/*****************************************************************************/
-/**
- * qdma_get_hw_access() - function to get the qdma_hw_access
- *
- * @dev_hndl:   device handle
- * @dev_cap: pointer to hold qdma_hw_access structure
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-void qdma_get_hw_access(void *dev_hndl, struct qdma_hw_access **hw);
-
-/*****************************************************************************/
-/**
- * qdma_strncpy(): copy n size string from source to destination buffer
- *
- * @memptr:  pointer to the memory block
- *
- * Return:	None
- *****************************************************************************/
-void qdma_strncpy(char *dest, const char *src, size_t n);
-
-
-/*****************************************************************************/
-/**
- * qdma_get_err_code() - function to get the qdma access mapped error code
- *
- * @acc_err_code: qdma access error code
- *
- * Return:   returns the platform specific error code
- *****************************************************************************/
-int qdma_get_err_code(int acc_err_code);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_PLATFORM_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_reg_dump.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_reg_dump.h
deleted file mode 100644
index 6ad7f70..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_reg_dump.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_REG_DUMP_H__
-#define __QDMA_REG_DUMP_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform_env.h"
-#include "qdma_access_common.h"
-
-#define DEBUGFS_DEV_INFO_SZ		(300)
-
-#define QDMA_REG_NAME_LENGTH	64
-#define DEBUGFS_INTR_CNTX_SZ	(2048 * 2)
-#define DBGFS_ERR_BUFLEN		(64)
-#define DEBGFS_LINE_SZ			(81)
-#define DEBGFS_GEN_NAME_SZ		(40)
-#define REG_DUMP_SIZE_PER_LINE	(256)
-
-#define MAX_QDMA_CFG_REGS			(200)
-
-#define QDMA_MM_EN_SHIFT          0
-#define QDMA_CMPT_EN_SHIFT        1
-#define QDMA_ST_EN_SHIFT          2
-#define QDMA_MAILBOX_EN_SHIFT     3
-
-#define QDMA_MM_MODE              (1 << QDMA_MM_EN_SHIFT)
-#define QDMA_COMPLETION_MODE      (1 << QDMA_CMPT_EN_SHIFT)
-#define QDMA_ST_MODE              (1 << QDMA_ST_EN_SHIFT)
-#define QDMA_MAILBOX              (1 << QDMA_MAILBOX_EN_SHIFT)
-
-
-#define QDMA_MM_ST_MODE \
-	(QDMA_MM_MODE | QDMA_COMPLETION_MODE | QDMA_ST_MODE)
-
-#define GET_CAPABILITY_MASK(mm_en, st_en, mm_cmpt_en, mailbox_en)  \
-	((mm_en << QDMA_MM_EN_SHIFT) | \
-			((mm_cmpt_en | st_en) << QDMA_CMPT_EN_SHIFT) | \
-			(st_en << QDMA_ST_EN_SHIFT) | \
-			(mailbox_en << QDMA_MAILBOX_EN_SHIFT))
-
-
-struct regfield_info {
-		const char *field_name;
-		uint32_t field_mask;
-};
-
-struct xreg_info {
-	const char *name;
-	uint32_t addr;
-	uint32_t repeat;
-	uint32_t step;
-	uint8_t shift;
-	uint8_t len;
-	uint8_t is_debug_reg;
-	uint8_t mode;
-	uint8_t read_type;
-	uint8_t num_bitfields;
-	struct regfield_info *bitfields;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.c
deleted file mode 100644
index 3cb7967..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.c
+++ /dev/null
@@ -1,794 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma_resource_mgmt.h"
-#include "qdma_platform.h"
-#include "qdma_list.h"
-#include "qdma_access_errors.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_resource_mgmt.tmh"
-#endif
-
-struct qdma_resource_entry {
-	int qbase;
-	uint32_t total_q;
-	struct qdma_list_head node;
-};
-
-/** per function entry */
-struct qdma_dev_entry {
-	uint16_t func_id;
-	uint32_t active_h2c_qcnt;
-	uint32_t active_c2h_qcnt;
-	uint32_t active_cmpt_qcnt;
-	struct qdma_resource_entry entry;
-};
-
-/** for hodling the qconf_entry structure */
-struct qdma_resource_master {
-	/** DMA device index this resource belongs to */
-	uint32_t dma_device_index;
-	/** starting pci bus number this resource belongs to */
-	uint32_t pci_bus_start;
-	/** ending pci bus number this resource belongs to */
-	uint32_t pci_bus_end;
-	/** total queue this resource manager handles */
-	uint32_t total_q;
-	/** queue base from which this resource manger handles */
-	int qbase;
-	/** for attaching to master resource list */
-	struct qdma_list_head node;
-	/** for holding device entries */
-	struct qdma_list_head dev_list;
-	/** for holding free resource list */
-	struct qdma_list_head free_list;
-	/** active queue count per resource*/
-	uint32_t active_qcnt;
-};
-
-static QDMA_LIST_HEAD(master_resource_list);
-
-static struct qdma_resource_master *qdma_find_master_resource_entry(
-		uint32_t bus_start, uint32_t bus_end)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->pci_bus_start == bus_start &&
-			q_resource->pci_bus_end == bus_end) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_master *qdma_get_master_resource_entry(
-		uint32_t dma_device_index)
-{
-	struct qdma_list_head *entry, *tmp;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &master_resource_list) {
-		struct qdma_resource_master *q_resource =
-			(struct qdma_resource_master *)
-				QDMA_LIST_GET_DATA(entry);
-
-		if (q_resource->dma_device_index == dma_device_index) {
-			qdma_resource_lock_give();
-			return q_resource;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_dev_entry *qdma_get_dev_entry(uint32_t dma_device_index,
-						uint16_t func_id)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-
-	if (!q_resource)
-		return NULL;
-
-	qdma_resource_lock_take();
-	qdma_list_for_each_safe(entry, tmp, &q_resource->dev_list) {
-		struct qdma_dev_entry *dev_entry = (struct qdma_dev_entry *)
-			QDMA_LIST_GET_DATA(entry);
-
-		if (dev_entry->func_id == func_id) {
-			qdma_resource_lock_give();
-			return dev_entry;
-		}
-	}
-	qdma_resource_lock_give();
-
-	return NULL;
-}
-
-static struct qdma_resource_entry *qdma_free_entry_create(int q_base,
-							  uint32_t total_q)
-{
-	struct qdma_resource_entry *entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_master));
-	if (entry == NULL)
-		return NULL;
-
-	entry->total_q = total_q;
-	entry->qbase = q_base;
-
-	return entry;
-}
-
-static void qdma_submit_to_free_list(struct qdma_dev_entry *dev_entry,
-				     struct qdma_list_head *head)
-{
-	struct qdma_resource_entry *streach_node = NULL;
-	struct qdma_list_head *entry, *tmp;
-	/* create a new node to be added to empty free list */
-	struct qdma_resource_entry *new_node = NULL;
-
-	if (!dev_entry->entry.total_q)
-		return;
-
-	if (qdma_list_is_empty(head)) {
-		new_node = qdma_free_entry_create(dev_entry->entry.qbase,
-				dev_entry->entry.total_q);
-		if (new_node == NULL)
-			return;
-		QDMA_LIST_SET_DATA(&new_node->node, new_node);
-		qdma_list_add_tail(&new_node->node, head);
-		/* reset device entry q resource params */
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-	} else {
-		qdma_list_for_each_safe(entry, tmp, head) {
-			struct qdma_resource_entry *node =
-				(struct qdma_resource_entry *)
-					QDMA_LIST_GET_DATA(entry);
-
-			/* insert the free slot at appropriate place */
-			if ((node->qbase > dev_entry->entry.qbase) ||
-				qdma_list_is_last_entry(entry, head)) {
-				new_node = qdma_free_entry_create(
-						dev_entry->entry.qbase,
-						dev_entry->entry.total_q);
-				if (new_node == NULL)
-					return;
-				QDMA_LIST_SET_DATA(&new_node->node, new_node);
-				if (node->qbase > dev_entry->entry.qbase)
-					qdma_list_insert_before(&new_node->node,
-								&node->node);
-				else
-					qdma_list_add_tail(&new_node->node,
-							   head);
-				/* reset device entry q resource params */
-				dev_entry->entry.qbase = -1;
-				dev_entry->entry.total_q = 0;
-				break;
-			}
-		}
-	}
-
-	/* de-fragment (merge contiguous resource chunks) if possible */
-	qdma_list_for_each_safe(entry, tmp, head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (!streach_node)
-			streach_node = node;
-		else {
-			if ((streach_node->qbase + streach_node->total_q) ==
-					(uint32_t)node->qbase) {
-				streach_node->total_q += node->total_q;
-				qdma_list_del(&node->node);
-				qdma_memfree(node);
-			} else
-				streach_node = node;
-		}
-	}
-}
-
-/**
- * qdma_resource_entry() - return the best free list entry node that can
- *                         accommodate the new request
- */
-static struct qdma_resource_entry *qdma_get_resource_node(uint32_t qmax,
-							  int qbase,
-				   struct qdma_list_head *free_list_head)
-{
-	struct qdma_list_head *entry, *tmp;
-	struct qdma_resource_entry *best_fit_node = NULL;
-
-	/* try to honor requested qbase */
-	if (qbase >= 0) {
-		qdma_list_for_each_safe(entry, tmp, free_list_head) {
-			struct qdma_resource_entry *node =
-			(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-			if ((qbase >= node->qbase) &&
-					(node->qbase + node->total_q) >=
-					(qbase + qmax)) {
-				best_fit_node = node;
-				goto fragment_free_list;
-			}
-		}
-	}
-	best_fit_node = NULL;
-
-	/* find a best node to accommodate q resource request */
-	qdma_list_for_each_safe(entry, tmp, free_list_head) {
-		struct qdma_resource_entry *node =
-		(struct qdma_resource_entry *)QDMA_LIST_GET_DATA(entry);
-
-		if (node->total_q >= qmax) {
-			if (!best_fit_node || (best_fit_node->total_q >=
-					node->total_q)) {
-				best_fit_node = node;
-				qbase = best_fit_node->qbase;
-			}
-		}
-	}
-
-fragment_free_list:
-	if (!best_fit_node)
-		return NULL;
-
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax == best_fit_node->total_q))
-		return best_fit_node;
-
-	/* split free resource node accordingly */
-	if ((qbase == best_fit_node->qbase) &&
-			(qmax != best_fit_node->total_q)) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase + qmax;
-		uint32_t lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q -= lqmax;
-	} else if ((qbase > best_fit_node->qbase) &&
-			((qbase + qmax) == (best_fit_node->qbase +
-					best_fit_node->total_q))) {
-		/*
-		 * create an extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-		best_fit_node->total_q = qmax;
-		best_fit_node->qbase = qbase;
-	} else {
-		/*
-		 * create two extra node to hold the extra queues from this node
-		 */
-		struct qdma_resource_entry *new_entry = NULL;
-		int lqbase = best_fit_node->qbase;
-		uint32_t lqmax = qbase - best_fit_node->qbase;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_before(&new_entry->node,
-					&best_fit_node->node);
-
-		best_fit_node->qbase = qbase;
-		best_fit_node->total_q -= lqmax;
-
-		lqbase = best_fit_node->qbase + qmax;
-		lqmax = best_fit_node->total_q - qmax;
-
-		new_entry = qdma_free_entry_create(lqbase, lqmax);
-		if (new_entry == NULL)
-			return NULL;
-		QDMA_LIST_SET_DATA(&new_entry->node, new_entry);
-		qdma_list_insert_after(&new_entry->node,
-				       &best_fit_node->node);
-		best_fit_node->total_q = qmax;
-	}
-
-	return best_fit_node;
-}
-
-static int qdma_request_q_resource(struct qdma_dev_entry *dev_entry,
-				    uint32_t new_qmax, int new_qbase,
-				    struct qdma_list_head *free_list_head)
-{
-	uint32_t qmax = dev_entry->entry.total_q;
-	int qbase = dev_entry->entry.qbase;
-	struct qdma_resource_entry *free_entry_node = NULL;
-	int rv = QDMA_SUCCESS;
-
-	/* submit already allocated queues back to free list before requesting
-	 * new resource
-	 */
-	qdma_submit_to_free_list(dev_entry, free_list_head);
-
-	if (!new_qmax)
-		return 0;
-	/* check if the request can be accomodated */
-	free_entry_node = qdma_get_resource_node(new_qmax, new_qbase,
-						 free_list_head);
-	if (free_entry_node == NULL) {
-		/* request cannot be accommodated. Restore the dev_entry */
-		free_entry_node = qdma_get_resource_node(qmax, qbase,
-							 free_list_head);
-		rv = -QDMA_ERR_RM_NO_QUEUES_LEFT;
-		qdma_log_error("%s: Not enough queues, err:%d\n", __func__,
-					   -QDMA_ERR_RM_NO_QUEUES_LEFT);
-		if (free_entry_node == NULL) {
-			dev_entry->entry.qbase = -1;
-			dev_entry->entry.total_q = 0;
-
-			return rv;
-		}
-	}
-
-	dev_entry->entry.qbase = free_entry_node->qbase;
-	dev_entry->entry.total_q = free_entry_node->total_q;
-
-	qdma_list_del(&free_entry_node->node);
-	qdma_memfree(free_entry_node);
-
-	return rv;
-}
-
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index)
-{
-	struct qdma_resource_master *q_resource;
-	struct qdma_resource_entry *free_entry;
-	static int index;
-
-	q_resource = qdma_find_master_resource_entry(bus_start, bus_end);
-	if (q_resource) {
-		*dma_device_index = q_resource->dma_device_index;
-		qdma_log_debug("%s: Resource already created", __func__);
-		qdma_log_debug("for this device(%d)\n",
-				q_resource->dma_device_index);
-		return -QDMA_ERR_RM_RES_EXISTS;
-	}
-
-	*dma_device_index = index;
-
-	q_resource = (struct qdma_resource_master *)qdma_calloc(1,
-		sizeof(struct qdma_resource_master));
-	if (!q_resource) {
-		qdma_log_error("%s: no memory for q_resource, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	free_entry = (struct qdma_resource_entry *)
-		qdma_calloc(1, sizeof(struct qdma_resource_entry));
-	if (!free_entry) {
-		qdma_memfree(q_resource);
-		qdma_log_error("%s: no memory for free_entry, err:%d\n",
-					__func__,
-					-QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_resource_lock_take();
-	q_resource->dma_device_index = index;
-	q_resource->pci_bus_start = bus_start;
-	q_resource->pci_bus_end = bus_end;
-	q_resource->total_q = total_q;
-	q_resource->qbase = q_base;
-	qdma_list_init_head(&q_resource->dev_list);
-	qdma_list_init_head(&q_resource->free_list);
-	QDMA_LIST_SET_DATA(&q_resource->node, q_resource);
-	QDMA_LIST_SET_DATA(&q_resource->free_list, q_resource);
-	qdma_list_add_tail(&q_resource->node, &master_resource_list);
-
-
-	free_entry->total_q = total_q;
-	free_entry->qbase = q_base;
-	QDMA_LIST_SET_DATA(&free_entry->node, free_entry);
-	qdma_list_add_tail(&free_entry->node, &q_resource->free_list);
-	qdma_resource_lock_give();
-
-	qdma_log_debug("%s: New master resource created at %d",
-		__func__, index);
-	++index;
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_master_resource_destroy(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_list_head *entry, *tmp;
-
-	if (!q_resource)
-		return;
-	qdma_resource_lock_take();
-	if (!qdma_list_is_empty(&q_resource->dev_list)) {
-		qdma_resource_lock_give();
-		return;
-	}
-	qdma_list_for_each_safe(entry, tmp, &q_resource->free_list) {
-		struct qdma_resource_entry *free_entry =
-			(struct qdma_resource_entry *)
-				QDMA_LIST_GET_DATA(entry);
-
-		qdma_list_del(&free_entry->node);
-		qdma_memfree(free_entry);
-	}
-	qdma_list_del(&q_resource->node);
-	qdma_memfree(q_resource);
-	qdma_resource_lock_give();
-}
-
-
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_resource_lock_take();
-		dev_entry = (struct qdma_dev_entry *)
-			qdma_calloc(1, sizeof(struct qdma_dev_entry));
-		if (dev_entry == NULL) {
-			qdma_resource_lock_give();
-			qdma_log_error("%s: Insufficient memory, err:%d\n",
-						__func__,
-						-QDMA_ERR_NO_MEM);
-			return -QDMA_ERR_NO_MEM;
-		}
-		dev_entry->func_id = func_id;
-		dev_entry->entry.qbase = -1;
-		dev_entry->entry.total_q = 0;
-		QDMA_LIST_SET_DATA(&dev_entry->entry.node, dev_entry);
-		qdma_list_add_tail(&dev_entry->entry.node,
-				   &q_resource->dev_list);
-		qdma_resource_lock_give();
-		qdma_log_info("%s: Created the dev entry successfully\n",
-						__func__);
-	} else {
-		qdma_log_error("%s: Dev entry already created, err = %d\n",
-						__func__,
-						-QDMA_ERR_RM_DEV_EXISTS);
-		return -QDMA_ERR_RM_DEV_EXISTS;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found.\n", __func__);
-		return;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found\n", __func__);
-		return;
-	}
-	qdma_resource_lock_take();
-	qdma_submit_to_free_list(dev_entry, &q_resource->free_list);
-
-	qdma_list_del(&dev_entry->entry.node);
-	qdma_memfree(dev_entry);
-	qdma_resource_lock_give();
-}
-
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-
-	/* if any active queue on device, no more new qmax
-	 * configuration allowed
-	 */
-	if (dev_entry->active_h2c_qcnt ||
-			dev_entry->active_c2h_qcnt ||
-			dev_entry->active_cmpt_qcnt) {
-		qdma_resource_lock_give();
-		qdma_log_error("%s: Qs active. Config blocked, err: %d\n",
-				__func__, -QDMA_ERR_RM_QMAX_CONF_REJECTED);
-		return -QDMA_ERR_RM_QMAX_CONF_REJECTED;
-	}
-
-	rv = qdma_request_q_resource(dev_entry, qmax, *qbase,
-				&q_resource->free_list);
-
-	*qbase = dev_entry->entry.qbase;
-	qdma_resource_lock_give();
-
-
-	return rv;
-}
-
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_debug("%s: Dev Entry not created yet\n", __func__);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	*qbase = dev_entry->entry.qbase;
-	*qmax = dev_entry->entry.total_q;
-	qdma_resource_lock_give();
-
-	return QDMA_SUCCESS;
-}
-
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t qmax;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return QDMA_DEV_Q_OUT_OF_RANGE;
-	}
-
-	qdma_resource_lock_take();
-	qmax = dev_entry->entry.qbase + dev_entry->entry.total_q;
-	if (dev_entry->entry.total_q && (qid_hw < qmax) &&
-			((int)qid_hw >= dev_entry->entry.qbase)) {
-		qdma_resource_lock_give();
-		return QDMA_DEV_Q_IN_RANGE;
-	}
-	qdma_resource_lock_give();
-
-	return QDMA_DEV_Q_OUT_OF_RANGE;
-}
-
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-	uint32_t *active_qcnt = NULL;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev Entry not found, err: %d\n",
-					__func__,
-					-QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		active_qcnt = &dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		active_qcnt = &dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		active_qcnt = &dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	if (active_qcnt && (dev_entry->entry.total_q < ((*active_qcnt) + 1))) {
-		qdma_resource_lock_give();
-		return -QDMA_ERR_RM_NO_QUEUES_LEFT;
-	}
-
-	if (active_qcnt) {
-		*active_qcnt = (*active_qcnt) + 1;
-		q_resource->active_qcnt++;
-	}
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	int rv = QDMA_SUCCESS;
-
-	if (!q_resource) {
-		qdma_log_error("%s: Queue resource not found, err: %d\n",
-				__func__,
-			   -QDMA_ERR_RM_RES_NOT_EXISTS);
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-	}
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry) {
-		qdma_log_error("%s: Dev entry not found, err: %d\n",
-				__func__, -QDMA_ERR_RM_DEV_NOT_EXISTS);
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		if (dev_entry->active_h2c_qcnt)
-			dev_entry->active_h2c_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		if (dev_entry->active_c2h_qcnt)
-			dev_entry->active_c2h_qcnt--;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		if (dev_entry->active_cmpt_qcnt)
-			dev_entry->active_cmpt_qcnt--;
-		break;
-	default:
-		rv = -QDMA_ERR_RM_DEV_NOT_EXISTS;
-	}
-	q_resource->active_qcnt--;
-	qdma_resource_lock_give();
-
-	return rv;
-}
-
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	uint32_t q_cnt;
-
-	if (!q_resource)
-		return QDMA_SUCCESS;
-
-	qdma_resource_lock_take();
-	q_cnt = q_resource->active_qcnt;
-	qdma_resource_lock_give();
-
-	return q_cnt;
-}
-
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type)
-{
-	struct qdma_resource_master *q_resource =
-			qdma_get_master_resource_entry(dma_device_index);
-	struct qdma_dev_entry *dev_entry;
-	uint32_t dev_active_qcnt = 0;
-
-	if (!q_resource)
-		return -QDMA_ERR_RM_RES_NOT_EXISTS;
-
-	dev_entry = qdma_get_dev_entry(dma_device_index, func_id);
-
-	if (!dev_entry)
-		return -QDMA_ERR_RM_DEV_NOT_EXISTS;
-
-	qdma_resource_lock_take();
-	switch (q_type) {
-	case QDMA_DEV_Q_TYPE_H2C:
-		dev_active_qcnt = dev_entry->active_h2c_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_C2H:
-		dev_active_qcnt = dev_entry->active_c2h_qcnt;
-		break;
-	case QDMA_DEV_Q_TYPE_CMPT:
-		dev_active_qcnt = dev_entry->active_cmpt_qcnt;
-		break;
-	default:
-		dev_active_qcnt = 0;
-	}
-	qdma_resource_lock_give();
-
-	return dev_active_qcnt;
-}
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.h
deleted file mode 100644
index 436a77f..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_resource_mgmt.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_RESOURCE_MGMT_H_
-#define __QDMA_RESOURCE_MGMT_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA resource management interface definitions
- *
- * Header file *qdma_resource_mgmt.h* defines data structures and function
- * signatures exported for QDMA queue management.
- */
-
-#include "qdma_platform_env.h"
-#include "qdma_access_export.h"
-
-/**
- * enum qdma_dev_q_range: Q ranage check
- */
-enum qdma_dev_q_range {
-	/** @QDMA_DEV_Q_IN_RANGE: Q belongs to dev */
-	QDMA_DEV_Q_IN_RANGE,
-	/** @QDMA_DEV_Q_OUT_OF_RANGE: Q does not belong to dev */
-	QDMA_DEV_Q_OUT_OF_RANGE,
-	/** @QDMA_DEV_Q_RANGE_MAX: total Q validity states */
-	QDMA_DEV_Q_RANGE_MAX
-};
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_create(): create the master q resource
- *
- * @bus_start:  Bus number of the device i.e. pdev->bus->number
- * @bus_end:    Ending bus number i.e. the subordinate bus number of the
- *              parent bridge
- * @q_base:     base from which this master resource needs to be created
- * @total_q:     total queues in this master resource
- * @dma_device_index: DMA device identifier assigned by resource manager to
- *                    track the number of devices
- *
- * A master resource per driver per board is created to manage the queues
- * allocated to this driver.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_master_resource_create(uint32_t bus_start, uint32_t bus_end,
-		int q_base, uint32_t total_q, uint32_t *dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_master_resource_destroy(): destroy the master q resource
- *
- * @dma_device_index:  DMA device identifier this master resource belongs to
- *
- * Return:	None
- *****************************************************************************/
-void qdma_master_resource_destroy(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_create(): create a device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * A device entry is to be created on every function probe.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_entry_create(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_entry_destroy(): destroy device entry for @func_id
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- *
- * Return:	None
- *****************************************************************************/
-void qdma_dev_entry_destroy(uint32_t dma_device_index, uint16_t func_id);
-
-/*****************************************************************************/
-/**
- * qdma_dev_update(): update qmax for the device
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API is to be called for update request of qmax of any function.
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_update(uint32_t dma_device_index, uint16_t func_id,
-		    uint32_t qmax, int *qbase);
-
-/*****************************************************************************/
-/**
- * qdma_dev_qinfo_get(): get device info
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @dev_type:    device type
- * @qmax:        output qmax for this device
- * @qbase:       output qbase for this device
- *
- * This API can be used get the qbase and qmax for any function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_qinfo_get(uint32_t dma_device_index, uint16_t func_id,
-		       int *qbase, uint32_t *qmax);
-
-/*****************************************************************************/
-/**
- * qdma_dev_is_queue_in_range(): check if queue belongs to this device
- *
- * @dma_device_index:  DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @qid_hw:      hardware queue id
- *
- * This API checks if the queue ID is in valid range for function specified
- *
- * Return:	@QDMA_DEV_Q_IN_RANGE  : valid and
- * @QDMA_DEV_Q_OUT_OF_RANGE: invalid
- *****************************************************************************/
-enum qdma_dev_q_range qdma_dev_is_queue_in_range(uint32_t dma_device_index,
-						 uint16_t func_id,
-						 uint32_t qid_hw);
-
-/*****************************************************************************/
-/**
- * qdma_dev_increment_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_increment_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_dev_decrement_active_queue(): increment active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to increment the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_dev_decrement_active_queue(uint32_t dma_device_index, uint16_t func_id,
-				    enum qdma_dev_q_type q_type);
-
-/*****************************************************************************/
-/**
- * qdma_is_active_queue(): check if any queue is active
- *
- * @dma_device_index:  DMA device identifier that this resource belongs to
- *
- * This API is used to check if any active queue is present.
- *
- * Return:	active queue count
- *****************************************************************************/
-uint32_t qdma_get_active_queue_count(uint32_t dma_device_index);
-
-/*****************************************************************************/
-/**
- * qdma_get_device_active_queue_count(): get device active queue count
- *
- * @dma_device_index: DMA device identifier that this device belongs to
- * @func_id:     device identification id
- * @q_type:      Queue type i.e. C2H or H2C or CMPT
- *
- * This API is used to get the active queue count of this function
- *
- * Return:	0  : success and < 0: failure
- *****************************************************************************/
-int qdma_get_device_active_queue_count(uint32_t dma_device_index,
-					uint16_t func_id,
-					enum qdma_dev_q_type q_type);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_RESOURCE_MGMT_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c
deleted file mode 100644
index 65dd310..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.c
+++ /dev/null
@@ -1,5894 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma_s80_hard_access.h"
-#include "qdma_s80_hard_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_s80_hard_access.tmh"
-#endif
-
-/** QDMA S80 Hard Context array size */
-#define QDMA_S80_HARD_SW_CONTEXT_NUM_WORDS              4
-#define QDMA_S80_HARD_CMPT_CONTEXT_NUM_WORDS            4
-#define QDMA_S80_HARD_QID2VEC_CONTEXT_NUM_WORDS         1
-#define QDMA_S80_HARD_HW_CONTEXT_NUM_WORDS              2
-#define QDMA_S80_HARD_CR_CONTEXT_NUM_WORDS              1
-#define QDMA_S80_HARD_IND_INTR_CONTEXT_NUM_WORDS        3
-#define QDMA_S80_HARD_PFETCH_CONTEXT_NUM_WORDS          2
-
-#define QDMA_S80_HARD_VF_USER_BAR_ID   2
-
-#define QDMA_S80_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_S80_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_S80_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_S80_REG_GROUP_4_START_ADDR	0x1014
-
-#define QDMA_S80_HARD_REG_TRQ_SEL_FMAP_STEP	4
-
-#define QDMA_S80_HARD_IND_CTXT_DATA_NUM_REGS	4
-
-#define QDMA_S80_HARD_TOTAL_LEAF_ERROR_AGGREGATORS	7
-#define QDMA_S80_HARD_GLBL_TRQ_ERR_ALL_MASK			0XB3
-#define QDMA_S80_HARD_GLBL_DSC_ERR_ALL_MASK			0X1F9037E
-#define QDMA_S80_HARD_C2H_ERR_ALL_MASK				0X3F6DF
-#define QDMA_S80_HARD_C2H_FATAL_ERR_ALL_MASK			0X1FDF1B
-#define QDMA_S80_HARD_H2C_ERR_ALL_MASK				0X3F
-#define QDMA_S80_HARD_SBE_ERR_ALL_MASK				0XFFFFFFFF
-#define QDMA_S80_HARD_DBE_ERR_ALL_MASK				0XFFFFFFFF
-
-#define QDMA_S80_HARD_OFFSET_DMAP_SEL_INT_CIDX                  0x6400
-#define QDMA_S80_HARD_OFFSET_DMAP_SEL_H2C_DSC_PIDX          0x6404
-#define QDMA_S80_HARD_OFFSET_DMAP_SEL_C2H_DSC_PIDX          0x6408
-#define QDMA_S80_HARD_OFFSET_DMAP_SEL_CMPT_CIDX               0x640C
-
-#define QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_INT_CIDX             0x3000
-#define QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX     0x3004
-#define QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX     0x3008
-#define QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_CMPT_CIDX          0x300C
-
-#define QDMA_S80_HARD_DMA_SEL_INT_SW_CIDX_MASK               GENMASK(15, 0)
-#define QDMA_S80_HARD_DMA_SEL_INT_RING_IDX_MASK              GENMASK(23, 16)
-#define QDMA_S80_HARD_DMA_SEL_DESC_PIDX_MASK                   GENMASK(15, 0)
-#define QDMA_S80_HARD_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_IRQ_EN_MASK             BIT(28)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_STS_DESC_EN_MASK    BIT(27)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_TRG_MODE_MASK        GENMASK(26, 24)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_TMR_CNT_MASK          GENMASK(23, 20)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_CNT_THRESH_MASK     GENMASK(19, 16)
-#define QDMA_S80_HARD_DMAP_SEL_CMPT_WRB_CIDX_MASK        GENMASK(15, 0)
-#define QDMA_S80_HARD_INTR_CTXT_BADDR_GET_H_MASK     GENMASK_ULL(63, 35)
-#define QDMA_S80_HARD_INTR_CTXT_BADDR_GET_L_MASK     GENMASK_ULL(34, 12)
-#define QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_H_MASK    GENMASK_ULL(63, 42)
-#define QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_M_MASK    GENMASK_ULL(41, 10)
-#define QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_L_MASK    GENMASK_ULL(9, 6)
-#define QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_H_MASK     GENMASK(15, 8)
-#define QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_L_MASK     GENMASK(7, 0)
-#define QDMA_S80_HARD_QID2VEC_H2C_VECTOR             GENMASK(16, 9)
-#define QDMA_S80_HARD_QID2VEC_H2C_COAL_EN            BIT(17)
-
-static void qdma_s80_hard_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_s80_hard_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_s80_hard_hw_desc_err_process(void *dev_hndl);
-static void qdma_s80_hard_hw_trq_err_process(void *dev_hndl);
-static void qdma_s80_hard_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_s80_hard_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct qdma_s80_hard_hw_err_info
-		qdma_s80_hard_err_info[QDMA_S80_HARD_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_S80_HARD_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_UR_CA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_PARAM_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_ADDR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TAG_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DMA_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DSC_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_DBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		GLBL_DSC_ERR_STS_SBE_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-	{
-		QDMA_S80_HARD_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_S80_HARD_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_DSC_MASK,
-		&qdma_s80_hard_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_S80_HARD_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space via CSR pathway error",
-		QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_s80_hard_hw_trq_err_process
-	},
-	{
-		QDMA_S80_HARD_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_s80_hard_hw_trq_err_process
-	},
-	{
-		QDMA_S80_HARD_TRQ_ERR_VF_ACCESS_ERR,
-		"VF attempted to access Global register space or Function map",
-		QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_s80_hard_hw_trq_err_process
-	},
-	{
-		QDMA_S80_HARD_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request to dma internal csr register",
-		QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_s80_hard_hw_trq_err_process
-	},
-	{
-		QDMA_S80_HARD_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_TRQ_MASK,
-		&qdma_s80_hard_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass in mismatch error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_WRB_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_WRB_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_WRB_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_WRB_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_S80_HARD_C2H_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		QDMA_S80_HARD_C2H_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-		"RAM double bit fatal error",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK,
-		&qdma_s80_hard_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		"Zero length descriptor error",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-		"A non-EOP descriptor received",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_NO_DMA_DS_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_DBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		H2C_ERR_STAT_SBE_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-	{
-		QDMA_S80_HARD_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_S80_HARD_H2C_ERR_MASK_ADDR,
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		QDMA_S80_HARD_H2C_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK,
-		&qdma_s80_hard_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_S80_HARD_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_PASID_CTXT_RAM,
-		"Pasid ctxt FIFO RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload FIFO RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER FIFO RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_S80_HARD_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-		QDMA_S80_HARD_SBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK,
-		&qdma_s80_hard_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE errors */
-	{
-		QDMA_S80_HARD_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_FUNC_MAP_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLI_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DSC_CPLD_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_PASID_CTXT_RAM,
-		"PASID CTXT RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"Payload fifo RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Writeback Coalescing RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_INT_QID2VEC_RAM,
-		"QID2VEC RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_S80_HARD_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR,
-		QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-		QDMA_S80_HARD_DBE_ERR_ALL_MASK,
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK,
-		&qdma_s80_hard_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_qdma_s80_hard_hw_errs[
-		QDMA_S80_HARD_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_S80_HARD_DSC_ERR_ALL,
-	QDMA_S80_HARD_TRQ_ERR_ALL,
-	QDMA_S80_HARD_ST_C2H_ERR_ALL,
-	QDMA_S80_HARD_ST_FATAL_ERR_ALL,
-	QDMA_S80_HARD_ST_H2C_ERR_ALL,
-	QDMA_S80_HARD_SBE_ERR_ALL,
-	QDMA_S80_HARD_DBE_ERR_ALL
-};
-
-
-
-union qdma_s80_hard_ind_ctxt_cmd {
-	uint32_t word;
-	struct {
-		uint32_t busy:1;
-		uint32_t sel:4;
-		uint32_t op:2;
-		uint32_t qid:11;
-		uint32_t rsvd:14;
-	} bits;
-};
-
-struct qdma_s80_hard_indirect_ctxt_regs {
-	uint32_t qdma_ind_ctxt_data[QDMA_S80_HARD_IND_CTXT_DATA_NUM_REGS];
-	uint32_t qdma_ind_ctxt_mask[QDMA_S80_HARD_IND_CTXT_DATA_NUM_REGS];
-	union qdma_s80_hard_ind_ctxt_cmd cmd;
-};
-
-static struct qctx_entry qdma_s80_hard_sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Function Id", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_qid2vec_ctxt_entries[] = {
-	{"c2h_vector", 0},
-	{"c2h_en_coal", 0},
-	{"h2c_vector", 0},
-	{"h2c_en_coal", 0},
-};
-
-static struct qctx_entry qdma_s80_hard_ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-};
-
-static int qdma_s80_hard_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_s80_hard_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_s80_hard_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_s80_hard_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-uint32_t qdma_s80_hard_get_config_num_regs(void)
-{
-	return qdma_s80_hard_config_num_regs_get();
-}
-
-struct xreg_info *qdma_s80_hard_get_config_regs(void)
-{
-	return qdma_s80_hard_config_regs_get();
-}
-
-uint32_t qdma_s80_hard_reg_dump_buf_len(void)
-{
-	uint32_t length = (qdma_s80_hard_config_num_regs_get() + 1)
-			* REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-int qdma_s80_hard_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(qdma_s80_hard_cmpt_ctxt_entries) /
-			sizeof(qdma_s80_hard_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(qdma_s80_hard_sw_ctxt_entries) /
-				sizeof(qdma_s80_hard_sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_s80_hard_hw_ctxt_entries) /
-			sizeof(qdma_s80_hard_hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(qdma_s80_hard_credit_ctxt_entries) /
-			sizeof(qdma_s80_hard_credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(qdma_s80_hard_cmpt_ctxt_entries) /
-			sizeof(qdma_s80_hard_cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(qdma_s80_hard_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_s80_hard_c2h_pftch_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*req_buflen = len;
-	return rv;
-}
-
-static uint32_t qdma_s80_hard_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(qdma_s80_hard_ind_intr_ctxt_entries) /
-			sizeof(qdma_s80_hard_ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_s80_hard_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	qdma_s80_hard_sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	qdma_s80_hard_sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	qdma_s80_hard_sw_ctxt_entries[2].value = sw_ctxt->qen;
-	qdma_s80_hard_sw_ctxt_entries[3].value = sw_ctxt->frcd_en;
-	qdma_s80_hard_sw_ctxt_entries[4].value = sw_ctxt->wbi_chk;
-	qdma_s80_hard_sw_ctxt_entries[5].value = sw_ctxt->wbi_intvl_en;
-	qdma_s80_hard_sw_ctxt_entries[6].value = sw_ctxt->fnc_id;
-	qdma_s80_hard_sw_ctxt_entries[7].value = sw_ctxt->rngsz_idx;
-	qdma_s80_hard_sw_ctxt_entries[8].value = sw_ctxt->desc_sz;
-	qdma_s80_hard_sw_ctxt_entries[9].value = sw_ctxt->bypass;
-	qdma_s80_hard_sw_ctxt_entries[10].value = sw_ctxt->mm_chn;
-	qdma_s80_hard_sw_ctxt_entries[11].value = sw_ctxt->wbk_en;
-	qdma_s80_hard_sw_ctxt_entries[12].value = sw_ctxt->irq_en;
-	qdma_s80_hard_sw_ctxt_entries[13].value = sw_ctxt->port_id;
-	qdma_s80_hard_sw_ctxt_entries[14].value = sw_ctxt->irq_no_last;
-	qdma_s80_hard_sw_ctxt_entries[15].value = sw_ctxt->err;
-	qdma_s80_hard_sw_ctxt_entries[16].value = sw_ctxt->err_wb_sent;
-	qdma_s80_hard_sw_ctxt_entries[17].value = sw_ctxt->irq_req;
-	qdma_s80_hard_sw_ctxt_entries[18].value = sw_ctxt->mrkr_dis;
-	qdma_s80_hard_sw_ctxt_entries[19].value = sw_ctxt->is_mm;
-	qdma_s80_hard_sw_ctxt_entries[20].value =
-			sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	qdma_s80_hard_sw_ctxt_entries[21].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_s80_hard_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	qdma_s80_hard_cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	qdma_s80_hard_cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	qdma_s80_hard_cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	qdma_s80_hard_cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	qdma_s80_hard_cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	qdma_s80_hard_cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	qdma_s80_hard_cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	qdma_s80_hard_cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	qdma_s80_hard_cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	qdma_s80_hard_cmpt_ctxt_entries[9].value =
-			cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	qdma_s80_hard_cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	qdma_s80_hard_cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	qdma_s80_hard_cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	qdma_s80_hard_cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	qdma_s80_hard_cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	qdma_s80_hard_cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	qdma_s80_hard_cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	qdma_s80_hard_cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	qdma_s80_hard_cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_s80_hard_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	qdma_s80_hard_hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	qdma_s80_hard_hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	qdma_s80_hard_hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	qdma_s80_hard_hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	qdma_s80_hard_hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	qdma_s80_hard_hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_s80_hard_fill_credit_ctxt(
-		struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	qdma_s80_hard_credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_s80_hard_fill_pfetch_ctxt(
-		struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	qdma_s80_hard_c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	qdma_s80_hard_c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-static void qdma_s80_hard_fill_qid2vec_ctxt(struct qdma_qid2vec *qid2vec_ctxt)
-{
-	qdma_s80_hard_qid2vec_ctxt_entries[0].value = qid2vec_ctxt->c2h_vector;
-	qdma_s80_hard_qid2vec_ctxt_entries[1].value = qid2vec_ctxt->c2h_en_coal;
-	qdma_s80_hard_qid2vec_ctxt_entries[2].value = qid2vec_ctxt->h2c_vector;
-	qdma_s80_hard_qid2vec_ctxt_entries[3].value = qid2vec_ctxt->h2c_en_coal;
-}
-
-static void qdma_s80_hard_fill_intr_ctxt(
-		struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	qdma_s80_hard_ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	qdma_s80_hard_ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	qdma_s80_hard_ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	qdma_s80_hard_ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	qdma_s80_hard_ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	qdma_s80_hard_ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	qdma_s80_hard_ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	qdma_s80_hard_ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-}
-
-/*
- * dump_s80_hard_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_s80_hard_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Invalid queue type(%d), err:%d\n",
-						__func__,
-						q_type,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_fill_sw_ctxt(&queue_context->sw_ctxt);
-	qdma_s80_hard_fill_hw_ctxt(&queue_context->hw_ctxt);
-	qdma_s80_hard_fill_credit_ctxt(&queue_context->cr_ctxt);
-	qdma_s80_hard_fill_qid2vec_ctxt(&queue_context->qid2vec);
-	if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		qdma_s80_hard_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-		qdma_s80_hard_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	}
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-			rv = QDMA_SNPRINTF_S(banner + i,
-				(DEBGFS_LINE_SZ - i),
-				sizeof("-"), "-");
-			if ((rv < 0) || (rv > (int)sizeof("-"))) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-		}
-
-		/* SW context dump */
-		n = sizeof(qdma_s80_hard_sw_ctxt_entries) /
-				sizeof((qdma_s80_hard_sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_s80_hard_sw_ctxt_entries[i].name,
-				qdma_s80_hard_sw_ctxt_entries[i].value,
-				qdma_s80_hard_sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(qdma_s80_hard_hw_ctxt_entries) /
-				sizeof((qdma_s80_hard_hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_s80_hard_hw_ctxt_entries[i].name,
-				qdma_s80_hard_hw_ctxt_entries[i].value,
-				qdma_s80_hard_hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(qdma_s80_hard_credit_ctxt_entries) /
-			sizeof((qdma_s80_hard_credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_s80_hard_credit_ctxt_entries[i].name,
-				qdma_s80_hard_credit_ctxt_entries[i].value,
-				qdma_s80_hard_credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	/* SW context dump */
-	n = sizeof(qdma_s80_hard_qid2vec_ctxt_entries) /
-			sizeof((qdma_s80_hard_qid2vec_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) ||
-			((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%40s",
-				"QID2VEC Context");
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_s80_hard_qid2vec_ctxt_entries[i].name,
-			qdma_s80_hard_qid2vec_ctxt_entries[i].value,
-			qdma_s80_hard_qid2vec_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(qdma_s80_hard_cmpt_ctxt_entries) /
-				sizeof((qdma_s80_hard_cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_s80_hard_cmpt_ctxt_entries[i].name,
-				qdma_s80_hard_cmpt_ctxt_entries[i].value,
-				qdma_s80_hard_cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(qdma_s80_hard_c2h_pftch_ctxt_entries) /
-			sizeof(qdma_s80_hard_c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-						"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				qdma_s80_hard_c2h_pftch_ctxt_entries[i].name,
-				qdma_s80_hard_c2h_pftch_ctxt_entries[i].value,
-				qdma_s80_hard_c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-static int dump_s80_hard_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	qdma_s80_hard_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(qdma_s80_hard_ind_intr_ctxt_entries) /
-			sizeof((qdma_s80_hard_ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			qdma_s80_hard_ind_intr_ctxt_entries[i].name,
-			qdma_s80_hard_ind_intr_ctxt_entries[i].value,
-			qdma_s80_hard_ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial intr context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_s80_hard_indirect_reg_invalidate() - helper function to invalidate
- * indirect context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_s80_hard_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_s80_hard_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_s80_hard_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_s80_hard_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_s80_hard_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-
-	qdma_reg_write(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_s80_hard_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_s80_hard_indirect_reg_read(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_S80_HARD_IND_CTXT_DATA_3_ADDR;
-	union qdma_s80_hard_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_s80_hard_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_s80_hard_indirect_reg_write(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_s80_hard_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_S80_HARD_IND_CTXT_DATA_NUM_REGS;
-			index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_S80_HARD_IND_CTXT_DATA_3_ADDR;
-
-	for (index = 0;
-		index < ((2 * QDMA_S80_HARD_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_S80_HARD_IND_CTXT_CMD_ADDR,
-			IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed, err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_qid2vec_write() - create qid2vec context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_qid2vec_write(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	uint32_t qid2vec = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-	int rv = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			1, &qid2vec);
-	if (rv < 0)
-		return rv;
-	if (c2h) {
-		qid2vec = qid2vec & (QDMA_S80_HARD_QID2VEC_H2C_VECTOR |
-					QDMA_S80_HARD_QID2VEC_H2C_COAL_EN);
-		qid2vec |= FIELD_SET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-				     ctxt->c2h_vector) |
-			FIELD_SET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-				  ctxt->c2h_en_coal);
-	} else {
-		qid2vec = qid2vec & (C2H_QID2VEC_MAP_C2H_VECTOR_MASK |
-					C2H_QID2VEC_MAP_C2H_EN_COAL_MASK);
-		qid2vec |=
-			FIELD_SET(QDMA_S80_HARD_QID2VEC_H2C_VECTOR,
-				  ctxt->h2c_vector) |
-			FIELD_SET(QDMA_S80_HARD_QID2VEC_H2C_COAL_EN,
-				  ctxt->h2c_en_coal);
-	}
-
-	return qdma_s80_hard_indirect_reg_write(dev_hndl, sel, hw_qid,
-			&qid2vec, QDMA_S80_HARD_QID2VEC_CONTEXT_NUM_WORDS);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_qid2vec_read() - read qid2vec context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_qid2vec_read(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid, struct qdma_qid2vec *ctxt)
-{
-	int rv = 0;
-	uint32_t qid2vec[QDMA_S80_HARD_QID2VEC_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p qid2vec=%p, err:%d\n",
-				__func__, dev_hndl, ctxt, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_S80_HARD_QID2VEC_CONTEXT_NUM_WORDS, qid2vec);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->c2h_vector = FIELD_GET(C2H_QID2VEC_MAP_C2H_VECTOR_MASK,
-						qid2vec[0]);
-		ctxt->c2h_en_coal =
-			(uint8_t)(FIELD_GET(C2H_QID2VEC_MAP_C2H_EN_COAL_MASK,
-						qid2vec[0]));
-	} else {
-		ctxt->h2c_vector =
-			(uint8_t)(FIELD_GET(QDMA_S80_HARD_QID2VEC_H2C_VECTOR,
-								qid2vec[0]));
-		ctxt->h2c_en_coal =
-			(uint8_t)(FIELD_GET(QDMA_S80_HARD_QID2VEC_H2C_COAL_EN,
-								qid2vec[0]));
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_qid2vec_clear() - clear qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_qid2vec_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_qid2vec_invalidate() - invalidate qid2vec context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_qid2vec_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_qid2vec_conf() - configure qid2vector context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_qid2vec_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_qid2vec_write(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_qid2vec_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_qid2vec_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle or config is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = FIELD_SET(TRQ_SEL_FMAP_0_QID_BASE_MASK, config->qbase) |
-		FIELD_SET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				config->qmax);
-
-	qdma_reg_write(dev_hndl, QDMA_S80_HARD_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_S80_HARD_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_fmap_read() - read fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	fmap = qdma_reg_read(dev_hndl, QDMA_S80_HARD_TRQ_SEL_FMAP_0_ADDR +
-			     func_id * QDMA_S80_HARD_REG_TRQ_SEL_FMAP_STEP);
-
-	config->qbase = FIELD_GET(TRQ_SEL_FMAP_0_QID_BASE_MASK, fmap);
-	config->qmax =
-		(uint16_t)(FIELD_GET(TRQ_SEL_FMAP_0_QID_MAX_MASK,
-				fmap));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_fmap_clear() - clear fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	uint32_t fmap = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_reg_write(dev_hndl, QDMA_S80_HARD_TRQ_SEL_FMAP_0_ADDR +
-			func_id * QDMA_S80_HARD_REG_TRQ_SEL_FMAP_STEP,
-			fmap);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_S80_HARD_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl or ctxt is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_64B) ||
-		(ctxt->rngsz_idx >= QDMA_NUM_RING_SIZES)) {
-		qdma_log_error("%s: Invalid desc_sz(%d)/rngidx(%d), err:%d\n",
-					__func__,
-					ctxt->desc_sz,
-					ctxt->rngsz_idx,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W0_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK, ctxt->irq_arm);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(SW_IND_CTXT_DATA_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			ctxt->wbi_intvl_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			ctxt->irq_no_last) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			ctxt->err_wb_sent) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(SW_IND_CTXT_DATA_W1_IS_MM_MASK, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	return qdma_s80_hard_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t sw_ctxt[QDMA_S80_HARD_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-	struct qdma_qid2vec qid2vec_ctxt = {0};
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p sw_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_S80_HARD_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(SW_IND_CTXT_DATA_W0_PIDX_MASK, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK,
-			sw_ctxt[0]));
-
-	ctxt->qen = FIELD_GET(SW_IND_CTXT_DATA_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(SW_IND_CTXT_DATA_W1_FCRD_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_CHK_MASK,
-			sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK,
-			sw_ctxt[1]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_FNC_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_RNG_SZ_MASK,
-		sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_DSC_SZ_MASK,
-			sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_BYPASS_MASK,
-			sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MM_CHN_MASK,
-			sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_WBK_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_EN_MASK,
-			sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_PORT_ID_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK,
-			sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK,
-			sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(SW_IND_CTXT_DATA_W1_IS_MM_MASK,
-			sw_ctxt[1]));
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	/** Read the QID2VEC Context Data */
-	rv = qdma_s80_hard_qid2vec_read(dev_hndl, c2h, hw_qid, &qid2vec_ctxt);
-	if (rv < 0)
-		return rv;
-
-	if (c2h) {
-		ctxt->vec = qid2vec_ctxt.c2h_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.c2h_en_coal;
-	} else {
-		ctxt->vec = qid2vec_ctxt.h2c_vector;
-		ctxt->intr_aggr = qid2vec_ctxt.h2c_en_coal;
-	}
-
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_sw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_sw_context_write(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_sw_context_invalidate(dev_hndl,
-				c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_S80_HARD_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_PFCH_MASK, ctxt->pfch) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(PREFETCH_CTXT_DATA_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_s80_hard_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t pfetch_ctxt[QDMA_S80_HARD_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p pfetch_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_S80_HARD_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BYPASS_MASK,
-			pfetch_ctxt[0]));
-	ctxt->bufsz_idx =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK,
-				pfetch_ctxt[0]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PORT_ID_MASK,
-			pfetch_ctxt[0]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W0_PFCH_MASK,
-			pfetch_ctxt[0]));
-	sw_crdt_l =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK,
-			pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		(uint32_t)FIELD_GET(PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK,
-			pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(PREFETCH_CTXT_DATA_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		(uint16_t)(FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK,
-			sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_pfetch_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_pfetch_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_pfetch_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_pfetch_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_S80_HARD_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, baddr_m, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((ctxt->desc_sz > QDMA_DESC_SIZE_32B) ||
-		(ctxt->ringsz_idx >= QDMA_NUM_RING_SIZES) ||
-		(ctxt->counter_idx >= QDMA_NUM_C2H_COUNTERS) ||
-		(ctxt->timer_idx >= QDMA_NUM_C2H_TIMERS) ||
-		(ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR)) {
-		qdma_log_error
-		("%s Inv dsz(%d)/ridx(%d)/cntr(%d)/tmr(%d)/tm(%d), err:%d\n",
-				__func__,
-				ctxt->desc_sz,
-				ctxt->ringsz_idx,
-				ctxt->counter_idx,
-				ctxt->timer_idx,
-				ctxt->trig_mode,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_m =
-		(uint32_t)FIELD_GET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_M_MASK,
-			ctxt->bs_addr);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-
-	pidx_l = FIELD_GET(QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_L_MASK,
-			ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_H_MASK,
-			ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				ctxt->timer_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->in_st) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-				ctxt->color) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-				ctxt->ringsz_idx) |
-		FIELD_SET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				baddr_m);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				baddr_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-				ctxt->desc_sz) |
-		FIELD_SET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-				pidx_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-				pidx_h) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK,
-				ctxt->user_trig_pend) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-				ctxt->full_upd);
-
-	return qdma_s80_hard_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	    pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t cmpt_ctxt[QDMA_S80_HARD_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, baddr_m,
-			 pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p cmpt_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_S80_HARD_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(CMPL_CTXT_DATA_W0_EN_INT_MASK,
-		cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(CMPL_CTXT_DATA_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(
-			CMPL_CTXT_DATA_W0_CNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_TIMER_IDX_MASK,
-				cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l =
-		FIELD_GET(CMPL_CTXT_DATA_W0_BADDR_64_L_MASK,
-				cmpt_ctxt[0]);
-	baddr_m =
-		FIELD_GET(CMPL_CTXT_DATA_W1_BADDR_64_M_MASK,
-				cmpt_ctxt[1]);
-	baddr_h =
-		FIELD_GET(CMPL_CTXT_DATA_W2_BADDR_64_H_MASK,
-				cmpt_ctxt[2]);
-
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(CMPL_CTXT_DATA_W2_PIDX_L_MASK,
-			cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(CMPL_CTXT_DATA_W3_PIDX_H_MASK,
-			cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(CMPL_CTXT_DATA_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_ERR_MASK,
-			cmpt_ctxt[3]));
-	ctxt->user_trig_pend =
-		(uint8_t)(FIELD_GET(
-		CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK,
-			cmpt_ctxt[3]));
-	ctxt->full_upd =
-		(uint8_t)(FIELD_GET(CMPL_CTXT_DATA_W3_FULL_UPD_MASK,
-			cmpt_ctxt[3]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_L_MASK,
-			(uint64_t)baddr_l) |
-		FIELD_SET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_M_MASK,
-			(uint64_t)baddr_m) |
-		FIELD_SET(QDMA_S80_HARD_COMPL_CTXT_BADDR_GET_H_MASK,
-			(uint64_t)baddr_h);
-
-	ctxt->pidx =
-		(uint16_t)(FIELD_SET(QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_L_MASK,
-			pidx_l) |
-		FIELD_SET(QDMA_S80_HARD_COMPL_CTXT_PIDX_GET_H_MASK,
-			pidx_h));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_cmpt_context_invalidate(void *dev_hndl,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_cmpt_context_read(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_cmpt_context_write(dev_hndl,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_cmpt_context_invalidate(dev_hndl,
-				hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t hw_ctxt[QDMA_S80_HARD_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p hw_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-				   QDMA_S80_HARD_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(HW_IND_CTXT_DATA_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(HW_IND_CTXT_DATA_W0_CRD_USE_MASK,
-				hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_DSC_PND_MASK,
-				hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd =
-		(uint8_t)(FIELD_GET(HW_IND_CTXT_DATA_W1_FETCH_PND_MASK,
-			hw_ctxt[1]));
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE unsupported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_hw_context_read(dev_hndl, c2h, hw_qid,
-				ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_hw_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-						__func__, access_type,
-						-QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_indirect_intr_context_write() - create indirect
- * interrupt context and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_indirect_intr_context_write(void *dev_hndl,
-		uint16_t ring_index, const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_S80_HARD_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-						-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->page_size > QDMA_INDIRECT_INTR_RING_SIZE_32KB) {
-		qdma_log_error("%s: ctxt->page_size=%u is too big, err:%d\n",
-					   __func__, ctxt->page_size,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l =
-		(uint32_t)FIELD_GET(QDMA_S80_HARD_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_h =
-		(uint32_t)FIELD_GET(QDMA_S80_HARD_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(INTR_CTXT_DATA_W0_VEC_MASK, ctxt->vec) |
-		FIELD_SET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-				ctxt->int_st) |
-		FIELD_SET(INTR_CTXT_DATA_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK, baddr_h) |
-		FIELD_SET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-				ctxt->page_size);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(INTR_CTXT_DATA_W2_PIDX_MASK, ctxt->pidx);
-
-	return qdma_s80_hard_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_indirect_intr_context_read(void *dev_hndl,
-		uint16_t ring_index, struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = 0;
-	uint32_t intr_ctxt[QDMA_S80_HARD_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_S80_HARD_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(INTR_CTXT_DATA_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(INTR_CTXT_DATA_W0_VEC_MASK,
-			intr_ctxt[0]);
-	ctxt->int_st = FIELD_GET(INTR_CTXT_DATA_W0_INT_ST_MASK,
-			intr_ctxt[0]);
-	ctxt->color =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W0_COLOR_MASK,
-			intr_ctxt[0]));
-	baddr_l = FIELD_GET(INTR_CTXT_DATA_W0_BADDR_4K_L_MASK,
-			intr_ctxt[0]);
-
-	baddr_h = FIELD_GET(INTR_CTXT_DATA_W1_BADDR_4K_H_MASK,
-			intr_ctxt[1]);
-	ctxt->page_size =
-		(uint8_t)(FIELD_GET(INTR_CTXT_DATA_W1_PAGE_SIZE_MASK,
-			intr_ctxt[1]));
-	ctxt->pidx = FIELD_GET(INTR_CTXT_DATA_W2_PIDX_MASK,
-			intr_ctxt[2]);
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_S80_HARD_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_S80_HARD_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_indirect_intr_context_clear() - clear indirect
- * interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_indirect_intr_context_clear(void *dev_hndl,
-		uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_indirect_intr_context_invalidate() - invalidate
- * indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int ret_val = 0;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		ret_val = qdma_s80_hard_indirect_intr_context_read(dev_hndl,
-							      ring_index,
-							      ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		ret_val = qdma_s80_hard_indirect_intr_context_write(dev_hndl,
-							       ring_index,
-							       ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		ret_val = qdma_s80_hard_indirect_intr_context_clear(dev_hndl,
-							   ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		ret_val = qdma_s80_hard_indirect_intr_context_invalidate(
-				dev_hndl, ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		ret_val = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return ret_val;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_set_default_global_csr() - function to set the global
- *  CSR register to default values. The value can be modified later by using
- *  the set/get csr functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257,
-				385, 513, 769, 1025, 1537, 3073, 4097, 6145,
-				8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-				30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24,
-				32, 48, 64, 80, 96, 112, 128, 144,
-				160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-				2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096,
-				4096, 8192, 9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_S80_HARD_GLBL_RNG_SZ_1_ADDR, 0,
-					QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_CNT_TH_1_ADDR, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_TIMER_CNT_1_ADDR, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(GLBL_DSC_CFG_MAXFETCH_MASK,
-				  DEFAULT_MAX_DSC_FETCH) |
-				  FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK,
-				  DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl,
-				QDMA_S80_HARD_GLBL_DSC_CFG_ADDR, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_BUF_SZ_0_ADDR, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		reg_val =
-			FIELD_SET(C2H_PFCH_CFG_FL_TH_MASK,
-				DEFAULT_PFCH_STOP_THRESH) |
-				FIELD_SET(C2H_PFCH_CFG_NUM_MASK,
-				DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-				FIELD_SET(C2H_PFCH_CFG_QCNT_MASK,
-				DEFAULT_PFCH_MAX_Q_CNT) |
-				FIELD_SET(C2H_PFCH_CFG_EVT_QCNT_TH_MASK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-		qdma_reg_write(dev_hndl,
-				QDMA_S80_HARD_C2H_PFCH_CFG_ADDR, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_S80_HARD_C2H_INT_TIMER_TICK_ADDR,
-						DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		reg_val =
-			FIELD_SET(C2H_WRB_COAL_CFG_TICK_CNT_MASK,
-				DEFAULT_CMPT_COAL_TIMER_CNT) |
-				FIELD_SET(C2H_WRB_COAL_CFG_TICK_VAL_MASK,
-				DEFAULT_CMPT_COAL_TIMER_TICK) |
-				FIELD_SET(C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK,
-				DEFAULT_CMPT_COAL_MAX_BUF_SZ);
-		qdma_reg_write(dev_hndl,
-				QDMA_S80_HARD_C2H_WRB_COAL_CFG_ADDR, reg_val);
-
-#if 0
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-				DEFAULT_H2C_THROT_DATA_THRESH) |
-				FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-				DEFAULT_THROT_EN_DATA);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-#endif
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?
-			QDMA_S80_HARD_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_S80_HARD_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?
-			QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_S80_HARD_DMA_SEL_DESC_PIDX_MASK,
-					reg_info->pidx) |
-			  FIELD_SET(QDMA_S80_HARD_DMA_SEL_IRQ_EN_MASK,
-					reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_queue_cmpt_cidx_update() - function to update the CMPT
- * CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_S80_HARD_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_S80_HARD_DMAP_SEL_CMPT_IRQ_EN_MASK,
-				reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_queue_intr_cidx_update() - function to update the
- * CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ?
-		QDMA_S80_HARD_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_S80_HARD_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_S80_HARD_DMA_SEL_INT_SW_CIDX_MASK,
-			reg_info->sw_cidx) |
-		FIELD_SET(QDMA_S80_HARD_DMA_SEL_INT_RING_IDX_MASK,
-			reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmp_get_user_bar() - Function to get the
- *			AXI Master Lite(user bar) number
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite(user bar) number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr = (is_vf) ? QDMA_S80_HARD_GLBL2_PF_VF_BARLITE_EXT_ADDR :
-			QDMA_S80_HARD_GLBL2_PF_BARLITE_EXT_ADDR;
-
-	if (!is_vf) {
-		user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	} else {
-		*user_bar = QDMA_S80_HARD_VF_USER_BAR_ID;
-		return QDMA_SUCCESS;
-	}
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_ram_sbe_err_process() -Function to dump SBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_s80_hard_dump_reg_info(dev_hndl, QDMA_S80_HARD_RAM_SBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_ram_dbe_err_process() -Function to dump DBE err debug info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_s80_hard_dump_reg_info(dev_hndl, QDMA_S80_HARD_RAM_DBE_STS_A_ADDR,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_desc_err_process() -Function to dump Descriptor Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_LOG0_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_ERR_LOG1_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_DBG_DAT0_ADDR,
-		QDMA_S80_HARD_GLBL_DSC_DBG_DAT1_ADDR
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_s80_hard_dump_reg_info(dev_hndl,
-					desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_trq_err_process() -Function to dump Target Access Err info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR,
-		QDMA_S80_HARD_GLBL_TRQ_ERR_LOG_ADDR
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_s80_hard_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_st_h2c_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_S80_HARD_H2C_ERR_STAT_ADDR,
-		QDMA_S80_HARD_H2C_FIRST_ERR_QID_ADDR,
-		QDMA_S80_HARD_H2C_DBG_REG0_ADDR,
-		QDMA_S80_HARD_H2C_DBG_REG1_ADDR,
-		QDMA_S80_HARD_H2C_DBG_REG2_ADDR,
-		QDMA_S80_HARD_H2C_DBG_REG3_ADDR,
-		QDMA_S80_HARD_H2C_DBG_REG4_ADDR
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_s80_hard_dump_reg_info(dev_hndl,
-					st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_st_c2h_err_process() - Function to dump MM H2C Error info
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_s80_hard_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_S80_HARD_C2H_ERR_STAT_ADDR,
-		QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR,
-		QDMA_S80_HARD_C2H_FIRST_ERR_QID_ADDR,
-		QDMA_S80_HARD_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR,
-		QDMA_S80_HARD_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR,
-		QDMA_S80_HARD_C2H_STAT_AXIS_PKG_CMP_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_0_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_1_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_2_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_3_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR,
-		QDMA_S80_HARD_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_s80_hard_dump_reg_info(dev_hndl,
-					st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_get_error_name() - Function to get the error in str format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_s80_hard_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_S80_HARD_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-			__func__,
-			(enum qdma_s80_hard_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_s80_hard_err_info[
-			(enum qdma_s80_hard_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t i = 0, j = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[QDMA_S80_HARD_TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_S80_HARD_DSC_ERR_POISON,
-		QDMA_S80_HARD_TRQ_ERR_UNMAPPED,
-		QDMA_S80_HARD_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_S80_HARD_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_S80_HARD_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-		QDMA_S80_HARD_SBE_ERR_MI_H2C0_DAT,
-		QDMA_S80_HARD_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl,
-			QDMA_S80_HARD_GLBL_ERR_STAT_ADDR);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("%s: Global Err Reg(0x%x) = 0x%x\n",
-				  __func__, QDMA_S80_HARD_GLBL_ERR_STAT_ADDR,
-				  glbl_err_stat);
-
-	for (i = 0; i < QDMA_S80_HARD_TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		j = hw_err_position[i];
-
-		if ((!dev_cap.st_en) &&
-			(j == QDMA_S80_HARD_ST_C2H_ERR_MTY_MISMATCH ||
-			j == QDMA_S80_HARD_ST_FATAL_ERR_MTY_MISMATCH ||
-			j == QDMA_S80_HARD_ST_H2C_ERR_ZERO_LEN_DESC_ERR))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_s80_hard_err_info[j].stat_reg_addr);
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-				qdma_s80_hard_err_info[j].stat_reg_addr,
-				err_stat);
-
-			qdma_s80_hard_err_info[j].qdma_s80_hard_hw_err_process(
-				dev_hndl);
-			for (idx = j;
-				idx < all_qdma_s80_hard_hw_errs[i];
-				idx++) {
-				/* call the platform specific handler */
-				if (err_stat &
-				qdma_s80_hard_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s\n",
-						__func__,
-						qdma_s80_hard_hw_get_error_name(
-							idx));
-			}
-			qdma_reg_write(dev_hndl,
-				qdma_s80_hard_err_info[j].stat_reg_addr,
-				err_stat);
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl,
-			QDMA_S80_HARD_GLBL_ERR_STAT_ADDR, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_S80_HARD_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-				__func__, (enum qdma_s80_hard_error_idx)err_idx,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_S80_HARD_ERRS_ALL) {
-		for (i = 0;
-				i < QDMA_S80_HARD_TOTAL_LEAF_ERROR_AGGREGATORS;
-				i++) {
-
-			idx = all_qdma_s80_hard_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_S80_HARD_ST_C2H_ERR_ALL ||
-					idx == QDMA_S80_HARD_ST_FATAL_ERR_ALL ||
-					idx == QDMA_S80_HARD_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_s80_hard_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_s80_hard_err_info[idx].mask_reg_addr,
-					reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_S80_HARD_GLBL_ERR_MASK_ADDR);
-			reg_val |= FIELD_SET(
-				qdma_s80_hard_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl,
-					QDMA_S80_HARD_GLBL_ERR_MASK_ADDR,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_S80_HARD_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_S80_HARD_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_s80_hard_err_info[err_idx].mask_reg_addr);
-		reg_val |=
-			FIELD_SET(qdma_s80_hard_err_info[err_idx].leaf_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-				qdma_s80_hard_err_info[err_idx].mask_reg_addr,
-						reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl,
-			QDMA_S80_HARD_GLBL_ERR_MASK_ADDR);
-		reg_val |=
-			FIELD_SET(
-				qdma_s80_hard_err_info[err_idx].global_err_mask,
-				1);
-		qdma_reg_write(dev_hndl,
-			QDMA_S80_HARD_GLBL_ERR_MASK_ADDR, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_get_device_attributes() - Function to get the qdma
- * device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_S80_HARD_GLBL2_PF_BARLITE_INT_ADDR);
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_S80_HARD_GLBL2_CHANNEL_CAP_ADDR);
-	dev_info->num_qs = (FIELD_GET(GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK,
-			reg_val));
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_S80_HARD_GLBL2_MISC_CAP_ADDR);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = 0;
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl,
-		QDMA_S80_HARD_GLBL2_CHANNEL_MDMA_ADDR);
-	dev_info->mm_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ENG_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ENG_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(GLBL2_CHANNEL_MDMA_C2H_ST_MASK, reg_val)
-		&& FIELD_GET(GLBL2_CHANNEL_MDMA_H2C_ST_MASK,
-		reg_val)) ? 1 : 0;
-
-	/* num of mm channels for Versal Hard is 2 */
-	dev_info->mm_channel_max = 2;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 1;
-	dev_info->cmpt_ovf_chk_dis = 0;
-	dev_info->mailbox_intr = 0;
-	dev_info->sw_desc_64b = 0;
-	dev_info->cmpt_desc_64b = 0;
-	dev_info->dynamic_bar = 0;
-	dev_info->legacy_intr = 0;
-	dev_info->cmpt_trig_count_timer = 0;
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- * @ctxt    :	pointer to the context data
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_S80_HARD_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_S80_HARD_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(CRED_CTXT_DATA_W0_CREDT_MASK,
-			cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h     :	is c2h queue
- * @hw_qid  :	hardware qid of the queue
- *
- * Return   :	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_s80_hard_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl    :	device handle
- * @c2h         :	is c2h queue
- * @hw_qid      :	hardware qid of the queue
- * @ctxt        :	pointer to the context data
- * @access_type :	HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_s80_hard_credit_context_read(dev_hndl, c2h,
-				hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_s80_hard_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_s80_hard_credit_context_invalidate(dev_hndl, c2h,
-				hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_dump_config_regs() - Function to get qdma config register
- * dump in a buffer
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @buf :	pointer to buffer to be filled
- * @buflen :	Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_s80_hard_config_num_regs_get();
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_s80_hard_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n", __func__,
-					   -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_s80_hard_config_regs_get();
-
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-					name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_s80_hard_queue_context() - Function to get qdma queue context dump
- * in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_s80_hard_context(ctxt_data, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_dump_s80_hard_intr_context() - Function to get qdma interrupt
- * context dump in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	req_buflen = qdma_s80_hard_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_s80_hard_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_read_dump_queue_context() - Function to read and dump the queue
- * context in a buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_read_dump_queue_context(void *dev_hndl,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_s80_hard_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_s80_hard_sw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read sw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_s80_hard_hw_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read hw context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_s80_hard_qid2vec_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.qid2vec),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read qid2vec context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_s80_hard_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw, &(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read credit context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_s80_hard_pfetch_ctx_conf(dev_hndl,
-					qid_hw,
-					&(context.pfetch_ctxt),
-					QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-			"%s: Failed to read pftech context, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-			(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_s80_hard_cmpt_ctx_conf(dev_hndl, qid_hw,
-						&(context.cmpt_ctxt),
-						 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s: Failed to read cmpt context, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-
-
-	rv = dump_s80_hard_context(&context, st, q_type,
-				buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_init_ctxt_memory() - Initialize the context for all queues
- *
- * @dev_hndl    :	device handle
- *
- * Return       :	0   - success and < 0 - failure
- *****************************************************************************/
-
-int qdma_s80_hard_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_info);
-	qdma_log_info("%s: clearing the context for all qs",
-			__func__);
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    (sel == QDMA_CTXT_SEL_PFTCH ||
-				sel == QDMA_CTXT_SEL_CMPT)) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug(" sel = %d", sel);
-				continue;
-			}
-
-			rv = qdma_s80_hard_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_s80_hard_fmap_clear(dev_hndl, i);
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return 0;
-}
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs = qdma_s80_hard_config_num_regs_get();
-
-	reg_info = qdma_s80_hard_config_regs_get();
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_s80_hard_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_s80_hard_config_regs_get();
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_s80_hard_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	uint32_t num_regs = qdma_s80_hard_config_num_regs_get();
-	struct xreg_info *reg_info = qdma_s80_hard_config_regs_get();
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_slot) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_S80_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_S80_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_S80_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_S80_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid slot received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_write_global_ring_sizes() - set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl,
-			QDMA_S80_HARD_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_read_global_ring_sizes() - function to get the
- *	global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl,
-			QDMA_S80_HARD_GLBL_RNG_SZ_1_ADDR, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_TIMER_CNT_1_ADDR,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_TIMER_CNT_1_ADDR, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_write_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_read_global_counter_threshold() - get the counter
- *	threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_read_global_counter_threshold(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_CNT_TH_1_ADDR, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_write_global_buffer_sizes(void *dev_hndl,
-		uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_S80_HARD_C2H_BUF_SZ_0_ADDR, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_s80_hard_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_s80_hard_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_s80_hard_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_s80_hard_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_s80_hard_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_s80_hard_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_s80_hard_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_s80_hard_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_global_writeback_interval_write() -  function to set the
- * writeback interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_S80_HARD_GLBL_DSC_CFG_ADDR);
-		reg_val |= FIELD_SET(GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl,
-				QDMA_S80_HARD_GLBL_DSC_CFG_ADDR, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_global_writeback_interval_read() -  function to get the
- * writeback interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_s80_hard_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl,
-				QDMA_S80_HARD_GLBL_DSC_CFG_ADDR);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv =
-		qdma_s80_hard_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv =
-		qdma_s80_hard_global_writeback_interval_write(dev_hndl,
-								*wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_s80_hard_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_s80_hard_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_S80_HARD_C2H_CHANNEL_CTL_ADDR :
-			QDMA_S80_HARD_H2C_CHANNEL_CTL_ADDR;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_s80_hard_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-int qdma_s80_hard_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_s80_hard_config_num_regs_get();
-	struct xreg_info *config_regs  = qdma_s80_hard_config_regs_get();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h
deleted file mode 100644
index 8ae6d60..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_access.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_S80_HARD_ACCESS_H_
-#define __QDMA_S80_HARD_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_s80_hard_error_idx {
-	/* Descriptor errors */
-	QDMA_S80_HARD_DSC_ERR_POISON,
-	QDMA_S80_HARD_DSC_ERR_UR_CA,
-	QDMA_S80_HARD_DSC_ERR_PARAM,
-	QDMA_S80_HARD_DSC_ERR_ADDR,
-	QDMA_S80_HARD_DSC_ERR_TAG,
-	QDMA_S80_HARD_DSC_ERR_FLR,
-	QDMA_S80_HARD_DSC_ERR_TIMEOUT,
-	QDMA_S80_HARD_DSC_ERR_DAT_POISON,
-	QDMA_S80_HARD_DSC_ERR_FLR_CANCEL,
-	QDMA_S80_HARD_DSC_ERR_DMA,
-	QDMA_S80_HARD_DSC_ERR_DSC,
-	QDMA_S80_HARD_DSC_ERR_RQ_CANCEL,
-	QDMA_S80_HARD_DSC_ERR_DBE,
-	QDMA_S80_HARD_DSC_ERR_SBE,
-	QDMA_S80_HARD_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_S80_HARD_TRQ_ERR_UNMAPPED,
-	QDMA_S80_HARD_TRQ_ERR_QID_RANGE,
-	QDMA_S80_HARD_TRQ_ERR_VF_ACCESS_ERR,
-	QDMA_S80_HARD_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_S80_HARD_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_S80_HARD_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_S80_HARD_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_S80_HARD_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_S80_HARD_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_S80_HARD_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_S80_HARD_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_S80_HARD_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_S80_HARD_ST_C2H_ERR_WRB_INV_Q_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_WRB_QFULL_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_WRB_CIDX_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_WRB_PRTY_ERR,
-	QDMA_S80_HARD_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_S80_HARD_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_S80_HARD_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_S80_HARD_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_S80_HARD_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_WRB_CTXT_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_INT_QID2VEC_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_WRB_COAL_DATA_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_S80_HARD_ST_FATAL_ERR_WPL_DATA_PAR_ERR,
-	QDMA_S80_HARD_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_S80_HARD_ST_H2C_ERR_ZERO_LEN_DESC_ERR,
-	QDMA_S80_HARD_ST_H2C_ERR_SDI_MRKR_REQ_MOP_ERR,
-	QDMA_S80_HARD_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_S80_HARD_ST_H2C_ERR_DBE,
-	QDMA_S80_HARD_ST_H2C_ERR_SBE,
-	QDMA_S80_HARD_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_S80_HARD_SBE_ERR_MI_H2C0_DAT,
-	QDMA_S80_HARD_SBE_ERR_MI_C2H0_DAT,
-	QDMA_S80_HARD_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_S80_HARD_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_S80_HARD_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_S80_HARD_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_S80_HARD_SBE_ERR_FUNC_MAP,
-	QDMA_S80_HARD_SBE_ERR_DSC_HW_CTXT,
-	QDMA_S80_HARD_SBE_ERR_DSC_CRD_RCV,
-	QDMA_S80_HARD_SBE_ERR_DSC_SW_CTXT,
-	QDMA_S80_HARD_SBE_ERR_DSC_CPLI,
-	QDMA_S80_HARD_SBE_ERR_DSC_CPLD,
-	QDMA_S80_HARD_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_S80_HARD_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_S80_HARD_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_S80_HARD_SBE_ERR_QID_FIFO_RAM,
-	QDMA_S80_HARD_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_S80_HARD_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_S80_HARD_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_S80_HARD_SBE_ERR_INT_CTXT_RAM,
-	QDMA_S80_HARD_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_S80_HARD_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_S80_HARD_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_S80_HARD_SBE_ERR_PFCH_LL_RAM,
-	QDMA_S80_HARD_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_S80_HARD_DBE_ERR_MI_H2C0_DAT,
-	QDMA_S80_HARD_DBE_ERR_MI_C2H0_DAT,
-	QDMA_S80_HARD_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_S80_HARD_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_S80_HARD_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_S80_HARD_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_S80_HARD_DBE_ERR_FUNC_MAP,
-	QDMA_S80_HARD_DBE_ERR_DSC_HW_CTXT,
-	QDMA_S80_HARD_DBE_ERR_DSC_CRD_RCV,
-	QDMA_S80_HARD_DBE_ERR_DSC_SW_CTXT,
-	QDMA_S80_HARD_DBE_ERR_DSC_CPLI,
-	QDMA_S80_HARD_DBE_ERR_DSC_CPLD,
-	QDMA_S80_HARD_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_S80_HARD_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_S80_HARD_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_S80_HARD_DBE_ERR_QID_FIFO_RAM,
-	QDMA_S80_HARD_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_S80_HARD_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_S80_HARD_DBE_ERR_INT_CTXT_RAM,
-	QDMA_S80_HARD_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_S80_HARD_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_S80_HARD_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_S80_HARD_DBE_ERR_PFCH_LL_RAM,
-	QDMA_S80_HARD_DBE_ERR_ALL,
-
-	QDMA_S80_HARD_ERRS_ALL
-};
-
-struct qdma_s80_hard_hw_err_info {
-	enum qdma_s80_hard_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_s80_hard_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_s80_hard_init_ctxt_memory(void *dev_hndl);
-
-int qdma_s80_hard_qid2vec_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			 struct qdma_qid2vec *ctxt,
-			 enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_fmap_conf(void *dev_hndl, uint16_t func_id,
-			struct qdma_fmap_cfg *config,
-			enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_set_default_global_csr(void *dev_hndl);
-
-int qdma_s80_hard_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_s80_hard_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_s80_hard_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_cmp_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar);
-
-int qdma_s80_hard_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-uint32_t qdma_s80_hard_reg_dump_buf_len(void);
-
-int qdma_s80_hard_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *req_buflen);
-
-int qdma_s80_hard_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_s80_hard_hw_error_process(void *dev_hndl);
-const char *qdma_s80_hard_hw_get_error_name(uint32_t err_idx);
-int qdma_s80_hard_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_s80_hard_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_s80_hard_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-int qdma_s80_hard_read_dump_queue_context(void *dev_hndl,
-		uint16_t qid_hw,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		char *buf, uint32_t buflen);
-
-int qdma_s80_hard_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_s80_hard_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_slot,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_s80_hard_global_csr_conf(void *dev_hndl, uint8_t index,
-				uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_s80_hard_mm_channel_conf(void *dev_hndl, uint8_t channel,
-				uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_s80_hard_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-				uint32_t num_regs, char *buf, uint32_t buflen);
-
-uint32_t qdma_s80_hard_get_config_num_regs(void);
-
-struct xreg_info *qdma_s80_hard_get_config_regs(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_S80_HARD_ACCESS_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h
deleted file mode 100644
index 3e2a535..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg.h
+++ /dev/null
@@ -1,2045 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
- 
-#ifndef __QDMA_S80_HARD_REG_H
-#define __QDMA_S80_HARD_REG_H
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "qdma_platform.h"
-
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-#define DEBGFS_LINE_SZ			(81)
-
-#ifdef ARRAY_SIZE
-#undef ARRAY_SIZE
-#endif
-#define ARRAY_SIZE(arr) (sizeof(arr) / \
-							sizeof(arr[0]))
-
-
-uint32_t qdma_s80_hard_config_num_regs_get(void);
-struct xreg_info *qdma_s80_hard_config_regs_get(void);
-#define QDMA_S80_HARD_CFG_BLK_IDENTIFIER_ADDR              0x00
-#define CFG_BLK_IDENTIFIER_MASK                           GENMASK(31, 20)
-#define CFG_BLK_IDENTIFIER_1_MASK                         GENMASK(19, 16)
-#define CFG_BLK_IDENTIFIER_RSVD_1_MASK                     GENMASK(15, 8)
-#define CFG_BLK_IDENTIFIER_VERSION_MASK                    GENMASK(7, 0)
-#define QDMA_S80_HARD_CFG_BLK_BUSDEV_ADDR                  0x04
-#define CFG_BLK_BUSDEV_BDF_MASK                            GENMASK(15, 0)
-#define QDMA_S80_HARD_CFG_BLK_PCIE_MAX_PLD_SIZE_ADDR       0x08
-#define CFG_BLK_PCIE_MAX_PLD_SIZE_MASK                    GENMASK(2, 0)
-#define QDMA_S80_HARD_CFG_BLK_PCIE_MAX_READ_REQ_SIZE_ADDR  0x0C
-#define CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK               GENMASK(2, 0)
-#define QDMA_S80_HARD_CFG_BLK_SYSTEM_ID_ADDR               0x10
-#define CFG_BLK_SYSTEM_ID_MASK                            GENMASK(15, 0)
-#define QDMA_S80_HARD_CFG_BLK_MSI_ENABLE_ADDR              0x014
-#define CFG_BLK_MSI_ENABLE_3_MASK                          BIT(17)
-#define CFG_BLK_MSI_ENABLE_MSIX3_MASK                      BIT(16)
-#define CFG_BLK_MSI_ENABLE_2_MASK                          BIT(13)
-#define CFG_BLK_MSI_ENABLE_MSIX2_MASK                      BIT(12)
-#define CFG_BLK_MSI_ENABLE_1_MASK                          BIT(9)
-#define CFG_BLK_MSI_ENABLE_MSIX1_MASK                      BIT(8)
-#define CFG_BLK_MSI_ENABLE_0_MASK                          BIT(1)
-#define CFG_BLK_MSI_ENABLE_MSIX0_MASK                      BIT(0)
-#define QDMA_S80_HARD_CFG_PCIE_DATA_WIDTH_ADDR             0x18
-#define CFG_PCIE_DATA_WIDTH_DATAPATH_MASK                  GENMASK(2, 0)
-#define QDMA_S80_HARD_CFG_PCIE_CTL_ADDR                    0x1C
-#define CFG_PCIE_CTL_RRQ_DISABLE_MASK                      BIT(1)
-#define CFG_PCIE_CTL_RELAXED_ORDERING_MASK                 BIT(0)
-#define QDMA_S80_HARD_CFG_AXI_USER_MAX_PLD_SIZE_ADDR       0x40
-#define CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK              GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK                GENMASK(2, 0)
-#define QDMA_S80_HARD_CFG_AXI_USER_MAX_READ_REQ_SIZE_ADDR  0x44
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK       GENMASK(6, 4)
-#define CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK         GENMASK(2, 0)
-#define QDMA_S80_HARD_CFG_BLK_MISC_CTL_ADDR                0x4C
-#define CFG_BLK_MISC_CTL_NUM_TAG_MASK                      GENMASK(19, 8)
-#define CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK       GENMASK(4, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_0_ADDR               0x80
-#define CFG_BLK_SCRATCH_0_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_1_ADDR               0x84
-#define CFG_BLK_SCRATCH_1_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_2_ADDR               0x88
-#define CFG_BLK_SCRATCH_2_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_3_ADDR               0x8C
-#define CFG_BLK_SCRATCH_3_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_4_ADDR               0x90
-#define CFG_BLK_SCRATCH_4_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_5_ADDR               0x94
-#define CFG_BLK_SCRATCH_5_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_6_ADDR               0x98
-#define CFG_BLK_SCRATCH_6_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_CFG_BLK_SCRATCH_7_ADDR               0x9C
-#define CFG_BLK_SCRATCH_7_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_RAM_SBE_MSK_A_ADDR                   0xF0
-#define RAM_SBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_RAM_SBE_STS_A_ADDR                   0xF4
-#define RAM_SBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_SBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_SBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_SBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_SBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_SBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_SBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_SBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_SBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_SBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_SBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_SBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_SBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_SBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_SBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_SBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_SBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_S80_HARD_RAM_DBE_MSK_A_ADDR                   0xF8
-#define RAM_DBE_MSK_A_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_RAM_DBE_STS_A_ADDR                   0xFC
-#define RAM_DBE_STS_A_RSVD_1_MASK                          BIT(31)
-#define RAM_DBE_STS_A_PFCH_LL_RAM_MASK                     BIT(30)
-#define RAM_DBE_STS_A_WRB_CTXT_RAM_MASK                    BIT(29)
-#define RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK                   BIT(28)
-#define RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK               BIT(27)
-#define RAM_DBE_STS_A_INT_CTXT_RAM_MASK                    BIT(26)
-#define RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK                 BIT(25)
-#define RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK               BIT(24)
-#define RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK                  BIT(23)
-#define RAM_DBE_STS_A_QID_FIFO_RAM_MASK                    BIT(22)
-#define RAM_DBE_STS_A_PLD_FIFO_RAM_MASK                    BIT(21)
-#define RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK                  BIT(20)
-#define RAM_DBE_STS_A_PASID_CTXT_RAM_MASK                  BIT(19)
-#define RAM_DBE_STS_A_DSC_CPLD_MASK                        BIT(18)
-#define RAM_DBE_STS_A_DSC_CPLI_MASK                        BIT(17)
-#define RAM_DBE_STS_A_DSC_SW_CTXT_MASK                     BIT(16)
-#define RAM_DBE_STS_A_DSC_CRD_RCV_MASK                     BIT(15)
-#define RAM_DBE_STS_A_DSC_HW_CTXT_MASK                     BIT(14)
-#define RAM_DBE_STS_A_FUNC_MAP_MASK                        BIT(13)
-#define RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK                  BIT(12)
-#define RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK                  BIT(11)
-#define RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK                  BIT(10)
-#define RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK                  BIT(9)
-#define RAM_DBE_STS_A_RSVD_2_MASK                          GENMASK(8, 5)
-#define RAM_DBE_STS_A_MI_C2H0_DAT_MASK                     BIT(4)
-#define RAM_DBE_STS_A_RSVD_3_MASK                          GENMASK(3, 1)
-#define RAM_DBE_STS_A_MI_H2C0_DAT_MASK                     BIT(0)
-#define QDMA_S80_HARD_GLBL2_IDENTIFIER_ADDR                0x100
-#define GLBL2_IDENTIFIER_MASK                             GENMASK(31, 8)
-#define GLBL2_IDENTIFIER_VERSION_MASK                      GENMASK(7, 0)
-#define QDMA_S80_HARD_GLBL2_PF_BARLITE_INT_ADDR            0x104
-#define GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL2_PF_VF_BARLITE_INT_ADDR         0x108
-#define GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL2_PF_BARLITE_EXT_ADDR            0x10C
-#define GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK              GENMASK(23, 18)
-#define GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK              GENMASK(17, 12)
-#define GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK              GENMASK(11, 6)
-#define GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK              GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL2_PF_VF_BARLITE_EXT_ADDR         0x110
-#define GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK               GENMASK(23, 18)
-#define GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK               GENMASK(17, 12)
-#define GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK               GENMASK(11, 6)
-#define GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK               GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_INST_ADDR              0x114
-#define GLBL2_CHANNEL_INST_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_INST_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_INST_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_INST_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_INST_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_INST_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_INST_H2C_ENG_MASK                    BIT(0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_MDMA_ADDR              0x118
-#define GLBL2_CHANNEL_MDMA_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_MDMA_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_MDMA_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_MDMA_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_MDMA_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_MDMA_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_MDMA_H2C_ENG_MASK                    BIT(0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_STRM_ADDR              0x11C
-#define GLBL2_CHANNEL_STRM_RSVD_1_MASK                     GENMASK(31, 18)
-#define GLBL2_CHANNEL_STRM_C2H_ST_MASK                     BIT(17)
-#define GLBL2_CHANNEL_STRM_H2C_ST_MASK                     BIT(16)
-#define GLBL2_CHANNEL_STRM_RSVD_2_MASK                     GENMASK(15, 9)
-#define GLBL2_CHANNEL_STRM_C2H_ENG_MASK                    BIT(8)
-#define GLBL2_CHANNEL_STRM_RSVD_3_MASK                     GENMASK(7, 1)
-#define GLBL2_CHANNEL_STRM_H2C_ENG_MASK                    BIT(0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_CAP_ADDR               0x120
-#define GLBL2_CHANNEL_CAP_RSVD_1_MASK                      GENMASK(31, 12)
-#define GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK                  GENMASK(11, 0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_PASID_CAP_ADDR         0x128
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK                GENMASK(31, 16)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK          GENMASK(15, 4)
-#define GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK                GENMASK(3, 2)
-#define GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK              BIT(1)
-#define GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK                 BIT(0)
-#define QDMA_S80_HARD_GLBL2_CHANNEL_FUNC_RET_ADDR          0x12C
-#define GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK                 GENMASK(31, 8)
-#define GLBL2_CHANNEL_FUNC_RET_FUNC_MASK                   GENMASK(7, 0)
-#define QDMA_S80_HARD_GLBL2_SYSTEM_ID_ADDR                 0x130
-#define GLBL2_SYSTEM_ID_RSVD_1_MASK                        GENMASK(31, 16)
-#define GLBL2_SYSTEM_ID_MASK                              GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL2_MISC_CAP_ADDR                  0x134
-#define GLBL2_MISC_CAP_RSVD_1_MASK                         GENMASK(31, 0)
-#define QDMA_S80_HARD_GLBL2_DBG_PCIE_RQ0_ADDR              0x1B8
-#define GLBL2_PCIE_RQ0_NPH_AVL_MASK                    GENMASK(31, 20)
-#define GLBL2_PCIE_RQ0_RCB_AVL_MASK                    GENMASK(19, 10)
-#define GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK               GENMASK(9, 4)
-#define GLBL2_PCIE_RQ0_TAG_EP_MASK                     GENMASK(3, 2)
-#define GLBL2_PCIE_RQ0_TAG_FL_MASK                     GENMASK(1, 0)
-#define QDMA_S80_HARD_GLBL2_DBG_PCIE_RQ1_ADDR              0x1BC
-#define GLBL2_PCIE_RQ1_RSVD_1_MASK                     GENMASK(31, 17)
-#define GLBL2_PCIE_RQ1_WTLP_REQ_MASK                   BIT(16)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK        BIT(15)
-#define GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK        BIT(14)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK                 BIT(13)
-#define GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK                 BIT(12)
-#define GLBL2_PCIE_RQ1_TLPSM_MASK                      GENMASK(11, 9)
-#define GLBL2_PCIE_RQ1_TLPSM512_MASK                   GENMASK(8, 6)
-#define GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK               BIT(5)
-#define GLBL2_PCIE_RQ1_RREQ0_SLV_MASK                  BIT(4)
-#define GLBL2_PCIE_RQ1_RREQ0_VLD_MASK                  BIT(3)
-#define GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK               BIT(2)
-#define GLBL2_PCIE_RQ1_RREQ1_SLV_MASK                  BIT(1)
-#define GLBL2_PCIE_RQ1_RREQ1_VLD_MASK                  BIT(0)
-#define QDMA_S80_HARD_GLBL2_DBG_AXIMM_WR0_ADDR             0x1C0
-#define GLBL2_AXIMM_WR0_RSVD_1_MASK                    GENMASK(31, 27)
-#define GLBL2_AXIMM_WR0_WR_REQ_MASK                    BIT(26)
-#define GLBL2_AXIMM_WR0_WR_CHN_MASK                    GENMASK(25, 23)
-#define GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK         BIT(22)
-#define GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK               BIT(21)
-#define GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK            GENMASK(20, 18)
-#define GLBL2_AXIMM_WR0_WRREQ_CNT_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR0_BID_MASK                       GENMASK(11, 9)
-#define GLBL2_AXIMM_WR0_BVALID_MASK                    BIT(8)
-#define GLBL2_AXIMM_WR0_BREADY_MASK                    BIT(7)
-#define GLBL2_AXIMM_WR0_WVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_WR0_WREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_WR0_AWID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_WR0_AWVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_WR0_AWREADY_MASK                   BIT(0)
-#define QDMA_S80_HARD_GLBL2_DBG_AXIMM_WR1_ADDR             0x1C4
-#define GLBL2_AXIMM_WR1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_WR1_BRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_WR1_BRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_WR1_BRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_WR1_BRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_WR1_BRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL2_DBG_AXIMM_RD0_ADDR             0x1C8
-#define GLBL2_AXIMM_RD0_RSVD_1_MASK                    GENMASK(31, 23)
-#define GLBL2_AXIMM_RD0_PND_CNT_MASK                   GENMASK(22, 17)
-#define GLBL2_AXIMM_RD0_RD_CHNL_MASK                   GENMASK(16, 14)
-#define GLBL2_AXIMM_RD0_RD_REQ_MASK                    BIT(13)
-#define GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK           GENMASK(12, 10)
-#define GLBL2_AXIMM_RD0_RID_MASK                       GENMASK(9, 7)
-#define GLBL2_AXIMM_RD0_RVALID_MASK                    BIT(6)
-#define GLBL2_AXIMM_RD0_RREADY_MASK                    BIT(5)
-#define GLBL2_AXIMM_RD0_ARID_MASK                      GENMASK(4, 2)
-#define GLBL2_AXIMM_RD0_ARVALID_MASK                   BIT(1)
-#define GLBL2_AXIMM_RD0_ARREADY_MASK                   BIT(0)
-#define QDMA_S80_HARD_GLBL2_DBG_AXIMM_RD1_ADDR             0x1CC
-#define GLBL2_AXIMM_RD1_RSVD_1_MASK                    GENMASK(31, 30)
-#define GLBL2_AXIMM_RD1_RRSP_CNT4_MASK                 GENMASK(29, 24)
-#define GLBL2_AXIMM_RD1_RRSP_CNT3_MASK                 GENMASK(23, 18)
-#define GLBL2_AXIMM_RD1_RRSP_CNT2_MASK                 GENMASK(17, 12)
-#define GLBL2_AXIMM_RD1_RRSP_CNT1_MASK                 GENMASK(11, 6)
-#define GLBL2_AXIMM_RD1_RRSP_CNT0_MASK                 GENMASK(5, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_1_ADDR                   0x204
-#define GLBL_RNG_SZ_1_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_1_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_2_ADDR                   0x208
-#define GLBL_RNG_SZ_2_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_2_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_3_ADDR                   0x20C
-#define GLBL_RNG_SZ_3_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_3_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_4_ADDR                   0x210
-#define GLBL_RNG_SZ_4_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_4_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_5_ADDR                   0x214
-#define GLBL_RNG_SZ_5_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_5_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_6_ADDR                   0x218
-#define GLBL_RNG_SZ_6_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_6_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_7_ADDR                   0x21C
-#define GLBL_RNG_SZ_7_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_7_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_8_ADDR                   0x220
-#define GLBL_RNG_SZ_8_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_8_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_9_ADDR                   0x224
-#define GLBL_RNG_SZ_9_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_9_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_A_ADDR                   0x228
-#define GLBL_RNG_SZ_A_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_A_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_B_ADDR                   0x22C
-#define GLBL_RNG_SZ_B_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_B_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_C_ADDR                   0x230
-#define GLBL_RNG_SZ_C_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_C_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_D_ADDR                   0x234
-#define GLBL_RNG_SZ_D_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_D_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_E_ADDR                   0x238
-#define GLBL_RNG_SZ_E_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_E_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_F_ADDR                   0x23C
-#define GLBL_RNG_SZ_F_RSVD_1_MASK                          GENMASK(31, 16)
-#define GLBL_RNG_SZ_F_RING_SIZE_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_RNG_SZ_10_ADDR                  0x240
-#define GLBL_RNG_SZ_10_RSVD_1_MASK                         GENMASK(31, 16)
-#define GLBL_RNG_SZ_10_RING_SIZE_MASK                      GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_ERR_STAT_ADDR                   0x248
-#define GLBL_ERR_STAT_RSVD_1_MASK                          GENMASK(31, 12)
-#define GLBL_ERR_STAT_ERR_H2C_ST_MASK                      BIT(11)
-#define GLBL_ERR_STAT_ERR_BDG_MASK                         BIT(10)
-#define GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK                BIT(9)
-#define GLBL_ERR_STAT_ERR_C2H_ST_MASK                      BIT(8)
-#define GLBL_ERR_STAT_ERR_C2H_MM_1_MASK                    BIT(7)
-#define GLBL_ERR_STAT_ERR_C2H_MM_0_MASK                    BIT(6)
-#define GLBL_ERR_STAT_ERR_H2C_MM_1_MASK                    BIT(5)
-#define GLBL_ERR_STAT_ERR_H2C_MM_0_MASK                    BIT(4)
-#define GLBL_ERR_STAT_ERR_TRQ_MASK                         BIT(3)
-#define GLBL_ERR_STAT_ERR_DSC_MASK                         BIT(2)
-#define GLBL_ERR_STAT_ERR_RAM_DBE_MASK                     BIT(1)
-#define GLBL_ERR_STAT_ERR_RAM_SBE_MASK                     BIT(0)
-#define QDMA_S80_HARD_GLBL_ERR_MASK_ADDR                   0x24C
-#define GLBL_ERR_RSVD_1_MASK                          GENMASK(31, 9)
-#define GLBL_ERR_MASK                            GENMASK(8, 0)
-#define QDMA_S80_HARD_GLBL_DSC_CFG_ADDR                    0x250
-#define GLBL_DSC_CFG_RSVD_1_MASK                           GENMASK(31, 10)
-#define GLBL_DSC_CFG_UNC_OVR_COR_MASK                      BIT(9)
-#define GLBL_DSC_CFG_CTXT_FER_DIS_MASK                     BIT(8)
-#define GLBL_DSC_CFG_RSVD_2_MASK                           GENMASK(7, 6)
-#define GLBL_DSC_CFG_MAXFETCH_MASK                         GENMASK(5, 3)
-#define GLBL_DSC_CFG_WB_ACC_INT_MASK                       GENMASK(2, 0)
-#define QDMA_S80_HARD_GLBL_DSC_ERR_STS_ADDR                0x254
-#define GLBL_DSC_ERR_STS_RSVD_1_MASK                       GENMASK(31, 25)
-#define GLBL_DSC_ERR_STS_SBE_MASK                          BIT(24)
-#define GLBL_DSC_ERR_STS_DBE_MASK                          BIT(23)
-#define GLBL_DSC_ERR_STS_RQ_CANCEL_MASK                    BIT(22)
-#define GLBL_DSC_ERR_STS_DSC_MASK                          BIT(21)
-#define GLBL_DSC_ERR_STS_DMA_MASK                          BIT(20)
-#define GLBL_DSC_ERR_STS_FLR_CANCEL_MASK                   BIT(19)
-#define GLBL_DSC_ERR_STS_RSVD_2_MASK                       GENMASK(18, 17)
-#define GLBL_DSC_ERR_STS_DAT_POISON_MASK                   BIT(16)
-#define GLBL_DSC_ERR_STS_TIMEOUT_MASK                      BIT(9)
-#define GLBL_DSC_ERR_STS_FLR_MASK                          BIT(5)
-#define GLBL_DSC_ERR_STS_TAG_MASK                          BIT(4)
-#define GLBL_DSC_ERR_STS_ADDR_MASK                         BIT(3)
-#define GLBL_DSC_ERR_STS_PARAM_MASK                        BIT(2)
-#define GLBL_DSC_ERR_STS_UR_CA_MASK                        BIT(1)
-#define GLBL_DSC_ERR_STS_POISON_MASK                       BIT(0)
-#define QDMA_S80_HARD_GLBL_DSC_ERR_MSK_ADDR                0x258
-#define GLBL_DSC_ERR_MSK_MASK                         GENMASK(8, 0)
-#define QDMA_S80_HARD_GLBL_DSC_ERR_LOG0_ADDR               0x25C
-#define GLBL_DSC_ERR_LOG0_VALID_MASK                       BIT(31)
-#define GLBL_DSC_ERR_LOG0_RSVD_1_MASK                      GENMASK(30, 29)
-#define GLBL_DSC_ERR_LOG0_QID_MASK                         GENMASK(28, 17)
-#define GLBL_DSC_ERR_LOG0_SEL_MASK                         BIT(16)
-#define GLBL_DSC_ERR_LOG0_CIDX_MASK                        GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_DSC_ERR_LOG1_ADDR               0x260
-#define GLBL_DSC_ERR_LOG1_RSVD_1_MASK                      GENMASK(31, 9)
-#define GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK                    GENMASK(8, 5)
-#define GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK                    GENMASK(4, 0)
-#define QDMA_S80_HARD_GLBL_TRQ_ERR_STS_ADDR                0x264
-#define GLBL_TRQ_ERR_STS_RSVD_1_MASK                       GENMASK(31, 4)
-#define GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK                  BIT(3)
-#define GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK                BIT(2)
-#define GLBL_TRQ_ERR_STS_QID_RANGE_MASK                    BIT(1)
-#define GLBL_TRQ_ERR_STS_UNMAPPED_MASK                     BIT(0)
-#define QDMA_S80_HARD_GLBL_TRQ_ERR_MSK_ADDR                0x268
-#define GLBL_TRQ_ERR_MSK_MASK                         GENMASK(31, 0)
-#define QDMA_S80_HARD_GLBL_TRQ_ERR_LOG_ADDR                0x26C
-#define GLBL_TRQ_ERR_LOG_RSVD_1_MASK                       GENMASK(31, 28)
-#define GLBL_TRQ_ERR_LOG_TARGET_MASK                       GENMASK(27, 24)
-#define GLBL_TRQ_ERR_LOG_FUNC_MASK                         GENMASK(23, 16)
-#define GLBL_TRQ_ERR_LOG_ADDRESS_MASK                      GENMASK(15, 0)
-#define QDMA_S80_HARD_GLBL_DSC_DBG_DAT0_ADDR               0x270
-#define GLBL_DSC_DAT0_RSVD_1_MASK                      GENMASK(31, 30)
-#define GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK                BIT(29)
-#define GLBL_DSC_DAT0_CTXT_ARB_QID_MASK                GENMASK(28, 17)
-#define GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK                GENMASK(16, 12)
-#define GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK                 BIT(11)
-#define GLBL_DSC_DAT0_TMSTALL_MASK                     BIT(10)
-#define GLBL_DSC_DAT0_RRQ_STALL_MASK                   GENMASK(9, 8)
-#define GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK          GENMASK(7, 6)
-#define GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK          GENMASK(5, 4)
-#define GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK          GENMASK(3, 2)
-#define GLBL_DSC_DAT0_DSC_OUT_STALL_MASK               GENMASK(1, 0)
-#define QDMA_S80_HARD_GLBL_DSC_DBG_DAT1_ADDR               0x274
-#define GLBL_DSC_DAT1_RSVD_1_MASK                      GENMASK(31, 28)
-#define GLBL_DSC_DAT1_EVT_SPC_C2H_MASK                 GENMASK(27, 22)
-#define GLBL_DSC_DAT1_EVT_SP_H2C_MASK                  GENMASK(21, 16)
-#define GLBL_DSC_DAT1_DSC_SPC_C2H_MASK                 GENMASK(15, 8)
-#define GLBL_DSC_DAT1_DSC_SPC_H2C_MASK                 GENMASK(7, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_0_ADDR                  0x400
-#define TRQ_SEL_FMAP_0_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_0_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_0_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1_ADDR                  0x404
-#define TRQ_SEL_FMAP_1_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2_ADDR                  0x408
-#define TRQ_SEL_FMAP_2_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3_ADDR                  0x40C
-#define TRQ_SEL_FMAP_3_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4_ADDR                  0x410
-#define TRQ_SEL_FMAP_4_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5_ADDR                  0x414
-#define TRQ_SEL_FMAP_5_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6_ADDR                  0x418
-#define TRQ_SEL_FMAP_6_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7_ADDR                  0x41C
-#define TRQ_SEL_FMAP_7_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8_ADDR                  0x420
-#define TRQ_SEL_FMAP_8_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9_ADDR                  0x424
-#define TRQ_SEL_FMAP_9_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A_ADDR                  0x428
-#define TRQ_SEL_FMAP_A_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B_ADDR                  0x42C
-#define TRQ_SEL_FMAP_B_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D_ADDR                  0x430
-#define TRQ_SEL_FMAP_D_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E_ADDR                  0x434
-#define TRQ_SEL_FMAP_E_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_F_ADDR                  0x438
-#define TRQ_SEL_FMAP_F_RSVD_1_MASK                         GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F_QID_MAX_MASK                        GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F_QID_BASE_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_10_ADDR                 0x43C
-#define TRQ_SEL_FMAP_10_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_10_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_10_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_11_ADDR                 0x440
-#define TRQ_SEL_FMAP_11_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_11_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_11_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_12_ADDR                 0x444
-#define TRQ_SEL_FMAP_12_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_12_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_12_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_13_ADDR                 0x448
-#define TRQ_SEL_FMAP_13_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_13_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_13_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_14_ADDR                 0x44C
-#define TRQ_SEL_FMAP_14_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_14_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_14_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_15_ADDR                 0x450
-#define TRQ_SEL_FMAP_15_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_15_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_15_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_16_ADDR                 0x454
-#define TRQ_SEL_FMAP_16_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_16_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_16_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_17_ADDR                 0x458
-#define TRQ_SEL_FMAP_17_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_17_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_17_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_18_ADDR                 0x45C
-#define TRQ_SEL_FMAP_18_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_18_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_18_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_19_ADDR                 0x460
-#define TRQ_SEL_FMAP_19_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_19_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_19_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1A_ADDR                 0x464
-#define TRQ_SEL_FMAP_1A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1B_ADDR                 0x468
-#define TRQ_SEL_FMAP_1B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1C_ADDR                 0x46C
-#define TRQ_SEL_FMAP_1C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1D_ADDR                 0x470
-#define TRQ_SEL_FMAP_1D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1E_ADDR                 0x474
-#define TRQ_SEL_FMAP_1E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_1F_ADDR                 0x478
-#define TRQ_SEL_FMAP_1F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_1F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_1F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_20_ADDR                 0x47C
-#define TRQ_SEL_FMAP_20_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_20_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_20_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_21_ADDR                 0x480
-#define TRQ_SEL_FMAP_21_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_21_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_21_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_22_ADDR                 0x484
-#define TRQ_SEL_FMAP_22_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_22_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_22_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_23_ADDR                 0x488
-#define TRQ_SEL_FMAP_23_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_23_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_23_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_24_ADDR                 0x48C
-#define TRQ_SEL_FMAP_24_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_24_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_24_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_25_ADDR                 0x490
-#define TRQ_SEL_FMAP_25_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_25_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_25_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_26_ADDR                 0x494
-#define TRQ_SEL_FMAP_26_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_26_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_26_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_27_ADDR                 0x498
-#define TRQ_SEL_FMAP_27_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_27_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_27_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_28_ADDR                 0x49C
-#define TRQ_SEL_FMAP_28_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_28_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_28_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_29_ADDR                 0x4A0
-#define TRQ_SEL_FMAP_29_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_29_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_29_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2A_ADDR                 0x4A4
-#define TRQ_SEL_FMAP_2A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2B_ADDR                 0x4A8
-#define TRQ_SEL_FMAP_2B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2C_ADDR                 0x4AC
-#define TRQ_SEL_FMAP_2C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2D_ADDR                 0x4B0
-#define TRQ_SEL_FMAP_2D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2E_ADDR                 0x4B4
-#define TRQ_SEL_FMAP_2E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_2F_ADDR                 0x4B8
-#define TRQ_SEL_FMAP_2F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_2F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_2F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_30_ADDR                 0x4BC
-#define TRQ_SEL_FMAP_30_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_30_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_30_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_31_ADDR                 0x4D0
-#define TRQ_SEL_FMAP_31_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_31_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_31_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_32_ADDR                 0x4D4
-#define TRQ_SEL_FMAP_32_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_32_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_32_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_33_ADDR                 0x4D8
-#define TRQ_SEL_FMAP_33_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_33_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_33_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_34_ADDR                 0x4DC
-#define TRQ_SEL_FMAP_34_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_34_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_34_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_35_ADDR                 0x4E0
-#define TRQ_SEL_FMAP_35_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_35_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_35_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_36_ADDR                 0x4E4
-#define TRQ_SEL_FMAP_36_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_36_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_36_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_37_ADDR                 0x4E8
-#define TRQ_SEL_FMAP_37_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_37_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_37_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_38_ADDR                 0x4EC
-#define TRQ_SEL_FMAP_38_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_38_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_38_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_39_ADDR                 0x4F0
-#define TRQ_SEL_FMAP_39_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_39_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_39_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3A_ADDR                 0x4F4
-#define TRQ_SEL_FMAP_3A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3B_ADDR                 0x4F8
-#define TRQ_SEL_FMAP_3B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3C_ADDR                 0x4FC
-#define TRQ_SEL_FMAP_3C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3D_ADDR                 0x500
-#define TRQ_SEL_FMAP_3D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3E_ADDR                 0x504
-#define TRQ_SEL_FMAP_3E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_3F_ADDR                 0x508
-#define TRQ_SEL_FMAP_3F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_3F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_3F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_40_ADDR                 0x50C
-#define TRQ_SEL_FMAP_40_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_40_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_40_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_41_ADDR                 0x510
-#define TRQ_SEL_FMAP_41_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_41_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_41_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_42_ADDR                 0x514
-#define TRQ_SEL_FMAP_42_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_42_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_42_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_43_ADDR                 0x518
-#define TRQ_SEL_FMAP_43_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_43_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_43_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_44_ADDR                 0x51C
-#define TRQ_SEL_FMAP_44_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_44_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_44_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_45_ADDR                 0x520
-#define TRQ_SEL_FMAP_45_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_45_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_45_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_46_ADDR                 0x524
-#define TRQ_SEL_FMAP_46_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_46_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_46_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_47_ADDR                 0x528
-#define TRQ_SEL_FMAP_47_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_47_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_47_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_48_ADDR                 0x52C
-#define TRQ_SEL_FMAP_48_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_48_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_48_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_49_ADDR                 0x530
-#define TRQ_SEL_FMAP_49_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_49_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_49_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4A_ADDR                 0x534
-#define TRQ_SEL_FMAP_4A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4B_ADDR                 0x538
-#define TRQ_SEL_FMAP_4B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4C_ADDR                 0x53C
-#define TRQ_SEL_FMAP_4C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4D_ADDR                 0x540
-#define TRQ_SEL_FMAP_4D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4E_ADDR                 0x544
-#define TRQ_SEL_FMAP_4E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_4F_ADDR                 0x548
-#define TRQ_SEL_FMAP_4F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_4F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_4F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_50_ADDR                 0x54C
-#define TRQ_SEL_FMAP_50_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_50_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_50_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_51_ADDR                 0x550
-#define TRQ_SEL_FMAP_51_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_51_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_51_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_52_ADDR                 0x554
-#define TRQ_SEL_FMAP_52_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_52_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_52_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_53_ADDR                 0x558
-#define TRQ_SEL_FMAP_53_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_53_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_53_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_54_ADDR                 0x55C
-#define TRQ_SEL_FMAP_54_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_54_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_54_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_55_ADDR                 0x560
-#define TRQ_SEL_FMAP_55_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_55_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_55_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_56_ADDR                 0x564
-#define TRQ_SEL_FMAP_56_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_56_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_56_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_57_ADDR                 0x568
-#define TRQ_SEL_FMAP_57_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_57_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_57_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_58_ADDR                 0x56C
-#define TRQ_SEL_FMAP_58_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_58_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_58_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_59_ADDR                 0x570
-#define TRQ_SEL_FMAP_59_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_59_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_59_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5A_ADDR                 0x574
-#define TRQ_SEL_FMAP_5A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5B_ADDR                 0x578
-#define TRQ_SEL_FMAP_5B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5C_ADDR                 0x57C
-#define TRQ_SEL_FMAP_5C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5D_ADDR                 0x580
-#define TRQ_SEL_FMAP_5D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5E_ADDR                 0x584
-#define TRQ_SEL_FMAP_5E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_5F_ADDR                 0x588
-#define TRQ_SEL_FMAP_5F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_5F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_5F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_60_ADDR                 0x58C
-#define TRQ_SEL_FMAP_60_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_60_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_60_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_61_ADDR                 0x590
-#define TRQ_SEL_FMAP_61_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_61_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_61_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_62_ADDR                 0x594
-#define TRQ_SEL_FMAP_62_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_62_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_62_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_63_ADDR                 0x598
-#define TRQ_SEL_FMAP_63_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_63_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_63_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_64_ADDR                 0x59C
-#define TRQ_SEL_FMAP_64_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_64_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_64_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_65_ADDR                 0x5A0
-#define TRQ_SEL_FMAP_65_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_65_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_65_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_66_ADDR                 0x5A4
-#define TRQ_SEL_FMAP_66_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_66_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_66_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_67_ADDR                 0x5A8
-#define TRQ_SEL_FMAP_67_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_67_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_67_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_68_ADDR                 0x5AC
-#define TRQ_SEL_FMAP_68_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_68_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_68_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_69_ADDR                 0x5B0
-#define TRQ_SEL_FMAP_69_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_69_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_69_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6A_ADDR                 0x5B4
-#define TRQ_SEL_FMAP_6A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6B_ADDR                 0x5B8
-#define TRQ_SEL_FMAP_6B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6C_ADDR                 0x5BC
-#define TRQ_SEL_FMAP_6C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6D_ADDR                 0x5C0
-#define TRQ_SEL_FMAP_6D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6E_ADDR                 0x5C4
-#define TRQ_SEL_FMAP_6E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_6F_ADDR                 0x5C8
-#define TRQ_SEL_FMAP_6F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_6F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_6F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_70_ADDR                 0x5CC
-#define TRQ_SEL_FMAP_70_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_70_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_70_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_71_ADDR                 0x5D0
-#define TRQ_SEL_FMAP_71_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_71_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_71_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_72_ADDR                 0x5D4
-#define TRQ_SEL_FMAP_72_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_72_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_72_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_73_ADDR                 0x5D8
-#define TRQ_SEL_FMAP_73_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_73_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_73_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_74_ADDR                 0x5DC
-#define TRQ_SEL_FMAP_74_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_74_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_74_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_75_ADDR                 0x5E0
-#define TRQ_SEL_FMAP_75_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_75_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_75_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_76_ADDR                 0x5E4
-#define TRQ_SEL_FMAP_76_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_76_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_76_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_77_ADDR                 0x5E8
-#define TRQ_SEL_FMAP_77_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_77_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_77_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_78_ADDR                 0x5EC
-#define TRQ_SEL_FMAP_78_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_78_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_78_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_79_ADDR                 0x5F0
-#define TRQ_SEL_FMAP_79_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_79_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_79_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7A_ADDR                 0x5F4
-#define TRQ_SEL_FMAP_7A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7B_ADDR                 0x5F8
-#define TRQ_SEL_FMAP_7B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7C_ADDR                 0x5FC
-#define TRQ_SEL_FMAP_7C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7D_ADDR                 0x600
-#define TRQ_SEL_FMAP_7D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7E_ADDR                 0x604
-#define TRQ_SEL_FMAP_7E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_7F_ADDR                 0x608
-#define TRQ_SEL_FMAP_7F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_7F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_7F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_80_ADDR                 0x60C
-#define TRQ_SEL_FMAP_80_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_80_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_80_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_81_ADDR                 0x610
-#define TRQ_SEL_FMAP_81_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_81_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_81_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_82_ADDR                 0x614
-#define TRQ_SEL_FMAP_82_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_82_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_82_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_83_ADDR                 0x618
-#define TRQ_SEL_FMAP_83_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_83_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_83_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_84_ADDR                 0x61C
-#define TRQ_SEL_FMAP_84_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_84_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_84_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_85_ADDR                 0x620
-#define TRQ_SEL_FMAP_85_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_85_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_85_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_86_ADDR                 0x624
-#define TRQ_SEL_FMAP_86_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_86_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_86_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_87_ADDR                 0x628
-#define TRQ_SEL_FMAP_87_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_87_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_87_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_88_ADDR                 0x62C
-#define TRQ_SEL_FMAP_88_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_88_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_88_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_89_ADDR                 0x630
-#define TRQ_SEL_FMAP_89_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_89_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_89_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8A_ADDR                 0x634
-#define TRQ_SEL_FMAP_8A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8B_ADDR                 0x638
-#define TRQ_SEL_FMAP_8B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8C_ADDR                 0x63C
-#define TRQ_SEL_FMAP_8C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8D_ADDR                 0x640
-#define TRQ_SEL_FMAP_8D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8E_ADDR                 0x644
-#define TRQ_SEL_FMAP_8E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_8F_ADDR                 0x648
-#define TRQ_SEL_FMAP_8F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_8F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_8F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_90_ADDR                 0x64C
-#define TRQ_SEL_FMAP_90_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_90_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_90_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_91_ADDR                 0x650
-#define TRQ_SEL_FMAP_91_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_91_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_91_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_92_ADDR                 0x654
-#define TRQ_SEL_FMAP_92_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_92_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_92_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_93_ADDR                 0x658
-#define TRQ_SEL_FMAP_93_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_93_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_93_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_94_ADDR                 0x65C
-#define TRQ_SEL_FMAP_94_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_94_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_94_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_95_ADDR                 0x660
-#define TRQ_SEL_FMAP_95_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_95_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_95_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_96_ADDR                 0x664
-#define TRQ_SEL_FMAP_96_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_96_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_96_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_97_ADDR                 0x668
-#define TRQ_SEL_FMAP_97_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_97_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_97_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_98_ADDR                 0x66C
-#define TRQ_SEL_FMAP_98_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_98_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_98_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_99_ADDR                 0x670
-#define TRQ_SEL_FMAP_99_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_99_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_99_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9A_ADDR                 0x674
-#define TRQ_SEL_FMAP_9A_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9A_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9A_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9B_ADDR                 0x678
-#define TRQ_SEL_FMAP_9B_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9B_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9B_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9C_ADDR                 0x67C
-#define TRQ_SEL_FMAP_9C_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9C_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9C_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9D_ADDR                 0x680
-#define TRQ_SEL_FMAP_9D_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9D_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9D_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9E_ADDR                 0x684
-#define TRQ_SEL_FMAP_9E_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9E_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9E_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_9F_ADDR                 0x688
-#define TRQ_SEL_FMAP_9F_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_9F_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_9F_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A0_ADDR                 0x68C
-#define TRQ_SEL_FMAP_A0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A1_ADDR                 0x690
-#define TRQ_SEL_FMAP_A1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A2_ADDR                 0x694
-#define TRQ_SEL_FMAP_A2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A3_ADDR                 0x698
-#define TRQ_SEL_FMAP_A3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A4_ADDR                 0x69C
-#define TRQ_SEL_FMAP_A4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A5_ADDR                 0x6A0
-#define TRQ_SEL_FMAP_A5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A6_ADDR                 0x6A4
-#define TRQ_SEL_FMAP_A6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A7_ADDR                 0x6A8
-#define TRQ_SEL_FMAP_A7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A8_ADDR                 0x6AC
-#define TRQ_SEL_FMAP_A8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_A9_ADDR                 0x6B0
-#define TRQ_SEL_FMAP_A9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_A9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_A9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AA_ADDR                 0x6B4
-#define TRQ_SEL_FMAP_AA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AB_ADDR                 0x6B8
-#define TRQ_SEL_FMAP_AB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AC_ADDR                 0x6BC
-#define TRQ_SEL_FMAP_AC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AD_ADDR                 0x6D0
-#define TRQ_SEL_FMAP_AD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AE_ADDR                 0x6D4
-#define TRQ_SEL_FMAP_AE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_AF_ADDR                 0x6D8
-#define TRQ_SEL_FMAP_AF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_AF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_AF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B0_ADDR                 0x6DC
-#define TRQ_SEL_FMAP_B0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B1_ADDR                 0x6E0
-#define TRQ_SEL_FMAP_B1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B2_ADDR                 0x6E4
-#define TRQ_SEL_FMAP_B2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B3_ADDR                 0x6E8
-#define TRQ_SEL_FMAP_B3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B4_ADDR                 0x6EC
-#define TRQ_SEL_FMAP_B4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B5_ADDR                 0x6F0
-#define TRQ_SEL_FMAP_B5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B6_ADDR                 0x6F4
-#define TRQ_SEL_FMAP_B6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B7_ADDR                 0x6F8
-#define TRQ_SEL_FMAP_B7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B8_ADDR                 0x6FC
-#define TRQ_SEL_FMAP_B8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_B9_ADDR                 0x700
-#define TRQ_SEL_FMAP_B9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_B9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_B9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BA_ADDR                 0x704
-#define TRQ_SEL_FMAP_BA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BB_ADDR                 0x708
-#define TRQ_SEL_FMAP_BB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BC_ADDR                 0x70C
-#define TRQ_SEL_FMAP_BC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BD_ADDR                 0x710
-#define TRQ_SEL_FMAP_BD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BE_ADDR                 0x714
-#define TRQ_SEL_FMAP_BE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_BF_ADDR                 0x718
-#define TRQ_SEL_FMAP_BF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_BF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_BF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C0_ADDR                 0x71C
-#define TRQ_SEL_FMAP_C0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C1_ADDR                 0x720
-#define TRQ_SEL_FMAP_C1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C2_ADDR                 0x734
-#define TRQ_SEL_FMAP_C2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C3_ADDR                 0x748
-#define TRQ_SEL_FMAP_C3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C4_ADDR                 0x74C
-#define TRQ_SEL_FMAP_C4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C5_ADDR                 0x750
-#define TRQ_SEL_FMAP_C5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C6_ADDR                 0x754
-#define TRQ_SEL_FMAP_C6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C7_ADDR                 0x758
-#define TRQ_SEL_FMAP_C7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C8_ADDR                 0x75C
-#define TRQ_SEL_FMAP_C8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_C9_ADDR                 0x760
-#define TRQ_SEL_FMAP_C9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_C9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_C9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CA_ADDR                 0x764
-#define TRQ_SEL_FMAP_CA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CB_ADDR                 0x768
-#define TRQ_SEL_FMAP_CB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CC_ADDR                 0x76C
-#define TRQ_SEL_FMAP_CC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CD_ADDR                 0x770
-#define TRQ_SEL_FMAP_CD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CE_ADDR                 0x774
-#define TRQ_SEL_FMAP_CE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_CF_ADDR                 0x778
-#define TRQ_SEL_FMAP_CF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_CF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_CF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D0_ADDR                 0x77C
-#define TRQ_SEL_FMAP_D0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D1_ADDR                 0x780
-#define TRQ_SEL_FMAP_D1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D2_ADDR                 0x784
-#define TRQ_SEL_FMAP_D2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D3_ADDR                 0x788
-#define TRQ_SEL_FMAP_D3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D4_ADDR                 0x78C
-#define TRQ_SEL_FMAP_D4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D5_ADDR                 0x790
-#define TRQ_SEL_FMAP_D5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D6_ADDR                 0x794
-#define TRQ_SEL_FMAP_D6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D7_ADDR                 0x798
-#define TRQ_SEL_FMAP_D7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D8_ADDR                 0x79C
-#define TRQ_SEL_FMAP_D8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_D9_ADDR                 0x7A0
-#define TRQ_SEL_FMAP_D9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_D9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_D9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DA_ADDR                 0x7A4
-#define TRQ_SEL_FMAP_DA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DB_ADDR                 0x7A8
-#define TRQ_SEL_FMAP_DB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DC_ADDR                 0x7AC
-#define TRQ_SEL_FMAP_DC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DD_ADDR                 0x7B0
-#define TRQ_SEL_FMAP_DD_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DD_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DD_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DE_ADDR                 0x7B4
-#define TRQ_SEL_FMAP_DE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_DF_ADDR                 0x7B8
-#define TRQ_SEL_FMAP_DF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_DF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_DF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E0_ADDR                 0x7BC
-#define TRQ_SEL_FMAP_E0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E1_ADDR                 0x7C0
-#define TRQ_SEL_FMAP_E1_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E1_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E1_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E2_ADDR                 0x7C4
-#define TRQ_SEL_FMAP_E2_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E2_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E2_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E3_ADDR                 0x7C8
-#define TRQ_SEL_FMAP_E3_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E3_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E3_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E4_ADDR                 0x7CC
-#define TRQ_SEL_FMAP_E4_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E4_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E4_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E5_ADDR                 0x7D0
-#define TRQ_SEL_FMAP_E5_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E5_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E5_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E6_ADDR                 0x7D4
-#define TRQ_SEL_FMAP_E6_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E6_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E6_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E7_ADDR                 0x7D8
-#define TRQ_SEL_FMAP_E7_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E7_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E7_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E8_ADDR                 0x7DC
-#define TRQ_SEL_FMAP_E8_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E8_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E8_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_E9_ADDR                 0x7E0
-#define TRQ_SEL_FMAP_E9_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_E9_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_E9_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_EA_ADDR                 0x7E4
-#define TRQ_SEL_FMAP_EA_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EA_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EA_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_EB_ADDR                 0x7E8
-#define TRQ_SEL_FMAP_EB_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EB_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EB_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_EC_ADDR                 0x7EC
-#define TRQ_SEL_FMAP_EC_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EC_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EC_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_ED_ADDR                 0x7F0
-#define TRQ_SEL_FMAP_ED_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_ED_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_ED_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_EE_ADDR                 0x7F4
-#define TRQ_SEL_FMAP_EE_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EE_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EE_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_EF_ADDR                 0x7F8
-#define TRQ_SEL_FMAP_EF_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_EF_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_EF_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_TRQ_SEL_FMAP_F0_ADDR                 0x7FC
-#define TRQ_SEL_FMAP_F0_RSVD_1_MASK                        GENMASK(31, 23)
-#define TRQ_SEL_FMAP_F0_QID_MAX_MASK                       GENMASK(22, 11)
-#define TRQ_SEL_FMAP_F0_QID_BASE_MASK                      GENMASK(10, 0)
-#define QDMA_S80_HARD_IND_CTXT_DATA_3_ADDR                 0x804
-#define IND_CTXT_DATA_3_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT_DATA_2_ADDR                 0x808
-#define IND_CTXT_DATA_2_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT_DATA_1_ADDR                 0x80C
-#define IND_CTXT_DATA_1_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT_DATA_0_ADDR                 0x810
-#define IND_CTXT_DATA_0_DATA_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT3_ADDR                       0x814
-#define IND_CTXT3_MASK                                GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT2_ADDR                       0x818
-#define IND_CTXT2_MASK                                GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT1_ADDR                       0x81C
-#define IND_CTXT1_MASK                                GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT0_ADDR                       0x820
-#define IND_CTXT0_MASK                                GENMASK(31, 0)
-#define QDMA_S80_HARD_IND_CTXT_CMD_ADDR                    0x824
-#define IND_CTXT_CMD_RSVD_1_MASK                           GENMASK(31, 18)
-#define IND_CTXT_CMD_QID_MASK                              GENMASK(17, 7)
-#define IND_CTXT_CMD_OP_MASK                               GENMASK(6, 5)
-#define IND_CTXT_CMD_SET_MASK                              GENMASK(4, 1)
-#define IND_CTXT_CMD_BUSY_MASK                             BIT(0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_1_ADDR                 0xA00
-#define C2H_TIMER_CNT_1_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_1_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_2_ADDR                 0xA04
-#define C2H_TIMER_CNT_2_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_2_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_3_ADDR                 0xA08
-#define C2H_TIMER_CNT_3_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_3_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_4_ADDR                 0xA0C
-#define C2H_TIMER_CNT_4_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_4_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_5_ADDR                 0xA10
-#define C2H_TIMER_CNT_5_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_5_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_6_ADDR                 0xA14
-#define C2H_TIMER_CNT_6_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_6_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_7_ADDR                 0xA18
-#define C2H_TIMER_CNT_7_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_7_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_8_ADDR                 0xA1C
-#define C2H_TIMER_CNT_8_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_8_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_9_ADDR                 0xA20
-#define C2H_TIMER_CNT_9_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_9_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_A_ADDR                 0xA24
-#define C2H_TIMER_CNT_A_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_A_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_B_ADDR                 0xA28
-#define C2H_TIMER_CNT_B_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_B_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_C_ADDR                 0xA2C
-#define C2H_TIMER_CNT_C_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_C_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_D_ADDR                 0xA30
-#define C2H_TIMER_CNT_D_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_D_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_E_ADDR                 0xA34
-#define C2H_TIMER_CNT_E_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_E_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_F_ADDR                 0xA38
-#define C2H_TIMER_CNT_F_RSVD_1_MASK                        GENMASK(31, 8)
-#define C2H_TIMER_CNT_F_MASK                              GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_TIMER_CNT_10_ADDR                0xA3C
-#define C2H_TIMER_CNT_10_RSVD_1_MASK                       GENMASK(31, 8)
-#define C2H_TIMER_CNT_10_MASK                             GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_1_ADDR                    0xA40
-#define C2H_CNT_TH_1_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_1_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_2_ADDR                    0xA44
-#define C2H_CNT_TH_2_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_2_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_3_ADDR                    0xA48
-#define C2H_CNT_TH_3_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_3_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_4_ADDR                    0xA4C
-#define C2H_CNT_TH_4_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_4_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_5_ADDR                    0xA50
-#define C2H_CNT_TH_5_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_5_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_6_ADDR                    0xA54
-#define C2H_CNT_TH_6_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_6_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_7_ADDR                    0xA58
-#define C2H_CNT_TH_7_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_7_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_8_ADDR                    0xA5C
-#define C2H_CNT_TH_8_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_8_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_9_ADDR                    0xA60
-#define C2H_CNT_TH_9_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_9_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_A_ADDR                    0xA64
-#define C2H_CNT_TH_A_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_A_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_B_ADDR                    0xA68
-#define C2H_CNT_TH_B_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_B_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_C_ADDR                    0xA6C
-#define C2H_CNT_TH_C_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_C_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_D_ADDR                    0xA70
-#define C2H_CNT_TH_D_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_D_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_E_ADDR                    0xA74
-#define C2H_CNT_TH_E_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_E_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_F_ADDR                    0xA78
-#define C2H_CNT_TH_F_RSVD_1_MASK                           GENMASK(31, 8)
-#define C2H_CNT_TH_F_THESHOLD_CNT_MASK                     GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_CNT_TH_10_ADDR                   0xA7C
-#define C2H_CNT_TH_10_RSVD_1_MASK                          GENMASK(31, 8)
-#define C2H_CNT_TH_10_THESHOLD_CNT_MASK                    GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_QID2VEC_MAP_QID_ADDR             0xA80
-#define C2H_QID2VEC_MAP_QID_RSVD_1_MASK                    GENMASK(31, 11)
-#define C2H_QID2VEC_MAP_QID_QID_MASK                       GENMASK(10, 0)
-#define QDMA_S80_HARD_C2H_QID2VEC_MAP_ADDR                 0xA84
-#define C2H_QID2VEC_MAP_RSVD_1_MASK                        GENMASK(31, 19)
-#define C2H_QID2VEC_MAP_H2C_EN_COAL_MASK                   BIT(18)
-#define C2H_QID2VEC_MAP_H2C_VECTOR_MASK                    GENMASK(17, 9)
-#define C2H_QID2VEC_MAP_C2H_EN_COAL_MASK                   BIT(8)
-#define C2H_QID2VEC_MAP_C2H_VECTOR_MASK                    GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_STAT_S_AXIS_C2H_ACCEPTED_ADDR    0xA88
-#define C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_S_AXIS_WRB_ACCEPTED_ADDR    0xA8C
-#define C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK                 GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_RSP_PKT_ACCEPTED_ADDR  0xA90
-#define C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_AXIS_PKG_CMP_ADDR           0xA94
-#define C2H_STAT_AXIS_PKG_CMP_MASK                        GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_RSP_ACCEPTED_ADDR      0xA98
-#define C2H_STAT_DESC_RSP_ACCEPTED_D_MASK                  GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_RSP_CMP_ADDR           0xA9C
-#define C2H_STAT_DESC_RSP_CMP_D_MASK                       GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_WRQ_OUT_ADDR                0xAA0
-#define C2H_STAT_WRQ_OUT_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_WPL_REN_ACCEPTED_ADDR       0xAA4
-#define C2H_STAT_WPL_REN_ACCEPTED_MASK                    GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_TOTAL_WRQ_LEN_ADDR          0xAA8
-#define C2H_STAT_TOTAL_WRQ_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_TOTAL_WPL_LEN_ADDR          0xAAC
-#define C2H_STAT_TOTAL_WPL_LEN_MASK                       GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_0_ADDR                    0xAB0
-#define C2H_BUF_SZ_0_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_1_ADDR                    0xAB4
-#define C2H_BUF_SZ_1_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_2_ADDR                    0xAB8
-#define C2H_BUF_SZ_2_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_3_ADDR                    0xABC
-#define C2H_BUF_SZ_3_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_4_ADDR                    0xAC0
-#define C2H_BUF_SZ_4_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_5_ADDR                    0xAC4
-#define C2H_BUF_SZ_5_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_7_ADDR                    0XAC8
-#define C2H_BUF_SZ_7_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_8_ADDR                    0XACC
-#define C2H_BUF_SZ_8_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_9_ADDR                    0xAD0
-#define C2H_BUF_SZ_9_SIZE_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_10_ADDR                   0xAD4
-#define C2H_BUF_SZ_10_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_11_ADDR                   0xAD8
-#define C2H_BUF_SZ_11_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_12_ADDR                   0xAE0
-#define C2H_BUF_SZ_12_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_13_ADDR                   0xAE4
-#define C2H_BUF_SZ_13_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_14_ADDR                   0xAE8
-#define C2H_BUF_SZ_14_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_BUF_SZ_15_ADDR                   0XAEC
-#define C2H_BUF_SZ_15_SIZE_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_ERR_STAT_ADDR                    0xAF0
-#define C2H_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 16)
-#define C2H_ERR_STAT_WRB_PRTY_ERR_MASK                     BIT(15)
-#define C2H_ERR_STAT_WRB_CIDX_ERR_MASK                     BIT(14)
-#define C2H_ERR_STAT_WRB_QFULL_ERR_MASK                    BIT(13)
-#define C2H_ERR_STAT_WRB_INV_Q_ERR_MASK                    BIT(12)
-#define C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK          BIT(11)
-#define C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK            BIT(10)
-#define C2H_ERR_STAT_ERR_DESC_CNT_MASK                     BIT(9)
-#define C2H_ERR_STAT_RSVD_2_MASK                           BIT(8)
-#define C2H_ERR_STAT_MSI_INT_FAIL_MASK                     BIT(7)
-#define C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK             BIT(6)
-#define C2H_ERR_STAT_RSVD_3_MASK                           BIT(5)
-#define C2H_ERR_STAT_DESC_RSP_ERR_MASK                     BIT(4)
-#define C2H_ERR_STAT_QID_MISMATCH_MASK                     BIT(3)
-#define C2H_ERR_STAT_RSVD_4_MASK                           BIT(2)
-#define C2H_ERR_STAT_LEN_MISMATCH_MASK                     BIT(1)
-#define C2H_ERR_STAT_MTY_MISMATCH_MASK                     BIT(0)
-#define QDMA_S80_HARD_C2H_ERR_MASK_ADDR                    0xAF4
-#define C2H_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_FATAL_ERR_STAT_ADDR              0xAF8
-#define C2H_FATAL_ERR_STAT_RSVD_1_MASK                     GENMASK(31, 19)
-#define C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK           BIT(18)
-#define C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK          BIT(17)
-#define C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK          BIT(16)
-#define C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK        BIT(15)
-#define C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK     BIT(14)
-#define C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK       BIT(13)
-#define C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK          BIT(12)
-#define C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK     BIT(11)
-#define C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK         BIT(10)
-#define C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK          BIT(9)
-#define C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK           BIT(8)
-#define C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK        GENMASK(7, 4)
-#define C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK               BIT(3)
-#define C2H_FATAL_ERR_STAT_RSVD_2_MASK                     BIT(2)
-#define C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK               BIT(1)
-#define C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK               BIT(0)
-#define QDMA_S80_HARD_C2H_FATAL_ERR_MASK_ADDR              0xAFC
-#define C2H_FATAL_ERR_C2HEN_MASK                 GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_FATAL_ERR_ENABLE_ADDR            0xB00
-#define C2H_FATAL_ERR_ENABLE_RSVD_1_MASK                   GENMASK(31, 2)
-#define C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK             BIT(1)
-#define C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK                 BIT(0)
-#define QDMA_S80_HARD_GLBL_ERR_INT_ADDR                    0xB04
-#define GLBL_ERR_INT_RSVD_1_MASK                           GENMASK(31, 18)
-#define GLBL_ERR_INT_ARM_MASK                             BIT(17)
-#define GLBL_ERR_INT_EN_COAL_MASK                          BIT(16)
-#define GLBL_ERR_INT_VEC_MASK                              GENMASK(15, 8)
-#define GLBL_ERR_INT_FUNC_MASK                             GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_PFCH_CFG_ADDR                    0xB08
-#define C2H_PFCH_CFG_EVT_QCNT_TH_MASK                      GENMASK(31, 25)
-#define C2H_PFCH_CFG_QCNT_MASK                             GENMASK(24, 16)
-#define C2H_PFCH_CFG_NUM_MASK                              GENMASK(15, 8)
-#define C2H_PFCH_CFG_FL_TH_MASK                            GENMASK(7, 0)
-#define QDMA_S80_HARD_C2H_INT_TIMER_TICK_ADDR              0xB0C
-#define C2H_INT_TIMER_TICK_MASK                           GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_RSP_DROP_ACCEPTED_ADDR 0xB10
-#define C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_RSP_ERR_ACCEPTED_ADDR  0xB14
-#define C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK              GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DESC_REQ_ADDR               0xB18
-#define C2H_STAT_DESC_REQ_MASK                            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_0_ADDR          0xB1C
-#define C2H_STAT_DMA_ENG_0_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK       GENMASK(30, 28)
-#define C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK       GENMASK(27, 18)
-#define C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK       GENMASK(17, 8)
-#define C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK       GENMASK(7, 5)
-#define C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK              BIT(4)
-#define C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK             GENMASK(3, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_1_ADDR          0xB20
-#define C2H_STAT_DMA_ENG_1_RSVD_1_MASK                 BIT(31)
-#define C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK          BIT(30)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK        GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_2_ADDR          0xB24
-#define C2H_STAT_DMA_ENG_2_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK        GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK    GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_3_ADDR          0xB28
-#define C2H_STAT_DMA_ENG_3_RSVD_1_MASK                 GENMASK(31, 30)
-#define C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK        GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK    GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_DBG_PFCH_ERR_CTXT_ADDR           0xB2C
-#define C2H_PFCH_ERR_CTXT_RSVD_1_MASK                  GENMASK(31, 14)
-#define C2H_PFCH_ERR_CTXT_ERR_STAT_MASK                BIT(13)
-#define C2H_PFCH_ERR_CTXT_CMD_WR_MASK                  BIT(12)
-#define C2H_PFCH_ERR_CTXT_QID_MASK                     GENMASK(11, 1)
-#define C2H_PFCH_ERR_CTXT_DONE_MASK                    BIT(0)
-#define QDMA_S80_HARD_C2H_FIRST_ERR_QID_ADDR               0xB30
-#define C2H_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 21)
-#define C2H_FIRST_ERR_QID_ERR_STAT_MASK                    GENMASK(20, 16)
-#define C2H_FIRST_ERR_QID_CMD_WR_MASK                      GENMASK(15, 12)
-#define C2H_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_S80_HARD_STAT_NUM_WRB_IN_ADDR                 0xB34
-#define STAT_NUM_WRB_IN_RSVD_1_MASK                        GENMASK(31, 16)
-#define STAT_NUM_WRB_IN_WRB_CNT_MASK                       GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_WRB_OUT_ADDR                0xB38
-#define STAT_NUM_WRB_OUT_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_OUT_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_WRB_DRP_ADDR                0xB3C
-#define STAT_NUM_WRB_DRP_RSVD_1_MASK                       GENMASK(31, 16)
-#define STAT_NUM_WRB_DRP_WRB_CNT_MASK                      GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_STAT_DESC_OUT_ADDR          0xB40
-#define STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_STAT_DESC_OUT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_DSC_CRDT_SENT_ADDR          0xB44
-#define STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK                 GENMASK(31, 16)
-#define STAT_NUM_DSC_CRDT_SENT_CNT_MASK                    GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_FCH_DSC_RCVD_ADDR           0xB48
-#define STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 16)
-#define STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK                 GENMASK(15, 0)
-#define QDMA_S80_HARD_STAT_NUM_BYP_DSC_RCVD_ADDR           0xB4C
-#define STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK                  GENMASK(31, 11)
-#define STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK                 GENMASK(10, 0)
-#define QDMA_S80_HARD_C2H_WRB_COAL_CFG_ADDR                0xB50
-#define C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK                   GENMASK(31, 26)
-#define C2H_WRB_COAL_CFG_TICK_VAL_MASK                     GENMASK(25, 14)
-#define C2H_WRB_COAL_CFG_TICK_CNT_MASK                     GENMASK(13, 2)
-#define C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK                BIT(1)
-#define C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK               BIT(0)
-#define QDMA_S80_HARD_C2H_INTR_H2C_REQ_ADDR                0xB54
-#define C2H_INTR_H2C_REQ_RSVD_1_MASK                       GENMASK(31, 18)
-#define C2H_INTR_H2C_REQ_CNT_MASK                          GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_MM_REQ_ADDR             0xB58
-#define C2H_INTR_C2H_MM_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_MM_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_ERR_INT_REQ_ADDR            0xB5C
-#define C2H_INTR_ERR_INT_REQ_RSVD_1_MASK                   GENMASK(31, 18)
-#define C2H_INTR_ERR_INT_REQ_CNT_MASK                      GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_ST_REQ_ADDR             0xB60
-#define C2H_INTR_C2H_ST_REQ_RSVD_1_MASK                    GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_REQ_CNT_MASK                       GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_ADDR 0xB64
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK       GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK          GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_ADDR 0xB68
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK      GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK         GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_ADDR 0xB6C
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK   GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK      GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_ADDR 0xB70
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK     GENMASK(31, 18)
-#define C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK        GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_ST_MSIX_ACK_ADDR        0xB74
-#define C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_ST_MSIX_FAIL_ADDR       0xB78
-#define C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK              GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK                 GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_ST_NO_MSIX_ADDR         0xB7C
-#define C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK                GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK                   GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_INTR_C2H_ST_CTXT_INVAL_ADDR      0xB80
-#define C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK             GENMASK(31, 18)
-#define C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK                GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_STAT_WR_CMP_ADDR                 0xB84
-#define C2H_STAT_WR_CMP_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_STAT_WR_CMP_CNT_MASK                           GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_4_ADDR          0xB88
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK     BIT(31)
-#define C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK        BIT(30)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK      GENMASK(29, 20)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK  GENMASK(19, 10)
-#define C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK     GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_STAT_DBG_DMA_ENG_5_ADDR          0xB8C
-#define C2H_STAT_DMA_ENG_5_RSVD_1_MASK                 GENMASK(31, 25)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK     BIT(24)
-#define C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK      BIT(23)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK      GENMASK(22, 13)
-#define C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK   GENMASK(12, 3)
-#define C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK         GENMASK(2, 0)
-#define QDMA_S80_HARD_C2H_DBG_PFCH_QID_ADDR                0xB90
-#define C2H_PFCH_QID_RSVD_1_MASK                       GENMASK(31, 15)
-#define C2H_PFCH_QID_ERR_CTXT_MASK                     BIT(14)
-#define C2H_PFCH_QID_TARGET_MASK                       GENMASK(13, 11)
-#define C2H_PFCH_QID_QID_OR_TAG_MASK                   GENMASK(10, 0)
-#define QDMA_S80_HARD_C2H_DBG_PFCH_ADDR                    0xB94
-#define C2H_PFCH_DATA_MASK                             GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_INT_DBG_ADDR                     0xB98
-#define C2H_INT_RSVD_1_MASK                            GENMASK(31, 8)
-#define C2H_INT_INT_COAL_SM_MASK                       GENMASK(7, 4)
-#define C2H_INT_INT_SM_MASK                            GENMASK(3, 0)
-#define QDMA_S80_HARD_C2H_STAT_IMM_ACCEPTED_ADDR           0xB9C
-#define C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_STAT_IMM_ACCEPTED_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_STAT_MARKER_ACCEPTED_ADDR        0xBA0
-#define C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK               GENMASK(31, 18)
-#define C2H_STAT_MARKER_ACCEPTED_CNT_MASK                  GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_STAT_DISABLE_CMP_ACCEPTED_ADDR   0xBA4
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK          GENMASK(31, 18)
-#define C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK             GENMASK(17, 0)
-#define QDMA_S80_HARD_C2H_PLD_FIFO_CRDT_CNT_ADDR           0xBA8
-#define C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK                  GENMASK(31, 18)
-#define C2H_PLD_FIFO_CRDT_CNT_CNT_MASK                     GENMASK(17, 0)
-#define QDMA_S80_HARD_H2C_ERR_STAT_ADDR                    0xE00
-#define H2C_ERR_STAT_RSVD_1_MASK                           GENMASK(31, 5)
-#define H2C_ERR_STAT_SBE_MASK                              BIT(4)
-#define H2C_ERR_STAT_DBE_MASK                              BIT(3)
-#define H2C_ERR_STAT_NO_DMA_DS_MASK                        BIT(2)
-#define H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK             BIT(1)
-#define H2C_ERR_STAT_ZERO_LEN_DS_MASK                      BIT(0)
-#define QDMA_S80_HARD_H2C_ERR_MASK_ADDR                    0xE04
-#define H2C_ERR_EN_MASK                          GENMASK(31, 0)
-#define QDMA_S80_HARD_H2C_FIRST_ERR_QID_ADDR               0xE08
-#define H2C_FIRST_ERR_QID_RSVD_1_MASK                      GENMASK(31, 20)
-#define H2C_FIRST_ERR_QID_ERR_TYPE_MASK                    GENMASK(19, 16)
-#define H2C_FIRST_ERR_QID_RSVD_2_MASK                      GENMASK(15, 12)
-#define H2C_FIRST_ERR_QID_QID_MASK                         GENMASK(11, 0)
-#define QDMA_S80_HARD_H2C_DBG_REG0_ADDR                    0xE0C
-#define H2C_REG0_NUM_DSC_RCVD_MASK                     GENMASK(31, 16)
-#define H2C_REG0_NUM_WRB_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_S80_HARD_H2C_DBG_REG1_ADDR                    0xE10
-#define H2C_REG1_NUM_REQ_SENT_MASK                     GENMASK(31, 16)
-#define H2C_REG1_NUM_CMP_SENT_MASK                     GENMASK(15, 0)
-#define QDMA_S80_HARD_H2C_DBG_REG2_ADDR                    0xE14
-#define H2C_REG2_RSVD_1_MASK                           GENMASK(31, 16)
-#define H2C_REG2_NUM_ERR_DSC_RCVD_MASK                 GENMASK(15, 0)
-#define QDMA_S80_HARD_H2C_DBG_REG3_ADDR                    0xE18
-#define H2C_REG3_MASK                              BIT(31)
-#define H2C_REG3_DSCO_FIFO_EMPTY_MASK                  BIT(30)
-#define H2C_REG3_DSCO_FIFO_FULL_MASK                   BIT(29)
-#define H2C_REG3_CUR_RC_STATE_MASK                     GENMASK(28, 26)
-#define H2C_REG3_RDREQ_LINES_MASK                      GENMASK(25, 16)
-#define H2C_REG3_RDATA_LINES_AVAIL_MASK                GENMASK(15, 6)
-#define H2C_REG3_PEND_FIFO_EMPTY_MASK                  BIT(5)
-#define H2C_REG3_PEND_FIFO_FULL_MASK                   BIT(4)
-#define H2C_REG3_CUR_RQ_STATE_MASK                     GENMASK(3, 2)
-#define H2C_REG3_DSCI_FIFO_FULL_MASK                   BIT(1)
-#define H2C_REG3_DSCI_FIFO_EMPTY_MASK                  BIT(0)
-#define QDMA_S80_HARD_H2C_DBG_REG4_ADDR                    0xE1C
-#define H2C_REG4_RDREQ_ADDR_MASK                       GENMASK(31, 0)
-#define QDMA_S80_HARD_H2C_FATAL_ERR_EN_ADDR                0xE20
-#define H2C_FATAL_ERR_EN_RSVD_1_MASK                       GENMASK(31, 1)
-#define H2C_FATAL_ERR_EN_H2C_MASK                          BIT(0)
-#define QDMA_S80_HARD_C2H_CHANNEL_CTL_ADDR                 0x1004
-#define C2H_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_S80_HARD_C2H_CHANNEL_CTL_1_ADDR               0x1008
-#define C2H_CHANNEL_CTL_1_RUN_MASK                         GENMASK(31, 1)
-#define C2H_CHANNEL_CTL_1_RUN_1_MASK                       BIT(0)
-#define QDMA_S80_HARD_C2H_MM_STATUS_ADDR                   0x1040
-#define C2H_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define C2H_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_S80_HARD_C2H_CHANNEL_CMPL_DESC_CNT_ADDR       0x1048
-#define C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK              GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1054
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK            BIT(31)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK         BIT(30)
-#define C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK             BIT(29)
-#define C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK            BIT(28)
-#define C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 2)
-#define C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK        BIT(1)
-#define C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(0)
-#define QDMA_S80_HARD_C2H_MM_ERR_CODE_ADDR                 0x1058
-#define C2H_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define C2H_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define C2H_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define C2H_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_S80_HARD_C2H_MM_ERR_INFO_ADDR                 0x105C
-#define C2H_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define C2H_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define C2H_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define C2H_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_S80_HARD_C2H_MM_PERF_MON_CTL_ADDR             0x10C0
-#define C2H_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define C2H_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define C2H_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_S80_HARD_C2H_MM_PERF_MON_CYCLE_CNT0_ADDR      0x10C4
-#define C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_MM_PERF_MON_CYCLE_CNT1_ADDR      0x10C8
-#define C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_MM_PERF_MON_DATA_CNT0_ADDR       0x10CC
-#define C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_S80_HARD_C2H_MM_PERF_MON_DATA_CNT1_ADDR       0x10D0
-#define C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_S80_HARD_C2H_MM_DBG_ADDR                      0x10E8
-#define C2H_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define C2H_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define C2H_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define C2H_MM_RD_STALL_MASK                           BIT(6)
-#define C2H_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define C2H_MM_WR_STALL_MASK                           BIT(4)
-#define C2H_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define C2H_MM_WBK_STALL_MASK                          BIT(2)
-#define C2H_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define C2H_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_S80_HARD_H2C_CHANNEL_CTL_ADDR                 0x1204
-#define H2C_CHANNEL_CTL_RSVD_1_MASK                        GENMASK(31, 1)
-#define H2C_CHANNEL_CTL_RUN_MASK                           BIT(0)
-#define QDMA_S80_HARD_H2C_CHANNEL_CTL_1_ADDR               0x1208
-#define H2C_CHANNEL_CTL_1_RUN_MASK                         BIT(0)
-#define QDMA_S80_HARD_H2C_CHANNEL_CTL_2_ADDR               0x120C
-#define H2C_CHANNEL_CTL_2_RUN_MASK                         BIT(0)
-#define QDMA_S80_HARD_H2C_MM_STATUS_ADDR                   0x1240
-#define H2C_MM_STATUS_RSVD_1_MASK                          GENMASK(31, 1)
-#define H2C_MM_STATUS_RUN_MASK                             BIT(0)
-#define QDMA_S80_HARD_H2C_CHANNEL_CMPL_DESC_CNT_ADDR       0x1248
-#define H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK              GENMASK(31, 0)
-#define QDMA_S80_HARD_H2C_MM_ERR_CODE_ENABLE_MASK_ADDR     0x1254
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK            GENMASK(31, 30)
-#define H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK        BIT(29)
-#define H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK        BIT(28)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK            GENMASK(27, 23)
-#define H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK     BIT(22)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK            GENMASK(21, 17)
-#define H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK BIT(16)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK            GENMASK(15, 9)
-#define H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK        BIT(8)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK            GENMASK(7, 6)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK    BIT(5)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK       BIT(4)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK   BIT(3)
-#define H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK          BIT(2)
-#define H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK BIT(1)
-#define H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK            BIT(0)
-#define QDMA_S80_HARD_H2C_MM_ERR_CODE_ADDR                 0x1258
-#define H2C_MM_ERR_CODE_RSVD_1_MASK                        GENMASK(31, 18)
-#define H2C_MM_ERR_CODE_VALID_MASK                         BIT(17)
-#define H2C_MM_ERR_CODE_RDWR_MASK                          BIT(16)
-#define H2C_MM_ERR_CODE_MASK                              GENMASK(4, 0)
-#define QDMA_S80_HARD_H2C_MM_ERR_INFO_ADDR                 0x125C
-#define H2C_MM_ERR_INFO_RSVD_1_MASK                        GENMASK(31, 29)
-#define H2C_MM_ERR_INFO_QID_MASK                           GENMASK(28, 17)
-#define H2C_MM_ERR_INFO_DIR_MASK                           BIT(16)
-#define H2C_MM_ERR_INFO_CIDX_MASK                          GENMASK(15, 0)
-#define QDMA_S80_HARD_H2C_MM_PERF_MON_CTL_ADDR             0x12C0
-#define H2C_MM_PERF_MON_CTL_RSVD_1_MASK                    GENMASK(31, 4)
-#define H2C_MM_PERF_MON_CTL_IMM_START_MASK                 BIT(3)
-#define H2C_MM_PERF_MON_CTL_RUN_START_MASK                 BIT(2)
-#define H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK                 BIT(1)
-#define H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK                 BIT(0)
-#define QDMA_S80_HARD_H2C_MM_PERF_MON_CYCLE_CNT0_ADDR      0x12C4
-#define H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK            GENMASK(31, 0)
-#define QDMA_S80_HARD_H2C_MM_PERF_MON_CYCLE_CNT1_ADDR      0x12C8
-#define H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK             GENMASK(31, 10)
-#define H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK            GENMASK(9, 0)
-#define QDMA_S80_HARD_H2C_MM_PERF_MON_DATA_CNT0_ADDR       0x12CC
-#define H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK                GENMASK(31, 0)
-#define QDMA_S80_HARD_H2C_MM_PERF_MON_DATA_CNT1_ADDR       0x12D0
-#define H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK              GENMASK(31, 10)
-#define H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK                GENMASK(9, 0)
-#define QDMA_S80_HARD_H2C_MM_DBG_ADDR                      0x12E8
-#define H2C_MM_RSVD_1_MASK                             GENMASK(31, 24)
-#define H2C_MM_RRQ_ENTRIES_MASK                        GENMASK(23, 17)
-#define H2C_MM_DAT_FIFO_SPC_MASK                       GENMASK(16, 7)
-#define H2C_MM_RD_STALL_MASK                           BIT(6)
-#define H2C_MM_RRQ_FIFO_FI_MASK                        BIT(5)
-#define H2C_MM_WR_STALL_MASK                           BIT(4)
-#define H2C_MM_WRQ_FIFO_FI_MASK                        BIT(3)
-#define H2C_MM_WBK_STALL_MASK                          BIT(2)
-#define H2C_MM_DSC_FIFO_EP_MASK                        BIT(1)
-#define H2C_MM_DSC_FIFO_FL_MASK                        BIT(0)
-#define QDMA_S80_HARD_FUNC_STATUS_REG_ADDR                 0x2400
-#define FUNC_STATUS_REG_RSVD_1_MASK                        GENMASK(31, 12)
-#define FUNC_STATUS_REG_CUR_SRC_FN_MASK                    GENMASK(11, 4)
-#define FUNC_STATUS_REG_ACK_MASK                           BIT(2)
-#define FUNC_STATUS_REG_O_MSG_MASK                         BIT(1)
-#define FUNC_STATUS_REG_I_MSG_MASK                         BIT(0)
-#define QDMA_S80_HARD_FUNC_CMD_REG_ADDR                    0x2404
-#define FUNC_CMD_REG_RSVD_1_MASK                           GENMASK(31, 3)
-#define FUNC_CMD_REG_RSVD_2_MASK                           BIT(2)
-#define FUNC_CMD_REG_MSG_RCV_MASK                          BIT(1)
-#define FUNC_CMD_REG_MSG_SENT_MASK                         BIT(0)
-#define QDMA_S80_HARD_FUNC_INTERRUPT_VECTOR_REG_ADDR       0x2408
-#define FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK              GENMASK(31, 5)
-#define FUNC_INTERRUPT_VECTOR_REG_IN_MASK                  GENMASK(4, 0)
-#define QDMA_S80_HARD_TARGET_FUNC_REG_ADDR                 0x240C
-#define TARGET_FUNC_REG_RSVD_1_MASK                        GENMASK(31, 8)
-#define TARGET_FUNC_REG_N_ID_MASK                          GENMASK(7, 0)
-#define QDMA_S80_HARD_FUNC_INTERRUPT_CTL_REG_ADDR          0x2410
-#define FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK                 GENMASK(31, 1)
-#define FUNC_INTERRUPT_CTL_REG_INT_EN_MASK                 BIT(0)
-#define SW_IND_CTXT_DATA_W3_DSC_BASE_H_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W2_DSC_BASE_L_MASK               GENMASK(31, 0)
-#define SW_IND_CTXT_DATA_W1_IS_MM_MASK                    BIT(31)
-#define SW_IND_CTXT_DATA_W1_MRKR_DIS_MASK                 BIT(30)
-#define SW_IND_CTXT_DATA_W1_IRQ_REQ_MASK                  BIT(29)
-#define SW_IND_CTXT_DATA_W1_ERR_WB_SENT_MASK              BIT(28)
-#define SW_IND_CTXT_DATA_W1_ERR_MASK                      GENMASK(27, 26)
-#define SW_IND_CTXT_DATA_W1_IRQ_NO_LAST_MASK              BIT(25)
-#define SW_IND_CTXT_DATA_W1_PORT_ID_MASK                  GENMASK(24, 22)
-#define SW_IND_CTXT_DATA_W1_IRQ_EN_MASK                   BIT(21)
-#define SW_IND_CTXT_DATA_W1_WBK_EN_MASK                   BIT(20)
-#define SW_IND_CTXT_DATA_W1_MM_CHN_MASK                   BIT(19)
-#define SW_IND_CTXT_DATA_W1_BYPASS_MASK                   BIT(18)
-#define SW_IND_CTXT_DATA_W1_DSC_SZ_MASK                   GENMASK(17, 16)
-#define SW_IND_CTXT_DATA_W1_RNG_SZ_MASK                   GENMASK(15, 12)
-#define SW_IND_CTXT_DATA_W1_FNC_ID_MASK                   GENMASK(11, 4)
-#define SW_IND_CTXT_DATA_W1_WBI_INTVL_EN_MASK             BIT(3)
-#define SW_IND_CTXT_DATA_W1_WBI_CHK_MASK                  BIT(2)
-#define SW_IND_CTXT_DATA_W1_FCRD_EN_MASK                  BIT(1)
-#define SW_IND_CTXT_DATA_W1_QEN_MASK                      BIT(0)
-#define SW_IND_CTXT_DATA_W0_RSV_MASK                      GENMASK(31, 17)
-#define SW_IND_CTXT_DATA_W0_IRQ_ARM_MASK                  BIT(16)
-#define SW_IND_CTXT_DATA_W0_PIDX_MASK                     GENMASK(15, 0)
-#define HW_IND_CTXT_DATA_W1_RSVD_MASK                     GENMASK(15, 11)
-#define HW_IND_CTXT_DATA_W1_FETCH_PND_MASK                BIT(10)
-#define HW_IND_CTXT_DATA_W1_IDL_STP_B_MASK                BIT(9)
-#define HW_IND_CTXT_DATA_W1_DSC_PND_MASK                  BIT(8)
-#define HW_IND_CTXT_DATA_W1_RSVD_1_MASK                   GENMASK(7, 0)
-#define HW_IND_CTXT_DATA_W0_CRD_USE_MASK                  GENMASK(31, 16)
-#define HW_IND_CTXT_DATA_W0_CIDX_MASK                     GENMASK(15, 0)
-#define CRED_CTXT_DATA_W0_RSVD_1_MASK                     GENMASK(31, 16)
-#define CRED_CTXT_DATA_W0_CREDT_MASK                      GENMASK(15, 0)
-#define PREFETCH_CTXT_DATA_W1_VALID_MASK                  BIT(13)
-#define PREFETCH_CTXT_DATA_W1_SW_CRDT_H_MASK              GENMASK(12, 0)
-#define PREFETCH_CTXT_DATA_W0_SW_CRDT_L_MASK              GENMASK(31, 29)
-#define PREFETCH_CTXT_DATA_W0_PFCH_MASK                   BIT(28)
-#define PREFETCH_CTXT_DATA_W0_PFCH_EN_MASK                BIT(27)
-#define PREFETCH_CTXT_DATA_W0_ERR_MASK                    BIT(26)
-#define PREFETCH_CTXT_DATA_W0_RSVD_MASK                   GENMASK(25, 8)
-#define PREFETCH_CTXT_DATA_W0_PORT_ID_MASK                GENMASK(7, 5)
-#define PREFETCH_CTXT_DATA_W0_BUF_SIZE_IDX_MASK           GENMASK(4, 1)
-#define PREFETCH_CTXT_DATA_W0_BYPASS_MASK                 BIT(0)
-#define CMPL_CTXT_DATA_W3_RSVD_MASK                       GENMASK(31, 30)
-#define CMPL_CTXT_DATA_W3_FULL_UPD_MASK                   BIT(29)
-#define CMPL_CTXT_DATA_W3_TIMER_RUNNING_MASK              BIT(28)
-#define CMPL_CTXT_DATA_W3_USER_TRIG_PEND_MASK             BIT(27)
-#define CMPL_CTXT_DATA_W3_ERR_MASK                        GENMASK(26, 25)
-#define CMPL_CTXT_DATA_W3_VALID_MASK                      BIT(24)
-#define CMPL_CTXT_DATA_W3_CIDX_MASK                       GENMASK(23, 8)
-#define CMPL_CTXT_DATA_W3_PIDX_H_MASK                     GENMASK(7, 0)
-#define CMPL_CTXT_DATA_W2_PIDX_L_MASK                     GENMASK(31, 24)
-#define CMPL_CTXT_DATA_W2_DESC_SIZE_MASK                  GENMASK(23, 22)
-#define CMPL_CTXT_DATA_W2_BADDR_64_H_MASK                 GENMASK(21, 0)
-#define CMPL_CTXT_DATA_W1_BADDR_64_M_MASK                 GENMASK(31, 0)
-#define CMPL_CTXT_DATA_W0_BADDR_64_L_MASK                 GENMASK(31, 28)
-#define CMPL_CTXT_DATA_W0_QSIZE_IDX_MASK                  GENMASK(27, 24)
-#define CMPL_CTXT_DATA_W0_COLOR_MASK                      BIT(23)
-#define CMPL_CTXT_DATA_W0_INT_ST_MASK                     GENMASK(22, 21)
-#define CMPL_CTXT_DATA_W0_TIMER_IDX_MASK                  GENMASK(20, 17)
-#define CMPL_CTXT_DATA_W0_CNTER_IDX_MASK                  GENMASK(16, 13)
-#define CMPL_CTXT_DATA_W0_FNC_ID_MASK                     GENMASK(12, 5)
-#define CMPL_CTXT_DATA_W0_TRIG_MODE_MASK                  GENMASK(4, 2)
-#define CMPL_CTXT_DATA_W0_EN_INT_MASK                     BIT(1)
-#define CMPL_CTXT_DATA_W0_EN_STAT_DESC_MASK               BIT(0)
-#define INTR_CTXT_DATA_W2_PIDX_MASK                       GENMASK(11, 0)
-#define INTR_CTXT_DATA_W1_PAGE_SIZE_MASK                  GENMASK(31, 29)
-#define INTR_CTXT_DATA_W1_BADDR_4K_H_MASK                 GENMASK(28, 0)
-#define INTR_CTXT_DATA_W0_BADDR_4K_L_MASK                 GENMASK(31, 9)
-#define INTR_CTXT_DATA_W0_COLOR_MASK                      BIT(8)
-#define INTR_CTXT_DATA_W0_INT_ST_MASK                     BIT(7)
-#define INTR_CTXT_DATA_W0_RSVD_MASK                       BIT(6)
-#define INTR_CTXT_DATA_W0_VEC_MASK                        GENMASK(5, 1)
-#define INTR_CTXT_DATA_W0_VALID_MASK                      BIT(0)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c
deleted file mode 100644
index 1f36732..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_s80_hard_access/qdma_s80_hard_reg_dump.c
+++ /dev/null
@@ -1,8013 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-
-#include "qdma_s80_hard_reg.h"
-#include "qdma_reg_dump.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_s80_hard_reg_dump.tmh"
-#endif
-
-
-static struct regfield_info
-	cfg_blk_identifier_field_info[] = {
-	{"CFG_BLK_IDENTIFIER",
-		CFG_BLK_IDENTIFIER_MASK},
-	{"CFG_BLK_IDENTIFIER_1",
-		CFG_BLK_IDENTIFIER_1_MASK},
-	{"CFG_BLK_IDENTIFIER_RSVD_1",
-		CFG_BLK_IDENTIFIER_RSVD_1_MASK},
-	{"CFG_BLK_IDENTIFIER_VERSION",
-		CFG_BLK_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_busdev_field_info[] = {
-	{"CFG_BLK_BUSDEV_BDF",
-		CFG_BLK_BUSDEV_BDF_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_pld_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_PLD_SIZE",
-		CFG_BLK_PCIE_MAX_PLD_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_pcie_max_read_req_size_field_info[] = {
-	{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE",
-		CFG_BLK_PCIE_MAX_READ_REQ_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_system_id_field_info[] = {
-	{"CFG_BLK_SYSTEM_ID",
-		CFG_BLK_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_msi_enable_field_info[] = {
-	{"CFG_BLK_MSI_ENABLE_3",
-		CFG_BLK_MSI_ENABLE_3_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX3",
-		CFG_BLK_MSI_ENABLE_MSIX3_MASK},
-	{"CFG_BLK_MSI_ENABLE_2",
-		CFG_BLK_MSI_ENABLE_2_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX2",
-		CFG_BLK_MSI_ENABLE_MSIX2_MASK},
-	{"CFG_BLK_MSI_ENABLE_1",
-		CFG_BLK_MSI_ENABLE_1_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX1",
-		CFG_BLK_MSI_ENABLE_MSIX1_MASK},
-	{"CFG_BLK_MSI_ENABLE_0",
-		CFG_BLK_MSI_ENABLE_0_MASK},
-	{"CFG_BLK_MSI_ENABLE_MSIX0",
-		CFG_BLK_MSI_ENABLE_MSIX0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_data_width_field_info[] = {
-	{"CFG_PCIE_DATA_WIDTH_DATAPATH",
-		CFG_PCIE_DATA_WIDTH_DATAPATH_MASK},
-};
-
-
-static struct regfield_info
-	cfg_pcie_ctl_field_info[] = {
-	{"CFG_PCIE_CTL_RRQ_DISABLE",
-		CFG_PCIE_CTL_RRQ_DISABLE_MASK},
-	{"CFG_PCIE_CTL_RELAXED_ORDERING",
-		CFG_PCIE_CTL_RELAXED_ORDERING_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_pld_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_PLD_SIZE_ISSUED",
-		CFG_AXI_USER_MAX_PLD_SIZE_ISSUED_MASK},
-	{"CFG_AXI_USER_MAX_PLD_SIZE_PROG",
-		CFG_AXI_USER_MAX_PLD_SIZE_PROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_axi_user_max_read_req_size_field_info[] = {
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USISSUED_MASK},
-	{"CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG",
-		CFG_AXI_USER_MAX_READ_REQ_SIZE_USPROG_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_misc_ctl_field_info[] = {
-	{"CFG_BLK_MISC_CTL_NUM_TAG",
-		CFG_BLK_MISC_CTL_NUM_TAG_MASK},
-	{"CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER",
-		CFG_BLK_MISC_CTL_RQ_METERING_MULTIPLIER_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_0_field_info[] = {
-	{"CFG_BLK_SCRATCH_0",
-		CFG_BLK_SCRATCH_0_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_1_field_info[] = {
-	{"CFG_BLK_SCRATCH_1",
-		CFG_BLK_SCRATCH_1_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_2_field_info[] = {
-	{"CFG_BLK_SCRATCH_2",
-		CFG_BLK_SCRATCH_2_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_3_field_info[] = {
-	{"CFG_BLK_SCRATCH_3",
-		CFG_BLK_SCRATCH_3_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_4_field_info[] = {
-	{"CFG_BLK_SCRATCH_4",
-		CFG_BLK_SCRATCH_4_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_5_field_info[] = {
-	{"CFG_BLK_SCRATCH_5",
-		CFG_BLK_SCRATCH_5_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_6_field_info[] = {
-	{"CFG_BLK_SCRATCH_6",
-		CFG_BLK_SCRATCH_6_MASK},
-};
-
-
-static struct regfield_info
-	cfg_blk_scratch_7_field_info[] = {
-	{"CFG_BLK_SCRATCH_7",
-		CFG_BLK_SCRATCH_7_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_msk_a_field_info[] = {
-	{"RAM_SBE_MSK_A",
-		RAM_SBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_sbe_sts_a_field_info[] = {
-	{"RAM_SBE_STS_A_RSVD_1",
-		RAM_SBE_STS_A_RSVD_1_MASK},
-	{"RAM_SBE_STS_A_PFCH_LL_RAM",
-		RAM_SBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_CTXT_RAM",
-		RAM_SBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_PFCH_CTXT_RAM",
-		RAM_SBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_SBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_CTXT_RAM",
-		RAM_SBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_INT_QID2VEC_RAM",
-		RAM_SBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_SBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_SBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_SBE_STS_A_TUSER_FIFO_RAM",
-		RAM_SBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_QID_FIFO_RAM",
-		RAM_SBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PLD_FIFO_RAM",
-		RAM_SBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_TIMER_FIFO_RAM",
-		RAM_SBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_SBE_STS_A_PASID_CTXT_RAM",
-		RAM_SBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLD",
-		RAM_SBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_SBE_STS_A_DSC_CPLI",
-		RAM_SBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_SBE_STS_A_DSC_SW_CTXT",
-		RAM_SBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_SBE_STS_A_DSC_CRD_RCV",
-		RAM_SBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_SBE_STS_A_DSC_HW_CTXT",
-		RAM_SBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_SBE_STS_A_FUNC_MAP",
-		RAM_SBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_SBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_SBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_SBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_SBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_SBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_2",
-		RAM_SBE_STS_A_RSVD_2_MASK},
-	{"RAM_SBE_STS_A_MI_C2H0_DAT",
-		RAM_SBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_SBE_STS_A_RSVD_3",
-		RAM_SBE_STS_A_RSVD_3_MASK},
-	{"RAM_SBE_STS_A_MI_H2C0_DAT",
-		RAM_SBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_msk_a_field_info[] = {
-	{"RAM_DBE_MSK_A",
-		RAM_DBE_MSK_A_MASK},
-};
-
-
-static struct regfield_info
-	ram_dbe_sts_a_field_info[] = {
-	{"RAM_DBE_STS_A_RSVD_1",
-		RAM_DBE_STS_A_RSVD_1_MASK},
-	{"RAM_DBE_STS_A_PFCH_LL_RAM",
-		RAM_DBE_STS_A_PFCH_LL_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_CTXT_RAM",
-		RAM_DBE_STS_A_WRB_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_PFCH_CTXT_RAM",
-		RAM_DBE_STS_A_PFCH_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DESC_REQ_FIFO_RAM",
-		RAM_DBE_STS_A_DESC_REQ_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_CTXT_RAM",
-		RAM_DBE_STS_A_INT_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_INT_QID2VEC_RAM",
-		RAM_DBE_STS_A_INT_QID2VEC_RAM_MASK},
-	{"RAM_DBE_STS_A_WRB_COAL_DATA_RAM",
-		RAM_DBE_STS_A_WRB_COAL_DATA_RAM_MASK},
-	{"RAM_DBE_STS_A_TUSER_FIFO_RAM",
-		RAM_DBE_STS_A_TUSER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_QID_FIFO_RAM",
-		RAM_DBE_STS_A_QID_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PLD_FIFO_RAM",
-		RAM_DBE_STS_A_PLD_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_TIMER_FIFO_RAM",
-		RAM_DBE_STS_A_TIMER_FIFO_RAM_MASK},
-	{"RAM_DBE_STS_A_PASID_CTXT_RAM",
-		RAM_DBE_STS_A_PASID_CTXT_RAM_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLD",
-		RAM_DBE_STS_A_DSC_CPLD_MASK},
-	{"RAM_DBE_STS_A_DSC_CPLI",
-		RAM_DBE_STS_A_DSC_CPLI_MASK},
-	{"RAM_DBE_STS_A_DSC_SW_CTXT",
-		RAM_DBE_STS_A_DSC_SW_CTXT_MASK},
-	{"RAM_DBE_STS_A_DSC_CRD_RCV",
-		RAM_DBE_STS_A_DSC_CRD_RCV_MASK},
-	{"RAM_DBE_STS_A_DSC_HW_CTXT",
-		RAM_DBE_STS_A_DSC_HW_CTXT_MASK},
-	{"RAM_DBE_STS_A_FUNC_MAP",
-		RAM_DBE_STS_A_FUNC_MAP_MASK},
-	{"RAM_DBE_STS_A_C2H_WR_BRG_DAT",
-		RAM_DBE_STS_A_C2H_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_C2H_RD_BRG_DAT",
-		RAM_DBE_STS_A_C2H_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_WR_BRG_DAT",
-		RAM_DBE_STS_A_H2C_WR_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_H2C_RD_BRG_DAT",
-		RAM_DBE_STS_A_H2C_RD_BRG_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_2",
-		RAM_DBE_STS_A_RSVD_2_MASK},
-	{"RAM_DBE_STS_A_MI_C2H0_DAT",
-		RAM_DBE_STS_A_MI_C2H0_DAT_MASK},
-	{"RAM_DBE_STS_A_RSVD_3",
-		RAM_DBE_STS_A_RSVD_3_MASK},
-	{"RAM_DBE_STS_A_MI_H2C0_DAT",
-		RAM_DBE_STS_A_MI_H2C0_DAT_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_identifier_field_info[] = {
-	{"GLBL2_IDENTIFIER",
-		GLBL2_IDENTIFIER_MASK},
-	{"GLBL2_IDENTIFIER_VERSION",
-		GLBL2_IDENTIFIER_VERSION_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_int_field_info[] = {
-	{"GLBL2_PF_BARLITE_INT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_INT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_INT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_int_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_INT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_INT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_INT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF3_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF2_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF1_BAR_MAP_MASK},
-	{"GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP",
-		GLBL2_PF_BARLITE_EXT_PF0_BAR_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_pf_vf_barlite_ext_field_info[] = {
-	{"GLBL2_PF_VF_BARLITE_EXT_PF3_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF3_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF2_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF2_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF1_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF1_MAP_MASK},
-	{"GLBL2_PF_VF_BARLITE_EXT_PF0_MAP",
-		GLBL2_PF_VF_BARLITE_EXT_PF0_MAP_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_inst_field_info[] = {
-	{"GLBL2_CHANNEL_INST_RSVD_1",
-		GLBL2_CHANNEL_INST_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ST",
-		GLBL2_CHANNEL_INST_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ST",
-		GLBL2_CHANNEL_INST_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_2",
-		GLBL2_CHANNEL_INST_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_INST_C2H_ENG",
-		GLBL2_CHANNEL_INST_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_INST_RSVD_3",
-		GLBL2_CHANNEL_INST_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_INST_H2C_ENG",
-		GLBL2_CHANNEL_INST_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_mdma_field_info[] = {
-	{"GLBL2_CHANNEL_MDMA_RSVD_1",
-		GLBL2_CHANNEL_MDMA_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ST",
-		GLBL2_CHANNEL_MDMA_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ST",
-		GLBL2_CHANNEL_MDMA_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_2",
-		GLBL2_CHANNEL_MDMA_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_MDMA_C2H_ENG",
-		GLBL2_CHANNEL_MDMA_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_MDMA_RSVD_3",
-		GLBL2_CHANNEL_MDMA_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_MDMA_H2C_ENG",
-		GLBL2_CHANNEL_MDMA_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_strm_field_info[] = {
-	{"GLBL2_CHANNEL_STRM_RSVD_1",
-		GLBL2_CHANNEL_STRM_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ST",
-		GLBL2_CHANNEL_STRM_C2H_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ST",
-		GLBL2_CHANNEL_STRM_H2C_ST_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_2",
-		GLBL2_CHANNEL_STRM_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_STRM_C2H_ENG",
-		GLBL2_CHANNEL_STRM_C2H_ENG_MASK},
-	{"GLBL2_CHANNEL_STRM_RSVD_3",
-		GLBL2_CHANNEL_STRM_RSVD_3_MASK},
-	{"GLBL2_CHANNEL_STRM_H2C_ENG",
-		GLBL2_CHANNEL_STRM_H2C_ENG_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_cap_field_info[] = {
-	{"GLBL2_CHANNEL_CAP_RSVD_1",
-		GLBL2_CHANNEL_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_CAP_MULTIQ_MAX",
-		GLBL2_CHANNEL_CAP_MULTIQ_MAX_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_pasid_cap_field_info[] = {
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_1",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEOFFSET_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_RSVD_2",
-		GLBL2_CHANNEL_PASID_CAP_RSVD_2_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_BRIDGEEN",
-		GLBL2_CHANNEL_PASID_CAP_BRIDGEEN_MASK},
-	{"GLBL2_CHANNEL_PASID_CAP_DMAEN",
-		GLBL2_CHANNEL_PASID_CAP_DMAEN_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_channel_func_ret_field_info[] = {
-	{"GLBL2_CHANNEL_FUNC_RET_RSVD_1",
-		GLBL2_CHANNEL_FUNC_RET_RSVD_1_MASK},
-	{"GLBL2_CHANNEL_FUNC_RET_FUNC",
-		GLBL2_CHANNEL_FUNC_RET_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_system_id_field_info[] = {
-	{"GLBL2_SYSTEM_ID_RSVD_1",
-		GLBL2_SYSTEM_ID_RSVD_1_MASK},
-	{"GLBL2_SYSTEM_ID",
-		GLBL2_SYSTEM_ID_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_misc_cap_field_info[] = {
-	{"GLBL2_MISC_CAP_RSVD_1",
-		GLBL2_MISC_CAP_RSVD_1_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq0_field_info[] = {
-	{"GLBL2_PCIE_RQ0_NPH_AVL",
-		GLBL2_PCIE_RQ0_NPH_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_RCB_AVL",
-		GLBL2_PCIE_RQ0_RCB_AVL_MASK},
-	{"GLBL2_PCIE_RQ0_SLV_RD_CREDS",
-		GLBL2_PCIE_RQ0_SLV_RD_CREDS_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_EP",
-		GLBL2_PCIE_RQ0_TAG_EP_MASK},
-	{"GLBL2_PCIE_RQ0_TAG_FL",
-		GLBL2_PCIE_RQ0_TAG_FL_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_pcie_rq1_field_info[] = {
-	{"GLBL2_PCIE_RQ1_RSVD_1",
-		GLBL2_PCIE_RQ1_RSVD_1_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_REQ",
-		GLBL2_PCIE_RQ1_WTLP_REQ_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP",
-		GLBL2_PCIE_RQ1_WTLP_HEADER_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_EP",
-		GLBL2_PCIE_RQ1_RQ_FIFO_EP_MASK},
-	{"GLBL2_PCIE_RQ1_RQ_FIFO_FL",
-		GLBL2_PCIE_RQ1_RQ_FIFO_FL_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM",
-		GLBL2_PCIE_RQ1_TLPSM_MASK},
-	{"GLBL2_PCIE_RQ1_TLPSM512",
-		GLBL2_PCIE_RQ1_TLPSM512_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ0_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_SLV",
-		GLBL2_PCIE_RQ1_RREQ0_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ0_VLD",
-		GLBL2_PCIE_RQ1_RREQ0_VLD_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_RCB_OK",
-		GLBL2_PCIE_RQ1_RREQ1_RCB_OK_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_SLV",
-		GLBL2_PCIE_RQ1_RREQ1_SLV_MASK},
-	{"GLBL2_PCIE_RQ1_RREQ1_VLD",
-		GLBL2_PCIE_RQ1_RREQ1_VLD_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr0_field_info[] = {
-	{"GLBL2_AXIMM_WR0_RSVD_1",
-		GLBL2_AXIMM_WR0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR0_WR_REQ",
-		GLBL2_AXIMM_WR0_WR_REQ_MASK},
-	{"GLBL2_AXIMM_WR0_WR_CHN",
-		GLBL2_AXIMM_WR0_WR_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP",
-		GLBL2_AXIMM_WR0_WTLP_DATA_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_WPL_FIFO_EP",
-		GLBL2_AXIMM_WR0_WPL_FIFO_EP_MASK},
-	{"GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN",
-		GLBL2_AXIMM_WR0_BRSP_CLAIM_CHN_MASK},
-	{"GLBL2_AXIMM_WR0_WRREQ_CNT",
-		GLBL2_AXIMM_WR0_WRREQ_CNT_MASK},
-	{"GLBL2_AXIMM_WR0_BID",
-		GLBL2_AXIMM_WR0_BID_MASK},
-	{"GLBL2_AXIMM_WR0_BVALID",
-		GLBL2_AXIMM_WR0_BVALID_MASK},
-	{"GLBL2_AXIMM_WR0_BREADY",
-		GLBL2_AXIMM_WR0_BREADY_MASK},
-	{"GLBL2_AXIMM_WR0_WVALID",
-		GLBL2_AXIMM_WR0_WVALID_MASK},
-	{"GLBL2_AXIMM_WR0_WREADY",
-		GLBL2_AXIMM_WR0_WREADY_MASK},
-	{"GLBL2_AXIMM_WR0_AWID",
-		GLBL2_AXIMM_WR0_AWID_MASK},
-	{"GLBL2_AXIMM_WR0_AWVALID",
-		GLBL2_AXIMM_WR0_AWVALID_MASK},
-	{"GLBL2_AXIMM_WR0_AWREADY",
-		GLBL2_AXIMM_WR0_AWREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_wr1_field_info[] = {
-	{"GLBL2_AXIMM_WR1_RSVD_1",
-		GLBL2_AXIMM_WR1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT4",
-		GLBL2_AXIMM_WR1_BRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT3",
-		GLBL2_AXIMM_WR1_BRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT2",
-		GLBL2_AXIMM_WR1_BRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT1",
-		GLBL2_AXIMM_WR1_BRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_WR1_BRSP_CNT0",
-		GLBL2_AXIMM_WR1_BRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd0_field_info[] = {
-	{"GLBL2_AXIMM_RD0_RSVD_1",
-		GLBL2_AXIMM_RD0_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD0_PND_CNT",
-		GLBL2_AXIMM_RD0_PND_CNT_MASK},
-	{"GLBL2_AXIMM_RD0_RD_CHNL",
-		GLBL2_AXIMM_RD0_RD_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RD_REQ",
-		GLBL2_AXIMM_RD0_RD_REQ_MASK},
-	{"GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL",
-		GLBL2_AXIMM_RD0_RRSP_CLAIM_CHNL_MASK},
-	{"GLBL2_AXIMM_RD0_RID",
-		GLBL2_AXIMM_RD0_RID_MASK},
-	{"GLBL2_AXIMM_RD0_RVALID",
-		GLBL2_AXIMM_RD0_RVALID_MASK},
-	{"GLBL2_AXIMM_RD0_RREADY",
-		GLBL2_AXIMM_RD0_RREADY_MASK},
-	{"GLBL2_AXIMM_RD0_ARID",
-		GLBL2_AXIMM_RD0_ARID_MASK},
-	{"GLBL2_AXIMM_RD0_ARVALID",
-		GLBL2_AXIMM_RD0_ARVALID_MASK},
-	{"GLBL2_AXIMM_RD0_ARREADY",
-		GLBL2_AXIMM_RD0_ARREADY_MASK},
-};
-
-
-static struct regfield_info
-	glbl2_dbg_aximm_rd1_field_info[] = {
-	{"GLBL2_AXIMM_RD1_RSVD_1",
-		GLBL2_AXIMM_RD1_RSVD_1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT4",
-		GLBL2_AXIMM_RD1_RRSP_CNT4_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT3",
-		GLBL2_AXIMM_RD1_RRSP_CNT3_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT2",
-		GLBL2_AXIMM_RD1_RRSP_CNT2_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT1",
-		GLBL2_AXIMM_RD1_RRSP_CNT1_MASK},
-	{"GLBL2_AXIMM_RD1_RRSP_CNT0",
-		GLBL2_AXIMM_RD1_RRSP_CNT0_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_1_field_info[] = {
-	{"GLBL_RNG_SZ_1_RSVD_1",
-		GLBL_RNG_SZ_1_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_1_RING_SIZE",
-		GLBL_RNG_SZ_1_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_2_field_info[] = {
-	{"GLBL_RNG_SZ_2_RSVD_1",
-		GLBL_RNG_SZ_2_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_2_RING_SIZE",
-		GLBL_RNG_SZ_2_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_3_field_info[] = {
-	{"GLBL_RNG_SZ_3_RSVD_1",
-		GLBL_RNG_SZ_3_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_3_RING_SIZE",
-		GLBL_RNG_SZ_3_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_4_field_info[] = {
-	{"GLBL_RNG_SZ_4_RSVD_1",
-		GLBL_RNG_SZ_4_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_4_RING_SIZE",
-		GLBL_RNG_SZ_4_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_5_field_info[] = {
-	{"GLBL_RNG_SZ_5_RSVD_1",
-		GLBL_RNG_SZ_5_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_5_RING_SIZE",
-		GLBL_RNG_SZ_5_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_6_field_info[] = {
-	{"GLBL_RNG_SZ_6_RSVD_1",
-		GLBL_RNG_SZ_6_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_6_RING_SIZE",
-		GLBL_RNG_SZ_6_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_7_field_info[] = {
-	{"GLBL_RNG_SZ_7_RSVD_1",
-		GLBL_RNG_SZ_7_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_7_RING_SIZE",
-		GLBL_RNG_SZ_7_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_8_field_info[] = {
-	{"GLBL_RNG_SZ_8_RSVD_1",
-		GLBL_RNG_SZ_8_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_8_RING_SIZE",
-		GLBL_RNG_SZ_8_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_9_field_info[] = {
-	{"GLBL_RNG_SZ_9_RSVD_1",
-		GLBL_RNG_SZ_9_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_9_RING_SIZE",
-		GLBL_RNG_SZ_9_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_a_field_info[] = {
-	{"GLBL_RNG_SZ_A_RSVD_1",
-		GLBL_RNG_SZ_A_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_A_RING_SIZE",
-		GLBL_RNG_SZ_A_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_b_field_info[] = {
-	{"GLBL_RNG_SZ_B_RSVD_1",
-		GLBL_RNG_SZ_B_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_B_RING_SIZE",
-		GLBL_RNG_SZ_B_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_c_field_info[] = {
-	{"GLBL_RNG_SZ_C_RSVD_1",
-		GLBL_RNG_SZ_C_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_C_RING_SIZE",
-		GLBL_RNG_SZ_C_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_d_field_info[] = {
-	{"GLBL_RNG_SZ_D_RSVD_1",
-		GLBL_RNG_SZ_D_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_D_RING_SIZE",
-		GLBL_RNG_SZ_D_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_e_field_info[] = {
-	{"GLBL_RNG_SZ_E_RSVD_1",
-		GLBL_RNG_SZ_E_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_E_RING_SIZE",
-		GLBL_RNG_SZ_E_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_f_field_info[] = {
-	{"GLBL_RNG_SZ_F_RSVD_1",
-		GLBL_RNG_SZ_F_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_F_RING_SIZE",
-		GLBL_RNG_SZ_F_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_rng_sz_10_field_info[] = {
-	{"GLBL_RNG_SZ_10_RSVD_1",
-		GLBL_RNG_SZ_10_RSVD_1_MASK},
-	{"GLBL_RNG_SZ_10_RING_SIZE",
-		GLBL_RNG_SZ_10_RING_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_stat_field_info[] = {
-	{"GLBL_ERR_STAT_RSVD_1",
-		GLBL_ERR_STAT_RSVD_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_ST",
-		GLBL_ERR_STAT_ERR_H2C_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_BDG",
-		GLBL_ERR_STAT_ERR_BDG_MASK},
-	{"GLBL_ERR_STAT_IND_CTXT_CMD_ERR",
-		GLBL_ERR_STAT_IND_CTXT_CMD_ERR_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_ST",
-		GLBL_ERR_STAT_ERR_C2H_ST_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_1",
-		GLBL_ERR_STAT_ERR_C2H_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_C2H_MM_0",
-		GLBL_ERR_STAT_ERR_C2H_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_1",
-		GLBL_ERR_STAT_ERR_H2C_MM_1_MASK},
-	{"GLBL_ERR_STAT_ERR_H2C_MM_0",
-		GLBL_ERR_STAT_ERR_H2C_MM_0_MASK},
-	{"GLBL_ERR_STAT_ERR_TRQ",
-		GLBL_ERR_STAT_ERR_TRQ_MASK},
-	{"GLBL_ERR_STAT_ERR_DSC",
-		GLBL_ERR_STAT_ERR_DSC_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_DBE",
-		GLBL_ERR_STAT_ERR_RAM_DBE_MASK},
-	{"GLBL_ERR_STAT_ERR_RAM_SBE",
-		GLBL_ERR_STAT_ERR_RAM_SBE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_mask_field_info[] = {
-	{"GLBL_ERR_RSVD_1",
-		GLBL_ERR_RSVD_1_MASK},
-	{"GLBL_ERR",
-		GLBL_ERR_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_cfg_field_info[] = {
-	{"GLBL_DSC_CFG_RSVD_1",
-		GLBL_DSC_CFG_RSVD_1_MASK},
-	{"GLBL_DSC_CFG_UNC_OVR_COR",
-		GLBL_DSC_CFG_UNC_OVR_COR_MASK},
-	{"GLBL_DSC_CFG_CTXT_FER_DIS",
-		GLBL_DSC_CFG_CTXT_FER_DIS_MASK},
-	{"GLBL_DSC_CFG_RSVD_2",
-		GLBL_DSC_CFG_RSVD_2_MASK},
-	{"GLBL_DSC_CFG_MAXFETCH",
-		GLBL_DSC_CFG_MAXFETCH_MASK},
-	{"GLBL_DSC_CFG_WB_ACC_INT",
-		GLBL_DSC_CFG_WB_ACC_INT_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_sts_field_info[] = {
-	{"GLBL_DSC_ERR_STS_RSVD_1",
-		GLBL_DSC_ERR_STS_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_STS_SBE",
-		GLBL_DSC_ERR_STS_SBE_MASK},
-	{"GLBL_DSC_ERR_STS_DBE",
-		GLBL_DSC_ERR_STS_DBE_MASK},
-	{"GLBL_DSC_ERR_STS_RQ_CANCEL",
-		GLBL_DSC_ERR_STS_RQ_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_DSC",
-		GLBL_DSC_ERR_STS_DSC_MASK},
-	{"GLBL_DSC_ERR_STS_DMA",
-		GLBL_DSC_ERR_STS_DMA_MASK},
-	{"GLBL_DSC_ERR_STS_FLR_CANCEL",
-		GLBL_DSC_ERR_STS_FLR_CANCEL_MASK},
-	{"GLBL_DSC_ERR_STS_RSVD_2",
-		GLBL_DSC_ERR_STS_RSVD_2_MASK},
-	{"GLBL_DSC_ERR_STS_DAT_POISON",
-		GLBL_DSC_ERR_STS_DAT_POISON_MASK},
-	{"GLBL_DSC_ERR_STS_TIMEOUT",
-		GLBL_DSC_ERR_STS_TIMEOUT_MASK},
-	{"GLBL_DSC_ERR_STS_FLR",
-		GLBL_DSC_ERR_STS_FLR_MASK},
-	{"GLBL_DSC_ERR_STS_TAG",
-		GLBL_DSC_ERR_STS_TAG_MASK},
-	{"GLBL_DSC_ERR_STS_ADDR",
-		GLBL_DSC_ERR_STS_ADDR_MASK},
-	{"GLBL_DSC_ERR_STS_PARAM",
-		GLBL_DSC_ERR_STS_PARAM_MASK},
-	{"GLBL_DSC_ERR_STS_UR_CA",
-		GLBL_DSC_ERR_STS_UR_CA_MASK},
-	{"GLBL_DSC_ERR_STS_POISON",
-		GLBL_DSC_ERR_STS_POISON_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_msk_field_info[] = {
-	{"GLBL_DSC_ERR_MSK",
-		GLBL_DSC_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log0_field_info[] = {
-	{"GLBL_DSC_ERR_LOG0_VALID",
-		GLBL_DSC_ERR_LOG0_VALID_MASK},
-	{"GLBL_DSC_ERR_LOG0_RSVD_1",
-		GLBL_DSC_ERR_LOG0_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG0_QID",
-		GLBL_DSC_ERR_LOG0_QID_MASK},
-	{"GLBL_DSC_ERR_LOG0_SEL",
-		GLBL_DSC_ERR_LOG0_SEL_MASK},
-	{"GLBL_DSC_ERR_LOG0_CIDX",
-		GLBL_DSC_ERR_LOG0_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_err_log1_field_info[] = {
-	{"GLBL_DSC_ERR_LOG1_RSVD_1",
-		GLBL_DSC_ERR_LOG1_RSVD_1_MASK},
-	{"GLBL_DSC_ERR_LOG1_SUB_TYPE",
-		GLBL_DSC_ERR_LOG1_SUB_TYPE_MASK},
-	{"GLBL_DSC_ERR_LOG1_ERR_TYPE",
-		GLBL_DSC_ERR_LOG1_ERR_TYPE_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_sts_field_info[] = {
-	{"GLBL_TRQ_ERR_STS_RSVD_1",
-		GLBL_TRQ_ERR_STS_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_STS_TCP_TIMEOUT",
-		GLBL_TRQ_ERR_STS_TCP_TIMEOUT_MASK},
-	{"GLBL_TRQ_ERR_STS_VF_ACCESS_ERR",
-		GLBL_TRQ_ERR_STS_VF_ACCESS_ERR_MASK},
-	{"GLBL_TRQ_ERR_STS_QID_RANGE",
-		GLBL_TRQ_ERR_STS_QID_RANGE_MASK},
-	{"GLBL_TRQ_ERR_STS_UNMAPPED",
-		GLBL_TRQ_ERR_STS_UNMAPPED_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_msk_field_info[] = {
-	{"GLBL_TRQ_ERR_MSK",
-		GLBL_TRQ_ERR_MSK_MASK},
-};
-
-
-static struct regfield_info
-	glbl_trq_err_log_field_info[] = {
-	{"GLBL_TRQ_ERR_LOG_RSVD_1",
-		GLBL_TRQ_ERR_LOG_RSVD_1_MASK},
-	{"GLBL_TRQ_ERR_LOG_TARGET",
-		GLBL_TRQ_ERR_LOG_TARGET_MASK},
-	{"GLBL_TRQ_ERR_LOG_FUNC",
-		GLBL_TRQ_ERR_LOG_FUNC_MASK},
-	{"GLBL_TRQ_ERR_LOG_ADDRESS",
-		GLBL_TRQ_ERR_LOG_ADDRESS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat0_field_info[] = {
-	{"GLBL_DSC_DAT0_RSVD_1",
-		GLBL_DSC_DAT0_RSVD_1_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_DIR",
-		GLBL_DSC_DAT0_CTXT_ARB_DIR_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_QID",
-		GLBL_DSC_DAT0_CTXT_ARB_QID_MASK},
-	{"GLBL_DSC_DAT0_CTXT_ARB_REQ",
-		GLBL_DSC_DAT0_CTXT_ARB_REQ_MASK},
-	{"GLBL_DSC_DAT0_IRQ_FIFO_FL",
-		GLBL_DSC_DAT0_IRQ_FIFO_FL_MASK},
-	{"GLBL_DSC_DAT0_TMSTALL",
-		GLBL_DSC_DAT0_TMSTALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_STALL",
-		GLBL_DSC_DAT0_RRQ_STALL_MASK},
-	{"GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RCP_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL",
-		GLBL_DSC_DAT0_RRQ_FIFO_SPC_STALL_MASK},
-	{"GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL",
-		GLBL_DSC_DAT0_FAB_MRKR_RSP_STALL_MASK},
-	{"GLBL_DSC_DAT0_DSC_OUT_STALL",
-		GLBL_DSC_DAT0_DSC_OUT_STALL_MASK},
-};
-
-
-static struct regfield_info
-	glbl_dsc_dbg_dat1_field_info[] = {
-	{"GLBL_DSC_DAT1_RSVD_1",
-		GLBL_DSC_DAT1_RSVD_1_MASK},
-	{"GLBL_DSC_DAT1_EVT_SPC_C2H",
-		GLBL_DSC_DAT1_EVT_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_EVT_SP_H2C",
-		GLBL_DSC_DAT1_EVT_SP_H2C_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_C2H",
-		GLBL_DSC_DAT1_DSC_SPC_C2H_MASK},
-	{"GLBL_DSC_DAT1_DSC_SPC_H2C",
-		GLBL_DSC_DAT1_DSC_SPC_H2C_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_0_field_info[] = {
-	{"TRQ_SEL_FMAP_0_RSVD_1",
-		TRQ_SEL_FMAP_0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_0_QID_MAX",
-		TRQ_SEL_FMAP_0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_0_QID_BASE",
-		TRQ_SEL_FMAP_0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1_field_info[] = {
-	{"TRQ_SEL_FMAP_1_RSVD_1",
-		TRQ_SEL_FMAP_1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1_QID_MAX",
-		TRQ_SEL_FMAP_1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1_QID_BASE",
-		TRQ_SEL_FMAP_1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2_field_info[] = {
-	{"TRQ_SEL_FMAP_2_RSVD_1",
-		TRQ_SEL_FMAP_2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2_QID_MAX",
-		TRQ_SEL_FMAP_2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2_QID_BASE",
-		TRQ_SEL_FMAP_2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3_field_info[] = {
-	{"TRQ_SEL_FMAP_3_RSVD_1",
-		TRQ_SEL_FMAP_3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3_QID_MAX",
-		TRQ_SEL_FMAP_3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3_QID_BASE",
-		TRQ_SEL_FMAP_3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4_field_info[] = {
-	{"TRQ_SEL_FMAP_4_RSVD_1",
-		TRQ_SEL_FMAP_4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4_QID_MAX",
-		TRQ_SEL_FMAP_4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4_QID_BASE",
-		TRQ_SEL_FMAP_4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5_field_info[] = {
-	{"TRQ_SEL_FMAP_5_RSVD_1",
-		TRQ_SEL_FMAP_5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5_QID_MAX",
-		TRQ_SEL_FMAP_5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5_QID_BASE",
-		TRQ_SEL_FMAP_5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6_field_info[] = {
-	{"TRQ_SEL_FMAP_6_RSVD_1",
-		TRQ_SEL_FMAP_6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6_QID_MAX",
-		TRQ_SEL_FMAP_6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6_QID_BASE",
-		TRQ_SEL_FMAP_6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7_field_info[] = {
-	{"TRQ_SEL_FMAP_7_RSVD_1",
-		TRQ_SEL_FMAP_7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7_QID_MAX",
-		TRQ_SEL_FMAP_7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7_QID_BASE",
-		TRQ_SEL_FMAP_7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8_field_info[] = {
-	{"TRQ_SEL_FMAP_8_RSVD_1",
-		TRQ_SEL_FMAP_8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8_QID_MAX",
-		TRQ_SEL_FMAP_8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8_QID_BASE",
-		TRQ_SEL_FMAP_8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9_field_info[] = {
-	{"TRQ_SEL_FMAP_9_RSVD_1",
-		TRQ_SEL_FMAP_9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9_QID_MAX",
-		TRQ_SEL_FMAP_9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9_QID_BASE",
-		TRQ_SEL_FMAP_9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a_field_info[] = {
-	{"TRQ_SEL_FMAP_A_RSVD_1",
-		TRQ_SEL_FMAP_A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A_QID_MAX",
-		TRQ_SEL_FMAP_A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A_QID_BASE",
-		TRQ_SEL_FMAP_A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b_field_info[] = {
-	{"TRQ_SEL_FMAP_B_RSVD_1",
-		TRQ_SEL_FMAP_B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B_QID_MAX",
-		TRQ_SEL_FMAP_B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B_QID_BASE",
-		TRQ_SEL_FMAP_B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d_field_info[] = {
-	{"TRQ_SEL_FMAP_D_RSVD_1",
-		TRQ_SEL_FMAP_D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D_QID_MAX",
-		TRQ_SEL_FMAP_D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D_QID_BASE",
-		TRQ_SEL_FMAP_D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e_field_info[] = {
-	{"TRQ_SEL_FMAP_E_RSVD_1",
-		TRQ_SEL_FMAP_E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E_QID_MAX",
-		TRQ_SEL_FMAP_E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E_QID_BASE",
-		TRQ_SEL_FMAP_E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f_field_info[] = {
-	{"TRQ_SEL_FMAP_F_RSVD_1",
-		TRQ_SEL_FMAP_F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F_QID_MAX",
-		TRQ_SEL_FMAP_F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F_QID_BASE",
-		TRQ_SEL_FMAP_F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_10_field_info[] = {
-	{"TRQ_SEL_FMAP_10_RSVD_1",
-		TRQ_SEL_FMAP_10_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_10_QID_MAX",
-		TRQ_SEL_FMAP_10_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_10_QID_BASE",
-		TRQ_SEL_FMAP_10_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_11_field_info[] = {
-	{"TRQ_SEL_FMAP_11_RSVD_1",
-		TRQ_SEL_FMAP_11_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_11_QID_MAX",
-		TRQ_SEL_FMAP_11_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_11_QID_BASE",
-		TRQ_SEL_FMAP_11_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_12_field_info[] = {
-	{"TRQ_SEL_FMAP_12_RSVD_1",
-		TRQ_SEL_FMAP_12_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_12_QID_MAX",
-		TRQ_SEL_FMAP_12_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_12_QID_BASE",
-		TRQ_SEL_FMAP_12_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_13_field_info[] = {
-	{"TRQ_SEL_FMAP_13_RSVD_1",
-		TRQ_SEL_FMAP_13_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_13_QID_MAX",
-		TRQ_SEL_FMAP_13_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_13_QID_BASE",
-		TRQ_SEL_FMAP_13_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_14_field_info[] = {
-	{"TRQ_SEL_FMAP_14_RSVD_1",
-		TRQ_SEL_FMAP_14_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_14_QID_MAX",
-		TRQ_SEL_FMAP_14_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_14_QID_BASE",
-		TRQ_SEL_FMAP_14_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_15_field_info[] = {
-	{"TRQ_SEL_FMAP_15_RSVD_1",
-		TRQ_SEL_FMAP_15_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_15_QID_MAX",
-		TRQ_SEL_FMAP_15_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_15_QID_BASE",
-		TRQ_SEL_FMAP_15_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_16_field_info[] = {
-	{"TRQ_SEL_FMAP_16_RSVD_1",
-		TRQ_SEL_FMAP_16_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_16_QID_MAX",
-		TRQ_SEL_FMAP_16_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_16_QID_BASE",
-		TRQ_SEL_FMAP_16_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_17_field_info[] = {
-	{"TRQ_SEL_FMAP_17_RSVD_1",
-		TRQ_SEL_FMAP_17_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_17_QID_MAX",
-		TRQ_SEL_FMAP_17_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_17_QID_BASE",
-		TRQ_SEL_FMAP_17_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_18_field_info[] = {
-	{"TRQ_SEL_FMAP_18_RSVD_1",
-		TRQ_SEL_FMAP_18_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_18_QID_MAX",
-		TRQ_SEL_FMAP_18_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_18_QID_BASE",
-		TRQ_SEL_FMAP_18_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_19_field_info[] = {
-	{"TRQ_SEL_FMAP_19_RSVD_1",
-		TRQ_SEL_FMAP_19_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_19_QID_MAX",
-		TRQ_SEL_FMAP_19_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_19_QID_BASE",
-		TRQ_SEL_FMAP_19_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1a_field_info[] = {
-	{"TRQ_SEL_FMAP_1A_RSVD_1",
-		TRQ_SEL_FMAP_1A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_MAX",
-		TRQ_SEL_FMAP_1A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1A_QID_BASE",
-		TRQ_SEL_FMAP_1A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1b_field_info[] = {
-	{"TRQ_SEL_FMAP_1B_RSVD_1",
-		TRQ_SEL_FMAP_1B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_MAX",
-		TRQ_SEL_FMAP_1B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1B_QID_BASE",
-		TRQ_SEL_FMAP_1B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1c_field_info[] = {
-	{"TRQ_SEL_FMAP_1C_RSVD_1",
-		TRQ_SEL_FMAP_1C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_MAX",
-		TRQ_SEL_FMAP_1C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1C_QID_BASE",
-		TRQ_SEL_FMAP_1C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1d_field_info[] = {
-	{"TRQ_SEL_FMAP_1D_RSVD_1",
-		TRQ_SEL_FMAP_1D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_MAX",
-		TRQ_SEL_FMAP_1D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1D_QID_BASE",
-		TRQ_SEL_FMAP_1D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1e_field_info[] = {
-	{"TRQ_SEL_FMAP_1E_RSVD_1",
-		TRQ_SEL_FMAP_1E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_MAX",
-		TRQ_SEL_FMAP_1E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1E_QID_BASE",
-		TRQ_SEL_FMAP_1E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_1f_field_info[] = {
-	{"TRQ_SEL_FMAP_1F_RSVD_1",
-		TRQ_SEL_FMAP_1F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_MAX",
-		TRQ_SEL_FMAP_1F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_1F_QID_BASE",
-		TRQ_SEL_FMAP_1F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_20_field_info[] = {
-	{"TRQ_SEL_FMAP_20_RSVD_1",
-		TRQ_SEL_FMAP_20_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_20_QID_MAX",
-		TRQ_SEL_FMAP_20_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_20_QID_BASE",
-		TRQ_SEL_FMAP_20_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_21_field_info[] = {
-	{"TRQ_SEL_FMAP_21_RSVD_1",
-		TRQ_SEL_FMAP_21_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_21_QID_MAX",
-		TRQ_SEL_FMAP_21_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_21_QID_BASE",
-		TRQ_SEL_FMAP_21_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_22_field_info[] = {
-	{"TRQ_SEL_FMAP_22_RSVD_1",
-		TRQ_SEL_FMAP_22_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_22_QID_MAX",
-		TRQ_SEL_FMAP_22_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_22_QID_BASE",
-		TRQ_SEL_FMAP_22_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_23_field_info[] = {
-	{"TRQ_SEL_FMAP_23_RSVD_1",
-		TRQ_SEL_FMAP_23_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_23_QID_MAX",
-		TRQ_SEL_FMAP_23_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_23_QID_BASE",
-		TRQ_SEL_FMAP_23_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_24_field_info[] = {
-	{"TRQ_SEL_FMAP_24_RSVD_1",
-		TRQ_SEL_FMAP_24_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_24_QID_MAX",
-		TRQ_SEL_FMAP_24_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_24_QID_BASE",
-		TRQ_SEL_FMAP_24_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_25_field_info[] = {
-	{"TRQ_SEL_FMAP_25_RSVD_1",
-		TRQ_SEL_FMAP_25_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_25_QID_MAX",
-		TRQ_SEL_FMAP_25_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_25_QID_BASE",
-		TRQ_SEL_FMAP_25_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_26_field_info[] = {
-	{"TRQ_SEL_FMAP_26_RSVD_1",
-		TRQ_SEL_FMAP_26_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_26_QID_MAX",
-		TRQ_SEL_FMAP_26_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_26_QID_BASE",
-		TRQ_SEL_FMAP_26_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_27_field_info[] = {
-	{"TRQ_SEL_FMAP_27_RSVD_1",
-		TRQ_SEL_FMAP_27_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_27_QID_MAX",
-		TRQ_SEL_FMAP_27_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_27_QID_BASE",
-		TRQ_SEL_FMAP_27_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_28_field_info[] = {
-	{"TRQ_SEL_FMAP_28_RSVD_1",
-		TRQ_SEL_FMAP_28_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_28_QID_MAX",
-		TRQ_SEL_FMAP_28_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_28_QID_BASE",
-		TRQ_SEL_FMAP_28_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_29_field_info[] = {
-	{"TRQ_SEL_FMAP_29_RSVD_1",
-		TRQ_SEL_FMAP_29_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_29_QID_MAX",
-		TRQ_SEL_FMAP_29_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_29_QID_BASE",
-		TRQ_SEL_FMAP_29_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2a_field_info[] = {
-	{"TRQ_SEL_FMAP_2A_RSVD_1",
-		TRQ_SEL_FMAP_2A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_MAX",
-		TRQ_SEL_FMAP_2A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2A_QID_BASE",
-		TRQ_SEL_FMAP_2A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2b_field_info[] = {
-	{"TRQ_SEL_FMAP_2B_RSVD_1",
-		TRQ_SEL_FMAP_2B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_MAX",
-		TRQ_SEL_FMAP_2B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2B_QID_BASE",
-		TRQ_SEL_FMAP_2B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2c_field_info[] = {
-	{"TRQ_SEL_FMAP_2C_RSVD_1",
-		TRQ_SEL_FMAP_2C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_MAX",
-		TRQ_SEL_FMAP_2C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2C_QID_BASE",
-		TRQ_SEL_FMAP_2C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2d_field_info[] = {
-	{"TRQ_SEL_FMAP_2D_RSVD_1",
-		TRQ_SEL_FMAP_2D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_MAX",
-		TRQ_SEL_FMAP_2D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2D_QID_BASE",
-		TRQ_SEL_FMAP_2D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2e_field_info[] = {
-	{"TRQ_SEL_FMAP_2E_RSVD_1",
-		TRQ_SEL_FMAP_2E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_MAX",
-		TRQ_SEL_FMAP_2E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2E_QID_BASE",
-		TRQ_SEL_FMAP_2E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_2f_field_info[] = {
-	{"TRQ_SEL_FMAP_2F_RSVD_1",
-		TRQ_SEL_FMAP_2F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_MAX",
-		TRQ_SEL_FMAP_2F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_2F_QID_BASE",
-		TRQ_SEL_FMAP_2F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_30_field_info[] = {
-	{"TRQ_SEL_FMAP_30_RSVD_1",
-		TRQ_SEL_FMAP_30_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_30_QID_MAX",
-		TRQ_SEL_FMAP_30_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_30_QID_BASE",
-		TRQ_SEL_FMAP_30_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_31_field_info[] = {
-	{"TRQ_SEL_FMAP_31_RSVD_1",
-		TRQ_SEL_FMAP_31_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_31_QID_MAX",
-		TRQ_SEL_FMAP_31_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_31_QID_BASE",
-		TRQ_SEL_FMAP_31_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_32_field_info[] = {
-	{"TRQ_SEL_FMAP_32_RSVD_1",
-		TRQ_SEL_FMAP_32_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_32_QID_MAX",
-		TRQ_SEL_FMAP_32_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_32_QID_BASE",
-		TRQ_SEL_FMAP_32_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_33_field_info[] = {
-	{"TRQ_SEL_FMAP_33_RSVD_1",
-		TRQ_SEL_FMAP_33_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_33_QID_MAX",
-		TRQ_SEL_FMAP_33_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_33_QID_BASE",
-		TRQ_SEL_FMAP_33_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_34_field_info[] = {
-	{"TRQ_SEL_FMAP_34_RSVD_1",
-		TRQ_SEL_FMAP_34_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_34_QID_MAX",
-		TRQ_SEL_FMAP_34_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_34_QID_BASE",
-		TRQ_SEL_FMAP_34_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_35_field_info[] = {
-	{"TRQ_SEL_FMAP_35_RSVD_1",
-		TRQ_SEL_FMAP_35_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_35_QID_MAX",
-		TRQ_SEL_FMAP_35_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_35_QID_BASE",
-		TRQ_SEL_FMAP_35_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_36_field_info[] = {
-	{"TRQ_SEL_FMAP_36_RSVD_1",
-		TRQ_SEL_FMAP_36_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_36_QID_MAX",
-		TRQ_SEL_FMAP_36_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_36_QID_BASE",
-		TRQ_SEL_FMAP_36_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_37_field_info[] = {
-	{"TRQ_SEL_FMAP_37_RSVD_1",
-		TRQ_SEL_FMAP_37_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_37_QID_MAX",
-		TRQ_SEL_FMAP_37_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_37_QID_BASE",
-		TRQ_SEL_FMAP_37_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_38_field_info[] = {
-	{"TRQ_SEL_FMAP_38_RSVD_1",
-		TRQ_SEL_FMAP_38_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_38_QID_MAX",
-		TRQ_SEL_FMAP_38_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_38_QID_BASE",
-		TRQ_SEL_FMAP_38_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_39_field_info[] = {
-	{"TRQ_SEL_FMAP_39_RSVD_1",
-		TRQ_SEL_FMAP_39_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_39_QID_MAX",
-		TRQ_SEL_FMAP_39_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_39_QID_BASE",
-		TRQ_SEL_FMAP_39_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3a_field_info[] = {
-	{"TRQ_SEL_FMAP_3A_RSVD_1",
-		TRQ_SEL_FMAP_3A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_MAX",
-		TRQ_SEL_FMAP_3A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3A_QID_BASE",
-		TRQ_SEL_FMAP_3A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3b_field_info[] = {
-	{"TRQ_SEL_FMAP_3B_RSVD_1",
-		TRQ_SEL_FMAP_3B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_MAX",
-		TRQ_SEL_FMAP_3B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3B_QID_BASE",
-		TRQ_SEL_FMAP_3B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3c_field_info[] = {
-	{"TRQ_SEL_FMAP_3C_RSVD_1",
-		TRQ_SEL_FMAP_3C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_MAX",
-		TRQ_SEL_FMAP_3C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3C_QID_BASE",
-		TRQ_SEL_FMAP_3C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3d_field_info[] = {
-	{"TRQ_SEL_FMAP_3D_RSVD_1",
-		TRQ_SEL_FMAP_3D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_MAX",
-		TRQ_SEL_FMAP_3D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3D_QID_BASE",
-		TRQ_SEL_FMAP_3D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3e_field_info[] = {
-	{"TRQ_SEL_FMAP_3E_RSVD_1",
-		TRQ_SEL_FMAP_3E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_MAX",
-		TRQ_SEL_FMAP_3E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3E_QID_BASE",
-		TRQ_SEL_FMAP_3E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_3f_field_info[] = {
-	{"TRQ_SEL_FMAP_3F_RSVD_1",
-		TRQ_SEL_FMAP_3F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_MAX",
-		TRQ_SEL_FMAP_3F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_3F_QID_BASE",
-		TRQ_SEL_FMAP_3F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_40_field_info[] = {
-	{"TRQ_SEL_FMAP_40_RSVD_1",
-		TRQ_SEL_FMAP_40_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_40_QID_MAX",
-		TRQ_SEL_FMAP_40_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_40_QID_BASE",
-		TRQ_SEL_FMAP_40_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_41_field_info[] = {
-	{"TRQ_SEL_FMAP_41_RSVD_1",
-		TRQ_SEL_FMAP_41_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_41_QID_MAX",
-		TRQ_SEL_FMAP_41_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_41_QID_BASE",
-		TRQ_SEL_FMAP_41_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_42_field_info[] = {
-	{"TRQ_SEL_FMAP_42_RSVD_1",
-		TRQ_SEL_FMAP_42_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_42_QID_MAX",
-		TRQ_SEL_FMAP_42_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_42_QID_BASE",
-		TRQ_SEL_FMAP_42_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_43_field_info[] = {
-	{"TRQ_SEL_FMAP_43_RSVD_1",
-		TRQ_SEL_FMAP_43_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_43_QID_MAX",
-		TRQ_SEL_FMAP_43_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_43_QID_BASE",
-		TRQ_SEL_FMAP_43_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_44_field_info[] = {
-	{"TRQ_SEL_FMAP_44_RSVD_1",
-		TRQ_SEL_FMAP_44_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_44_QID_MAX",
-		TRQ_SEL_FMAP_44_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_44_QID_BASE",
-		TRQ_SEL_FMAP_44_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_45_field_info[] = {
-	{"TRQ_SEL_FMAP_45_RSVD_1",
-		TRQ_SEL_FMAP_45_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_45_QID_MAX",
-		TRQ_SEL_FMAP_45_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_45_QID_BASE",
-		TRQ_SEL_FMAP_45_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_46_field_info[] = {
-	{"TRQ_SEL_FMAP_46_RSVD_1",
-		TRQ_SEL_FMAP_46_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_46_QID_MAX",
-		TRQ_SEL_FMAP_46_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_46_QID_BASE",
-		TRQ_SEL_FMAP_46_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_47_field_info[] = {
-	{"TRQ_SEL_FMAP_47_RSVD_1",
-		TRQ_SEL_FMAP_47_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_47_QID_MAX",
-		TRQ_SEL_FMAP_47_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_47_QID_BASE",
-		TRQ_SEL_FMAP_47_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_48_field_info[] = {
-	{"TRQ_SEL_FMAP_48_RSVD_1",
-		TRQ_SEL_FMAP_48_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_48_QID_MAX",
-		TRQ_SEL_FMAP_48_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_48_QID_BASE",
-		TRQ_SEL_FMAP_48_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_49_field_info[] = {
-	{"TRQ_SEL_FMAP_49_RSVD_1",
-		TRQ_SEL_FMAP_49_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_49_QID_MAX",
-		TRQ_SEL_FMAP_49_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_49_QID_BASE",
-		TRQ_SEL_FMAP_49_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4a_field_info[] = {
-	{"TRQ_SEL_FMAP_4A_RSVD_1",
-		TRQ_SEL_FMAP_4A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_MAX",
-		TRQ_SEL_FMAP_4A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4A_QID_BASE",
-		TRQ_SEL_FMAP_4A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4b_field_info[] = {
-	{"TRQ_SEL_FMAP_4B_RSVD_1",
-		TRQ_SEL_FMAP_4B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_MAX",
-		TRQ_SEL_FMAP_4B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4B_QID_BASE",
-		TRQ_SEL_FMAP_4B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4c_field_info[] = {
-	{"TRQ_SEL_FMAP_4C_RSVD_1",
-		TRQ_SEL_FMAP_4C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_MAX",
-		TRQ_SEL_FMAP_4C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4C_QID_BASE",
-		TRQ_SEL_FMAP_4C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4d_field_info[] = {
-	{"TRQ_SEL_FMAP_4D_RSVD_1",
-		TRQ_SEL_FMAP_4D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_MAX",
-		TRQ_SEL_FMAP_4D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4D_QID_BASE",
-		TRQ_SEL_FMAP_4D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4e_field_info[] = {
-	{"TRQ_SEL_FMAP_4E_RSVD_1",
-		TRQ_SEL_FMAP_4E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_MAX",
-		TRQ_SEL_FMAP_4E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4E_QID_BASE",
-		TRQ_SEL_FMAP_4E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_4f_field_info[] = {
-	{"TRQ_SEL_FMAP_4F_RSVD_1",
-		TRQ_SEL_FMAP_4F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_MAX",
-		TRQ_SEL_FMAP_4F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_4F_QID_BASE",
-		TRQ_SEL_FMAP_4F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_50_field_info[] = {
-	{"TRQ_SEL_FMAP_50_RSVD_1",
-		TRQ_SEL_FMAP_50_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_50_QID_MAX",
-		TRQ_SEL_FMAP_50_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_50_QID_BASE",
-		TRQ_SEL_FMAP_50_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_51_field_info[] = {
-	{"TRQ_SEL_FMAP_51_RSVD_1",
-		TRQ_SEL_FMAP_51_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_51_QID_MAX",
-		TRQ_SEL_FMAP_51_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_51_QID_BASE",
-		TRQ_SEL_FMAP_51_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_52_field_info[] = {
-	{"TRQ_SEL_FMAP_52_RSVD_1",
-		TRQ_SEL_FMAP_52_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_52_QID_MAX",
-		TRQ_SEL_FMAP_52_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_52_QID_BASE",
-		TRQ_SEL_FMAP_52_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_53_field_info[] = {
-	{"TRQ_SEL_FMAP_53_RSVD_1",
-		TRQ_SEL_FMAP_53_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_53_QID_MAX",
-		TRQ_SEL_FMAP_53_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_53_QID_BASE",
-		TRQ_SEL_FMAP_53_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_54_field_info[] = {
-	{"TRQ_SEL_FMAP_54_RSVD_1",
-		TRQ_SEL_FMAP_54_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_54_QID_MAX",
-		TRQ_SEL_FMAP_54_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_54_QID_BASE",
-		TRQ_SEL_FMAP_54_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_55_field_info[] = {
-	{"TRQ_SEL_FMAP_55_RSVD_1",
-		TRQ_SEL_FMAP_55_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_55_QID_MAX",
-		TRQ_SEL_FMAP_55_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_55_QID_BASE",
-		TRQ_SEL_FMAP_55_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_56_field_info[] = {
-	{"TRQ_SEL_FMAP_56_RSVD_1",
-		TRQ_SEL_FMAP_56_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_56_QID_MAX",
-		TRQ_SEL_FMAP_56_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_56_QID_BASE",
-		TRQ_SEL_FMAP_56_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_57_field_info[] = {
-	{"TRQ_SEL_FMAP_57_RSVD_1",
-		TRQ_SEL_FMAP_57_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_57_QID_MAX",
-		TRQ_SEL_FMAP_57_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_57_QID_BASE",
-		TRQ_SEL_FMAP_57_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_58_field_info[] = {
-	{"TRQ_SEL_FMAP_58_RSVD_1",
-		TRQ_SEL_FMAP_58_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_58_QID_MAX",
-		TRQ_SEL_FMAP_58_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_58_QID_BASE",
-		TRQ_SEL_FMAP_58_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_59_field_info[] = {
-	{"TRQ_SEL_FMAP_59_RSVD_1",
-		TRQ_SEL_FMAP_59_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_59_QID_MAX",
-		TRQ_SEL_FMAP_59_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_59_QID_BASE",
-		TRQ_SEL_FMAP_59_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5a_field_info[] = {
-	{"TRQ_SEL_FMAP_5A_RSVD_1",
-		TRQ_SEL_FMAP_5A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_MAX",
-		TRQ_SEL_FMAP_5A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5A_QID_BASE",
-		TRQ_SEL_FMAP_5A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5b_field_info[] = {
-	{"TRQ_SEL_FMAP_5B_RSVD_1",
-		TRQ_SEL_FMAP_5B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_MAX",
-		TRQ_SEL_FMAP_5B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5B_QID_BASE",
-		TRQ_SEL_FMAP_5B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5c_field_info[] = {
-	{"TRQ_SEL_FMAP_5C_RSVD_1",
-		TRQ_SEL_FMAP_5C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_MAX",
-		TRQ_SEL_FMAP_5C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5C_QID_BASE",
-		TRQ_SEL_FMAP_5C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5d_field_info[] = {
-	{"TRQ_SEL_FMAP_5D_RSVD_1",
-		TRQ_SEL_FMAP_5D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_MAX",
-		TRQ_SEL_FMAP_5D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5D_QID_BASE",
-		TRQ_SEL_FMAP_5D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5e_field_info[] = {
-	{"TRQ_SEL_FMAP_5E_RSVD_1",
-		TRQ_SEL_FMAP_5E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_MAX",
-		TRQ_SEL_FMAP_5E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5E_QID_BASE",
-		TRQ_SEL_FMAP_5E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_5f_field_info[] = {
-	{"TRQ_SEL_FMAP_5F_RSVD_1",
-		TRQ_SEL_FMAP_5F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_MAX",
-		TRQ_SEL_FMAP_5F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_5F_QID_BASE",
-		TRQ_SEL_FMAP_5F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_60_field_info[] = {
-	{"TRQ_SEL_FMAP_60_RSVD_1",
-		TRQ_SEL_FMAP_60_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_60_QID_MAX",
-		TRQ_SEL_FMAP_60_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_60_QID_BASE",
-		TRQ_SEL_FMAP_60_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_61_field_info[] = {
-	{"TRQ_SEL_FMAP_61_RSVD_1",
-		TRQ_SEL_FMAP_61_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_61_QID_MAX",
-		TRQ_SEL_FMAP_61_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_61_QID_BASE",
-		TRQ_SEL_FMAP_61_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_62_field_info[] = {
-	{"TRQ_SEL_FMAP_62_RSVD_1",
-		TRQ_SEL_FMAP_62_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_62_QID_MAX",
-		TRQ_SEL_FMAP_62_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_62_QID_BASE",
-		TRQ_SEL_FMAP_62_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_63_field_info[] = {
-	{"TRQ_SEL_FMAP_63_RSVD_1",
-		TRQ_SEL_FMAP_63_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_63_QID_MAX",
-		TRQ_SEL_FMAP_63_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_63_QID_BASE",
-		TRQ_SEL_FMAP_63_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_64_field_info[] = {
-	{"TRQ_SEL_FMAP_64_RSVD_1",
-		TRQ_SEL_FMAP_64_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_64_QID_MAX",
-		TRQ_SEL_FMAP_64_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_64_QID_BASE",
-		TRQ_SEL_FMAP_64_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_65_field_info[] = {
-	{"TRQ_SEL_FMAP_65_RSVD_1",
-		TRQ_SEL_FMAP_65_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_65_QID_MAX",
-		TRQ_SEL_FMAP_65_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_65_QID_BASE",
-		TRQ_SEL_FMAP_65_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_66_field_info[] = {
-	{"TRQ_SEL_FMAP_66_RSVD_1",
-		TRQ_SEL_FMAP_66_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_66_QID_MAX",
-		TRQ_SEL_FMAP_66_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_66_QID_BASE",
-		TRQ_SEL_FMAP_66_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_67_field_info[] = {
-	{"TRQ_SEL_FMAP_67_RSVD_1",
-		TRQ_SEL_FMAP_67_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_67_QID_MAX",
-		TRQ_SEL_FMAP_67_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_67_QID_BASE",
-		TRQ_SEL_FMAP_67_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_68_field_info[] = {
-	{"TRQ_SEL_FMAP_68_RSVD_1",
-		TRQ_SEL_FMAP_68_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_68_QID_MAX",
-		TRQ_SEL_FMAP_68_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_68_QID_BASE",
-		TRQ_SEL_FMAP_68_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_69_field_info[] = {
-	{"TRQ_SEL_FMAP_69_RSVD_1",
-		TRQ_SEL_FMAP_69_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_69_QID_MAX",
-		TRQ_SEL_FMAP_69_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_69_QID_BASE",
-		TRQ_SEL_FMAP_69_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6a_field_info[] = {
-	{"TRQ_SEL_FMAP_6A_RSVD_1",
-		TRQ_SEL_FMAP_6A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_MAX",
-		TRQ_SEL_FMAP_6A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6A_QID_BASE",
-		TRQ_SEL_FMAP_6A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6b_field_info[] = {
-	{"TRQ_SEL_FMAP_6B_RSVD_1",
-		TRQ_SEL_FMAP_6B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_MAX",
-		TRQ_SEL_FMAP_6B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6B_QID_BASE",
-		TRQ_SEL_FMAP_6B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6c_field_info[] = {
-	{"TRQ_SEL_FMAP_6C_RSVD_1",
-		TRQ_SEL_FMAP_6C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_MAX",
-		TRQ_SEL_FMAP_6C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6C_QID_BASE",
-		TRQ_SEL_FMAP_6C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6d_field_info[] = {
-	{"TRQ_SEL_FMAP_6D_RSVD_1",
-		TRQ_SEL_FMAP_6D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_MAX",
-		TRQ_SEL_FMAP_6D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6D_QID_BASE",
-		TRQ_SEL_FMAP_6D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6e_field_info[] = {
-	{"TRQ_SEL_FMAP_6E_RSVD_1",
-		TRQ_SEL_FMAP_6E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_MAX",
-		TRQ_SEL_FMAP_6E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6E_QID_BASE",
-		TRQ_SEL_FMAP_6E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_6f_field_info[] = {
-	{"TRQ_SEL_FMAP_6F_RSVD_1",
-		TRQ_SEL_FMAP_6F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_MAX",
-		TRQ_SEL_FMAP_6F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_6F_QID_BASE",
-		TRQ_SEL_FMAP_6F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_70_field_info[] = {
-	{"TRQ_SEL_FMAP_70_RSVD_1",
-		TRQ_SEL_FMAP_70_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_70_QID_MAX",
-		TRQ_SEL_FMAP_70_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_70_QID_BASE",
-		TRQ_SEL_FMAP_70_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_71_field_info[] = {
-	{"TRQ_SEL_FMAP_71_RSVD_1",
-		TRQ_SEL_FMAP_71_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_71_QID_MAX",
-		TRQ_SEL_FMAP_71_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_71_QID_BASE",
-		TRQ_SEL_FMAP_71_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_72_field_info[] = {
-	{"TRQ_SEL_FMAP_72_RSVD_1",
-		TRQ_SEL_FMAP_72_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_72_QID_MAX",
-		TRQ_SEL_FMAP_72_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_72_QID_BASE",
-		TRQ_SEL_FMAP_72_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_73_field_info[] = {
-	{"TRQ_SEL_FMAP_73_RSVD_1",
-		TRQ_SEL_FMAP_73_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_73_QID_MAX",
-		TRQ_SEL_FMAP_73_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_73_QID_BASE",
-		TRQ_SEL_FMAP_73_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_74_field_info[] = {
-	{"TRQ_SEL_FMAP_74_RSVD_1",
-		TRQ_SEL_FMAP_74_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_74_QID_MAX",
-		TRQ_SEL_FMAP_74_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_74_QID_BASE",
-		TRQ_SEL_FMAP_74_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_75_field_info[] = {
-	{"TRQ_SEL_FMAP_75_RSVD_1",
-		TRQ_SEL_FMAP_75_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_75_QID_MAX",
-		TRQ_SEL_FMAP_75_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_75_QID_BASE",
-		TRQ_SEL_FMAP_75_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_76_field_info[] = {
-	{"TRQ_SEL_FMAP_76_RSVD_1",
-		TRQ_SEL_FMAP_76_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_76_QID_MAX",
-		TRQ_SEL_FMAP_76_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_76_QID_BASE",
-		TRQ_SEL_FMAP_76_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_77_field_info[] = {
-	{"TRQ_SEL_FMAP_77_RSVD_1",
-		TRQ_SEL_FMAP_77_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_77_QID_MAX",
-		TRQ_SEL_FMAP_77_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_77_QID_BASE",
-		TRQ_SEL_FMAP_77_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_78_field_info[] = {
-	{"TRQ_SEL_FMAP_78_RSVD_1",
-		TRQ_SEL_FMAP_78_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_78_QID_MAX",
-		TRQ_SEL_FMAP_78_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_78_QID_BASE",
-		TRQ_SEL_FMAP_78_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_79_field_info[] = {
-	{"TRQ_SEL_FMAP_79_RSVD_1",
-		TRQ_SEL_FMAP_79_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_79_QID_MAX",
-		TRQ_SEL_FMAP_79_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_79_QID_BASE",
-		TRQ_SEL_FMAP_79_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7a_field_info[] = {
-	{"TRQ_SEL_FMAP_7A_RSVD_1",
-		TRQ_SEL_FMAP_7A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_MAX",
-		TRQ_SEL_FMAP_7A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7A_QID_BASE",
-		TRQ_SEL_FMAP_7A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7b_field_info[] = {
-	{"TRQ_SEL_FMAP_7B_RSVD_1",
-		TRQ_SEL_FMAP_7B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_MAX",
-		TRQ_SEL_FMAP_7B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7B_QID_BASE",
-		TRQ_SEL_FMAP_7B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7c_field_info[] = {
-	{"TRQ_SEL_FMAP_7C_RSVD_1",
-		TRQ_SEL_FMAP_7C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_MAX",
-		TRQ_SEL_FMAP_7C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7C_QID_BASE",
-		TRQ_SEL_FMAP_7C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7d_field_info[] = {
-	{"TRQ_SEL_FMAP_7D_RSVD_1",
-		TRQ_SEL_FMAP_7D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_MAX",
-		TRQ_SEL_FMAP_7D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7D_QID_BASE",
-		TRQ_SEL_FMAP_7D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7e_field_info[] = {
-	{"TRQ_SEL_FMAP_7E_RSVD_1",
-		TRQ_SEL_FMAP_7E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_MAX",
-		TRQ_SEL_FMAP_7E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7E_QID_BASE",
-		TRQ_SEL_FMAP_7E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_7f_field_info[] = {
-	{"TRQ_SEL_FMAP_7F_RSVD_1",
-		TRQ_SEL_FMAP_7F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_MAX",
-		TRQ_SEL_FMAP_7F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_7F_QID_BASE",
-		TRQ_SEL_FMAP_7F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_80_field_info[] = {
-	{"TRQ_SEL_FMAP_80_RSVD_1",
-		TRQ_SEL_FMAP_80_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_80_QID_MAX",
-		TRQ_SEL_FMAP_80_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_80_QID_BASE",
-		TRQ_SEL_FMAP_80_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_81_field_info[] = {
-	{"TRQ_SEL_FMAP_81_RSVD_1",
-		TRQ_SEL_FMAP_81_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_81_QID_MAX",
-		TRQ_SEL_FMAP_81_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_81_QID_BASE",
-		TRQ_SEL_FMAP_81_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_82_field_info[] = {
-	{"TRQ_SEL_FMAP_82_RSVD_1",
-		TRQ_SEL_FMAP_82_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_82_QID_MAX",
-		TRQ_SEL_FMAP_82_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_82_QID_BASE",
-		TRQ_SEL_FMAP_82_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_83_field_info[] = {
-	{"TRQ_SEL_FMAP_83_RSVD_1",
-		TRQ_SEL_FMAP_83_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_83_QID_MAX",
-		TRQ_SEL_FMAP_83_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_83_QID_BASE",
-		TRQ_SEL_FMAP_83_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_84_field_info[] = {
-	{"TRQ_SEL_FMAP_84_RSVD_1",
-		TRQ_SEL_FMAP_84_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_84_QID_MAX",
-		TRQ_SEL_FMAP_84_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_84_QID_BASE",
-		TRQ_SEL_FMAP_84_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_85_field_info[] = {
-	{"TRQ_SEL_FMAP_85_RSVD_1",
-		TRQ_SEL_FMAP_85_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_85_QID_MAX",
-		TRQ_SEL_FMAP_85_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_85_QID_BASE",
-		TRQ_SEL_FMAP_85_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_86_field_info[] = {
-	{"TRQ_SEL_FMAP_86_RSVD_1",
-		TRQ_SEL_FMAP_86_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_86_QID_MAX",
-		TRQ_SEL_FMAP_86_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_86_QID_BASE",
-		TRQ_SEL_FMAP_86_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_87_field_info[] = {
-	{"TRQ_SEL_FMAP_87_RSVD_1",
-		TRQ_SEL_FMAP_87_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_87_QID_MAX",
-		TRQ_SEL_FMAP_87_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_87_QID_BASE",
-		TRQ_SEL_FMAP_87_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_88_field_info[] = {
-	{"TRQ_SEL_FMAP_88_RSVD_1",
-		TRQ_SEL_FMAP_88_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_88_QID_MAX",
-		TRQ_SEL_FMAP_88_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_88_QID_BASE",
-		TRQ_SEL_FMAP_88_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_89_field_info[] = {
-	{"TRQ_SEL_FMAP_89_RSVD_1",
-		TRQ_SEL_FMAP_89_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_89_QID_MAX",
-		TRQ_SEL_FMAP_89_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_89_QID_BASE",
-		TRQ_SEL_FMAP_89_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8a_field_info[] = {
-	{"TRQ_SEL_FMAP_8A_RSVD_1",
-		TRQ_SEL_FMAP_8A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_MAX",
-		TRQ_SEL_FMAP_8A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8A_QID_BASE",
-		TRQ_SEL_FMAP_8A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8b_field_info[] = {
-	{"TRQ_SEL_FMAP_8B_RSVD_1",
-		TRQ_SEL_FMAP_8B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_MAX",
-		TRQ_SEL_FMAP_8B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8B_QID_BASE",
-		TRQ_SEL_FMAP_8B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8c_field_info[] = {
-	{"TRQ_SEL_FMAP_8C_RSVD_1",
-		TRQ_SEL_FMAP_8C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_MAX",
-		TRQ_SEL_FMAP_8C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8C_QID_BASE",
-		TRQ_SEL_FMAP_8C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8d_field_info[] = {
-	{"TRQ_SEL_FMAP_8D_RSVD_1",
-		TRQ_SEL_FMAP_8D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_MAX",
-		TRQ_SEL_FMAP_8D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8D_QID_BASE",
-		TRQ_SEL_FMAP_8D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8e_field_info[] = {
-	{"TRQ_SEL_FMAP_8E_RSVD_1",
-		TRQ_SEL_FMAP_8E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_MAX",
-		TRQ_SEL_FMAP_8E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8E_QID_BASE",
-		TRQ_SEL_FMAP_8E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_8f_field_info[] = {
-	{"TRQ_SEL_FMAP_8F_RSVD_1",
-		TRQ_SEL_FMAP_8F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_MAX",
-		TRQ_SEL_FMAP_8F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_8F_QID_BASE",
-		TRQ_SEL_FMAP_8F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_90_field_info[] = {
-	{"TRQ_SEL_FMAP_90_RSVD_1",
-		TRQ_SEL_FMAP_90_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_90_QID_MAX",
-		TRQ_SEL_FMAP_90_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_90_QID_BASE",
-		TRQ_SEL_FMAP_90_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_91_field_info[] = {
-	{"TRQ_SEL_FMAP_91_RSVD_1",
-		TRQ_SEL_FMAP_91_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_91_QID_MAX",
-		TRQ_SEL_FMAP_91_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_91_QID_BASE",
-		TRQ_SEL_FMAP_91_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_92_field_info[] = {
-	{"TRQ_SEL_FMAP_92_RSVD_1",
-		TRQ_SEL_FMAP_92_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_92_QID_MAX",
-		TRQ_SEL_FMAP_92_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_92_QID_BASE",
-		TRQ_SEL_FMAP_92_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_93_field_info[] = {
-	{"TRQ_SEL_FMAP_93_RSVD_1",
-		TRQ_SEL_FMAP_93_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_93_QID_MAX",
-		TRQ_SEL_FMAP_93_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_93_QID_BASE",
-		TRQ_SEL_FMAP_93_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_94_field_info[] = {
-	{"TRQ_SEL_FMAP_94_RSVD_1",
-		TRQ_SEL_FMAP_94_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_94_QID_MAX",
-		TRQ_SEL_FMAP_94_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_94_QID_BASE",
-		TRQ_SEL_FMAP_94_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_95_field_info[] = {
-	{"TRQ_SEL_FMAP_95_RSVD_1",
-		TRQ_SEL_FMAP_95_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_95_QID_MAX",
-		TRQ_SEL_FMAP_95_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_95_QID_BASE",
-		TRQ_SEL_FMAP_95_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_96_field_info[] = {
-	{"TRQ_SEL_FMAP_96_RSVD_1",
-		TRQ_SEL_FMAP_96_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_96_QID_MAX",
-		TRQ_SEL_FMAP_96_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_96_QID_BASE",
-		TRQ_SEL_FMAP_96_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_97_field_info[] = {
-	{"TRQ_SEL_FMAP_97_RSVD_1",
-		TRQ_SEL_FMAP_97_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_97_QID_MAX",
-		TRQ_SEL_FMAP_97_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_97_QID_BASE",
-		TRQ_SEL_FMAP_97_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_98_field_info[] = {
-	{"TRQ_SEL_FMAP_98_RSVD_1",
-		TRQ_SEL_FMAP_98_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_98_QID_MAX",
-		TRQ_SEL_FMAP_98_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_98_QID_BASE",
-		TRQ_SEL_FMAP_98_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_99_field_info[] = {
-	{"TRQ_SEL_FMAP_99_RSVD_1",
-		TRQ_SEL_FMAP_99_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_99_QID_MAX",
-		TRQ_SEL_FMAP_99_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_99_QID_BASE",
-		TRQ_SEL_FMAP_99_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9a_field_info[] = {
-	{"TRQ_SEL_FMAP_9A_RSVD_1",
-		TRQ_SEL_FMAP_9A_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_MAX",
-		TRQ_SEL_FMAP_9A_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9A_QID_BASE",
-		TRQ_SEL_FMAP_9A_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9b_field_info[] = {
-	{"TRQ_SEL_FMAP_9B_RSVD_1",
-		TRQ_SEL_FMAP_9B_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_MAX",
-		TRQ_SEL_FMAP_9B_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9B_QID_BASE",
-		TRQ_SEL_FMAP_9B_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9c_field_info[] = {
-	{"TRQ_SEL_FMAP_9C_RSVD_1",
-		TRQ_SEL_FMAP_9C_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_MAX",
-		TRQ_SEL_FMAP_9C_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9C_QID_BASE",
-		TRQ_SEL_FMAP_9C_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9d_field_info[] = {
-	{"TRQ_SEL_FMAP_9D_RSVD_1",
-		TRQ_SEL_FMAP_9D_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_MAX",
-		TRQ_SEL_FMAP_9D_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9D_QID_BASE",
-		TRQ_SEL_FMAP_9D_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9e_field_info[] = {
-	{"TRQ_SEL_FMAP_9E_RSVD_1",
-		TRQ_SEL_FMAP_9E_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_MAX",
-		TRQ_SEL_FMAP_9E_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9E_QID_BASE",
-		TRQ_SEL_FMAP_9E_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_9f_field_info[] = {
-	{"TRQ_SEL_FMAP_9F_RSVD_1",
-		TRQ_SEL_FMAP_9F_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_MAX",
-		TRQ_SEL_FMAP_9F_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_9F_QID_BASE",
-		TRQ_SEL_FMAP_9F_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a0_field_info[] = {
-	{"TRQ_SEL_FMAP_A0_RSVD_1",
-		TRQ_SEL_FMAP_A0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_MAX",
-		TRQ_SEL_FMAP_A0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A0_QID_BASE",
-		TRQ_SEL_FMAP_A0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a1_field_info[] = {
-	{"TRQ_SEL_FMAP_A1_RSVD_1",
-		TRQ_SEL_FMAP_A1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_MAX",
-		TRQ_SEL_FMAP_A1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A1_QID_BASE",
-		TRQ_SEL_FMAP_A1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a2_field_info[] = {
-	{"TRQ_SEL_FMAP_A2_RSVD_1",
-		TRQ_SEL_FMAP_A2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_MAX",
-		TRQ_SEL_FMAP_A2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A2_QID_BASE",
-		TRQ_SEL_FMAP_A2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a3_field_info[] = {
-	{"TRQ_SEL_FMAP_A3_RSVD_1",
-		TRQ_SEL_FMAP_A3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_MAX",
-		TRQ_SEL_FMAP_A3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A3_QID_BASE",
-		TRQ_SEL_FMAP_A3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a4_field_info[] = {
-	{"TRQ_SEL_FMAP_A4_RSVD_1",
-		TRQ_SEL_FMAP_A4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_MAX",
-		TRQ_SEL_FMAP_A4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A4_QID_BASE",
-		TRQ_SEL_FMAP_A4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a5_field_info[] = {
-	{"TRQ_SEL_FMAP_A5_RSVD_1",
-		TRQ_SEL_FMAP_A5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_MAX",
-		TRQ_SEL_FMAP_A5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A5_QID_BASE",
-		TRQ_SEL_FMAP_A5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a6_field_info[] = {
-	{"TRQ_SEL_FMAP_A6_RSVD_1",
-		TRQ_SEL_FMAP_A6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_MAX",
-		TRQ_SEL_FMAP_A6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A6_QID_BASE",
-		TRQ_SEL_FMAP_A6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a7_field_info[] = {
-	{"TRQ_SEL_FMAP_A7_RSVD_1",
-		TRQ_SEL_FMAP_A7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_MAX",
-		TRQ_SEL_FMAP_A7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A7_QID_BASE",
-		TRQ_SEL_FMAP_A7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a8_field_info[] = {
-	{"TRQ_SEL_FMAP_A8_RSVD_1",
-		TRQ_SEL_FMAP_A8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_MAX",
-		TRQ_SEL_FMAP_A8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A8_QID_BASE",
-		TRQ_SEL_FMAP_A8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_a9_field_info[] = {
-	{"TRQ_SEL_FMAP_A9_RSVD_1",
-		TRQ_SEL_FMAP_A9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_MAX",
-		TRQ_SEL_FMAP_A9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_A9_QID_BASE",
-		TRQ_SEL_FMAP_A9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_aa_field_info[] = {
-	{"TRQ_SEL_FMAP_AA_RSVD_1",
-		TRQ_SEL_FMAP_AA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_MAX",
-		TRQ_SEL_FMAP_AA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AA_QID_BASE",
-		TRQ_SEL_FMAP_AA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ab_field_info[] = {
-	{"TRQ_SEL_FMAP_AB_RSVD_1",
-		TRQ_SEL_FMAP_AB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_MAX",
-		TRQ_SEL_FMAP_AB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AB_QID_BASE",
-		TRQ_SEL_FMAP_AB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ac_field_info[] = {
-	{"TRQ_SEL_FMAP_AC_RSVD_1",
-		TRQ_SEL_FMAP_AC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_MAX",
-		TRQ_SEL_FMAP_AC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AC_QID_BASE",
-		TRQ_SEL_FMAP_AC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ad_field_info[] = {
-	{"TRQ_SEL_FMAP_AD_RSVD_1",
-		TRQ_SEL_FMAP_AD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_MAX",
-		TRQ_SEL_FMAP_AD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AD_QID_BASE",
-		TRQ_SEL_FMAP_AD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ae_field_info[] = {
-	{"TRQ_SEL_FMAP_AE_RSVD_1",
-		TRQ_SEL_FMAP_AE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_MAX",
-		TRQ_SEL_FMAP_AE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AE_QID_BASE",
-		TRQ_SEL_FMAP_AE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_af_field_info[] = {
-	{"TRQ_SEL_FMAP_AF_RSVD_1",
-		TRQ_SEL_FMAP_AF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_MAX",
-		TRQ_SEL_FMAP_AF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_AF_QID_BASE",
-		TRQ_SEL_FMAP_AF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b0_field_info[] = {
-	{"TRQ_SEL_FMAP_B0_RSVD_1",
-		TRQ_SEL_FMAP_B0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_MAX",
-		TRQ_SEL_FMAP_B0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B0_QID_BASE",
-		TRQ_SEL_FMAP_B0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b1_field_info[] = {
-	{"TRQ_SEL_FMAP_B1_RSVD_1",
-		TRQ_SEL_FMAP_B1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_MAX",
-		TRQ_SEL_FMAP_B1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B1_QID_BASE",
-		TRQ_SEL_FMAP_B1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b2_field_info[] = {
-	{"TRQ_SEL_FMAP_B2_RSVD_1",
-		TRQ_SEL_FMAP_B2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_MAX",
-		TRQ_SEL_FMAP_B2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B2_QID_BASE",
-		TRQ_SEL_FMAP_B2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b3_field_info[] = {
-	{"TRQ_SEL_FMAP_B3_RSVD_1",
-		TRQ_SEL_FMAP_B3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_MAX",
-		TRQ_SEL_FMAP_B3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B3_QID_BASE",
-		TRQ_SEL_FMAP_B3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b4_field_info[] = {
-	{"TRQ_SEL_FMAP_B4_RSVD_1",
-		TRQ_SEL_FMAP_B4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_MAX",
-		TRQ_SEL_FMAP_B4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B4_QID_BASE",
-		TRQ_SEL_FMAP_B4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b5_field_info[] = {
-	{"TRQ_SEL_FMAP_B5_RSVD_1",
-		TRQ_SEL_FMAP_B5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_MAX",
-		TRQ_SEL_FMAP_B5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B5_QID_BASE",
-		TRQ_SEL_FMAP_B5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b6_field_info[] = {
-	{"TRQ_SEL_FMAP_B6_RSVD_1",
-		TRQ_SEL_FMAP_B6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_MAX",
-		TRQ_SEL_FMAP_B6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B6_QID_BASE",
-		TRQ_SEL_FMAP_B6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b7_field_info[] = {
-	{"TRQ_SEL_FMAP_B7_RSVD_1",
-		TRQ_SEL_FMAP_B7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_MAX",
-		TRQ_SEL_FMAP_B7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B7_QID_BASE",
-		TRQ_SEL_FMAP_B7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b8_field_info[] = {
-	{"TRQ_SEL_FMAP_B8_RSVD_1",
-		TRQ_SEL_FMAP_B8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_MAX",
-		TRQ_SEL_FMAP_B8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B8_QID_BASE",
-		TRQ_SEL_FMAP_B8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_b9_field_info[] = {
-	{"TRQ_SEL_FMAP_B9_RSVD_1",
-		TRQ_SEL_FMAP_B9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_MAX",
-		TRQ_SEL_FMAP_B9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_B9_QID_BASE",
-		TRQ_SEL_FMAP_B9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ba_field_info[] = {
-	{"TRQ_SEL_FMAP_BA_RSVD_1",
-		TRQ_SEL_FMAP_BA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_MAX",
-		TRQ_SEL_FMAP_BA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BA_QID_BASE",
-		TRQ_SEL_FMAP_BA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bb_field_info[] = {
-	{"TRQ_SEL_FMAP_BB_RSVD_1",
-		TRQ_SEL_FMAP_BB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_MAX",
-		TRQ_SEL_FMAP_BB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BB_QID_BASE",
-		TRQ_SEL_FMAP_BB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bc_field_info[] = {
-	{"TRQ_SEL_FMAP_BC_RSVD_1",
-		TRQ_SEL_FMAP_BC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_MAX",
-		TRQ_SEL_FMAP_BC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BC_QID_BASE",
-		TRQ_SEL_FMAP_BC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bd_field_info[] = {
-	{"TRQ_SEL_FMAP_BD_RSVD_1",
-		TRQ_SEL_FMAP_BD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_MAX",
-		TRQ_SEL_FMAP_BD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BD_QID_BASE",
-		TRQ_SEL_FMAP_BD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_be_field_info[] = {
-	{"TRQ_SEL_FMAP_BE_RSVD_1",
-		TRQ_SEL_FMAP_BE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_MAX",
-		TRQ_SEL_FMAP_BE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BE_QID_BASE",
-		TRQ_SEL_FMAP_BE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_bf_field_info[] = {
-	{"TRQ_SEL_FMAP_BF_RSVD_1",
-		TRQ_SEL_FMAP_BF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_MAX",
-		TRQ_SEL_FMAP_BF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_BF_QID_BASE",
-		TRQ_SEL_FMAP_BF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c0_field_info[] = {
-	{"TRQ_SEL_FMAP_C0_RSVD_1",
-		TRQ_SEL_FMAP_C0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_MAX",
-		TRQ_SEL_FMAP_C0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C0_QID_BASE",
-		TRQ_SEL_FMAP_C0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c1_field_info[] = {
-	{"TRQ_SEL_FMAP_C1_RSVD_1",
-		TRQ_SEL_FMAP_C1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_MAX",
-		TRQ_SEL_FMAP_C1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C1_QID_BASE",
-		TRQ_SEL_FMAP_C1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c2_field_info[] = {
-	{"TRQ_SEL_FMAP_C2_RSVD_1",
-		TRQ_SEL_FMAP_C2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_MAX",
-		TRQ_SEL_FMAP_C2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C2_QID_BASE",
-		TRQ_SEL_FMAP_C2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c3_field_info[] = {
-	{"TRQ_SEL_FMAP_C3_RSVD_1",
-		TRQ_SEL_FMAP_C3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_MAX",
-		TRQ_SEL_FMAP_C3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C3_QID_BASE",
-		TRQ_SEL_FMAP_C3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c4_field_info[] = {
-	{"TRQ_SEL_FMAP_C4_RSVD_1",
-		TRQ_SEL_FMAP_C4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_MAX",
-		TRQ_SEL_FMAP_C4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C4_QID_BASE",
-		TRQ_SEL_FMAP_C4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c5_field_info[] = {
-	{"TRQ_SEL_FMAP_C5_RSVD_1",
-		TRQ_SEL_FMAP_C5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_MAX",
-		TRQ_SEL_FMAP_C5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C5_QID_BASE",
-		TRQ_SEL_FMAP_C5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c6_field_info[] = {
-	{"TRQ_SEL_FMAP_C6_RSVD_1",
-		TRQ_SEL_FMAP_C6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_MAX",
-		TRQ_SEL_FMAP_C6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C6_QID_BASE",
-		TRQ_SEL_FMAP_C6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c7_field_info[] = {
-	{"TRQ_SEL_FMAP_C7_RSVD_1",
-		TRQ_SEL_FMAP_C7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_MAX",
-		TRQ_SEL_FMAP_C7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C7_QID_BASE",
-		TRQ_SEL_FMAP_C7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c8_field_info[] = {
-	{"TRQ_SEL_FMAP_C8_RSVD_1",
-		TRQ_SEL_FMAP_C8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_MAX",
-		TRQ_SEL_FMAP_C8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C8_QID_BASE",
-		TRQ_SEL_FMAP_C8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_c9_field_info[] = {
-	{"TRQ_SEL_FMAP_C9_RSVD_1",
-		TRQ_SEL_FMAP_C9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_MAX",
-		TRQ_SEL_FMAP_C9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_C9_QID_BASE",
-		TRQ_SEL_FMAP_C9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ca_field_info[] = {
-	{"TRQ_SEL_FMAP_CA_RSVD_1",
-		TRQ_SEL_FMAP_CA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_MAX",
-		TRQ_SEL_FMAP_CA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CA_QID_BASE",
-		TRQ_SEL_FMAP_CA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cb_field_info[] = {
-	{"TRQ_SEL_FMAP_CB_RSVD_1",
-		TRQ_SEL_FMAP_CB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_MAX",
-		TRQ_SEL_FMAP_CB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CB_QID_BASE",
-		TRQ_SEL_FMAP_CB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cc_field_info[] = {
-	{"TRQ_SEL_FMAP_CC_RSVD_1",
-		TRQ_SEL_FMAP_CC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_MAX",
-		TRQ_SEL_FMAP_CC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CC_QID_BASE",
-		TRQ_SEL_FMAP_CC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cd_field_info[] = {
-	{"TRQ_SEL_FMAP_CD_RSVD_1",
-		TRQ_SEL_FMAP_CD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_MAX",
-		TRQ_SEL_FMAP_CD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CD_QID_BASE",
-		TRQ_SEL_FMAP_CD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ce_field_info[] = {
-	{"TRQ_SEL_FMAP_CE_RSVD_1",
-		TRQ_SEL_FMAP_CE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_MAX",
-		TRQ_SEL_FMAP_CE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CE_QID_BASE",
-		TRQ_SEL_FMAP_CE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_cf_field_info[] = {
-	{"TRQ_SEL_FMAP_CF_RSVD_1",
-		TRQ_SEL_FMAP_CF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_MAX",
-		TRQ_SEL_FMAP_CF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_CF_QID_BASE",
-		TRQ_SEL_FMAP_CF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d0_field_info[] = {
-	{"TRQ_SEL_FMAP_D0_RSVD_1",
-		TRQ_SEL_FMAP_D0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_MAX",
-		TRQ_SEL_FMAP_D0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D0_QID_BASE",
-		TRQ_SEL_FMAP_D0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d1_field_info[] = {
-	{"TRQ_SEL_FMAP_D1_RSVD_1",
-		TRQ_SEL_FMAP_D1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_MAX",
-		TRQ_SEL_FMAP_D1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D1_QID_BASE",
-		TRQ_SEL_FMAP_D1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d2_field_info[] = {
-	{"TRQ_SEL_FMAP_D2_RSVD_1",
-		TRQ_SEL_FMAP_D2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_MAX",
-		TRQ_SEL_FMAP_D2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D2_QID_BASE",
-		TRQ_SEL_FMAP_D2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d3_field_info[] = {
-	{"TRQ_SEL_FMAP_D3_RSVD_1",
-		TRQ_SEL_FMAP_D3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_MAX",
-		TRQ_SEL_FMAP_D3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D3_QID_BASE",
-		TRQ_SEL_FMAP_D3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d4_field_info[] = {
-	{"TRQ_SEL_FMAP_D4_RSVD_1",
-		TRQ_SEL_FMAP_D4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_MAX",
-		TRQ_SEL_FMAP_D4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D4_QID_BASE",
-		TRQ_SEL_FMAP_D4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d5_field_info[] = {
-	{"TRQ_SEL_FMAP_D5_RSVD_1",
-		TRQ_SEL_FMAP_D5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_MAX",
-		TRQ_SEL_FMAP_D5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D5_QID_BASE",
-		TRQ_SEL_FMAP_D5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d6_field_info[] = {
-	{"TRQ_SEL_FMAP_D6_RSVD_1",
-		TRQ_SEL_FMAP_D6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_MAX",
-		TRQ_SEL_FMAP_D6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D6_QID_BASE",
-		TRQ_SEL_FMAP_D6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d7_field_info[] = {
-	{"TRQ_SEL_FMAP_D7_RSVD_1",
-		TRQ_SEL_FMAP_D7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_MAX",
-		TRQ_SEL_FMAP_D7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D7_QID_BASE",
-		TRQ_SEL_FMAP_D7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d8_field_info[] = {
-	{"TRQ_SEL_FMAP_D8_RSVD_1",
-		TRQ_SEL_FMAP_D8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_MAX",
-		TRQ_SEL_FMAP_D8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D8_QID_BASE",
-		TRQ_SEL_FMAP_D8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_d9_field_info[] = {
-	{"TRQ_SEL_FMAP_D9_RSVD_1",
-		TRQ_SEL_FMAP_D9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_MAX",
-		TRQ_SEL_FMAP_D9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_D9_QID_BASE",
-		TRQ_SEL_FMAP_D9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_da_field_info[] = {
-	{"TRQ_SEL_FMAP_DA_RSVD_1",
-		TRQ_SEL_FMAP_DA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_MAX",
-		TRQ_SEL_FMAP_DA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DA_QID_BASE",
-		TRQ_SEL_FMAP_DA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_db_field_info[] = {
-	{"TRQ_SEL_FMAP_DB_RSVD_1",
-		TRQ_SEL_FMAP_DB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_MAX",
-		TRQ_SEL_FMAP_DB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DB_QID_BASE",
-		TRQ_SEL_FMAP_DB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dc_field_info[] = {
-	{"TRQ_SEL_FMAP_DC_RSVD_1",
-		TRQ_SEL_FMAP_DC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_MAX",
-		TRQ_SEL_FMAP_DC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DC_QID_BASE",
-		TRQ_SEL_FMAP_DC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_dd_field_info[] = {
-	{"TRQ_SEL_FMAP_DD_RSVD_1",
-		TRQ_SEL_FMAP_DD_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_MAX",
-		TRQ_SEL_FMAP_DD_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DD_QID_BASE",
-		TRQ_SEL_FMAP_DD_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_de_field_info[] = {
-	{"TRQ_SEL_FMAP_DE_RSVD_1",
-		TRQ_SEL_FMAP_DE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_MAX",
-		TRQ_SEL_FMAP_DE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DE_QID_BASE",
-		TRQ_SEL_FMAP_DE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_df_field_info[] = {
-	{"TRQ_SEL_FMAP_DF_RSVD_1",
-		TRQ_SEL_FMAP_DF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_MAX",
-		TRQ_SEL_FMAP_DF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_DF_QID_BASE",
-		TRQ_SEL_FMAP_DF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e0_field_info[] = {
-	{"TRQ_SEL_FMAP_E0_RSVD_1",
-		TRQ_SEL_FMAP_E0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_MAX",
-		TRQ_SEL_FMAP_E0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E0_QID_BASE",
-		TRQ_SEL_FMAP_E0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e1_field_info[] = {
-	{"TRQ_SEL_FMAP_E1_RSVD_1",
-		TRQ_SEL_FMAP_E1_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_MAX",
-		TRQ_SEL_FMAP_E1_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E1_QID_BASE",
-		TRQ_SEL_FMAP_E1_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e2_field_info[] = {
-	{"TRQ_SEL_FMAP_E2_RSVD_1",
-		TRQ_SEL_FMAP_E2_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_MAX",
-		TRQ_SEL_FMAP_E2_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E2_QID_BASE",
-		TRQ_SEL_FMAP_E2_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e3_field_info[] = {
-	{"TRQ_SEL_FMAP_E3_RSVD_1",
-		TRQ_SEL_FMAP_E3_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_MAX",
-		TRQ_SEL_FMAP_E3_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E3_QID_BASE",
-		TRQ_SEL_FMAP_E3_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e4_field_info[] = {
-	{"TRQ_SEL_FMAP_E4_RSVD_1",
-		TRQ_SEL_FMAP_E4_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_MAX",
-		TRQ_SEL_FMAP_E4_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E4_QID_BASE",
-		TRQ_SEL_FMAP_E4_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e5_field_info[] = {
-	{"TRQ_SEL_FMAP_E5_RSVD_1",
-		TRQ_SEL_FMAP_E5_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_MAX",
-		TRQ_SEL_FMAP_E5_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E5_QID_BASE",
-		TRQ_SEL_FMAP_E5_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e6_field_info[] = {
-	{"TRQ_SEL_FMAP_E6_RSVD_1",
-		TRQ_SEL_FMAP_E6_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_MAX",
-		TRQ_SEL_FMAP_E6_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E6_QID_BASE",
-		TRQ_SEL_FMAP_E6_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e7_field_info[] = {
-	{"TRQ_SEL_FMAP_E7_RSVD_1",
-		TRQ_SEL_FMAP_E7_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_MAX",
-		TRQ_SEL_FMAP_E7_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E7_QID_BASE",
-		TRQ_SEL_FMAP_E7_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e8_field_info[] = {
-	{"TRQ_SEL_FMAP_E8_RSVD_1",
-		TRQ_SEL_FMAP_E8_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_MAX",
-		TRQ_SEL_FMAP_E8_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E8_QID_BASE",
-		TRQ_SEL_FMAP_E8_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_e9_field_info[] = {
-	{"TRQ_SEL_FMAP_E9_RSVD_1",
-		TRQ_SEL_FMAP_E9_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_MAX",
-		TRQ_SEL_FMAP_E9_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_E9_QID_BASE",
-		TRQ_SEL_FMAP_E9_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ea_field_info[] = {
-	{"TRQ_SEL_FMAP_EA_RSVD_1",
-		TRQ_SEL_FMAP_EA_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_MAX",
-		TRQ_SEL_FMAP_EA_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EA_QID_BASE",
-		TRQ_SEL_FMAP_EA_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_eb_field_info[] = {
-	{"TRQ_SEL_FMAP_EB_RSVD_1",
-		TRQ_SEL_FMAP_EB_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_MAX",
-		TRQ_SEL_FMAP_EB_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EB_QID_BASE",
-		TRQ_SEL_FMAP_EB_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ec_field_info[] = {
-	{"TRQ_SEL_FMAP_EC_RSVD_1",
-		TRQ_SEL_FMAP_EC_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_MAX",
-		TRQ_SEL_FMAP_EC_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EC_QID_BASE",
-		TRQ_SEL_FMAP_EC_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ed_field_info[] = {
-	{"TRQ_SEL_FMAP_ED_RSVD_1",
-		TRQ_SEL_FMAP_ED_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_MAX",
-		TRQ_SEL_FMAP_ED_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_ED_QID_BASE",
-		TRQ_SEL_FMAP_ED_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ee_field_info[] = {
-	{"TRQ_SEL_FMAP_EE_RSVD_1",
-		TRQ_SEL_FMAP_EE_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_MAX",
-		TRQ_SEL_FMAP_EE_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EE_QID_BASE",
-		TRQ_SEL_FMAP_EE_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_ef_field_info[] = {
-	{"TRQ_SEL_FMAP_EF_RSVD_1",
-		TRQ_SEL_FMAP_EF_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_MAX",
-		TRQ_SEL_FMAP_EF_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_EF_QID_BASE",
-		TRQ_SEL_FMAP_EF_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	trq_sel_fmap_f0_field_info[] = {
-	{"TRQ_SEL_FMAP_F0_RSVD_1",
-		TRQ_SEL_FMAP_F0_RSVD_1_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_MAX",
-		TRQ_SEL_FMAP_F0_QID_MAX_MASK},
-	{"TRQ_SEL_FMAP_F0_QID_BASE",
-		TRQ_SEL_FMAP_F0_QID_BASE_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_3_field_info[] = {
-	{"IND_CTXT_DATA_3_DATA",
-		IND_CTXT_DATA_3_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_2_field_info[] = {
-	{"IND_CTXT_DATA_2_DATA",
-		IND_CTXT_DATA_2_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_1_field_info[] = {
-	{"IND_CTXT_DATA_1_DATA",
-		IND_CTXT_DATA_1_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_data_0_field_info[] = {
-	{"IND_CTXT_DATA_0_DATA",
-		IND_CTXT_DATA_0_DATA_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt3_field_info[] = {
-	{"IND_CTXT3",
-		IND_CTXT3_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt2_field_info[] = {
-	{"IND_CTXT2",
-		IND_CTXT2_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt1_field_info[] = {
-	{"IND_CTXT1",
-		IND_CTXT1_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt0_field_info[] = {
-	{"IND_CTXT0",
-		IND_CTXT0_MASK},
-};
-
-
-static struct regfield_info
-	ind_ctxt_cmd_field_info[] = {
-	{"IND_CTXT_CMD_RSVD_1",
-		IND_CTXT_CMD_RSVD_1_MASK},
-	{"IND_CTXT_CMD_QID",
-		IND_CTXT_CMD_QID_MASK},
-	{"IND_CTXT_CMD_OP",
-		IND_CTXT_CMD_OP_MASK},
-	{"IND_CTXT_CMD_SET",
-		IND_CTXT_CMD_SET_MASK},
-	{"IND_CTXT_CMD_BUSY",
-		IND_CTXT_CMD_BUSY_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_1_field_info[] = {
-	{"C2H_TIMER_CNT_1_RSVD_1",
-		C2H_TIMER_CNT_1_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_1",
-		C2H_TIMER_CNT_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_2_field_info[] = {
-	{"C2H_TIMER_CNT_2_RSVD_1",
-		C2H_TIMER_CNT_2_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_2",
-		C2H_TIMER_CNT_2_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_3_field_info[] = {
-	{"C2H_TIMER_CNT_3_RSVD_1",
-		C2H_TIMER_CNT_3_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_3",
-		C2H_TIMER_CNT_3_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_4_field_info[] = {
-	{"C2H_TIMER_CNT_4_RSVD_1",
-		C2H_TIMER_CNT_4_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_4",
-		C2H_TIMER_CNT_4_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_5_field_info[] = {
-	{"C2H_TIMER_CNT_5_RSVD_1",
-		C2H_TIMER_CNT_5_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_5",
-		C2H_TIMER_CNT_5_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_6_field_info[] = {
-	{"C2H_TIMER_CNT_6_RSVD_1",
-		C2H_TIMER_CNT_6_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_6",
-		C2H_TIMER_CNT_6_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_7_field_info[] = {
-	{"C2H_TIMER_CNT_7_RSVD_1",
-		C2H_TIMER_CNT_7_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_7",
-		C2H_TIMER_CNT_7_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_8_field_info[] = {
-	{"C2H_TIMER_CNT_8_RSVD_1",
-		C2H_TIMER_CNT_8_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_8",
-		C2H_TIMER_CNT_8_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_9_field_info[] = {
-	{"C2H_TIMER_CNT_9_RSVD_1",
-		C2H_TIMER_CNT_9_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_9",
-		C2H_TIMER_CNT_9_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_a_field_info[] = {
-	{"C2H_TIMER_CNT_A_RSVD_1",
-		C2H_TIMER_CNT_A_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_A",
-		C2H_TIMER_CNT_A_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_b_field_info[] = {
-	{"C2H_TIMER_CNT_B_RSVD_1",
-		C2H_TIMER_CNT_B_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_B",
-		C2H_TIMER_CNT_B_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_c_field_info[] = {
-	{"C2H_TIMER_CNT_C_RSVD_1",
-		C2H_TIMER_CNT_C_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_C",
-		C2H_TIMER_CNT_C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_d_field_info[] = {
-	{"C2H_TIMER_CNT_D_RSVD_1",
-		C2H_TIMER_CNT_D_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_D",
-		C2H_TIMER_CNT_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_e_field_info[] = {
-	{"C2H_TIMER_CNT_E_RSVD_1",
-		C2H_TIMER_CNT_E_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_E",
-		C2H_TIMER_CNT_E_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_f_field_info[] = {
-	{"C2H_TIMER_CNT_F_RSVD_1",
-		C2H_TIMER_CNT_F_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_F",
-		C2H_TIMER_CNT_F_MASK},
-};
-
-
-static struct regfield_info
-	c2h_timer_cnt_10_field_info[] = {
-	{"C2H_TIMER_CNT_10_RSVD_1",
-		C2H_TIMER_CNT_10_RSVD_1_MASK},
-	{"C2H_TIMER_CNT_10",
-		C2H_TIMER_CNT_10_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_1_field_info[] = {
-	{"C2H_CNT_TH_1_RSVD_1",
-		C2H_CNT_TH_1_RSVD_1_MASK},
-	{"C2H_CNT_TH_1_THESHOLD_CNT",
-		C2H_CNT_TH_1_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_2_field_info[] = {
-	{"C2H_CNT_TH_2_RSVD_1",
-		C2H_CNT_TH_2_RSVD_1_MASK},
-	{"C2H_CNT_TH_2_THESHOLD_CNT",
-		C2H_CNT_TH_2_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_3_field_info[] = {
-	{"C2H_CNT_TH_3_RSVD_1",
-		C2H_CNT_TH_3_RSVD_1_MASK},
-	{"C2H_CNT_TH_3_THESHOLD_CNT",
-		C2H_CNT_TH_3_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_4_field_info[] = {
-	{"C2H_CNT_TH_4_RSVD_1",
-		C2H_CNT_TH_4_RSVD_1_MASK},
-	{"C2H_CNT_TH_4_THESHOLD_CNT",
-		C2H_CNT_TH_4_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_5_field_info[] = {
-	{"C2H_CNT_TH_5_RSVD_1",
-		C2H_CNT_TH_5_RSVD_1_MASK},
-	{"C2H_CNT_TH_5_THESHOLD_CNT",
-		C2H_CNT_TH_5_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_6_field_info[] = {
-	{"C2H_CNT_TH_6_RSVD_1",
-		C2H_CNT_TH_6_RSVD_1_MASK},
-	{"C2H_CNT_TH_6_THESHOLD_CNT",
-		C2H_CNT_TH_6_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_7_field_info[] = {
-	{"C2H_CNT_TH_7_RSVD_1",
-		C2H_CNT_TH_7_RSVD_1_MASK},
-	{"C2H_CNT_TH_7_THESHOLD_CNT",
-		C2H_CNT_TH_7_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_8_field_info[] = {
-	{"C2H_CNT_TH_8_RSVD_1",
-		C2H_CNT_TH_8_RSVD_1_MASK},
-	{"C2H_CNT_TH_8_THESHOLD_CNT",
-		C2H_CNT_TH_8_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_9_field_info[] = {
-	{"C2H_CNT_TH_9_RSVD_1",
-		C2H_CNT_TH_9_RSVD_1_MASK},
-	{"C2H_CNT_TH_9_THESHOLD_CNT",
-		C2H_CNT_TH_9_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_a_field_info[] = {
-	{"C2H_CNT_TH_A_RSVD_1",
-		C2H_CNT_TH_A_RSVD_1_MASK},
-	{"C2H_CNT_TH_A_THESHOLD_CNT",
-		C2H_CNT_TH_A_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_b_field_info[] = {
-	{"C2H_CNT_TH_B_RSVD_1",
-		C2H_CNT_TH_B_RSVD_1_MASK},
-	{"C2H_CNT_TH_B_THESHOLD_CNT",
-		C2H_CNT_TH_B_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_c_field_info[] = {
-	{"C2H_CNT_TH_C_RSVD_1",
-		C2H_CNT_TH_C_RSVD_1_MASK},
-	{"C2H_CNT_TH_C_THESHOLD_CNT",
-		C2H_CNT_TH_C_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_d_field_info[] = {
-	{"C2H_CNT_TH_D_RSVD_1",
-		C2H_CNT_TH_D_RSVD_1_MASK},
-	{"C2H_CNT_TH_D_THESHOLD_CNT",
-		C2H_CNT_TH_D_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_e_field_info[] = {
-	{"C2H_CNT_TH_E_RSVD_1",
-		C2H_CNT_TH_E_RSVD_1_MASK},
-	{"C2H_CNT_TH_E_THESHOLD_CNT",
-		C2H_CNT_TH_E_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_f_field_info[] = {
-	{"C2H_CNT_TH_F_RSVD_1",
-		C2H_CNT_TH_F_RSVD_1_MASK},
-	{"C2H_CNT_TH_F_THESHOLD_CNT",
-		C2H_CNT_TH_F_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_cnt_th_10_field_info[] = {
-	{"C2H_CNT_TH_10_RSVD_1",
-		C2H_CNT_TH_10_RSVD_1_MASK},
-	{"C2H_CNT_TH_10_THESHOLD_CNT",
-		C2H_CNT_TH_10_THESHOLD_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_qid_field_info[] = {
-	{"C2H_QID2VEC_MAP_QID_RSVD_1",
-		C2H_QID2VEC_MAP_QID_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_QID_QID",
-		C2H_QID2VEC_MAP_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	c2h_qid2vec_map_field_info[] = {
-	{"C2H_QID2VEC_MAP_RSVD_1",
-		C2H_QID2VEC_MAP_RSVD_1_MASK},
-	{"C2H_QID2VEC_MAP_H2C_EN_COAL",
-		C2H_QID2VEC_MAP_H2C_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_H2C_VECTOR",
-		C2H_QID2VEC_MAP_H2C_VECTOR_MASK},
-	{"C2H_QID2VEC_MAP_C2H_EN_COAL",
-		C2H_QID2VEC_MAP_C2H_EN_COAL_MASK},
-	{"C2H_QID2VEC_MAP_C2H_VECTOR",
-		C2H_QID2VEC_MAP_C2H_VECTOR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_c2h_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		C2H_STAT_S_AXIS_C2H_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_s_axis_wrb_accepted_field_info[] = {
-	{"C2H_STAT_S_AXIS_WRB_ACCEPTED",
-		C2H_STAT_S_AXIS_WRB_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_pkt_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_PKT_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_axis_pkg_cmp_field_info[] = {
-	{"C2H_STAT_AXIS_PKG_CMP",
-		C2H_STAT_AXIS_PKG_CMP_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_cmp_field_info[] = {
-	{"C2H_STAT_DESC_RSP_CMP_D",
-		C2H_STAT_DESC_RSP_CMP_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wrq_out_field_info[] = {
-	{"C2H_STAT_WRQ_OUT",
-		C2H_STAT_WRQ_OUT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wpl_ren_accepted_field_info[] = {
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		C2H_STAT_WPL_REN_ACCEPTED_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wrq_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		C2H_STAT_TOTAL_WRQ_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_total_wpl_len_field_info[] = {
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		C2H_STAT_TOTAL_WPL_LEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_0_field_info[] = {
-	{"C2H_BUF_SZ_0_SIZE",
-		C2H_BUF_SZ_0_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_1_field_info[] = {
-	{"C2H_BUF_SZ_1_SIZE",
-		C2H_BUF_SZ_1_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_2_field_info[] = {
-	{"C2H_BUF_SZ_2_SIZE",
-		C2H_BUF_SZ_2_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_3_field_info[] = {
-	{"C2H_BUF_SZ_3_SIZE",
-		C2H_BUF_SZ_3_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_4_field_info[] = {
-	{"C2H_BUF_SZ_4_SIZE",
-		C2H_BUF_SZ_4_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_5_field_info[] = {
-	{"C2H_BUF_SZ_5_SIZE",
-		C2H_BUF_SZ_5_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_7_field_info[] = {
-	{"C2H_BUF_SZ_7_SIZE",
-		C2H_BUF_SZ_7_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_8_field_info[] = {
-	{"C2H_BUF_SZ_8_SIZE",
-		C2H_BUF_SZ_8_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_9_field_info[] = {
-	{"C2H_BUF_SZ_9_SIZE",
-		C2H_BUF_SZ_9_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_10_field_info[] = {
-	{"C2H_BUF_SZ_10_SIZE",
-		C2H_BUF_SZ_10_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_11_field_info[] = {
-	{"C2H_BUF_SZ_11_SIZE",
-		C2H_BUF_SZ_11_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_12_field_info[] = {
-	{"C2H_BUF_SZ_12_SIZE",
-		C2H_BUF_SZ_12_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_13_field_info[] = {
-	{"C2H_BUF_SZ_13_SIZE",
-		C2H_BUF_SZ_13_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_14_field_info[] = {
-	{"C2H_BUF_SZ_14_SIZE",
-		C2H_BUF_SZ_14_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_buf_sz_15_field_info[] = {
-	{"C2H_BUF_SZ_15_SIZE",
-		C2H_BUF_SZ_15_SIZE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_stat_field_info[] = {
-	{"C2H_ERR_STAT_RSVD_1",
-		C2H_ERR_STAT_RSVD_1_MASK},
-	{"C2H_ERR_STAT_WRB_PRTY_ERR",
-		C2H_ERR_STAT_WRB_PRTY_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_CIDX_ERR",
-		C2H_ERR_STAT_WRB_CIDX_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_QFULL_ERR",
-		C2H_ERR_STAT_WRB_QFULL_ERR_MASK},
-	{"C2H_ERR_STAT_WRB_INV_Q_ERR",
-		C2H_ERR_STAT_WRB_INV_Q_ERR_MASK},
-	{"C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_BYP_IN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH",
-		C2H_ERR_STAT_PORT_ID_CTXT_MISMATCH_MASK},
-	{"C2H_ERR_STAT_ERR_DESC_CNT",
-		C2H_ERR_STAT_ERR_DESC_CNT_MASK},
-	{"C2H_ERR_STAT_RSVD_2",
-		C2H_ERR_STAT_RSVD_2_MASK},
-	{"C2H_ERR_STAT_MSI_INT_FAIL",
-		C2H_ERR_STAT_MSI_INT_FAIL_MASK},
-	{"C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR",
-		C2H_ERR_STAT_ENG_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_ERR_STAT_RSVD_3",
-		C2H_ERR_STAT_RSVD_3_MASK},
-	{"C2H_ERR_STAT_DESC_RSP_ERR",
-		C2H_ERR_STAT_DESC_RSP_ERR_MASK},
-	{"C2H_ERR_STAT_QID_MISMATCH",
-		C2H_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_ERR_STAT_RSVD_4",
-		C2H_ERR_STAT_RSVD_4_MASK},
-	{"C2H_ERR_STAT_LEN_MISMATCH",
-		C2H_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_ERR_STAT_MTY_MISMATCH",
-		C2H_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_err_mask_field_info[] = {
-	{"C2H_ERR_EN",
-		C2H_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_stat_field_info[] = {
-	{"C2H_FATAL_ERR_STAT_RSVD_1",
-		C2H_FATAL_ERR_STAT_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR",
-		C2H_FATAL_ERR_STAT_WPL_DATA_PAR_ERR_MASK},
-	{"C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PLD_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_QID_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TUSER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_COAL_DATA_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_QID2VEC_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_INT_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_DESC_REQ_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_WRB_CTXT_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_PFCH_LL_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE",
-		C2H_FATAL_ERR_STAT_TIMER_FIFO_RAM_RDBE_MASK},
-	{"C2H_FATAL_ERR_STAT_QID_MISMATCH",
-		C2H_FATAL_ERR_STAT_QID_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_RSVD_2",
-		C2H_FATAL_ERR_STAT_RSVD_2_MASK},
-	{"C2H_FATAL_ERR_STAT_LEN_MISMATCH",
-		C2H_FATAL_ERR_STAT_LEN_MISMATCH_MASK},
-	{"C2H_FATAL_ERR_STAT_MTY_MISMATCH",
-		C2H_FATAL_ERR_STAT_MTY_MISMATCH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_mask_field_info[] = {
-	{"C2H_FATAL_ERR_C2HEN",
-		C2H_FATAL_ERR_C2HEN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_fatal_err_enable_field_info[] = {
-	{"C2H_FATAL_ERR_ENABLE_RSVD_1",
-		C2H_FATAL_ERR_ENABLE_RSVD_1_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WPL_PAR_INV",
-		C2H_FATAL_ERR_ENABLE_WPL_PAR_INV_MASK},
-	{"C2H_FATAL_ERR_ENABLE_WRQ_DIS",
-		C2H_FATAL_ERR_ENABLE_WRQ_DIS_MASK},
-};
-
-
-static struct regfield_info
-	glbl_err_int_field_info[] = {
-	{"GLBL_ERR_INT_RSVD_1",
-		GLBL_ERR_INT_RSVD_1_MASK},
-	{"GLBL_ERR_INT_ARM",
-		GLBL_ERR_INT_ARM_MASK},
-	{"GLBL_ERR_INT_EN_COAL",
-		GLBL_ERR_INT_EN_COAL_MASK},
-	{"GLBL_ERR_INT_VEC",
-		GLBL_ERR_INT_VEC_MASK},
-	{"GLBL_ERR_INT_FUNC",
-		GLBL_ERR_INT_FUNC_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pfch_cfg_field_info[] = {
-	{"C2H_PFCH_CFG_EVT_QCNT_TH",
-		C2H_PFCH_CFG_EVT_QCNT_TH_MASK},
-	{"C2H_PFCH_CFG_QCNT",
-		C2H_PFCH_CFG_QCNT_MASK},
-	{"C2H_PFCH_CFG_NUM",
-		C2H_PFCH_CFG_NUM_MASK},
-	{"C2H_PFCH_CFG_FL_TH",
-		C2H_PFCH_CFG_FL_TH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_timer_tick_field_info[] = {
-	{"C2H_INT_TIMER_TICK",
-		C2H_INT_TIMER_TICK_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_drop_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_DROP_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_rsp_err_accepted_field_info[] = {
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED_D",
-		C2H_STAT_DESC_RSP_ERR_ACCEPTED_D_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_desc_req_field_info[] = {
-	{"C2H_STAT_DESC_REQ",
-		C2H_STAT_DESC_REQ_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_0_field_info[] = {
-	{"C2H_STAT_DMA_ENG_0_RSVD_1",
-		C2H_STAT_DMA_ENG_0_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRB_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_QID_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_PLD_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_0_WRQ_FIFO_OUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_0_WRB_SM_CS",
-		C2H_STAT_DMA_ENG_0_WRB_SM_CS_MASK},
-	{"C2H_STAT_DMA_ENG_0_MAIN_SM_CS",
-		C2H_STAT_DMA_ENG_0_MAIN_SM_CS_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_1_field_info[] = {
-	{"C2H_STAT_DMA_ENG_1_RSVD_1",
-		C2H_STAT_DMA_ENG_1_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_1_DESC_RSP_LAST",
-		C2H_STAT_DMA_ENG_1_DESC_RSP_LAST_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_1_PLD_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_1_QID_FIFO_IN_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_2_field_info[] = {
-	{"C2H_STAT_DMA_ENG_2_RSVD_1",
-		C2H_STAT_DMA_ENG_2_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_WRB_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_2_QID_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_3_field_info[] = {
-	{"C2H_STAT_DMA_ENG_3_RSVD_1",
-		C2H_STAT_DMA_ENG_3_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT",
-		C2H_STAT_DMA_ENG_3_ADDR_4K_SPLIT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_3_WRQ_FIFO_OUTPUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_err_ctxt_field_info[] = {
-	{"C2H_PFCH_ERR_CTXT_RSVD_1",
-		C2H_PFCH_ERR_CTXT_RSVD_1_MASK},
-	{"C2H_PFCH_ERR_CTXT_ERR_STAT",
-		C2H_PFCH_ERR_CTXT_ERR_STAT_MASK},
-	{"C2H_PFCH_ERR_CTXT_CMD_WR",
-		C2H_PFCH_ERR_CTXT_CMD_WR_MASK},
-	{"C2H_PFCH_ERR_CTXT_QID",
-		C2H_PFCH_ERR_CTXT_QID_MASK},
-	{"C2H_PFCH_ERR_CTXT_DONE",
-		C2H_PFCH_ERR_CTXT_DONE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_first_err_qid_field_info[] = {
-	{"C2H_FIRST_ERR_QID_RSVD_1",
-		C2H_FIRST_ERR_QID_RSVD_1_MASK},
-	{"C2H_FIRST_ERR_QID_ERR_STAT",
-		C2H_FIRST_ERR_QID_ERR_STAT_MASK},
-	{"C2H_FIRST_ERR_QID_CMD_WR",
-		C2H_FIRST_ERR_QID_CMD_WR_MASK},
-	{"C2H_FIRST_ERR_QID_QID",
-		C2H_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_in_field_info[] = {
-	{"STAT_NUM_WRB_IN_RSVD_1",
-		STAT_NUM_WRB_IN_RSVD_1_MASK},
-	{"STAT_NUM_WRB_IN_WRB_CNT",
-		STAT_NUM_WRB_IN_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_out_field_info[] = {
-	{"STAT_NUM_WRB_OUT_RSVD_1",
-		STAT_NUM_WRB_OUT_RSVD_1_MASK},
-	{"STAT_NUM_WRB_OUT_WRB_CNT",
-		STAT_NUM_WRB_OUT_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_wrb_drp_field_info[] = {
-	{"STAT_NUM_WRB_DRP_RSVD_1",
-		STAT_NUM_WRB_DRP_RSVD_1_MASK},
-	{"STAT_NUM_WRB_DRP_WRB_CNT",
-		STAT_NUM_WRB_DRP_WRB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_stat_desc_out_field_info[] = {
-	{"STAT_NUM_STAT_DESC_OUT_RSVD_1",
-		STAT_NUM_STAT_DESC_OUT_RSVD_1_MASK},
-	{"STAT_NUM_STAT_DESC_OUT_CNT",
-		STAT_NUM_STAT_DESC_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_dsc_crdt_sent_field_info[] = {
-	{"STAT_NUM_DSC_CRDT_SENT_RSVD_1",
-		STAT_NUM_DSC_CRDT_SENT_RSVD_1_MASK},
-	{"STAT_NUM_DSC_CRDT_SENT_CNT",
-		STAT_NUM_DSC_CRDT_SENT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_fch_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_FCH_DSC_RCVD_RSVD_1",
-		STAT_NUM_FCH_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_FCH_DSC_RCVD_DSC_CNT",
-		STAT_NUM_FCH_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	stat_num_byp_dsc_rcvd_field_info[] = {
-	{"STAT_NUM_BYP_DSC_RCVD_RSVD_1",
-		STAT_NUM_BYP_DSC_RCVD_RSVD_1_MASK},
-	{"STAT_NUM_BYP_DSC_RCVD_DSC_CNT",
-		STAT_NUM_BYP_DSC_RCVD_DSC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_wrb_coal_cfg_field_info[] = {
-	{"C2H_WRB_COAL_CFG_MAX_BUF_SZ",
-		C2H_WRB_COAL_CFG_MAX_BUF_SZ_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_VAL",
-		C2H_WRB_COAL_CFG_TICK_VAL_MASK},
-	{"C2H_WRB_COAL_CFG_TICK_CNT",
-		C2H_WRB_COAL_CFG_TICK_CNT_MASK},
-	{"C2H_WRB_COAL_CFG_SET_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_SET_GLB_FLUSH_MASK},
-	{"C2H_WRB_COAL_CFG_DONE_GLB_FLUSH",
-		C2H_WRB_COAL_CFG_DONE_GLB_FLUSH_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_req_field_info[] = {
-	{"C2H_INTR_H2C_REQ_RSVD_1",
-		C2H_INTR_H2C_REQ_RSVD_1_MASK},
-	{"C2H_INTR_H2C_REQ_CNT",
-		C2H_INTR_H2C_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_mm_req_field_info[] = {
-	{"C2H_INTR_C2H_MM_REQ_RSVD_1",
-		C2H_INTR_C2H_MM_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_MM_REQ_CNT",
-		C2H_INTR_C2H_MM_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_err_int_req_field_info[] = {
-	{"C2H_INTR_ERR_INT_REQ_RSVD_1",
-		C2H_INTR_ERR_INT_REQ_RSVD_1_MASK},
-	{"C2H_INTR_ERR_INT_REQ_CNT",
-		C2H_INTR_ERR_INT_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_req_field_info[] = {
-	{"C2H_INTR_C2H_ST_REQ_RSVD_1",
-		C2H_INTR_C2H_ST_REQ_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_REQ_CNT",
-		C2H_INTR_C2H_ST_REQ_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info[] = {
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT",
-		C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_ack_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_ACK_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_ACK_CNT",
-		C2H_INTR_C2H_ST_MSIX_ACK_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_msix_fail_field_info[] = {
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1",
-		C2H_INTR_C2H_ST_MSIX_FAIL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL_CNT",
-		C2H_INTR_C2H_ST_MSIX_FAIL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_no_msix_field_info[] = {
-	{"C2H_INTR_C2H_ST_NO_MSIX_RSVD_1",
-		C2H_INTR_C2H_ST_NO_MSIX_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_NO_MSIX_CNT",
-		C2H_INTR_C2H_ST_NO_MSIX_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_intr_c2h_st_ctxt_inval_field_info[] = {
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1",
-		C2H_INTR_C2H_ST_CTXT_INVAL_RSVD_1_MASK},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL_CNT",
-		C2H_INTR_C2H_ST_CTXT_INVAL_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_wr_cmp_field_info[] = {
-	{"C2H_STAT_WR_CMP_RSVD_1",
-		C2H_STAT_WR_CMP_RSVD_1_MASK},
-	{"C2H_STAT_WR_CMP_CNT",
-		C2H_STAT_WR_CMP_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_4_field_info[] = {
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_4_WRB_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT",
-		C2H_STAT_DMA_ENG_4_TUSER_FIFO_OUT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_dbg_dma_eng_5_field_info[] = {
-	{"C2H_STAT_DMA_ENG_5_RSVD_1",
-		C2H_STAT_DMA_ENG_5_RSVD_1_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_OUT_VLD_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY",
-		C2H_STAT_DMA_ENG_5_TUSER_FIFO_IN_RDY_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_IN_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT",
-		C2H_STAT_DMA_ENG_5_TUSE_COMB_OUTPUT_CNT_MASK},
-	{"C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT",
-		C2H_STAT_DMA_ENG_5_TUSER_COMB_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_qid_field_info[] = {
-	{"C2H_PFCH_QID_RSVD_1",
-		C2H_PFCH_QID_RSVD_1_MASK},
-	{"C2H_PFCH_QID_ERR_CTXT",
-		C2H_PFCH_QID_ERR_CTXT_MASK},
-	{"C2H_PFCH_QID_TARGET",
-		C2H_PFCH_QID_TARGET_MASK},
-	{"C2H_PFCH_QID_QID_OR_TAG",
-		C2H_PFCH_QID_QID_OR_TAG_MASK},
-};
-
-
-static struct regfield_info
-	c2h_dbg_pfch_field_info[] = {
-	{"C2H_PFCH_DATA",
-		C2H_PFCH_DATA_MASK},
-};
-
-
-static struct regfield_info
-	c2h_int_dbg_field_info[] = {
-	{"C2H_INT_RSVD_1",
-		C2H_INT_RSVD_1_MASK},
-	{"C2H_INT_INT_COAL_SM",
-		C2H_INT_INT_COAL_SM_MASK},
-	{"C2H_INT_INT_SM",
-		C2H_INT_INT_SM_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_imm_accepted_field_info[] = {
-	{"C2H_STAT_IMM_ACCEPTED_RSVD_1",
-		C2H_STAT_IMM_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_IMM_ACCEPTED_CNT",
-		C2H_STAT_IMM_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_marker_accepted_field_info[] = {
-	{"C2H_STAT_MARKER_ACCEPTED_RSVD_1",
-		C2H_STAT_MARKER_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_MARKER_ACCEPTED_CNT",
-		C2H_STAT_MARKER_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_stat_disable_cmp_accepted_field_info[] = {
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_RSVD_1_MASK},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED_CNT",
-		C2H_STAT_DISABLE_CMP_ACCEPTED_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_pld_fifo_crdt_cnt_field_info[] = {
-	{"C2H_PLD_FIFO_CRDT_CNT_RSVD_1",
-		C2H_PLD_FIFO_CRDT_CNT_RSVD_1_MASK},
-	{"C2H_PLD_FIFO_CRDT_CNT_CNT",
-		C2H_PLD_FIFO_CRDT_CNT_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_stat_field_info[] = {
-	{"H2C_ERR_STAT_RSVD_1",
-		H2C_ERR_STAT_RSVD_1_MASK},
-	{"H2C_ERR_STAT_SBE",
-		H2C_ERR_STAT_SBE_MASK},
-	{"H2C_ERR_STAT_DBE",
-		H2C_ERR_STAT_DBE_MASK},
-	{"H2C_ERR_STAT_NO_DMA_DS",
-		H2C_ERR_STAT_NO_DMA_DS_MASK},
-	{"H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR",
-		H2C_ERR_STAT_SDI_MRKR_REQ_MOP_ERR_MASK},
-	{"H2C_ERR_STAT_ZERO_LEN_DS",
-		H2C_ERR_STAT_ZERO_LEN_DS_MASK},
-};
-
-
-static struct regfield_info
-	h2c_err_mask_field_info[] = {
-	{"H2C_ERR_EN",
-		H2C_ERR_EN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_first_err_qid_field_info[] = {
-	{"H2C_FIRST_ERR_QID_RSVD_1",
-		H2C_FIRST_ERR_QID_RSVD_1_MASK},
-	{"H2C_FIRST_ERR_QID_ERR_TYPE",
-		H2C_FIRST_ERR_QID_ERR_TYPE_MASK},
-	{"H2C_FIRST_ERR_QID_RSVD_2",
-		H2C_FIRST_ERR_QID_RSVD_2_MASK},
-	{"H2C_FIRST_ERR_QID_QID",
-		H2C_FIRST_ERR_QID_QID_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg0_field_info[] = {
-	{"H2C_REG0_NUM_DSC_RCVD",
-		H2C_REG0_NUM_DSC_RCVD_MASK},
-	{"H2C_REG0_NUM_WRB_SENT",
-		H2C_REG0_NUM_WRB_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg1_field_info[] = {
-	{"H2C_REG1_NUM_REQ_SENT",
-		H2C_REG1_NUM_REQ_SENT_MASK},
-	{"H2C_REG1_NUM_CMP_SENT",
-		H2C_REG1_NUM_CMP_SENT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg2_field_info[] = {
-	{"H2C_REG2_RSVD_1",
-		H2C_REG2_RSVD_1_MASK},
-	{"H2C_REG2_NUM_ERR_DSC_RCVD",
-		H2C_REG2_NUM_ERR_DSC_RCVD_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg3_field_info[] = {
-	{"H2C_REG3",
-		H2C_REG3_MASK},
-	{"H2C_REG3_DSCO_FIFO_EMPTY",
-		H2C_REG3_DSCO_FIFO_EMPTY_MASK},
-	{"H2C_REG3_DSCO_FIFO_FULL",
-		H2C_REG3_DSCO_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RC_STATE",
-		H2C_REG3_CUR_RC_STATE_MASK},
-	{"H2C_REG3_RDREQ_LINES",
-		H2C_REG3_RDREQ_LINES_MASK},
-	{"H2C_REG3_RDATA_LINES_AVAIL",
-		H2C_REG3_RDATA_LINES_AVAIL_MASK},
-	{"H2C_REG3_PEND_FIFO_EMPTY",
-		H2C_REG3_PEND_FIFO_EMPTY_MASK},
-	{"H2C_REG3_PEND_FIFO_FULL",
-		H2C_REG3_PEND_FIFO_FULL_MASK},
-	{"H2C_REG3_CUR_RQ_STATE",
-		H2C_REG3_CUR_RQ_STATE_MASK},
-	{"H2C_REG3_DSCI_FIFO_FULL",
-		H2C_REG3_DSCI_FIFO_FULL_MASK},
-	{"H2C_REG3_DSCI_FIFO_EMPTY",
-		H2C_REG3_DSCI_FIFO_EMPTY_MASK},
-};
-
-
-static struct regfield_info
-	h2c_dbg_reg4_field_info[] = {
-	{"H2C_REG4_RDREQ_ADDR",
-		H2C_REG4_RDREQ_ADDR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_fatal_err_en_field_info[] = {
-	{"H2C_FATAL_ERR_EN_RSVD_1",
-		H2C_FATAL_ERR_EN_RSVD_1_MASK},
-	{"H2C_FATAL_ERR_EN_H2C",
-		H2C_FATAL_ERR_EN_H2C_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_field_info[] = {
-	{"C2H_CHANNEL_CTL_RSVD_1",
-		C2H_CHANNEL_CTL_RSVD_1_MASK},
-	{"C2H_CHANNEL_CTL_RUN",
-		C2H_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_ctl_1_field_info[] = {
-	{"C2H_CHANNEL_CTL_1_RUN",
-		C2H_CHANNEL_CTL_1_RUN_MASK},
-	{"C2H_CHANNEL_CTL_1_RUN_1",
-		C2H_CHANNEL_CTL_1_RUN_1_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_status_field_info[] = {
-	{"C2H_MM_STATUS_RSVD_1",
-		C2H_MM_STATUS_RSVD_1_MASK},
-	{"C2H_MM_STATUS_RUN",
-		C2H_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	c2h_channel_cmpl_desc_cnt_field_info[] = {
-	{"C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO",
-		C2H_CHANNEL_CMPL_DESC_CNT_C2H_CO_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_enable_mask_field_info[] = {
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_1",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM",
-		C2H_MM_ERR_CODE_ENABLE_WR_UC_RAM_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_UR",
-		C2H_MM_ERR_CODE_ENABLE_WR_UR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_FLR",
-		C2H_MM_ERR_CODE_ENABLE_WR_FLR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RSVD_2",
-		C2H_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_RD_SLV_ERR_MASK},
-	{"C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		C2H_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_code_field_info[] = {
-	{"C2H_MM_ERR_CODE_RSVD_1",
-		C2H_MM_ERR_CODE_RSVD_1_MASK},
-	{"C2H_MM_ERR_CODE_VALID",
-		C2H_MM_ERR_CODE_VALID_MASK},
-	{"C2H_MM_ERR_CODE_RDWR",
-		C2H_MM_ERR_CODE_RDWR_MASK},
-	{"C2H_MM_ERR_CODE",
-		C2H_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_err_info_field_info[] = {
-	{"C2H_MM_ERR_INFO_RSVD_1",
-		C2H_MM_ERR_INFO_RSVD_1_MASK},
-	{"C2H_MM_ERR_INFO_QID",
-		C2H_MM_ERR_INFO_QID_MASK},
-	{"C2H_MM_ERR_INFO_DIR",
-		C2H_MM_ERR_INFO_DIR_MASK},
-	{"C2H_MM_ERR_INFO_CIDX",
-		C2H_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_ctl_field_info[] = {
-	{"C2H_MM_PERF_MON_CTL_RSVD_1",
-		C2H_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_START",
-		C2H_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_START",
-		C2H_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"C2H_MM_PERF_MON_CTL_IMM_CLEAR",
-		C2H_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"C2H_MM_PERF_MON_CTL_RUN_CLEAR",
-		C2H_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		C2H_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt0_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT0_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_perf_mon_data_cnt1_field_info[] = {
-	{"C2H_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		C2H_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"C2H_MM_PERF_MON_DATA_CNT1_DCNT",
-		C2H_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	c2h_mm_dbg_field_info[] = {
-	{"C2H_MM_RSVD_1",
-		C2H_MM_RSVD_1_MASK},
-	{"C2H_MM_RRQ_ENTRIES",
-		C2H_MM_RRQ_ENTRIES_MASK},
-	{"C2H_MM_DAT_FIFO_SPC",
-		C2H_MM_DAT_FIFO_SPC_MASK},
-	{"C2H_MM_RD_STALL",
-		C2H_MM_RD_STALL_MASK},
-	{"C2H_MM_RRQ_FIFO_FI",
-		C2H_MM_RRQ_FIFO_FI_MASK},
-	{"C2H_MM_WR_STALL",
-		C2H_MM_WR_STALL_MASK},
-	{"C2H_MM_WRQ_FIFO_FI",
-		C2H_MM_WRQ_FIFO_FI_MASK},
-	{"C2H_MM_WBK_STALL",
-		C2H_MM_WBK_STALL_MASK},
-	{"C2H_MM_DSC_FIFO_EP",
-		C2H_MM_DSC_FIFO_EP_MASK},
-	{"C2H_MM_DSC_FIFO_FL",
-		C2H_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_field_info[] = {
-	{"H2C_CHANNEL_CTL_RSVD_1",
-		H2C_CHANNEL_CTL_RSVD_1_MASK},
-	{"H2C_CHANNEL_CTL_RUN",
-		H2C_CHANNEL_CTL_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_1_field_info[] = {
-	{"H2C_CHANNEL_CTL_1_RUN",
-		H2C_CHANNEL_CTL_1_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_ctl_2_field_info[] = {
-	{"H2C_CHANNEL_CTL_2_RUN",
-		H2C_CHANNEL_CTL_2_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_status_field_info[] = {
-	{"H2C_MM_STATUS_RSVD_1",
-		H2C_MM_STATUS_RSVD_1_MASK},
-	{"H2C_MM_STATUS_RUN",
-		H2C_MM_STATUS_RUN_MASK},
-};
-
-
-static struct regfield_info
-	h2c_channel_cmpl_desc_cnt_field_info[] = {
-	{"H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO",
-		H2C_CHANNEL_CMPL_DESC_CNT_H2C_CO_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_enable_mask_field_info[] = {
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_1",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_SLV_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR",
-		H2C_MM_ERR_CODE_ENABLE_WR_DEC_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_2",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_2_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_RQ_DIS_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_3",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_3_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_DAT_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_4",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_4_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_FLR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_5",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_5_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_ADR_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_PARA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HDR_BYTE_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_UR_CA",
-		H2C_MM_ERR_CODE_ENABLE_RD_UR_CA_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR",
-		H2C_MM_ERR_CODE_ENABLE_RD_HRD_POISON_ERR_MASK},
-	{"H2C_MM_ERR_CODE_ENABLE_RSVD_6",
-		H2C_MM_ERR_CODE_ENABLE_RSVD_6_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_code_field_info[] = {
-	{"H2C_MM_ERR_CODE_RSVD_1",
-		H2C_MM_ERR_CODE_RSVD_1_MASK},
-	{"H2C_MM_ERR_CODE_VALID",
-		H2C_MM_ERR_CODE_VALID_MASK},
-	{"H2C_MM_ERR_CODE_RDWR",
-		H2C_MM_ERR_CODE_RDWR_MASK},
-	{"H2C_MM_ERR_CODE",
-		H2C_MM_ERR_CODE_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_err_info_field_info[] = {
-	{"H2C_MM_ERR_INFO_RSVD_1",
-		H2C_MM_ERR_INFO_RSVD_1_MASK},
-	{"H2C_MM_ERR_INFO_QID",
-		H2C_MM_ERR_INFO_QID_MASK},
-	{"H2C_MM_ERR_INFO_DIR",
-		H2C_MM_ERR_INFO_DIR_MASK},
-	{"H2C_MM_ERR_INFO_CIDX",
-		H2C_MM_ERR_INFO_CIDX_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_ctl_field_info[] = {
-	{"H2C_MM_PERF_MON_CTL_RSVD_1",
-		H2C_MM_PERF_MON_CTL_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_START",
-		H2C_MM_PERF_MON_CTL_IMM_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_START",
-		H2C_MM_PERF_MON_CTL_RUN_START_MASK},
-	{"H2C_MM_PERF_MON_CTL_IMM_CLEAR",
-		H2C_MM_PERF_MON_CTL_IMM_CLEAR_MASK},
-	{"H2C_MM_PERF_MON_CTL_RUN_CLEAR",
-		H2C_MM_PERF_MON_CTL_RUN_CLEAR_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT0_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_cycle_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_CYCLE_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT",
-		H2C_MM_PERF_MON_CYCLE_CNT1_CYC_CNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt0_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT0_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT0_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_perf_mon_data_cnt1_field_info[] = {
-	{"H2C_MM_PERF_MON_DATA_CNT1_RSVD_1",
-		H2C_MM_PERF_MON_DATA_CNT1_RSVD_1_MASK},
-	{"H2C_MM_PERF_MON_DATA_CNT1_DCNT",
-		H2C_MM_PERF_MON_DATA_CNT1_DCNT_MASK},
-};
-
-
-static struct regfield_info
-	h2c_mm_dbg_field_info[] = {
-	{"H2C_MM_RSVD_1",
-		H2C_MM_RSVD_1_MASK},
-	{"H2C_MM_RRQ_ENTRIES",
-		H2C_MM_RRQ_ENTRIES_MASK},
-	{"H2C_MM_DAT_FIFO_SPC",
-		H2C_MM_DAT_FIFO_SPC_MASK},
-	{"H2C_MM_RD_STALL",
-		H2C_MM_RD_STALL_MASK},
-	{"H2C_MM_RRQ_FIFO_FI",
-		H2C_MM_RRQ_FIFO_FI_MASK},
-	{"H2C_MM_WR_STALL",
-		H2C_MM_WR_STALL_MASK},
-	{"H2C_MM_WRQ_FIFO_FI",
-		H2C_MM_WRQ_FIFO_FI_MASK},
-	{"H2C_MM_WBK_STALL",
-		H2C_MM_WBK_STALL_MASK},
-	{"H2C_MM_DSC_FIFO_EP",
-		H2C_MM_DSC_FIFO_EP_MASK},
-	{"H2C_MM_DSC_FIFO_FL",
-		H2C_MM_DSC_FIFO_FL_MASK},
-};
-
-
-static struct regfield_info
-	func_status_reg_field_info[] = {
-	{"FUNC_STATUS_REG_RSVD_1",
-		FUNC_STATUS_REG_RSVD_1_MASK},
-	{"FUNC_STATUS_REG_CUR_SRC_FN",
-		FUNC_STATUS_REG_CUR_SRC_FN_MASK},
-	{"FUNC_STATUS_REG_ACK",
-		FUNC_STATUS_REG_ACK_MASK},
-	{"FUNC_STATUS_REG_O_MSG",
-		FUNC_STATUS_REG_O_MSG_MASK},
-	{"FUNC_STATUS_REG_I_MSG",
-		FUNC_STATUS_REG_I_MSG_MASK},
-};
-
-
-static struct regfield_info
-	func_cmd_reg_field_info[] = {
-	{"FUNC_CMD_REG_RSVD_1",
-		FUNC_CMD_REG_RSVD_1_MASK},
-	{"FUNC_CMD_REG_RSVD_2",
-		FUNC_CMD_REG_RSVD_2_MASK},
-	{"FUNC_CMD_REG_MSG_RCV",
-		FUNC_CMD_REG_MSG_RCV_MASK},
-	{"FUNC_CMD_REG_MSG_SENT",
-		FUNC_CMD_REG_MSG_SENT_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_vector_reg_field_info[] = {
-	{"FUNC_INTERRUPT_VECTOR_REG_RSVD_1",
-		FUNC_INTERRUPT_VECTOR_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_VECTOR_REG_IN",
-		FUNC_INTERRUPT_VECTOR_REG_IN_MASK},
-};
-
-
-static struct regfield_info
-	target_func_reg_field_info[] = {
-	{"TARGET_FUNC_REG_RSVD_1",
-		TARGET_FUNC_REG_RSVD_1_MASK},
-	{"TARGET_FUNC_REG_N_ID",
-		TARGET_FUNC_REG_N_ID_MASK},
-};
-
-
-static struct regfield_info
-	func_interrupt_ctl_reg_field_info[] = {
-	{"FUNC_INTERRUPT_CTL_REG_RSVD_1",
-		FUNC_INTERRUPT_CTL_REG_RSVD_1_MASK},
-	{"FUNC_INTERRUPT_CTL_REG_INT_EN",
-		FUNC_INTERRUPT_CTL_REG_INT_EN_MASK},
-};
-
-static struct xreg_info qdma_s80_hard_config_regs[] = {
-{"CFG_BLK_IDENTIFIER", 0x00,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_identifier_field_info),
-	cfg_blk_identifier_field_info
-},
-{"CFG_BLK_BUSDEV", 0x04,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_busdev_field_info),
-	cfg_blk_busdev_field_info
-},
-{"CFG_BLK_PCIE_MAX_PLD_SIZE", 0x08,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_pld_size_field_info),
-	cfg_blk_pcie_max_pld_size_field_info
-},
-{"CFG_BLK_PCIE_MAX_READ_REQ_SIZE", 0x0c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_pcie_max_read_req_size_field_info),
-	cfg_blk_pcie_max_read_req_size_field_info
-},
-{"CFG_BLK_SYSTEM_ID", 0x10,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_system_id_field_info),
-	cfg_blk_system_id_field_info
-},
-{"CFG_BLK_MSI_ENABLE", 0x014,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_msi_enable_field_info),
-	cfg_blk_msi_enable_field_info
-},
-{"CFG_PCIE_DATA_WIDTH", 0x18,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_data_width_field_info),
-	cfg_pcie_data_width_field_info
-},
-{"CFG_PCIE_CTL", 0x1c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_pcie_ctl_field_info),
-	cfg_pcie_ctl_field_info
-},
-{"CFG_AXI_USER_MAX_PLD_SIZE", 0x40,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_pld_size_field_info),
-	cfg_axi_user_max_pld_size_field_info
-},
-{"CFG_AXI_USER_MAX_READ_REQ_SIZE", 0x44,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_axi_user_max_read_req_size_field_info),
-	cfg_axi_user_max_read_req_size_field_info
-},
-{"CFG_BLK_MISC_CTL", 0x4c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_misc_ctl_field_info),
-	cfg_blk_misc_ctl_field_info
-},
-{"CFG_BLK_SCRATCH_0", 0x80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_0_field_info),
-	cfg_blk_scratch_0_field_info
-},
-{"CFG_BLK_SCRATCH_1", 0x84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_1_field_info),
-	cfg_blk_scratch_1_field_info
-},
-{"CFG_BLK_SCRATCH_2", 0x88,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_2_field_info),
-	cfg_blk_scratch_2_field_info
-},
-{"CFG_BLK_SCRATCH_3", 0x8c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_3_field_info),
-	cfg_blk_scratch_3_field_info
-},
-{"CFG_BLK_SCRATCH_4", 0x90,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_4_field_info),
-	cfg_blk_scratch_4_field_info
-},
-{"CFG_BLK_SCRATCH_5", 0x94,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_5_field_info),
-	cfg_blk_scratch_5_field_info
-},
-{"CFG_BLK_SCRATCH_6", 0x98,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_6_field_info),
-	cfg_blk_scratch_6_field_info
-},
-{"CFG_BLK_SCRATCH_7", 0x9c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(cfg_blk_scratch_7_field_info),
-	cfg_blk_scratch_7_field_info
-},
-{"RAM_SBE_MSK_A", 0xf0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_msk_a_field_info),
-	ram_sbe_msk_a_field_info
-},
-{"RAM_SBE_STS_A", 0xf4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_sbe_sts_a_field_info),
-	ram_sbe_sts_a_field_info
-},
-{"RAM_DBE_MSK_A", 0xf8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_msk_a_field_info),
-	ram_dbe_msk_a_field_info
-},
-{"RAM_DBE_STS_A", 0xfc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ram_dbe_sts_a_field_info),
-	ram_dbe_sts_a_field_info
-},
-{"GLBL2_IDENTIFIER", 0x100,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_identifier_field_info),
-	glbl2_identifier_field_info
-},
-{"GLBL2_PF_BARLITE_INT", 0x104,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_int_field_info),
-	glbl2_pf_barlite_int_field_info
-},
-{"GLBL2_PF_VF_BARLITE_INT", 0x108,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_int_field_info),
-	glbl2_pf_vf_barlite_int_field_info
-},
-{"GLBL2_PF_BARLITE_EXT", 0x10c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_barlite_ext_field_info),
-	glbl2_pf_barlite_ext_field_info
-},
-{"GLBL2_PF_VF_BARLITE_EXT", 0x110,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_pf_vf_barlite_ext_field_info),
-	glbl2_pf_vf_barlite_ext_field_info
-},
-{"GLBL2_CHANNEL_INST", 0x114,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_inst_field_info),
-	glbl2_channel_inst_field_info
-},
-{"GLBL2_CHANNEL_MDMA", 0x118,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_mdma_field_info),
-	glbl2_channel_mdma_field_info
-},
-{"GLBL2_CHANNEL_STRM", 0x11c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_strm_field_info),
-	glbl2_channel_strm_field_info
-},
-{"GLBL2_CHANNEL_CAP", 0x120,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_cap_field_info),
-	glbl2_channel_cap_field_info
-},
-{"GLBL2_CHANNEL_PASID_CAP", 0x128,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_pasid_cap_field_info),
-	glbl2_channel_pasid_cap_field_info
-},
-{"GLBL2_CHANNEL_FUNC_RET", 0x12c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_channel_func_ret_field_info),
-	glbl2_channel_func_ret_field_info
-},
-{"GLBL2_SYSTEM_ID", 0x130,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_system_id_field_info),
-	glbl2_system_id_field_info
-},
-{"GLBL2_MISC_CAP", 0x134,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_misc_cap_field_info),
-	glbl2_misc_cap_field_info
-},
-{"GLBL2_DBG_PCIE_RQ0", 0x1b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq0_field_info),
-	glbl2_dbg_pcie_rq0_field_info
-},
-{"GLBL2_DBG_PCIE_RQ1", 0x1bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_pcie_rq1_field_info),
-	glbl2_dbg_pcie_rq1_field_info
-},
-{"GLBL2_DBG_AXIMM_WR0", 0x1c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr0_field_info),
-	glbl2_dbg_aximm_wr0_field_info
-},
-{"GLBL2_DBG_AXIMM_WR1", 0x1c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_wr1_field_info),
-	glbl2_dbg_aximm_wr1_field_info
-},
-{"GLBL2_DBG_AXIMM_RD0", 0x1c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd0_field_info),
-	glbl2_dbg_aximm_rd0_field_info
-},
-{"GLBL2_DBG_AXIMM_RD1", 0x1cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(glbl2_dbg_aximm_rd1_field_info),
-	glbl2_dbg_aximm_rd1_field_info
-},
-{"GLBL_RNG_SZ_1", 0x204,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_1_field_info),
-	glbl_rng_sz_1_field_info
-},
-{"GLBL_RNG_SZ_2", 0x208,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_2_field_info),
-	glbl_rng_sz_2_field_info
-},
-{"GLBL_RNG_SZ_3", 0x20c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_3_field_info),
-	glbl_rng_sz_3_field_info
-},
-{"GLBL_RNG_SZ_4", 0x210,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_4_field_info),
-	glbl_rng_sz_4_field_info
-},
-{"GLBL_RNG_SZ_5", 0x214,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_5_field_info),
-	glbl_rng_sz_5_field_info
-},
-{"GLBL_RNG_SZ_6", 0x218,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_6_field_info),
-	glbl_rng_sz_6_field_info
-},
-{"GLBL_RNG_SZ_7", 0x21c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_7_field_info),
-	glbl_rng_sz_7_field_info
-},
-{"GLBL_RNG_SZ_8", 0x220,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_8_field_info),
-	glbl_rng_sz_8_field_info
-},
-{"GLBL_RNG_SZ_9", 0x224,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_9_field_info),
-	glbl_rng_sz_9_field_info
-},
-{"GLBL_RNG_SZ_A", 0x228,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_a_field_info),
-	glbl_rng_sz_a_field_info
-},
-{"GLBL_RNG_SZ_B", 0x22c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_b_field_info),
-	glbl_rng_sz_b_field_info
-},
-{"GLBL_RNG_SZ_C", 0x230,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_c_field_info),
-	glbl_rng_sz_c_field_info
-},
-{"GLBL_RNG_SZ_D", 0x234,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_d_field_info),
-	glbl_rng_sz_d_field_info
-},
-{"GLBL_RNG_SZ_E", 0x238,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_e_field_info),
-	glbl_rng_sz_e_field_info
-},
-{"GLBL_RNG_SZ_F", 0x23c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_f_field_info),
-	glbl_rng_sz_f_field_info
-},
-{"GLBL_RNG_SZ_10", 0x240,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_rng_sz_10_field_info),
-	glbl_rng_sz_10_field_info
-},
-{"GLBL_ERR_STAT", 0x248,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_stat_field_info),
-	glbl_err_stat_field_info
-},
-{"GLBL_ERR_MASK", 0x24c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_mask_field_info),
-	glbl_err_mask_field_info
-},
-{"GLBL_DSC_CFG", 0x250,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_cfg_field_info),
-	glbl_dsc_cfg_field_info
-},
-{"GLBL_DSC_ERR_STS", 0x254,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_sts_field_info),
-	glbl_dsc_err_sts_field_info
-},
-{"GLBL_DSC_ERR_MSK", 0x258,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_msk_field_info),
-	glbl_dsc_err_msk_field_info
-},
-{"GLBL_DSC_ERR_LOG0", 0x25c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log0_field_info),
-	glbl_dsc_err_log0_field_info
-},
-{"GLBL_DSC_ERR_LOG1", 0x260,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_err_log1_field_info),
-	glbl_dsc_err_log1_field_info
-},
-{"GLBL_TRQ_ERR_STS", 0x264,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_sts_field_info),
-	glbl_trq_err_sts_field_info
-},
-{"GLBL_TRQ_ERR_MSK", 0x268,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_msk_field_info),
-	glbl_trq_err_msk_field_info
-},
-{"GLBL_TRQ_ERR_LOG", 0x26c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_trq_err_log_field_info),
-	glbl_trq_err_log_field_info
-},
-{"GLBL_DSC_DBG_DAT0", 0x270,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat0_field_info),
-	glbl_dsc_dbg_dat0_field_info
-},
-{"GLBL_DSC_DBG_DAT1", 0x274,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_dsc_dbg_dat1_field_info),
-	glbl_dsc_dbg_dat1_field_info
-},
-{"TRQ_SEL_FMAP_0", 0x400,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_0_field_info),
-	trq_sel_fmap_0_field_info
-},
-{"TRQ_SEL_FMAP_1", 0x404,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1_field_info),
-	trq_sel_fmap_1_field_info
-},
-{"TRQ_SEL_FMAP_2", 0x408,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2_field_info),
-	trq_sel_fmap_2_field_info
-},
-{"TRQ_SEL_FMAP_3", 0x40c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3_field_info),
-	trq_sel_fmap_3_field_info
-},
-{"TRQ_SEL_FMAP_4", 0x410,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4_field_info),
-	trq_sel_fmap_4_field_info
-},
-{"TRQ_SEL_FMAP_5", 0x414,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5_field_info),
-	trq_sel_fmap_5_field_info
-},
-{"TRQ_SEL_FMAP_6", 0x418,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6_field_info),
-	trq_sel_fmap_6_field_info
-},
-{"TRQ_SEL_FMAP_7", 0x41c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7_field_info),
-	trq_sel_fmap_7_field_info
-},
-{"TRQ_SEL_FMAP_8", 0x420,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8_field_info),
-	trq_sel_fmap_8_field_info
-},
-{"TRQ_SEL_FMAP_9", 0x424,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9_field_info),
-	trq_sel_fmap_9_field_info
-},
-{"TRQ_SEL_FMAP_A", 0x428,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a_field_info),
-	trq_sel_fmap_a_field_info
-},
-{"TRQ_SEL_FMAP_B", 0x42c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b_field_info),
-	trq_sel_fmap_b_field_info
-},
-{"TRQ_SEL_FMAP_D", 0x430,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d_field_info),
-	trq_sel_fmap_d_field_info
-},
-{"TRQ_SEL_FMAP_E", 0x434,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e_field_info),
-	trq_sel_fmap_e_field_info
-},
-{"TRQ_SEL_FMAP_F", 0x438,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f_field_info),
-	trq_sel_fmap_f_field_info
-},
-{"TRQ_SEL_FMAP_10", 0x43c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_10_field_info),
-	trq_sel_fmap_10_field_info
-},
-{"TRQ_SEL_FMAP_11", 0x440,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_11_field_info),
-	trq_sel_fmap_11_field_info
-},
-{"TRQ_SEL_FMAP_12", 0x444,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_12_field_info),
-	trq_sel_fmap_12_field_info
-},
-{"TRQ_SEL_FMAP_13", 0x448,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_13_field_info),
-	trq_sel_fmap_13_field_info
-},
-{"TRQ_SEL_FMAP_14", 0x44c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_14_field_info),
-	trq_sel_fmap_14_field_info
-},
-{"TRQ_SEL_FMAP_15", 0x450,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_15_field_info),
-	trq_sel_fmap_15_field_info
-},
-{"TRQ_SEL_FMAP_16", 0x454,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_16_field_info),
-	trq_sel_fmap_16_field_info
-},
-{"TRQ_SEL_FMAP_17", 0x458,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_17_field_info),
-	trq_sel_fmap_17_field_info
-},
-{"TRQ_SEL_FMAP_18", 0x45c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_18_field_info),
-	trq_sel_fmap_18_field_info
-},
-{"TRQ_SEL_FMAP_19", 0x460,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_19_field_info),
-	trq_sel_fmap_19_field_info
-},
-{"TRQ_SEL_FMAP_1A", 0x464,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1a_field_info),
-	trq_sel_fmap_1a_field_info
-},
-{"TRQ_SEL_FMAP_1B", 0x468,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1b_field_info),
-	trq_sel_fmap_1b_field_info
-},
-{"TRQ_SEL_FMAP_1C", 0x46c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1c_field_info),
-	trq_sel_fmap_1c_field_info
-},
-{"TRQ_SEL_FMAP_1D", 0x470,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1d_field_info),
-	trq_sel_fmap_1d_field_info
-},
-{"TRQ_SEL_FMAP_1E", 0x474,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1e_field_info),
-	trq_sel_fmap_1e_field_info
-},
-{"TRQ_SEL_FMAP_1F", 0x478,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_1f_field_info),
-	trq_sel_fmap_1f_field_info
-},
-{"TRQ_SEL_FMAP_20", 0x47c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_20_field_info),
-	trq_sel_fmap_20_field_info
-},
-{"TRQ_SEL_FMAP_21", 0x480,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_21_field_info),
-	trq_sel_fmap_21_field_info
-},
-{"TRQ_SEL_FMAP_22", 0x484,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_22_field_info),
-	trq_sel_fmap_22_field_info
-},
-{"TRQ_SEL_FMAP_23", 0x488,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_23_field_info),
-	trq_sel_fmap_23_field_info
-},
-{"TRQ_SEL_FMAP_24", 0x48c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_24_field_info),
-	trq_sel_fmap_24_field_info
-},
-{"TRQ_SEL_FMAP_25", 0x490,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_25_field_info),
-	trq_sel_fmap_25_field_info
-},
-{"TRQ_SEL_FMAP_26", 0x494,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_26_field_info),
-	trq_sel_fmap_26_field_info
-},
-{"TRQ_SEL_FMAP_27", 0x498,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_27_field_info),
-	trq_sel_fmap_27_field_info
-},
-{"TRQ_SEL_FMAP_28", 0x49c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_28_field_info),
-	trq_sel_fmap_28_field_info
-},
-{"TRQ_SEL_FMAP_29", 0x4a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_29_field_info),
-	trq_sel_fmap_29_field_info
-},
-{"TRQ_SEL_FMAP_2A", 0x4a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2a_field_info),
-	trq_sel_fmap_2a_field_info
-},
-{"TRQ_SEL_FMAP_2B", 0x4a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2b_field_info),
-	trq_sel_fmap_2b_field_info
-},
-{"TRQ_SEL_FMAP_2C", 0x4ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2c_field_info),
-	trq_sel_fmap_2c_field_info
-},
-{"TRQ_SEL_FMAP_2D", 0x4b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2d_field_info),
-	trq_sel_fmap_2d_field_info
-},
-{"TRQ_SEL_FMAP_2E", 0x4b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2e_field_info),
-	trq_sel_fmap_2e_field_info
-},
-{"TRQ_SEL_FMAP_2F", 0x4b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_2f_field_info),
-	trq_sel_fmap_2f_field_info
-},
-{"TRQ_SEL_FMAP_30", 0x4bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_30_field_info),
-	trq_sel_fmap_30_field_info
-},
-{"TRQ_SEL_FMAP_31", 0x4d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_31_field_info),
-	trq_sel_fmap_31_field_info
-},
-{"TRQ_SEL_FMAP_32", 0x4d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_32_field_info),
-	trq_sel_fmap_32_field_info
-},
-{"TRQ_SEL_FMAP_33", 0x4d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_33_field_info),
-	trq_sel_fmap_33_field_info
-},
-{"TRQ_SEL_FMAP_34", 0x4dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_34_field_info),
-	trq_sel_fmap_34_field_info
-},
-{"TRQ_SEL_FMAP_35", 0x4e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_35_field_info),
-	trq_sel_fmap_35_field_info
-},
-{"TRQ_SEL_FMAP_36", 0x4e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_36_field_info),
-	trq_sel_fmap_36_field_info
-},
-{"TRQ_SEL_FMAP_37", 0x4e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_37_field_info),
-	trq_sel_fmap_37_field_info
-},
-{"TRQ_SEL_FMAP_38", 0x4ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_38_field_info),
-	trq_sel_fmap_38_field_info
-},
-{"TRQ_SEL_FMAP_39", 0x4f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_39_field_info),
-	trq_sel_fmap_39_field_info
-},
-{"TRQ_SEL_FMAP_3A", 0x4f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3a_field_info),
-	trq_sel_fmap_3a_field_info
-},
-{"TRQ_SEL_FMAP_3B", 0x4f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3b_field_info),
-	trq_sel_fmap_3b_field_info
-},
-{"TRQ_SEL_FMAP_3C", 0x4fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3c_field_info),
-	trq_sel_fmap_3c_field_info
-},
-{"TRQ_SEL_FMAP_3D", 0x500,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3d_field_info),
-	trq_sel_fmap_3d_field_info
-},
-{"TRQ_SEL_FMAP_3E", 0x504,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3e_field_info),
-	trq_sel_fmap_3e_field_info
-},
-{"TRQ_SEL_FMAP_3F", 0x508,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_3f_field_info),
-	trq_sel_fmap_3f_field_info
-},
-{"TRQ_SEL_FMAP_40", 0x50c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_40_field_info),
-	trq_sel_fmap_40_field_info
-},
-{"TRQ_SEL_FMAP_41", 0x510,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_41_field_info),
-	trq_sel_fmap_41_field_info
-},
-{"TRQ_SEL_FMAP_42", 0x514,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_42_field_info),
-	trq_sel_fmap_42_field_info
-},
-{"TRQ_SEL_FMAP_43", 0x518,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_43_field_info),
-	trq_sel_fmap_43_field_info
-},
-{"TRQ_SEL_FMAP_44", 0x51c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_44_field_info),
-	trq_sel_fmap_44_field_info
-},
-{"TRQ_SEL_FMAP_45", 0x520,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_45_field_info),
-	trq_sel_fmap_45_field_info
-},
-{"TRQ_SEL_FMAP_46", 0x524,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_46_field_info),
-	trq_sel_fmap_46_field_info
-},
-{"TRQ_SEL_FMAP_47", 0x528,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_47_field_info),
-	trq_sel_fmap_47_field_info
-},
-{"TRQ_SEL_FMAP_48", 0x52c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_48_field_info),
-	trq_sel_fmap_48_field_info
-},
-{"TRQ_SEL_FMAP_49", 0x530,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_49_field_info),
-	trq_sel_fmap_49_field_info
-},
-{"TRQ_SEL_FMAP_4A", 0x534,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4a_field_info),
-	trq_sel_fmap_4a_field_info
-},
-{"TRQ_SEL_FMAP_4B", 0x538,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4b_field_info),
-	trq_sel_fmap_4b_field_info
-},
-{"TRQ_SEL_FMAP_4C", 0x53c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4c_field_info),
-	trq_sel_fmap_4c_field_info
-},
-{"TRQ_SEL_FMAP_4D", 0x540,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4d_field_info),
-	trq_sel_fmap_4d_field_info
-},
-{"TRQ_SEL_FMAP_4E", 0x544,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4e_field_info),
-	trq_sel_fmap_4e_field_info
-},
-{"TRQ_SEL_FMAP_4F", 0x548,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_4f_field_info),
-	trq_sel_fmap_4f_field_info
-},
-{"TRQ_SEL_FMAP_50", 0x54c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_50_field_info),
-	trq_sel_fmap_50_field_info
-},
-{"TRQ_SEL_FMAP_51", 0x550,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_51_field_info),
-	trq_sel_fmap_51_field_info
-},
-{"TRQ_SEL_FMAP_52", 0x554,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_52_field_info),
-	trq_sel_fmap_52_field_info
-},
-{"TRQ_SEL_FMAP_53", 0x558,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_53_field_info),
-	trq_sel_fmap_53_field_info
-},
-{"TRQ_SEL_FMAP_54", 0x55c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_54_field_info),
-	trq_sel_fmap_54_field_info
-},
-{"TRQ_SEL_FMAP_55", 0x560,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_55_field_info),
-	trq_sel_fmap_55_field_info
-},
-{"TRQ_SEL_FMAP_56", 0x564,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_56_field_info),
-	trq_sel_fmap_56_field_info
-},
-{"TRQ_SEL_FMAP_57", 0x568,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_57_field_info),
-	trq_sel_fmap_57_field_info
-},
-{"TRQ_SEL_FMAP_58", 0x56c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_58_field_info),
-	trq_sel_fmap_58_field_info
-},
-{"TRQ_SEL_FMAP_59", 0x570,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_59_field_info),
-	trq_sel_fmap_59_field_info
-},
-{"TRQ_SEL_FMAP_5A", 0x574,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5a_field_info),
-	trq_sel_fmap_5a_field_info
-},
-{"TRQ_SEL_FMAP_5B", 0x578,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5b_field_info),
-	trq_sel_fmap_5b_field_info
-},
-{"TRQ_SEL_FMAP_5C", 0x57c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5c_field_info),
-	trq_sel_fmap_5c_field_info
-},
-{"TRQ_SEL_FMAP_5D", 0x580,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5d_field_info),
-	trq_sel_fmap_5d_field_info
-},
-{"TRQ_SEL_FMAP_5E", 0x584,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5e_field_info),
-	trq_sel_fmap_5e_field_info
-},
-{"TRQ_SEL_FMAP_5F", 0x588,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_5f_field_info),
-	trq_sel_fmap_5f_field_info
-},
-{"TRQ_SEL_FMAP_60", 0x58c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_60_field_info),
-	trq_sel_fmap_60_field_info
-},
-{"TRQ_SEL_FMAP_61", 0x590,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_61_field_info),
-	trq_sel_fmap_61_field_info
-},
-{"TRQ_SEL_FMAP_62", 0x594,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_62_field_info),
-	trq_sel_fmap_62_field_info
-},
-{"TRQ_SEL_FMAP_63", 0x598,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_63_field_info),
-	trq_sel_fmap_63_field_info
-},
-{"TRQ_SEL_FMAP_64", 0x59c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_64_field_info),
-	trq_sel_fmap_64_field_info
-},
-{"TRQ_SEL_FMAP_65", 0x5a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_65_field_info),
-	trq_sel_fmap_65_field_info
-},
-{"TRQ_SEL_FMAP_66", 0x5a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_66_field_info),
-	trq_sel_fmap_66_field_info
-},
-{"TRQ_SEL_FMAP_67", 0x5a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_67_field_info),
-	trq_sel_fmap_67_field_info
-},
-{"TRQ_SEL_FMAP_68", 0x5ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_68_field_info),
-	trq_sel_fmap_68_field_info
-},
-{"TRQ_SEL_FMAP_69", 0x5b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_69_field_info),
-	trq_sel_fmap_69_field_info
-},
-{"TRQ_SEL_FMAP_6A", 0x5b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6a_field_info),
-	trq_sel_fmap_6a_field_info
-},
-{"TRQ_SEL_FMAP_6B", 0x5b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6b_field_info),
-	trq_sel_fmap_6b_field_info
-},
-{"TRQ_SEL_FMAP_6C", 0x5bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6c_field_info),
-	trq_sel_fmap_6c_field_info
-},
-{"TRQ_SEL_FMAP_6D", 0x5c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6d_field_info),
-	trq_sel_fmap_6d_field_info
-},
-{"TRQ_SEL_FMAP_6E", 0x5c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6e_field_info),
-	trq_sel_fmap_6e_field_info
-},
-{"TRQ_SEL_FMAP_6F", 0x5c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_6f_field_info),
-	trq_sel_fmap_6f_field_info
-},
-{"TRQ_SEL_FMAP_70", 0x5cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_70_field_info),
-	trq_sel_fmap_70_field_info
-},
-{"TRQ_SEL_FMAP_71", 0x5d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_71_field_info),
-	trq_sel_fmap_71_field_info
-},
-{"TRQ_SEL_FMAP_72", 0x5d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_72_field_info),
-	trq_sel_fmap_72_field_info
-},
-{"TRQ_SEL_FMAP_73", 0x5d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_73_field_info),
-	trq_sel_fmap_73_field_info
-},
-{"TRQ_SEL_FMAP_74", 0x5dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_74_field_info),
-	trq_sel_fmap_74_field_info
-},
-{"TRQ_SEL_FMAP_75", 0x5e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_75_field_info),
-	trq_sel_fmap_75_field_info
-},
-{"TRQ_SEL_FMAP_76", 0x5e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_76_field_info),
-	trq_sel_fmap_76_field_info
-},
-{"TRQ_SEL_FMAP_77", 0x5e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_77_field_info),
-	trq_sel_fmap_77_field_info
-},
-{"TRQ_SEL_FMAP_78", 0x5ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_78_field_info),
-	trq_sel_fmap_78_field_info
-},
-{"TRQ_SEL_FMAP_79", 0x5f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_79_field_info),
-	trq_sel_fmap_79_field_info
-},
-{"TRQ_SEL_FMAP_7A", 0x5f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7a_field_info),
-	trq_sel_fmap_7a_field_info
-},
-{"TRQ_SEL_FMAP_7B", 0x5f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7b_field_info),
-	trq_sel_fmap_7b_field_info
-},
-{"TRQ_SEL_FMAP_7C", 0x5fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7c_field_info),
-	trq_sel_fmap_7c_field_info
-},
-{"TRQ_SEL_FMAP_7D", 0x600,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7d_field_info),
-	trq_sel_fmap_7d_field_info
-},
-{"TRQ_SEL_FMAP_7E", 0x604,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7e_field_info),
-	trq_sel_fmap_7e_field_info
-},
-{"TRQ_SEL_FMAP_7F", 0x608,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_7f_field_info),
-	trq_sel_fmap_7f_field_info
-},
-{"TRQ_SEL_FMAP_80", 0x60c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_80_field_info),
-	trq_sel_fmap_80_field_info
-},
-{"TRQ_SEL_FMAP_81", 0x610,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_81_field_info),
-	trq_sel_fmap_81_field_info
-},
-{"TRQ_SEL_FMAP_82", 0x614,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_82_field_info),
-	trq_sel_fmap_82_field_info
-},
-{"TRQ_SEL_FMAP_83", 0x618,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_83_field_info),
-	trq_sel_fmap_83_field_info
-},
-{"TRQ_SEL_FMAP_84", 0x61c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_84_field_info),
-	trq_sel_fmap_84_field_info
-},
-{"TRQ_SEL_FMAP_85", 0x620,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_85_field_info),
-	trq_sel_fmap_85_field_info
-},
-{"TRQ_SEL_FMAP_86", 0x624,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_86_field_info),
-	trq_sel_fmap_86_field_info
-},
-{"TRQ_SEL_FMAP_87", 0x628,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_87_field_info),
-	trq_sel_fmap_87_field_info
-},
-{"TRQ_SEL_FMAP_88", 0x62c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_88_field_info),
-	trq_sel_fmap_88_field_info
-},
-{"TRQ_SEL_FMAP_89", 0x630,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_89_field_info),
-	trq_sel_fmap_89_field_info
-},
-{"TRQ_SEL_FMAP_8A", 0x634,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8a_field_info),
-	trq_sel_fmap_8a_field_info
-},
-{"TRQ_SEL_FMAP_8B", 0x638,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8b_field_info),
-	trq_sel_fmap_8b_field_info
-},
-{"TRQ_SEL_FMAP_8C", 0x63c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8c_field_info),
-	trq_sel_fmap_8c_field_info
-},
-{"TRQ_SEL_FMAP_8D", 0x640,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8d_field_info),
-	trq_sel_fmap_8d_field_info
-},
-{"TRQ_SEL_FMAP_8E", 0x644,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8e_field_info),
-	trq_sel_fmap_8e_field_info
-},
-{"TRQ_SEL_FMAP_8F", 0x648,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_8f_field_info),
-	trq_sel_fmap_8f_field_info
-},
-{"TRQ_SEL_FMAP_90", 0x64c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_90_field_info),
-	trq_sel_fmap_90_field_info
-},
-{"TRQ_SEL_FMAP_91", 0x650,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_91_field_info),
-	trq_sel_fmap_91_field_info
-},
-{"TRQ_SEL_FMAP_92", 0x654,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_92_field_info),
-	trq_sel_fmap_92_field_info
-},
-{"TRQ_SEL_FMAP_93", 0x658,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_93_field_info),
-	trq_sel_fmap_93_field_info
-},
-{"TRQ_SEL_FMAP_94", 0x65c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_94_field_info),
-	trq_sel_fmap_94_field_info
-},
-{"TRQ_SEL_FMAP_95", 0x660,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_95_field_info),
-	trq_sel_fmap_95_field_info
-},
-{"TRQ_SEL_FMAP_96", 0x664,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_96_field_info),
-	trq_sel_fmap_96_field_info
-},
-{"TRQ_SEL_FMAP_97", 0x668,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_97_field_info),
-	trq_sel_fmap_97_field_info
-},
-{"TRQ_SEL_FMAP_98", 0x66c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_98_field_info),
-	trq_sel_fmap_98_field_info
-},
-{"TRQ_SEL_FMAP_99", 0x670,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_99_field_info),
-	trq_sel_fmap_99_field_info
-},
-{"TRQ_SEL_FMAP_9A", 0x674,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9a_field_info),
-	trq_sel_fmap_9a_field_info
-},
-{"TRQ_SEL_FMAP_9B", 0x678,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9b_field_info),
-	trq_sel_fmap_9b_field_info
-},
-{"TRQ_SEL_FMAP_9C", 0x67c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9c_field_info),
-	trq_sel_fmap_9c_field_info
-},
-{"TRQ_SEL_FMAP_9D", 0x680,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9d_field_info),
-	trq_sel_fmap_9d_field_info
-},
-{"TRQ_SEL_FMAP_9E", 0x684,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9e_field_info),
-	trq_sel_fmap_9e_field_info
-},
-{"TRQ_SEL_FMAP_9F", 0x688,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_9f_field_info),
-	trq_sel_fmap_9f_field_info
-},
-{"TRQ_SEL_FMAP_A0", 0x68c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a0_field_info),
-	trq_sel_fmap_a0_field_info
-},
-{"TRQ_SEL_FMAP_A1", 0x690,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a1_field_info),
-	trq_sel_fmap_a1_field_info
-},
-{"TRQ_SEL_FMAP_A2", 0x694,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a2_field_info),
-	trq_sel_fmap_a2_field_info
-},
-{"TRQ_SEL_FMAP_A3", 0x698,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a3_field_info),
-	trq_sel_fmap_a3_field_info
-},
-{"TRQ_SEL_FMAP_A4", 0x69c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a4_field_info),
-	trq_sel_fmap_a4_field_info
-},
-{"TRQ_SEL_FMAP_A5", 0x6a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a5_field_info),
-	trq_sel_fmap_a5_field_info
-},
-{"TRQ_SEL_FMAP_A6", 0x6a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a6_field_info),
-	trq_sel_fmap_a6_field_info
-},
-{"TRQ_SEL_FMAP_A7", 0x6a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a7_field_info),
-	trq_sel_fmap_a7_field_info
-},
-{"TRQ_SEL_FMAP_A8", 0x6ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a8_field_info),
-	trq_sel_fmap_a8_field_info
-},
-{"TRQ_SEL_FMAP_A9", 0x6b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_a9_field_info),
-	trq_sel_fmap_a9_field_info
-},
-{"TRQ_SEL_FMAP_AA", 0x6b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_aa_field_info),
-	trq_sel_fmap_aa_field_info
-},
-{"TRQ_SEL_FMAP_AB", 0x6b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ab_field_info),
-	trq_sel_fmap_ab_field_info
-},
-{"TRQ_SEL_FMAP_AC", 0x6bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ac_field_info),
-	trq_sel_fmap_ac_field_info
-},
-{"TRQ_SEL_FMAP_AD", 0x6d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ad_field_info),
-	trq_sel_fmap_ad_field_info
-},
-{"TRQ_SEL_FMAP_AE", 0x6d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ae_field_info),
-	trq_sel_fmap_ae_field_info
-},
-{"TRQ_SEL_FMAP_AF", 0x6d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_af_field_info),
-	trq_sel_fmap_af_field_info
-},
-{"TRQ_SEL_FMAP_B0", 0x6dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b0_field_info),
-	trq_sel_fmap_b0_field_info
-},
-{"TRQ_SEL_FMAP_B1", 0x6e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b1_field_info),
-	trq_sel_fmap_b1_field_info
-},
-{"TRQ_SEL_FMAP_B2", 0x6e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b2_field_info),
-	trq_sel_fmap_b2_field_info
-},
-{"TRQ_SEL_FMAP_B3", 0x6e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b3_field_info),
-	trq_sel_fmap_b3_field_info
-},
-{"TRQ_SEL_FMAP_B4", 0x6ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b4_field_info),
-	trq_sel_fmap_b4_field_info
-},
-{"TRQ_SEL_FMAP_B5", 0x6f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b5_field_info),
-	trq_sel_fmap_b5_field_info
-},
-{"TRQ_SEL_FMAP_B6", 0x6f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b6_field_info),
-	trq_sel_fmap_b6_field_info
-},
-{"TRQ_SEL_FMAP_B7", 0x6f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b7_field_info),
-	trq_sel_fmap_b7_field_info
-},
-{"TRQ_SEL_FMAP_B8", 0x6fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b8_field_info),
-	trq_sel_fmap_b8_field_info
-},
-{"TRQ_SEL_FMAP_B9", 0x700,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_b9_field_info),
-	trq_sel_fmap_b9_field_info
-},
-{"TRQ_SEL_FMAP_BA", 0x704,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ba_field_info),
-	trq_sel_fmap_ba_field_info
-},
-{"TRQ_SEL_FMAP_BB", 0x708,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bb_field_info),
-	trq_sel_fmap_bb_field_info
-},
-{"TRQ_SEL_FMAP_BC", 0x70c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bc_field_info),
-	trq_sel_fmap_bc_field_info
-},
-{"TRQ_SEL_FMAP_BD", 0x710,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bd_field_info),
-	trq_sel_fmap_bd_field_info
-},
-{"TRQ_SEL_FMAP_BE", 0x714,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_be_field_info),
-	trq_sel_fmap_be_field_info
-},
-{"TRQ_SEL_FMAP_BF", 0x718,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_bf_field_info),
-	trq_sel_fmap_bf_field_info
-},
-{"TRQ_SEL_FMAP_C0", 0x71c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c0_field_info),
-	trq_sel_fmap_c0_field_info
-},
-{"TRQ_SEL_FMAP_C1", 0x720,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c1_field_info),
-	trq_sel_fmap_c1_field_info
-},
-{"TRQ_SEL_FMAP_C2", 0x734,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c2_field_info),
-	trq_sel_fmap_c2_field_info
-},
-{"TRQ_SEL_FMAP_C3", 0x748,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c3_field_info),
-	trq_sel_fmap_c3_field_info
-},
-{"TRQ_SEL_FMAP_C4", 0x74c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c4_field_info),
-	trq_sel_fmap_c4_field_info
-},
-{"TRQ_SEL_FMAP_C5", 0x750,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c5_field_info),
-	trq_sel_fmap_c5_field_info
-},
-{"TRQ_SEL_FMAP_C6", 0x754,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c6_field_info),
-	trq_sel_fmap_c6_field_info
-},
-{"TRQ_SEL_FMAP_C7", 0x758,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c7_field_info),
-	trq_sel_fmap_c7_field_info
-},
-{"TRQ_SEL_FMAP_C8", 0x75c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c8_field_info),
-	trq_sel_fmap_c8_field_info
-},
-{"TRQ_SEL_FMAP_C9", 0x760,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_c9_field_info),
-	trq_sel_fmap_c9_field_info
-},
-{"TRQ_SEL_FMAP_CA", 0x764,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ca_field_info),
-	trq_sel_fmap_ca_field_info
-},
-{"TRQ_SEL_FMAP_CB", 0x768,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cb_field_info),
-	trq_sel_fmap_cb_field_info
-},
-{"TRQ_SEL_FMAP_CC", 0x76c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cc_field_info),
-	trq_sel_fmap_cc_field_info
-},
-{"TRQ_SEL_FMAP_CD", 0x770,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cd_field_info),
-	trq_sel_fmap_cd_field_info
-},
-{"TRQ_SEL_FMAP_CE", 0x774,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ce_field_info),
-	trq_sel_fmap_ce_field_info
-},
-{"TRQ_SEL_FMAP_CF", 0x778,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_cf_field_info),
-	trq_sel_fmap_cf_field_info
-},
-{"TRQ_SEL_FMAP_D0", 0x77c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d0_field_info),
-	trq_sel_fmap_d0_field_info
-},
-{"TRQ_SEL_FMAP_D1", 0x780,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d1_field_info),
-	trq_sel_fmap_d1_field_info
-},
-{"TRQ_SEL_FMAP_D2", 0x784,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d2_field_info),
-	trq_sel_fmap_d2_field_info
-},
-{"TRQ_SEL_FMAP_D3", 0x788,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d3_field_info),
-	trq_sel_fmap_d3_field_info
-},
-{"TRQ_SEL_FMAP_D4", 0x78c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d4_field_info),
-	trq_sel_fmap_d4_field_info
-},
-{"TRQ_SEL_FMAP_D5", 0x790,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d5_field_info),
-	trq_sel_fmap_d5_field_info
-},
-{"TRQ_SEL_FMAP_D6", 0x794,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d6_field_info),
-	trq_sel_fmap_d6_field_info
-},
-{"TRQ_SEL_FMAP_D7", 0x798,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d7_field_info),
-	trq_sel_fmap_d7_field_info
-},
-{"TRQ_SEL_FMAP_D8", 0x79c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d8_field_info),
-	trq_sel_fmap_d8_field_info
-},
-{"TRQ_SEL_FMAP_D9", 0x7a0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_d9_field_info),
-	trq_sel_fmap_d9_field_info
-},
-{"TRQ_SEL_FMAP_DA", 0x7a4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_da_field_info),
-	trq_sel_fmap_da_field_info
-},
-{"TRQ_SEL_FMAP_DB", 0x7a8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_db_field_info),
-	trq_sel_fmap_db_field_info
-},
-{"TRQ_SEL_FMAP_DC", 0x7ac,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dc_field_info),
-	trq_sel_fmap_dc_field_info
-},
-{"TRQ_SEL_FMAP_DD", 0x7b0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_dd_field_info),
-	trq_sel_fmap_dd_field_info
-},
-{"TRQ_SEL_FMAP_DE", 0x7b4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_de_field_info),
-	trq_sel_fmap_de_field_info
-},
-{"TRQ_SEL_FMAP_DF", 0x7b8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_df_field_info),
-	trq_sel_fmap_df_field_info
-},
-{"TRQ_SEL_FMAP_E0", 0x7bc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e0_field_info),
-	trq_sel_fmap_e0_field_info
-},
-{"TRQ_SEL_FMAP_E1", 0x7c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e1_field_info),
-	trq_sel_fmap_e1_field_info
-},
-{"TRQ_SEL_FMAP_E2", 0x7c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e2_field_info),
-	trq_sel_fmap_e2_field_info
-},
-{"TRQ_SEL_FMAP_E3", 0x7c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e3_field_info),
-	trq_sel_fmap_e3_field_info
-},
-{"TRQ_SEL_FMAP_E4", 0x7cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e4_field_info),
-	trq_sel_fmap_e4_field_info
-},
-{"TRQ_SEL_FMAP_E5", 0x7d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e5_field_info),
-	trq_sel_fmap_e5_field_info
-},
-{"TRQ_SEL_FMAP_E6", 0x7d4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e6_field_info),
-	trq_sel_fmap_e6_field_info
-},
-{"TRQ_SEL_FMAP_E7", 0x7d8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e7_field_info),
-	trq_sel_fmap_e7_field_info
-},
-{"TRQ_SEL_FMAP_E8", 0x7dc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e8_field_info),
-	trq_sel_fmap_e8_field_info
-},
-{"TRQ_SEL_FMAP_E9", 0x7e0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_e9_field_info),
-	trq_sel_fmap_e9_field_info
-},
-{"TRQ_SEL_FMAP_EA", 0x7e4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ea_field_info),
-	trq_sel_fmap_ea_field_info
-},
-{"TRQ_SEL_FMAP_EB", 0x7e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_eb_field_info),
-	trq_sel_fmap_eb_field_info
-},
-{"TRQ_SEL_FMAP_EC", 0x7ec,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ec_field_info),
-	trq_sel_fmap_ec_field_info
-},
-{"TRQ_SEL_FMAP_ED", 0x7f0,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ed_field_info),
-	trq_sel_fmap_ed_field_info
-},
-{"TRQ_SEL_FMAP_EE", 0x7f4,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ee_field_info),
-	trq_sel_fmap_ee_field_info
-},
-{"TRQ_SEL_FMAP_EF", 0x7f8,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_ef_field_info),
-	trq_sel_fmap_ef_field_info
-},
-{"TRQ_SEL_FMAP_F0", 0x7fc,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(trq_sel_fmap_f0_field_info),
-	trq_sel_fmap_f0_field_info
-},
-{"IND_CTXT_DATA_3", 0x804,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_3_field_info),
-	ind_ctxt_data_3_field_info
-},
-{"IND_CTXT_DATA_2", 0x808,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_2_field_info),
-	ind_ctxt_data_2_field_info
-},
-{"IND_CTXT_DATA_1", 0x80c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_1_field_info),
-	ind_ctxt_data_1_field_info
-},
-{"IND_CTXT_DATA_0", 0x810,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_data_0_field_info),
-	ind_ctxt_data_0_field_info
-},
-{"IND_CTXT3", 0x814,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt3_field_info),
-	ind_ctxt3_field_info
-},
-{"IND_CTXT2", 0x818,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt2_field_info),
-	ind_ctxt2_field_info
-},
-{"IND_CTXT1", 0x81c,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt1_field_info),
-	ind_ctxt1_field_info
-},
-{"IND_CTXT0", 0x820,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt0_field_info),
-	ind_ctxt0_field_info
-},
-{"IND_CTXT_CMD", 0x824,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(ind_ctxt_cmd_field_info),
-	ind_ctxt_cmd_field_info
-},
-{"C2H_TIMER_CNT_1", 0xa00,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_1_field_info),
-	c2h_timer_cnt_1_field_info
-},
-{"C2H_TIMER_CNT_2", 0xa04,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_2_field_info),
-	c2h_timer_cnt_2_field_info
-},
-{"C2H_TIMER_CNT_3", 0xa08,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_3_field_info),
-	c2h_timer_cnt_3_field_info
-},
-{"C2H_TIMER_CNT_4", 0xa0c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_4_field_info),
-	c2h_timer_cnt_4_field_info
-},
-{"C2H_TIMER_CNT_5", 0xa10,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_5_field_info),
-	c2h_timer_cnt_5_field_info
-},
-{"C2H_TIMER_CNT_6", 0xa14,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_6_field_info),
-	c2h_timer_cnt_6_field_info
-},
-{"C2H_TIMER_CNT_7", 0xa18,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_7_field_info),
-	c2h_timer_cnt_7_field_info
-},
-{"C2H_TIMER_CNT_8", 0xa1c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_8_field_info),
-	c2h_timer_cnt_8_field_info
-},
-{"C2H_TIMER_CNT_9", 0xa20,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_9_field_info),
-	c2h_timer_cnt_9_field_info
-},
-{"C2H_TIMER_CNT_A", 0xa24,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_a_field_info),
-	c2h_timer_cnt_a_field_info
-},
-{"C2H_TIMER_CNT_B", 0xa28,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_b_field_info),
-	c2h_timer_cnt_b_field_info
-},
-{"C2H_TIMER_CNT_C", 0xa2c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_c_field_info),
-	c2h_timer_cnt_c_field_info
-},
-{"C2H_TIMER_CNT_D", 0xa30,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_d_field_info),
-	c2h_timer_cnt_d_field_info
-},
-{"C2H_TIMER_CNT_E", 0xa34,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_e_field_info),
-	c2h_timer_cnt_e_field_info
-},
-{"C2H_TIMER_CNT_F", 0xa38,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_f_field_info),
-	c2h_timer_cnt_f_field_info
-},
-{"C2H_TIMER_CNT_10", 0xa3c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_timer_cnt_10_field_info),
-	c2h_timer_cnt_10_field_info
-},
-{"C2H_CNT_TH_1", 0xa40,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_1_field_info),
-	c2h_cnt_th_1_field_info
-},
-{"C2H_CNT_TH_2", 0xa44,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_2_field_info),
-	c2h_cnt_th_2_field_info
-},
-{"C2H_CNT_TH_3", 0xa48,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_3_field_info),
-	c2h_cnt_th_3_field_info
-},
-{"C2H_CNT_TH_4", 0xa4c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_4_field_info),
-	c2h_cnt_th_4_field_info
-},
-{"C2H_CNT_TH_5", 0xa50,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_5_field_info),
-	c2h_cnt_th_5_field_info
-},
-{"C2H_CNT_TH_6", 0xa54,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_6_field_info),
-	c2h_cnt_th_6_field_info
-},
-{"C2H_CNT_TH_7", 0xa58,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_7_field_info),
-	c2h_cnt_th_7_field_info
-},
-{"C2H_CNT_TH_8", 0xa5c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_8_field_info),
-	c2h_cnt_th_8_field_info
-},
-{"C2H_CNT_TH_9", 0xa60,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_9_field_info),
-	c2h_cnt_th_9_field_info
-},
-{"C2H_CNT_TH_A", 0xa64,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_a_field_info),
-	c2h_cnt_th_a_field_info
-},
-{"C2H_CNT_TH_B", 0xa68,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_b_field_info),
-	c2h_cnt_th_b_field_info
-},
-{"C2H_CNT_TH_C", 0xa6c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_c_field_info),
-	c2h_cnt_th_c_field_info
-},
-{"C2H_CNT_TH_D", 0xa70,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_d_field_info),
-	c2h_cnt_th_d_field_info
-},
-{"C2H_CNT_TH_E", 0xa74,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_e_field_info),
-	c2h_cnt_th_e_field_info
-},
-{"C2H_CNT_TH_F", 0xa78,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_f_field_info),
-	c2h_cnt_th_f_field_info
-},
-{"C2H_CNT_TH_10", 0xa7c,
-	1, 0, 0, 0,
-	0, QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_cnt_th_10_field_info),
-	c2h_cnt_th_10_field_info
-},
-{"C2H_QID2VEC_MAP_QID", 0xa80,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_qid_field_info),
-	c2h_qid2vec_map_qid_field_info
-},
-{"C2H_QID2VEC_MAP", 0xa84,
-	1, 0, 0, 0,
-	0, QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_qid2vec_map_field_info),
-	c2h_qid2vec_map_field_info
-},
-{"C2H_STAT_S_AXIS_C2H_ACCEPTED", 0xa88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_c2h_accepted_field_info),
-	c2h_stat_s_axis_c2h_accepted_field_info
-},
-{"C2H_STAT_S_AXIS_WRB_ACCEPTED", 0xa8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_s_axis_wrb_accepted_field_info),
-	c2h_stat_s_axis_wrb_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_PKT_ACCEPTED", 0xa90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_pkt_accepted_field_info),
-	c2h_stat_desc_rsp_pkt_accepted_field_info
-},
-{"C2H_STAT_AXIS_PKG_CMP", 0xa94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_axis_pkg_cmp_field_info),
-	c2h_stat_axis_pkg_cmp_field_info
-},
-{"C2H_STAT_DESC_RSP_ACCEPTED", 0xa98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_accepted_field_info),
-	c2h_stat_desc_rsp_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_CMP", 0xa9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_rsp_cmp_field_info),
-	c2h_stat_desc_rsp_cmp_field_info
-},
-{"C2H_STAT_WRQ_OUT", 0xaa0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wrq_out_field_info),
-	c2h_stat_wrq_out_field_info
-},
-{"C2H_STAT_WPL_REN_ACCEPTED", 0xaa4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wpl_ren_accepted_field_info),
-	c2h_stat_wpl_ren_accepted_field_info
-},
-{"C2H_STAT_TOTAL_WRQ_LEN", 0xaa8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wrq_len_field_info),
-	c2h_stat_total_wrq_len_field_info
-},
-{"C2H_STAT_TOTAL_WPL_LEN", 0xaac,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_total_wpl_len_field_info),
-	c2h_stat_total_wpl_len_field_info
-},
-{"C2H_BUF_SZ_0", 0xab0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_0_field_info),
-	c2h_buf_sz_0_field_info
-},
-{"C2H_BUF_SZ_1", 0xab4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_1_field_info),
-	c2h_buf_sz_1_field_info
-},
-{"C2H_BUF_SZ_2", 0xab8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_2_field_info),
-	c2h_buf_sz_2_field_info
-},
-{"C2H_BUF_SZ_3", 0xabc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_3_field_info),
-	c2h_buf_sz_3_field_info
-},
-{"C2H_BUF_SZ_4", 0xac0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_4_field_info),
-	c2h_buf_sz_4_field_info
-},
-{"C2H_BUF_SZ_5", 0xac4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_5_field_info),
-	c2h_buf_sz_5_field_info
-},
-{"C2H_BUF_SZ_7", 0xac8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_7_field_info),
-	c2h_buf_sz_7_field_info
-},
-{"C2H_BUF_SZ_8", 0xacc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_8_field_info),
-	c2h_buf_sz_8_field_info
-},
-{"C2H_BUF_SZ_9", 0xad0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_9_field_info),
-	c2h_buf_sz_9_field_info
-},
-{"C2H_BUF_SZ_10", 0xad4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_10_field_info),
-	c2h_buf_sz_10_field_info
-},
-{"C2H_BUF_SZ_11", 0xad8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_11_field_info),
-	c2h_buf_sz_11_field_info
-},
-{"C2H_BUF_SZ_12", 0xae0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_12_field_info),
-	c2h_buf_sz_12_field_info
-},
-{"C2H_BUF_SZ_13", 0xae4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_13_field_info),
-	c2h_buf_sz_13_field_info
-},
-{"C2H_BUF_SZ_14", 0xae8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_14_field_info),
-	c2h_buf_sz_14_field_info
-},
-{"C2H_BUF_SZ_15", 0xaec,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_buf_sz_15_field_info),
-	c2h_buf_sz_15_field_info
-},
-{"C2H_ERR_STAT", 0xaf0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_stat_field_info),
-	c2h_err_stat_field_info
-},
-{"C2H_ERR_MASK", 0xaf4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_err_mask_field_info),
-	c2h_err_mask_field_info
-},
-{"C2H_FATAL_ERR_STAT", 0xaf8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_stat_field_info),
-	c2h_fatal_err_stat_field_info
-},
-{"C2H_FATAL_ERR_MASK", 0xafc,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_mask_field_info),
-	c2h_fatal_err_mask_field_info
-},
-{"C2H_FATAL_ERR_ENABLE", 0xb00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_fatal_err_enable_field_info),
-	c2h_fatal_err_enable_field_info
-},
-{"GLBL_ERR_INT", 0xb04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(glbl_err_int_field_info),
-	glbl_err_int_field_info
-},
-{"C2H_PFCH_CFG", 0xb08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pfch_cfg_field_info),
-	c2h_pfch_cfg_field_info
-},
-{"C2H_INT_TIMER_TICK", 0xb0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_timer_tick_field_info),
-	c2h_int_timer_tick_field_info
-},
-{"C2H_STAT_DESC_RSP_DROP_ACCEPTED", 0xb10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_drop_accepted_field_info),
-	c2h_stat_desc_rsp_drop_accepted_field_info
-},
-{"C2H_STAT_DESC_RSP_ERR_ACCEPTED", 0xb14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_stat_desc_rsp_err_accepted_field_info),
-	c2h_stat_desc_rsp_err_accepted_field_info
-},
-{"C2H_STAT_DESC_REQ", 0xb18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_desc_req_field_info),
-	c2h_stat_desc_req_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_0", 0xb1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_0_field_info),
-	c2h_stat_dbg_dma_eng_0_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_1", 0xb20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_1_field_info),
-	c2h_stat_dbg_dma_eng_1_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_2", 0xb24,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_2_field_info),
-	c2h_stat_dbg_dma_eng_2_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_3", 0xb28,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_3_field_info),
-	c2h_stat_dbg_dma_eng_3_field_info
-},
-{"C2H_DBG_PFCH_ERR_CTXT", 0xb2c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_err_ctxt_field_info),
-	c2h_dbg_pfch_err_ctxt_field_info
-},
-{"C2H_FIRST_ERR_QID", 0xb30,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_first_err_qid_field_info),
-	c2h_first_err_qid_field_info
-},
-{"STAT_NUM_WRB_IN", 0xb34,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_in_field_info),
-	stat_num_wrb_in_field_info
-},
-{"STAT_NUM_WRB_OUT", 0xb38,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_out_field_info),
-	stat_num_wrb_out_field_info
-},
-{"STAT_NUM_WRB_DRP", 0xb3c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_wrb_drp_field_info),
-	stat_num_wrb_drp_field_info
-},
-{"STAT_NUM_STAT_DESC_OUT", 0xb40,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_stat_desc_out_field_info),
-	stat_num_stat_desc_out_field_info
-},
-{"STAT_NUM_DSC_CRDT_SENT", 0xb44,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_dsc_crdt_sent_field_info),
-	stat_num_dsc_crdt_sent_field_info
-},
-{"STAT_NUM_FCH_DSC_RCVD", 0xb48,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_fch_dsc_rcvd_field_info),
-	stat_num_fch_dsc_rcvd_field_info
-},
-{"STAT_NUM_BYP_DSC_RCVD", 0xb4c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(stat_num_byp_dsc_rcvd_field_info),
-	stat_num_byp_dsc_rcvd_field_info
-},
-{"C2H_WRB_COAL_CFG", 0xb50,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_wrb_coal_cfg_field_info),
-	c2h_wrb_coal_cfg_field_info
-},
-{"C2H_INTR_H2C_REQ", 0xb54,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_h2c_req_field_info),
-	c2h_intr_h2c_req_field_info
-},
-{"C2H_INTR_C2H_MM_REQ", 0xb58,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_mm_req_field_info),
-	c2h_intr_c2h_mm_req_field_info
-},
-{"C2H_INTR_ERR_INT_REQ", 0xb5c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_err_int_req_field_info),
-	c2h_intr_err_int_req_field_info
-},
-{"C2H_INTR_C2H_ST_REQ", 0xb60,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_req_field_info),
-	c2h_intr_c2h_st_req_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK", 0xb64,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_ack_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_ack_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL", 0xb68,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_fail_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_fail_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX", 0xb6c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info),
-	c2h_intr_h2c_err_c2h_mm_msix_no_msix_field_info
-},
-{"C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL", 0xb70,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info),
-	c2h_intr_h2c_err_c2h_mm_ctxt_inval_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_ACK", 0xb74,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_ack_field_info),
-	c2h_intr_c2h_st_msix_ack_field_info
-},
-{"C2H_INTR_C2H_ST_MSIX_FAIL", 0xb78,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(c2h_intr_c2h_st_msix_fail_field_info),
-	c2h_intr_c2h_st_msix_fail_field_info
-},
-{"C2H_INTR_C2H_ST_NO_MSIX", 0xb7c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_no_msix_field_info),
-	c2h_intr_c2h_st_no_msix_field_info
-},
-{"C2H_INTR_C2H_ST_CTXT_INVAL", 0xb80,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_intr_c2h_st_ctxt_inval_field_info),
-	c2h_intr_c2h_st_ctxt_inval_field_info
-},
-{"C2H_STAT_WR_CMP", 0xb84,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_wr_cmp_field_info),
-	c2h_stat_wr_cmp_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_4", 0xb88,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_4_field_info),
-	c2h_stat_dbg_dma_eng_4_field_info
-},
-{"C2H_STAT_DBG_DMA_ENG_5", 0xb8c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_dbg_dma_eng_5_field_info),
-	c2h_stat_dbg_dma_eng_5_field_info
-},
-{"C2H_DBG_PFCH_QID", 0xb90,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_qid_field_info),
-	c2h_dbg_pfch_qid_field_info
-},
-{"C2H_DBG_PFCH", 0xb94,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_dbg_pfch_field_info),
-	c2h_dbg_pfch_field_info
-},
-{"C2H_INT_DBG", 0xb98,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_int_dbg_field_info),
-	c2h_int_dbg_field_info
-},
-{"C2H_STAT_IMM_ACCEPTED", 0xb9c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_imm_accepted_field_info),
-	c2h_stat_imm_accepted_field_info
-},
-{"C2H_STAT_MARKER_ACCEPTED", 0xba0,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_marker_accepted_field_info),
-	c2h_stat_marker_accepted_field_info
-},
-{"C2H_STAT_DISABLE_CMP_ACCEPTED", 0xba4,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_stat_disable_cmp_accepted_field_info),
-	c2h_stat_disable_cmp_accepted_field_info
-},
-{"C2H_PLD_FIFO_CRDT_CNT", 0xba8,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_pld_fifo_crdt_cnt_field_info),
-	c2h_pld_fifo_crdt_cnt_field_info
-},
-{"H2C_ERR_STAT", 0xe00,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_stat_field_info),
-	h2c_err_stat_field_info
-},
-{"H2C_ERR_MASK", 0xe04,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_err_mask_field_info),
-	h2c_err_mask_field_info
-},
-{"H2C_FIRST_ERR_QID", 0xe08,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_first_err_qid_field_info),
-	h2c_first_err_qid_field_info
-},
-{"H2C_DBG_REG0", 0xe0c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg0_field_info),
-	h2c_dbg_reg0_field_info
-},
-{"H2C_DBG_REG1", 0xe10,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg1_field_info),
-	h2c_dbg_reg1_field_info
-},
-{"H2C_DBG_REG2", 0xe14,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg2_field_info),
-	h2c_dbg_reg2_field_info
-},
-{"H2C_DBG_REG3", 0xe18,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg3_field_info),
-	h2c_dbg_reg3_field_info
-},
-{"H2C_DBG_REG4", 0xe1c,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_dbg_reg4_field_info),
-	h2c_dbg_reg4_field_info
-},
-{"H2C_FATAL_ERR_EN", 0xe20,
-	1, 0, 0, 0,
-	0, QDMA_ST_MODE, QDMA_REG_READ_PF_VF,
-	ARRAY_SIZE(h2c_fatal_err_en_field_info),
-	h2c_fatal_err_en_field_info
-},
-{"C2H_CHANNEL_CTL", 0x1004,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_field_info),
-	c2h_channel_ctl_field_info
-},
-{"C2H_CHANNEL_CTL_1", 0x1008,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_ctl_1_field_info),
-	c2h_channel_ctl_1_field_info
-},
-{"C2H_MM_STATUS", 0x1040,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_status_field_info),
-	c2h_mm_status_field_info
-},
-{"C2H_CHANNEL_CMPL_DESC_CNT", 0x1048,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_channel_cmpl_desc_cnt_field_info),
-	c2h_channel_cmpl_desc_cnt_field_info
-},
-{"C2H_MM_ERR_CODE_ENABLE_MASK", 0x1054,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_enable_mask_field_info),
-	c2h_mm_err_code_enable_mask_field_info
-},
-{"C2H_MM_ERR_CODE", 0x1058,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_code_field_info),
-	c2h_mm_err_code_field_info
-},
-{"C2H_MM_ERR_INFO", 0x105c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_err_info_field_info),
-	c2h_mm_err_info_field_info
-},
-{"C2H_MM_PERF_MON_CTL", 0x10c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_ctl_field_info),
-	c2h_mm_perf_mon_ctl_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT0", 0x10c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt0_field_info),
-	c2h_mm_perf_mon_cycle_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_CYCLE_CNT1", 0x10c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_cycle_cnt1_field_info),
-	c2h_mm_perf_mon_cycle_cnt1_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT0", 0x10cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt0_field_info),
-	c2h_mm_perf_mon_data_cnt0_field_info
-},
-{"C2H_MM_PERF_MON_DATA_CNT1", 0x10d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_perf_mon_data_cnt1_field_info),
-	c2h_mm_perf_mon_data_cnt1_field_info
-},
-{"C2H_MM_DBG", 0x10e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(c2h_mm_dbg_field_info),
-	c2h_mm_dbg_field_info
-},
-{"H2C_CHANNEL_CTL", 0x1204,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_field_info),
-	h2c_channel_ctl_field_info
-},
-{"H2C_CHANNEL_CTL_1", 0x1208,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_1_field_info),
-	h2c_channel_ctl_1_field_info
-},
-{"H2C_CHANNEL_CTL_2", 0x120c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_ctl_2_field_info),
-	h2c_channel_ctl_2_field_info
-},
-{"H2C_MM_STATUS", 0x1240,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_status_field_info),
-	h2c_mm_status_field_info
-},
-{"H2C_CHANNEL_CMPL_DESC_CNT", 0x1248,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_channel_cmpl_desc_cnt_field_info),
-	h2c_channel_cmpl_desc_cnt_field_info
-},
-{"H2C_MM_ERR_CODE_ENABLE_MASK", 0x1254,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_enable_mask_field_info),
-	h2c_mm_err_code_enable_mask_field_info
-},
-{"H2C_MM_ERR_CODE", 0x1258,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_code_field_info),
-	h2c_mm_err_code_field_info
-},
-{"H2C_MM_ERR_INFO", 0x125c,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_err_info_field_info),
-	h2c_mm_err_info_field_info
-},
-{"H2C_MM_PERF_MON_CTL", 0x12c0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_ctl_field_info),
-	h2c_mm_perf_mon_ctl_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT0", 0x12c4,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt0_field_info),
-	h2c_mm_perf_mon_cycle_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_CYCLE_CNT1", 0x12c8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_cycle_cnt1_field_info),
-	h2c_mm_perf_mon_cycle_cnt1_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT0", 0x12cc,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt0_field_info),
-	h2c_mm_perf_mon_data_cnt0_field_info
-},
-{"H2C_MM_PERF_MON_DATA_CNT1", 0x12d0,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_perf_mon_data_cnt1_field_info),
-	h2c_mm_perf_mon_data_cnt1_field_info
-},
-{"H2C_MM_DBG", 0x12e8,
-	1, 0, 0, 0,
-	0, QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(h2c_mm_dbg_field_info),
-	h2c_mm_dbg_field_info
-},
-{"FUNC_STATUS_REG", 0x2400,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_status_reg_field_info),
-	func_status_reg_field_info
-},
-{"FUNC_CMD_REG", 0x2404,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_cmd_reg_field_info),
-	func_cmd_reg_field_info
-},
-{"FUNC_INTERRUPT_VECTOR_REG", 0x2408,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_vector_reg_field_info),
-	func_interrupt_vector_reg_field_info
-},
-{"TARGET_FUNC_REG", 0x240c,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(target_func_reg_field_info),
-	target_func_reg_field_info
-},
-{"FUNC_INTERRUPT_CTL_REG", 0x2410,
-	1, 0, 0, 0,
-	0, QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY,
-	ARRAY_SIZE(func_interrupt_ctl_reg_field_info),
-	func_interrupt_ctl_reg_field_info
-},
-
-};
-
-uint32_t qdma_s80_hard_config_num_regs_get(void)
-{
-	return (sizeof(qdma_s80_hard_config_regs)/
-		sizeof(qdma_s80_hard_config_regs[0]));
-}
-
-struct xreg_info *qdma_s80_hard_config_regs_get(void)
-{
-	return qdma_s80_hard_config_regs;
-}
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.c b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.c
deleted file mode 100644
index 01b389e..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.c
+++ /dev/null
@@ -1,6151 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-
-#include "qdma_soft_access.h"
-#include "qdma_soft_reg.h"
-#include "qdma_reg_dump.h"
-
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_soft_access.tmh"
-#endif
-
-/** QDMA Context array size */
-#define QDMA_FMAP_NUM_WORDS				2
-#define QDMA_SW_CONTEXT_NUM_WORDS			5
-#define QDMA_PFETCH_CONTEXT_NUM_WORDS			2
-#define QDMA_CMPT_CONTEXT_NUM_WORDS			5
-#define QDMA_HW_CONTEXT_NUM_WORDS			2
-#define QDMA_CR_CONTEXT_NUM_WORDS			1
-#define QDMA_IND_INTR_CONTEXT_NUM_WORDS			3
-#define QDMA_REG_IND_CTXT_REG_COUNT			8
-
-
-#define QDMA_REG_GROUP_1_START_ADDR	0x000
-#define QDMA_REG_GROUP_2_START_ADDR	0x400
-#define QDMA_REG_GROUP_3_START_ADDR	0xB00
-#define QDMA_REG_GROUP_4_START_ADDR	0x1014
-
-static void qdma_hw_st_h2c_err_process(void *dev_hndl);
-static void qdma_hw_st_c2h_err_process(void *dev_hndl);
-static void qdma_hw_desc_err_process(void *dev_hndl);
-static void qdma_hw_trq_err_process(void *dev_hndl);
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl);
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl);
-
-static struct xreg_info qdma_config_regs[] = {
-
-	/* QDMA_TRQ_SEL_GLBL1 (0x00000) */
-	{"CFG_BLOCK_ID",
-		0x00, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_BUSDEV",
-		0x04, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_PL_SZ",
-		0x08, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_MAX_RDRQ_SZ",
-		0x0C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SYS_ID",
-		0x10, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MSI_EN",
-		0x14, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_DATA_WIDTH",
-		0x18, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_PCIE_CTRL",
-		0x1C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_PL_SZ",
-		0x40, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_AXI_USR_MAX_RDRQ_SZ",
-		0x44, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_MISC_CTRL",
-		0x4C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"CFG_SCRATCH_REG",
-		0x80, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_MSK_A",
-		0xF0, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_SBE_STS_A",
-		0xF4, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_MSK_A",
-		0xF8, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_RAM_DBE_STS_A",
-		0xFC, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL2 (0x00100) */
-	{"GLBL2_ID",
-		0x100, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_INT",
-		0x104, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_INT",
-		0x108, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_BL_EXT",
-		0x10C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PF_VF_BL_EXT",
-		0x110, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_INST",
-		0x114, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_QDMA",
-		0x118, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_CHNL_STRM",
-		0x11C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_QDMA_CAP",
-		0x120, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_PASID_CAP",
-		0x128, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_FUNC_RET",
-		0x12C, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_SYS_ID",
-		0x130, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_MISC_CAP",
-		0x134, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_PCIE_RQ",
-		0x1B8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_WR",
-		0x1C0, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL2_DBG_AXIMM_RD",
-		0x1C8, 2, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_GLBL (0x00200) */
-	{"GLBL_RNGSZ",
-		0x204, 16, 1, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"GLBL_ERR_STAT",
-		0x248, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_MASK",
-		0x24C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_CFG",
-		0x250, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_STS",
-		0x254, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_MSK",
-		0x258, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG",
-		0x25C, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_STS",
-		0x264, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_MSK",
-		0x268, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_TRQ_ERR_LOG",
-		0x26C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_DBG_DAT",
-		0x270, 2,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_DSC_ERR_LOG2",
-		0x27C, 1,  0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_INTERRUPT_CFG",
-		0x288, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-
-	/* QDMA_TRQ_SEL_FMAP (0x00400 - 0x7FC) */
-	/* TODO: max 256, display 4 for now */
-	{"TRQ_SEL_FMAP",
-		0x400, 4, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_IND (0x00800) */
-	{"IND_CTXT_DATA",
-		0x804, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_MASK",
-		0x824, 8, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"IND_CTXT_CMD",
-		0x844, 1, 0, 0, 0, 0,
-		QDMA_MM_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H (0x00A00) */
-	{"C2H_TIMER_CNT",
-	0xA00, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CNT_THRESH",
-	0xA40, 16, 0, 0, 0, 0,
-		QDMA_COMPLETION_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_S_AXIS_C2H_ACCEPTED",
-		0xA88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_S_AXIS_CMPT_ACCEPTED",
-		0xA8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_PKT_ACCEPTED",
-		0xA90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_AXIS_PKG_CMP",
-		0xA94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ACCEPTED",
-		0xA98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_CMP",
-		0xA9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WRQ_OUT",
-		0xAA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WPL_REN_ACCEPTED",
-		0xAA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WRQ_LEN",
-		0xAA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_TOTAL_WPL_LEN",
-		0xAAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_BUF_SZ",
-		0xAB0, 16, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_ERR_STAT",
-		0xAF0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_ERR_MASK",
-		0xAF4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_STAT",
-		0xAF8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_MASK",
-		0xAFC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_FATAL_ERR_ENABLE",
-		0xB00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"GLBL_ERR_INT",
-		0xB04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_PFCH_CFG",
-		0xB08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_TIMER_TICK",
-		0xB0C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DESC_RSP_DROP_ACCEPTED",
-		0xB10, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_RSP_ERR_ACCEPTED",
-		0xB14, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_STAT_DESC_REQ",
-		0xB18, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG",
-		0xB1C, 4, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_ERR_CTXT",
-		0xB2C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_FIRST_ERR_QID",
-		0xB30, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"STAT_NUM_CMPT_IN",
-		0xB34, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_OUT",
-		0xB38, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_CMPT_DRP",
-		0xB3C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_STAT_DESC_OUT",
-		0xB40, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_DSC_CRDT_SENT",
-		0xB44, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_FCH_DSC_RCVD",
-		0xB48, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"STAT_NUM_BYP_DSC_RCVD",
-		0xB4C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_CFG",
-		0xB50, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_REQ",
-		0xB54, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_MM_REQ",
-		0xB58, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_ERR_INT_REQ",
-		0xB5C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_REQ",
-		0xB60, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_ACK",
-		0xB64, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_MSIX_FAIL",
-		0xB68, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_NO_MSIX",
-		0xB6C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_H2C_ERR_MM_CTXT_INVAL",
-		0xB70, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_ACK",
-		0xB74, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_MSIX_FAIL",
-		0xB78, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"C2H_INTR_C2H_ST_NO_MSIX",
-		0xB7C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_C2H_ST_CTXT_INVAL",
-		0xB80, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_WR_CMP",
-		0xB84, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_4",
-		0xB88, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DEBUG_DMA_ENG_5",
-		0xB8C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH_QID",
-		0xB90, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DBG_PFCH",
-		0xB94, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INT_DEBUG",
-		0xB98, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_IMM_ACCEPTED",
-		0xB9C, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_MARKER_ACCEPTED",
-		0xBA0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_STAT_DISABLE_CMP_ACCEPTED",
-		0xBA4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_C2H_PAYLOAD_FIFO_CRDT_CNT",
-		0xBA8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_REQ",
-		0xBAC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_INTR_DYN_MSIX",
-		0xBB0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_LEN_MISMATCH",
-		0xBB4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_DESC_RSP_LEN",
-		0xBB8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_QID_FIFO_LEN",
-		0xBBC, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_DROP_PAYLOAD_CNT",
-		0xBC0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"QDMA_C2H_CMPT_FORMAT",
-		0xBC4, 7, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CACHE_DEPTH",
-		0xBE0, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_CMPT_COAL_BUF_DEPTH",
-		0xBE4, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_PFCH_CRDT",
-		0xBE8, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C(0x00E00) Register Space*/
-	{"H2C_ERR_STAT",
-		0xE00, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_ERR_MASK",
-		0xE04, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_FIRST_ERR_QID",
-		0xE08, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_VF, 0, NULL},
-	{"H2C_DBG_REG",
-		0xE0C, 5, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_FATAL_ERR_EN",
-		0xE20, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_REQ_THROT",
-		0xE24, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_ALN_DBG_REG0",
-		0xE28, 1, 0, 0, 0, 0,
-		QDMA_ST_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_C2H_MM (0x1000) */
-	{"C2H_MM_CONTROL",
-		0x1004, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_STATUS",
-		0x1040, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_CMPL_DSC_CNT",
-		0x1048, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE_EN_MASK",
-		0x1054, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_CODE",
-		0x1058, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_ERR_INFO",
-		0x105C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CTRL",
-		0x10C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_CY_CNT",
-		0x10C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_PERF_MON_DATA_CNT",
-		0x10CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"C2H_MM_DBG_INFO",
-		0x10E8, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_TRQ_SEL_H2C_MM (0x1200)*/
-	{"H2C_MM_CONTROL",
-		0x1204, 3, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_STATUS",
-		0x1240, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_CMPL_DSC_CNT",
-		0x1248, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE_EN_MASK",
-		0x1254, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_CODE",
-		0x1258, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_ERR_INFO",
-		0x125C, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CTRL",
-		0x12C0, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_CY_CNT",
-		0x12C4, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_PERF_MON_DATA_CNT",
-		0x12CC, 2, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_DBG_INFO",
-		0x12E8, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"H2C_MM_REQ_THROT",
-		0x12EC, 1, 0, 0, 0, 0,
-		QDMA_MM_MODE, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	/* QDMA_PF_MAILBOX (0x2400) */
-	{"FUNC_STATUS",
-		0x2400, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_CMD",
-		 0x2404, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FUNC_INTR_VEC",
-		 0x2408, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"TARGET_FUNC",
-		 0x240C, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"INTR_CTRL",
-		 0x2410, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"PF_ACK",
-		 0x2420, 8, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"FLR_CTRL_STATUS",
-		 0x2500, 1, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_IN",
-		 0x2800, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-	{"MSG_OUT",
-		0x2C00, 32, 0, 0, 0, 0,
-		QDMA_MAILBOX, QDMA_REG_READ_PF_ONLY, 0, NULL},
-
-	{"", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL }
-};
-
-
-static struct qdma_hw_err_info qdma_err_info[QDMA_ERRS_ALL] = {
-	/* Descriptor errors */
-	{
-		QDMA_DSC_ERR_POISON,
-		"Poison error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_UR_CA,
-		"Unsupported request or completer aborted error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_UR_CA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_PARAM,
-		"Parameter mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_PARAM_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ADDR,
-		"Address mismatch error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ADDR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TAG,
-		"Unexpected tag error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TAG_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR,
-		"FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_TIMEOUT,
-		"Timed out error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DAT_POISON,
-		"Poison data error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DAT_POISON_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_FLR_CANCEL,
-		"Descriptor fetch cancelled due to FLR error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DMA,
-		"DMA engine error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DMA_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DSC,
-		"Invalid PIDX update error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DSC_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_RQ_CANCEL,
-		"Descriptor fetch cancelled due to disable register status error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_DBE,
-		"UNC_ERR_RAM_DBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_SBE,
-		"UNC_ERR_RAM_SBE error",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-	{
-		QDMA_DSC_ERR_ALL,
-		"All Descriptor errors",
-		QDMA_OFFSET_GLBL_DSC_ERR_MASK,
-		QDMA_OFFSET_GLBL_DSC_ERR_STAT,
-		QDMA_GLBL_DSC_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_DSC_MASK,
-		&qdma_hw_desc_err_process
-	},
-
-	/* TRQ errors */
-	{
-		QDMA_TRQ_ERR_UNMAPPED,
-		"Access targeted unmapped register space error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_QID_RANGE,
-		"Qid range error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_VF_ACCESS,
-		"Invalid VF access error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_TCP_TIMEOUT,
-		"Timeout on request error",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-	{
-		QDMA_TRQ_ERR_ALL,
-		"All TRQ errors",
-		QDMA_OFFSET_GLBL_TRQ_ERR_MASK,
-		QDMA_OFFSET_GLBL_TRQ_ERR_STAT,
-		QDMA_GLBL_TRQ_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_TRQ_MASK,
-		&qdma_hw_trq_err_process
-	},
-
-	/* C2H Errors*/
-	{
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		"MTY mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_LEN_MISMATCH,
-		"Packet length mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_QID_MISMATCH,
-		"Qid mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-		"Descriptor error bit set",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_DESC_RSP_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-		"Data parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-		"MSI got a fail response error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_MSI_INT_FAIL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-		"Descriptor count error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ERR_DESC_CNT_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-		"Port id in packet and pfetch ctxt mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-		"Port id in packet and bypass interface mismatch error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-		"Writeback on invalid queue error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-		"Completion queue gets full error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-		"Bad CIDX update by the software error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-		"C2H completion Parity error",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_C2H_ERR_ALL,
-		"All C2h errors",
-		QDMA_OFFSET_C2H_ERR_MASK,
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_C2H_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* C2H fatal errors */
-	{
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		"Fatal MTY mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-		"Fatal Len mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_MISMATCH,
-		"Fatal Qid mismatch error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-		"RAM double bit fatal error",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-	{
-		QDMA_ST_FATAL_ERR_ALL,
-		"All fatal errors",
-		QDMA_OFFSET_C2H_FATAL_ERR_MASK,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_C2H_FATAL_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_C2H_MASK,
-		&qdma_hw_st_c2h_err_process
-	},
-
-	/* H2C St errors */
-	{
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		"Zero length descriptor error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ZERO_LEN_DESC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_CSI_MOP,
-		"Non EOP descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_CSI_MOP_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_NO_DMA_DSC,
-		"No DMA descriptor received error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_NO_DMA_DSC_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_SBE,
-		"Single bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_SBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_DBE,
-		"Double bit error detected on H2C-ST data error",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_DBE_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-	{
-		QDMA_ST_H2C_ERR_ALL,
-		"All H2C errors",
-		QDMA_OFFSET_H2C_ERR_MASK,
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_H2C_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_ST_H2C_MASK,
-		&qdma_hw_st_h2c_err_process
-	},
-
-	/* SBE errors */
-	{
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_FUNC_MAP,
-		"Function map RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_H2C_PEND_FIFO,
-		"H2C ST pending fifo RAM single bit ECC error",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-	{
-		QDMA_SBE_ERR_ALL,
-		"All SBE errors",
-		QDMA_OFFSET_RAM_SBE_MASK,
-		QDMA_OFFSET_RAM_SBE_STAT,
-		QDMA_SBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_SBE_MASK,
-		&qdma_hw_ram_sbe_err_process
-	},
-
-
-	/* DBE Errors */
-	{
-		QDMA_DBE_ERR_MI_H2C0_DAT,
-		"H2C MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_MI_C2H0_DAT,
-		"C2H MM data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_MI_C2H0_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-		"Bridge master read double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-		"Bridge master write double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-		"Bridge slave read data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-		"Bridge slave write data buffer double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_FUNC_MAP,
-		"Function map RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_FUNC_MAP_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_HW_CTXT,
-		"Descriptor engine hardware context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_HW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CRD_RCV,
-		"Descriptor engine receive credit context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CRD_RCV_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_SW_CTXT,
-		"Descriptor engine software context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_SW_CTXT_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLI,
-		"Descriptor engine fetch completion information RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLI_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DSC_CPLD,
-		"Descriptor engine fetch completion data RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DSC_CPLD_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PASID_CTXT_RAM,
-		"PASID configuration RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PASID_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TIMER_FIFO_RAM,
-		"Timer fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-		"C2H ST payload RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_QID_FIFO_RAM,
-		"C2H ST QID FIFO RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_QID_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_TUSER_FIFO_RAM,
-		"C2H ST TUSER RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-		"Completion Coalescing RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_QID2VEC_RAM,
-		"Interrupt QID2VEC RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_INT_CTXT_RAM,
-		"Interrupt context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_INT_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-		"C2H ST descriptor request RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_CTXT_RAM,
-		"C2H ST prefetch RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_WRB_CTXT_RAM,
-		"C2H ST completion context RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_WRB_CTXT_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_PFCH_LL_RAM,
-		"C2H ST prefetch list RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_PFCH_LL_RAM_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_H2C_PEND_FIFO,
-		"H2C pending fifo RAM double bit ECC error",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_H2C_PEND_FIFO_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	},
-	{
-		QDMA_DBE_ERR_ALL,
-		"All DBE errors",
-		QDMA_OFFSET_RAM_DBE_MASK,
-		QDMA_OFFSET_RAM_DBE_STAT,
-		QDMA_DBE_ERR_ALL_MASK,
-		QDMA_GLBL_ERR_RAM_DBE_MASK,
-		&qdma_hw_ram_dbe_err_process
-	}
-};
-
-static int32_t all_hw_errs[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-
-	QDMA_DSC_ERR_ALL,
-	QDMA_TRQ_ERR_ALL,
-	QDMA_ST_C2H_ERR_ALL,
-	QDMA_ST_FATAL_ERR_ALL,
-	QDMA_ST_H2C_ERR_ALL,
-	QDMA_SBE_ERR_ALL,
-	QDMA_DBE_ERR_ALL
-};
-
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid);
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data);
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt);
-
-
-static struct qctx_entry sw_ctxt_entries[] = {
-	{"PIDX", 0},
-	{"IRQ Arm", 0},
-	{"Function Id", 0},
-	{"Queue Enable", 0},
-	{"Fetch Credit Enable", 0},
-	{"Write back/Intr Check", 0},
-	{"Write back/Intr Interval", 0},
-	{"Address Translation", 0},
-	{"Fetch Max", 0},
-	{"Ring Size", 0},
-	{"Descriptor Size", 0},
-	{"Bypass Enable", 0},
-	{"MM Channel", 0},
-	{"Writeback Enable", 0},
-	{"Interrupt Enable", 0},
-	{"Port Id", 0},
-	{"Interrupt No Last", 0},
-	{"Error", 0},
-	{"Writeback Error Sent", 0},
-	{"IRQ Request", 0},
-	{"Marker Disable", 0},
-	{"Is Memory Mapped", 0},
-	{"Descriptor Ring Base Addr (Low)", 0},
-	{"Descriptor Ring Base Addr (High)", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry hw_ctxt_entries[] = {
-	{"CIDX", 0},
-	{"Credits Consumed", 0},
-	{"Descriptors Pending", 0},
-	{"Queue Invalid No Desc Pending", 0},
-	{"Eviction Pending", 0},
-	{"Fetch Pending", 0},
-};
-
-static struct qctx_entry credit_ctxt_entries[] = {
-	{"Credit", 0},
-};
-
-static struct qctx_entry cmpt_ctxt_entries[] = {
-	{"Enable Status Desc Update", 0},
-	{"Enable Interrupt", 0},
-	{"Trigger Mode", 0},
-	{"Function Id", 0},
-	{"Counter Index", 0},
-	{"Timer Index", 0},
-	{"Interrupt State", 0},
-	{"Color", 0},
-	{"Ring Size", 0},
-	{"Base Address (Low)", 0},
-	{"Base Address (High)", 0},
-	{"Descriptor Size", 0},
-	{"PIDX", 0},
-	{"CIDX", 0},
-	{"Valid", 0},
-	{"Error", 0},
-	{"Trigger Pending", 0},
-	{"Timer Running", 0},
-	{"Full Update", 0},
-	{"Over Flow Check Disable", 0},
-	{"Address Translation", 0},
-	{"Interrupt Vector/Ring Index", 0},
-	{"Interrupt Aggregation", 0},
-};
-
-static struct qctx_entry c2h_pftch_ctxt_entries[] = {
-	{"Bypass", 0},
-	{"Buffer Size Index", 0},
-	{"Port Id", 0},
-	{"Error", 0},
-	{"Prefetch Enable", 0},
-	{"In Prefetch", 0},
-	{"Software Credit", 0},
-	{"Valid", 0},
-};
-
-static struct qctx_entry ind_intr_ctxt_entries[] = {
-	{"valid", 0},
-	{"vec", 0},
-	{"int_st", 0},
-	{"color", 0},
-	{"baddr_4k (Low)", 0},
-	{"baddr_4k (High)", 0},
-	{"page_size", 0},
-	{"pidx", 0},
-	{"at", 0},
-};
-
-uint32_t qdma_soft_reg_dump_buf_len(void)
-{
-	uint32_t length = ((sizeof(qdma_config_regs) /
-			sizeof(qdma_config_regs[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE;
-	return length;
-}
-
-uint32_t qdma_get_config_num_regs(void)
-{
-	return (sizeof(qdma_config_regs)/
-		sizeof(qdma_config_regs[0]));
-}
-
-struct xreg_info *qdma_get_config_regs(void)
-{
-	return qdma_config_regs;
-}
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen)
-{
-	uint32_t len = 0;
-	int rv = 0;
-
-	*buflen = 0;
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		len += (((sizeof(cmpt_ctxt_entries) /
-			sizeof(cmpt_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	} else {
-		len += (((sizeof(sw_ctxt_entries) /
-				sizeof(sw_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(hw_ctxt_entries) /
-			sizeof(hw_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		len += (((sizeof(credit_ctxt_entries) /
-			sizeof(credit_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			len += (((sizeof(cmpt_ctxt_entries) /
-				sizeof(cmpt_ctxt_entries[0])) + 1) *
-				REG_DUMP_SIZE_PER_LINE);
-
-			len += (((sizeof(c2h_pftch_ctxt_entries) /
-				sizeof(c2h_pftch_ctxt_entries[0]))
-				+ 1) * REG_DUMP_SIZE_PER_LINE);
-		}
-	}
-
-	*buflen = len;
-	return rv;
-}
-
-/*
- * qdma_acc_fill_sw_ctxt() - Helper function to fill sw context into structure
- *
- */
-static void qdma_fill_sw_ctxt(struct qdma_descq_sw_ctxt *sw_ctxt)
-{
-	sw_ctxt_entries[0].value = sw_ctxt->pidx;
-	sw_ctxt_entries[1].value = sw_ctxt->irq_arm;
-	sw_ctxt_entries[2].value = sw_ctxt->fnc_id;
-	sw_ctxt_entries[3].value = sw_ctxt->qen;
-	sw_ctxt_entries[4].value = sw_ctxt->frcd_en;
-	sw_ctxt_entries[5].value = sw_ctxt->wbi_chk;
-	sw_ctxt_entries[6].value = sw_ctxt->wbi_intvl_en;
-	sw_ctxt_entries[7].value = sw_ctxt->at;
-	sw_ctxt_entries[8].value = sw_ctxt->fetch_max;
-	sw_ctxt_entries[9].value = sw_ctxt->rngsz_idx;
-	sw_ctxt_entries[10].value = sw_ctxt->desc_sz;
-	sw_ctxt_entries[11].value = sw_ctxt->bypass;
-	sw_ctxt_entries[12].value = sw_ctxt->mm_chn;
-	sw_ctxt_entries[13].value = sw_ctxt->wbk_en;
-	sw_ctxt_entries[14].value = sw_ctxt->irq_en;
-	sw_ctxt_entries[15].value = sw_ctxt->port_id;
-	sw_ctxt_entries[16].value = sw_ctxt->irq_no_last;
-	sw_ctxt_entries[17].value = sw_ctxt->err;
-	sw_ctxt_entries[18].value = sw_ctxt->err_wb_sent;
-	sw_ctxt_entries[19].value = sw_ctxt->irq_req;
-	sw_ctxt_entries[20].value = sw_ctxt->mrkr_dis;
-	sw_ctxt_entries[21].value = sw_ctxt->is_mm;
-	sw_ctxt_entries[22].value = sw_ctxt->ring_bs_addr & 0xFFFFFFFF;
-	sw_ctxt_entries[23].value =
-		(sw_ctxt->ring_bs_addr >> 32) & 0xFFFFFFFF;
-	sw_ctxt_entries[24].value = sw_ctxt->vec;
-	sw_ctxt_entries[25].value = sw_ctxt->intr_aggr;
-}
-
-/*
- * qdma_acc_fill_cmpt_ctxt() - Helper function to fill completion context
- *                         into structure
- *
- */
-static void qdma_fill_cmpt_ctxt(struct qdma_descq_cmpt_ctxt *cmpt_ctxt)
-{
-	cmpt_ctxt_entries[0].value = cmpt_ctxt->en_stat_desc;
-	cmpt_ctxt_entries[1].value = cmpt_ctxt->en_int;
-	cmpt_ctxt_entries[2].value = cmpt_ctxt->trig_mode;
-	cmpt_ctxt_entries[3].value = cmpt_ctxt->fnc_id;
-	cmpt_ctxt_entries[4].value = cmpt_ctxt->counter_idx;
-	cmpt_ctxt_entries[5].value = cmpt_ctxt->timer_idx;
-	cmpt_ctxt_entries[6].value = cmpt_ctxt->in_st;
-	cmpt_ctxt_entries[7].value = cmpt_ctxt->color;
-	cmpt_ctxt_entries[8].value = cmpt_ctxt->ringsz_idx;
-	cmpt_ctxt_entries[9].value = cmpt_ctxt->bs_addr & 0xFFFFFFFF;
-	cmpt_ctxt_entries[10].value =
-		(cmpt_ctxt->bs_addr >> 32) & 0xFFFFFFFF;
-	cmpt_ctxt_entries[11].value = cmpt_ctxt->desc_sz;
-	cmpt_ctxt_entries[12].value = cmpt_ctxt->pidx;
-	cmpt_ctxt_entries[13].value = cmpt_ctxt->cidx;
-	cmpt_ctxt_entries[14].value = cmpt_ctxt->valid;
-	cmpt_ctxt_entries[15].value = cmpt_ctxt->err;
-	cmpt_ctxt_entries[16].value = cmpt_ctxt->user_trig_pend;
-	cmpt_ctxt_entries[17].value = cmpt_ctxt->timer_running;
-	cmpt_ctxt_entries[18].value = cmpt_ctxt->full_upd;
-	cmpt_ctxt_entries[19].value = cmpt_ctxt->ovf_chk_dis;
-	cmpt_ctxt_entries[20].value = cmpt_ctxt->at;
-	cmpt_ctxt_entries[21].value = cmpt_ctxt->vec;
-	cmpt_ctxt_entries[22].value = cmpt_ctxt->int_aggr;
-}
-
-/*
- * qdma_acc_fill_hw_ctxt() - Helper function to fill HW context into structure
- *
- */
-static void qdma_fill_hw_ctxt(struct qdma_descq_hw_ctxt *hw_ctxt)
-{
-	hw_ctxt_entries[0].value = hw_ctxt->cidx;
-	hw_ctxt_entries[1].value = hw_ctxt->crd_use;
-	hw_ctxt_entries[2].value = hw_ctxt->dsc_pend;
-	hw_ctxt_entries[3].value = hw_ctxt->idl_stp_b;
-	hw_ctxt_entries[4].value = hw_ctxt->evt_pnd;
-	hw_ctxt_entries[5].value = hw_ctxt->fetch_pnd;
-}
-
-/*
- * qdma_acc_fill_credit_ctxt() - Helper function to fill Credit context
- *                           into structure
- *
- */
-static void qdma_fill_credit_ctxt(struct qdma_descq_credit_ctxt *cr_ctxt)
-{
-	credit_ctxt_entries[0].value = cr_ctxt->credit;
-}
-
-/*
- * qdma_acc_fill_pfetch_ctxt() - Helper function to fill Prefetch context
- *                           into structure
- *
- */
-static void qdma_fill_pfetch_ctxt(struct qdma_descq_prefetch_ctxt *pfetch_ctxt)
-{
-	c2h_pftch_ctxt_entries[0].value = pfetch_ctxt->bypass;
-	c2h_pftch_ctxt_entries[1].value = pfetch_ctxt->bufsz_idx;
-	c2h_pftch_ctxt_entries[2].value = pfetch_ctxt->port_id;
-	c2h_pftch_ctxt_entries[3].value = pfetch_ctxt->err;
-	c2h_pftch_ctxt_entries[4].value = pfetch_ctxt->pfch_en;
-	c2h_pftch_ctxt_entries[5].value = pfetch_ctxt->pfch;
-	c2h_pftch_ctxt_entries[6].value = pfetch_ctxt->sw_crdt;
-	c2h_pftch_ctxt_entries[7].value = pfetch_ctxt->valid;
-}
-
-/*
- * dump_soft_context() - Helper function to dump queue context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_soft_context(struct qdma_descq_context *queue_context,
-		uint8_t st,	enum qdma_dev_q_type q_type,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	if (queue_context == NULL) {
-		qdma_log_error("%s: queue_context is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type == QDMA_DEV_Q_TYPE_CMPT) {
-		qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_H2C) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-	} else if (q_type == QDMA_DEV_Q_TYPE_C2H) {
-		qdma_fill_sw_ctxt(&queue_context->sw_ctxt);
-		qdma_fill_hw_ctxt(&queue_context->hw_ctxt);
-		qdma_fill_credit_ctxt(&queue_context->cr_ctxt);
-		if (st) {
-			qdma_fill_pfetch_ctxt(&queue_context->pfetch_ctxt);
-			qdma_fill_cmpt_ctxt(&queue_context->cmpt_ctxt);
-		}
-	}
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		/* SW context dump */
-		n = sizeof(sw_ctxt_entries) / sizeof((sw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "SW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				sw_ctxt_entries[i].name,
-				sw_ctxt_entries[i].value,
-				sw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* HW context dump */
-		n = sizeof(hw_ctxt_entries) / sizeof((hw_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s", "HW Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				hw_ctxt_entries[i].name,
-				hw_ctxt_entries[i].value,
-				hw_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		/* Credit context dump */
-		n = sizeof(credit_ctxt_entries) /
-			sizeof((credit_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Credit Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				credit_ctxt_entries[i].name,
-				credit_ctxt_entries[i].value,
-				credit_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if ((q_type == QDMA_DEV_Q_TYPE_CMPT) ||
-			(st && q_type == QDMA_DEV_Q_TYPE_C2H)) {
-		/* Completion context dump */
-		n = sizeof(cmpt_ctxt_entries) / sizeof((cmpt_ctxt_entries)[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Completion Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				cmpt_ctxt_entries[i].name,
-				cmpt_ctxt_entries[i].value,
-				cmpt_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	if (st && q_type == QDMA_DEV_Q_TYPE_C2H) {
-		/* Prefetch context dump */
-		n = sizeof(c2h_pftch_ctxt_entries) /
-			sizeof(c2h_pftch_ctxt_entries[0]);
-		for (i = 0; i < n; i++) {
-			if ((len >= buf_sz) ||
-				((len + DEBGFS_LINE_SZ) >= buf_sz))
-				goto INSUF_BUF_EXIT;
-
-			if (i == 0) {
-				if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-					goto INSUF_BUF_EXIT;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%40s",
-					"Prefetch Context");
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-
-				rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-					DEBGFS_LINE_SZ, "\n%s\n", banner);
-				if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-					qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-						__LINE__, __func__,
-						rv);
-					goto INSUF_BUF_EXIT;
-				}
-				len += rv;
-			}
-
-			rv = QDMA_SNPRINTF_S(buf + len,
-				(buf_sz - len), DEBGFS_LINE_SZ,
-				"%-47s %#-10x %u\n",
-				c2h_pftch_ctxt_entries[i].name,
-				c2h_pftch_ctxt_entries[i].value,
-				c2h_pftch_ctxt_entries[i].value);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-/*
- * qdma_indirect_reg_invalidate() - helper function to invalidate indirect
- *					context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_invalidate(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_INV;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_clear() - helper function to clear indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_clear(void *dev_hndl,
-		enum ind_ctxt_cmd_sel sel, uint16_t hw_qid)
-{
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_CLR;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_read() - helper function to read indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_read(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t cnt, uint32_t *data)
-{
-	uint32_t index = 0, reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-	union qdma_ind_ctxt_cmd cmd;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* set command register */
-	cmd.word = 0;
-	cmd.bits.qid = hw_qid;
-	cmd.bits.op = QDMA_CTXT_CMD_RD;
-	cmd.bits.sel = sel;
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD, cmd.word);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	for (index = 0; index < cnt; index++, reg_addr += sizeof(uint32_t))
-		data[index] = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*
- * qdma_indirect_reg_write() - helper function to write indirect
- *				context registers.
- *
- * return -QDMA_ERR_HWACC_BUSY_TIMEOUT if register
- *	value didn't match, QDMA_SUCCESS other wise
- */
-static int qdma_indirect_reg_write(void *dev_hndl, enum ind_ctxt_cmd_sel sel,
-		uint16_t hw_qid, uint32_t *data, uint16_t cnt)
-{
-	uint32_t index, reg_addr;
-	struct qdma_indirect_ctxt_regs regs;
-	uint32_t *wr_data = (uint32_t *)&regs;
-
-	qdma_reg_access_lock(dev_hndl);
-
-	/* write the context data */
-	for (index = 0; index < QDMA_IND_CTXT_DATA_NUM_REGS; index++) {
-		if (index < cnt)
-			regs.qdma_ind_ctxt_data[index] = data[index];
-		else
-			regs.qdma_ind_ctxt_data[index] = 0;
-		regs.qdma_ind_ctxt_mask[index] = 0xFFFFFFFF;
-	}
-
-	regs.cmd.word = 0;
-	regs.cmd.bits.qid = hw_qid;
-	regs.cmd.bits.op = QDMA_CTXT_CMD_WR;
-	regs.cmd.bits.sel = sel;
-	reg_addr = QDMA_OFFSET_IND_CTXT_DATA;
-
-	for (index = 0; index < ((2 * QDMA_IND_CTXT_DATA_NUM_REGS) + 1);
-			index++, reg_addr += sizeof(uint32_t))
-		qdma_reg_write(dev_hndl, reg_addr, wr_data[index]);
-
-	/* check if the operation went through well */
-	if (hw_monitor_reg(dev_hndl, QDMA_OFFSET_IND_CTXT_CMD,
-			QDMA_IND_CTXT_CMD_BUSY_MASK, 0,
-			QDMA_REG_POLL_DFLT_INTERVAL_US,
-			QDMA_REG_POLL_DFLT_TIMEOUT_US)) {
-		qdma_reg_access_release(dev_hndl);
-		qdma_log_error("%s: hw_monitor_reg failed with err:%d\n",
-						__func__,
-					   -QDMA_ERR_HWACC_BUSY_TIMEOUT);
-		return -QDMA_ERR_HWACC_BUSY_TIMEOUT;
-	}
-
-	qdma_reg_access_release(dev_hndl);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_version() - Function to get the qdma version
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @version_info:	pointer to hold the version info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info)
-{
-	uint32_t reg_val = 0;
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_VERSION :
-			QDMA_OFFSET_GLBL2_MISC_CAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, reg_addr);
-
-	qdma_fetch_version_details(is_vf, reg_val, version_info);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_write() - create fmap context and program it
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_write(void *dev_hndl, uint16_t func_id,
-		   const struct qdma_fmap_cfg *config)
-{
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-				__func__, dev_hndl, config,
-				-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W0_QID_MASK, config->qbase);
-	fmap[num_words_count++] =
-		FIELD_SET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, config->qmax);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, func_id,
-			fmap, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_read() - read fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- * @config:	pointer to the output fmap data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_read(void *dev_hndl, uint16_t func_id,
-			 struct qdma_fmap_cfg *config)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t fmap[QDMA_FMAP_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl || !config) {
-		qdma_log_error("%s: dev_handle=%p fmap=%p NULL, err:%d\n",
-						__func__, dev_hndl, config,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, func_id,
-			QDMA_FMAP_NUM_WORDS, fmap);
-	if (rv < 0)
-		return rv;
-
-	config->qbase = FIELD_GET(QDMA_FMAP_CTXT_W0_QID_MASK, fmap[0]);
-	config->qmax = FIELD_GET(QDMA_FMAP_CTXT_W1_QID_MAX_MASK, fmap[1]);
-
-	qdma_log_debug("%s: func_id=%hu, qbase=%hu, qmax=%hu\n", __func__,
-				   func_id, config->qbase, config->qmax);
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_clear() - clear fmap context
- *
- * @dev_hndl:   device handle
- * @func_id:    function id of the device
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_fmap_clear(void *dev_hndl, uint16_t func_id)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_FMAP;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_log_debug("%s: func_id=%hu\n", __func__, func_id);
-	return qdma_indirect_reg_clear(dev_hndl, sel, func_id);
-}
-
-/*****************************************************************************/
-/**
- * qdma_fmap_conf() - configure fmap context
- *
- * @dev_hndl:	device handle
- * @func_id:	function id of the device
- * @config:	pointer to the fmap data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_INVALIDATE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_fmap_read(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_fmap_write(dev_hndl, func_id, config);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_fmap_clear(dev_hndl, func_id);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_write() - create sw context and program it
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the SW context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_write(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 const struct qdma_descq_sw_ctxt *ctxt)
-{
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W0_PIDX, ctxt->pidx) |
-		FIELD_SET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, ctxt->irq_arm) |
-		FIELD_SET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, ctxt->fnc_id);
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x\n",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W1_QEN_MASK, ctxt->qen) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, ctxt->frcd_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, ctxt->wbi_chk) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, ctxt->wbi_intvl_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, ctxt->fetch_max) |
-		FIELD_SET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, ctxt->rngsz_idx) |
-		FIELD_SET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_SW_CTXT_W1_BYP_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MM_CHN_MASK, ctxt->mm_chn) |
-		FIELD_SET(QDMA_SW_CTXT_W1_WBK_EN_MASK, ctxt->wbk_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, ctxt->irq_en) |
-		FIELD_SET(QDMA_SW_CTXT_W1_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK, ctxt->irq_no_last) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK, ctxt->err_wb_sent) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, ctxt->irq_req) |
-		FIELD_SET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, ctxt->mrkr_dis) |
-		FIELD_SET(QDMA_SW_CTXT_W1_IS_MM_MASK, ctxt->is_mm);
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,err=%x",
-			__func__, ctxt->port_id, ctxt->irq_no_last, ctxt->err);
-	qdma_log_debug(", err_wb_sent=%x\n", ctxt->err_wb_sent);
-
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	sw_ctxt[num_words_count++] = ctxt->ring_bs_addr & 0xffffffff;
-	sw_ctxt[num_words_count++] = (ctxt->ring_bs_addr >> 32) & 0xffffffff;
-
-	sw_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_SW_CTXT_W4_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK, ctxt->intr_aggr);
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			sw_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_read() - read sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_sw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t sw_ctxt[QDMA_SW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle=%p sw_ctxt=%p NULL, err:%d\n",
-					   __func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_SW_CONTEXT_NUM_WORDS, sw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->pidx = FIELD_GET(QDMA_SW_CTXT_W0_PIDX, sw_ctxt[0]);
-	ctxt->irq_arm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_IRQ_ARM_MASK, sw_ctxt[0]));
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W0_FUNC_ID_MASK, sw_ctxt[0]));
-
-	qdma_log_debug("%s: pidx=%x, irq_arm=%x, fnc_id=%x",
-			 __func__, ctxt->pidx, ctxt->irq_arm, ctxt->fnc_id);
-
-	ctxt->qen = FIELD_GET(QDMA_SW_CTXT_W1_QEN_MASK, sw_ctxt[1]);
-	ctxt->frcd_en = FIELD_GET(QDMA_SW_CTXT_W1_FCRD_EN_MASK, sw_ctxt[1]);
-	ctxt->wbi_chk = FIELD_GET(QDMA_SW_CTXT_W1_WBI_CHK_MASK, sw_ctxt[1]);
-	ctxt->wbi_intvl_en =
-		FIELD_GET(QDMA_SW_CTXT_W1_WB_INT_EN_MASK, sw_ctxt[1]);
-	ctxt->at = FIELD_GET(QDMA_SW_CTXT_W1_AT_MASK, sw_ctxt[1]);
-	ctxt->fetch_max =
-		FIELD_GET(QDMA_SW_CTXT_W1_FETCH_MAX_MASK, sw_ctxt[1]);
-	ctxt->rngsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_RNG_SZ_MASK, sw_ctxt[1]));
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_DSC_SZ_MASK, sw_ctxt[1]));
-	ctxt->bypass =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_BYP_MASK, sw_ctxt[1]));
-	ctxt->mm_chn =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MM_CHN_MASK, sw_ctxt[1]));
-	ctxt->wbk_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_WBK_EN_MASK, sw_ctxt[1]));
-	ctxt->irq_en =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_EN_MASK, sw_ctxt[1]));
-	ctxt->port_id =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_PORT_ID_MASK, sw_ctxt[1]));
-	ctxt->irq_no_last =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK,
-			sw_ctxt[1]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_MASK, sw_ctxt[1]));
-	ctxt->err_wb_sent =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK,
-			sw_ctxt[1]));
-	ctxt->irq_req =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IRQ_REQ_MASK, sw_ctxt[1]));
-	ctxt->mrkr_dis =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_MRKR_DIS_MASK, sw_ctxt[1]));
-	ctxt->is_mm =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W1_IS_MM_MASK, sw_ctxt[1]));
-
-	qdma_log_debug("%s: qen=%x, frcd_en=%x, wbi_chk=%x, wbi_intvl_en=%x\n",
-			 __func__, ctxt->qen, ctxt->frcd_en, ctxt->wbi_chk,
-			ctxt->wbi_intvl_en);
-	qdma_log_debug("%s: at=%x, fetch_max=%x, rngsz_idx=%x, desc_sz=%x\n",
-			__func__, ctxt->at, ctxt->fetch_max, ctxt->rngsz_idx,
-			ctxt->desc_sz);
-	qdma_log_debug("%s: bypass=%x, mm_chn=%x, wbk_en=%x, irq_en=%x\n",
-			__func__, ctxt->bypass, ctxt->mm_chn, ctxt->wbk_en,
-			ctxt->irq_en);
-	qdma_log_debug("%s: port_id=%x, irq_no_last=%x,",
-			__func__, ctxt->port_id, ctxt->irq_no_last);
-	qdma_log_debug(" err=%x, err_wb_sent=%x\n",
-			ctxt->err, ctxt->err_wb_sent);
-	qdma_log_debug("%s: irq_req=%x, mrkr_dis=%x, is_mm=%x\n",
-			__func__, ctxt->irq_req, ctxt->mrkr_dis, ctxt->is_mm);
-
-	ctxt->ring_bs_addr = ((uint64_t)sw_ctxt[3] << 32) | (sw_ctxt[2]);
-
-	ctxt->vec = FIELD_GET(QDMA_SW_CTXT_W4_VEC_MASK, sw_ctxt[4]);
-	ctxt->intr_aggr =
-		(uint8_t)(FIELD_GET(QDMA_SW_CTXT_W4_INTR_AGGR_MASK,
-			sw_ctxt[4]));
-
-	qdma_log_debug("%s: vec=%x, intr_aggr=%x\n",
-			__func__, ctxt->vec, ctxt->intr_aggr);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_clear() - clear sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_context_invalidate() - invalidate sw context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_sw_context_invalidate(void *dev_hndl, uint8_t c2h,
-		uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ?
-			QDMA_CTXT_SEL_SW_C2H : QDMA_CTXT_SEL_SW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_sw_ctx_conf() - configure SW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_sw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_sw_context_write(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_sw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_sw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_write() - create prefetch context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the prefetch context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_write(void *dev_hndl, uint16_t hw_qid,
-		const struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, ctxt->sw_crdt);
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, ctxt->sw_crdt);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, ctxt->bypass) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK,
-				ctxt->bufsz_idx) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, ctxt->port_id) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK, ctxt->pfch_en) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK, ctxt->pfch) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, sw_crdt_l);
-
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	pfetch_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, sw_crdt_h) |
-		FIELD_SET(QDMA_PFTCH_CTXT_W1_VALID_MASK, ctxt->valid);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			pfetch_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_read() - read prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_read(void *dev_hndl, uint16_t hw_qid,
-		struct qdma_descq_prefetch_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t pfetch_ctxt[QDMA_PFETCH_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-	uint32_t sw_crdt_l, sw_crdt_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or pfetch ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_PFETCH_CONTEXT_NUM_WORDS, pfetch_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->bypass =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BYPASS_MASK, pfetch_ctxt[0]);
-	ctxt->bufsz_idx =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK, pfetch_ctxt[0]);
-	ctxt->port_id =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_PORT_ID_MASK, pfetch_ctxt[0]);
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_ERR_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch_en =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK,
-			pfetch_ctxt[0]));
-	ctxt->pfch =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK,
-				pfetch_ctxt[0]));
-	sw_crdt_l =
-		FIELD_GET(QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK, pfetch_ctxt[0]);
-
-	sw_crdt_h =
-		FIELD_GET(QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK, pfetch_ctxt[1]);
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_PFTCH_CTXT_W1_VALID_MASK,
-			pfetch_ctxt[1]));
-
-	ctxt->sw_crdt =
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_L_MASK, sw_crdt_l) |
-		FIELD_SET(QDMA_PFTCH_CTXT_SW_CRDT_GET_H_MASK, sw_crdt_h);
-
-	qdma_log_debug("%s: sw_crdt_l=%u, sw_crdt_h=%u, hw_qid=%hu\n",
-			 __func__, sw_crdt_l, sw_crdt_h, hw_qid);
-	qdma_log_debug("%s: bypass=%x, bufsz_idx=%x, port_id=%x\n",
-			__func__, ctxt->bypass, ctxt->bufsz_idx, ctxt->port_id);
-	qdma_log_debug("%s: err=%x, pfch_en=%x, pfch=%x, ctxt->valid=%x\n",
-			__func__, ctxt->err, ctxt->pfch_en, ctxt->pfch,
-			ctxt->valid);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_clear() - clear prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_context_invalidate() - invalidate prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_pfetch_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_PFTCH;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_pfetch_ctx_conf() - configure prefetch context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_pfetch_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_pfetch_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_pfetch_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_pfetch_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_write() - create completion context and program it
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the cmpt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_write(void *dev_hndl, uint16_t hw_qid,
-			   const struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	uint16_t num_words_count = 0;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	/* Input args check */
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (ctxt->trig_mode > QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR) {
-		qdma_log_error("%s: trig_mode(%d) > (%d) is invalid, err:%d\n",
-					__func__,
-					ctxt->trig_mode,
-					QDMA_CMPT_UPDATE_TRIG_MODE_TMR_CNTR,
-					-QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK,
-			ctxt->bs_addr);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK,
-			ctxt->bs_addr);
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, ctxt->pidx);
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, ctxt->pidx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK,
-				ctxt->en_stat_desc) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, ctxt->en_int) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, ctxt->trig_mode) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK, ctxt->fnc_id) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-				ctxt->counter_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK, ctxt->timer_idx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_INT_ST_MASK, ctxt->in_st) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK, ctxt->ringsz_idx);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, baddr_l);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, baddr_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK, ctxt->desc_sz) |
-		FIELD_SET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, pidx_l);
-
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, pidx_h) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_CIDX_MASK, ctxt->cidx) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_ERR_MASK, ctxt->err) |
-		FIELD_SET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK,
-				ctxt->user_trig_pend);
-
-	cmpt_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK,
-				ctxt->timer_running) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, ctxt->full_upd) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK,
-				ctxt->ovf_chk_dis) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_AT_MASK, ctxt->at) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, ctxt->int_aggr);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, hw_qid,
-			cmpt_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_read() - read completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_read(void *dev_hndl, uint16_t hw_qid,
-			   struct qdma_descq_cmpt_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cmpt_ctxt[QDMA_CMPT_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-	uint32_t baddr_l, baddr_h, pidx_l, pidx_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or cmpt ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CMPT_CONTEXT_NUM_WORDS, cmpt_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->en_stat_desc =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK, cmpt_ctxt[0]);
-	ctxt->en_int = FIELD_GET(QDMA_COMPL_CTXT_W0_EN_INT_MASK, cmpt_ctxt[0]);
-	ctxt->trig_mode =
-		FIELD_GET(QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK, cmpt_ctxt[0]);
-	ctxt->fnc_id =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_FNC_ID_MASK,
-			cmpt_ctxt[0]));
-	ctxt->counter_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->timer_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK,
-			cmpt_ctxt[0]));
-	ctxt->in_st =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_INT_ST_MASK,
-			cmpt_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_COLOR_MASK,
-			cmpt_ctxt[0]));
-	ctxt->ringsz_idx =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W0_RING_SZ_MASK,
-			cmpt_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK, cmpt_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK, cmpt_ctxt[2]);
-	ctxt->desc_sz =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK,
-			cmpt_ctxt[2]));
-	pidx_l = FIELD_GET(QDMA_COMPL_CTXT_W2_PIDX_L_MASK, cmpt_ctxt[2]);
-
-	pidx_h = FIELD_GET(QDMA_COMPL_CTXT_W3_PIDX_H_MASK, cmpt_ctxt[3]);
-	ctxt->cidx =
-		(uint16_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_CIDX_MASK,
-			cmpt_ctxt[3]));
-	ctxt->valid =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_VALID_MASK,
-			cmpt_ctxt[3]));
-	ctxt->err =
-		(uint8_t)(FIELD_GET(QDMA_COMPL_CTXT_W3_ERR_MASK, cmpt_ctxt[3]));
-	ctxt->user_trig_pend = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK, cmpt_ctxt[3]));
-
-	ctxt->timer_running =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_TMR_RUN_MASK, cmpt_ctxt[4]);
-	ctxt->full_upd =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK, cmpt_ctxt[4]);
-	ctxt->ovf_chk_dis =
-		FIELD_GET(QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK, cmpt_ctxt[4]);
-	ctxt->at = FIELD_GET(QDMA_COMPL_CTXT_W4_AT_MASK, cmpt_ctxt[4]);
-	ctxt->vec = FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_VEC_MASK, cmpt_ctxt[4]);
-	ctxt->int_aggr = (uint8_t)
-		(FIELD_GET(QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK, cmpt_ctxt[4]));
-
-	ctxt->bs_addr =
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_L_MASK, (uint64_t)baddr_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_BADDR_GET_H_MASK, (uint64_t)baddr_h);
-
-	ctxt->pidx =
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_L_MASK, pidx_l) |
-		FIELD_SET(QDMA_COMPL_CTXT_PIDX_GET_H_MASK, pidx_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_clear() - clear completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_clear(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_context_invalidate() - invalidate completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_cmpt_context_invalidate(void *dev_hndl, uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_CMPT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_cmpt_ctx_conf() - configure completion context
- *
- * @dev_hndl:	device handle
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_cmpt_context_read(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_cmpt_context_write(dev_hndl, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_cmpt_context_clear(dev_hndl, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_cmpt_context_invalidate(dev_hndl, hw_qid);
-		break;
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_read() - read hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid, struct qdma_descq_hw_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t hw_ctxt[QDMA_HW_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_handle or hw_ctxt NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_HW_CONTEXT_NUM_WORDS, hw_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->cidx = FIELD_GET(QDMA_HW_CTXT_W0_CIDX_MASK, hw_ctxt[0]);
-	ctxt->crd_use =
-		(uint16_t)(FIELD_GET(QDMA_HW_CTXT_W0_CRD_USE_MASK, hw_ctxt[0]));
-
-	ctxt->dsc_pend =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_DSC_PND_MASK, hw_ctxt[1]));
-	ctxt->idl_stp_b =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_IDL_STP_B_MASK,
-			hw_ctxt[1]));
-	ctxt->evt_pnd =
-		(uint8_t)(FIELD_GET(QDMA_HW_CTXT_W1_EVENT_PEND_MASK,
-			hw_ctxt[1]));
-	ctxt->fetch_pnd = (uint8_t)
-		(FIELD_GET(QDMA_HW_CTXT_W1_FETCH_PEND_MASK, hw_ctxt[1]));
-
-	qdma_log_debug("%s: cidx=%hu, crd_use=%hu, dsc_pend=%x\n",
-			__func__, ctxt->cidx, ctxt->crd_use, ctxt->dsc_pend);
-	qdma_log_debug("%s: idl_stp_b=%x, evt_pnd=%x, fetch_pnd=%x\n",
-			__func__, ctxt->idl_stp_b, ctxt->evt_pnd,
-			ctxt->fetch_pnd);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_clear() - clear hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_context_invalidate() - invalidate hardware context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_hw_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_HW_C2H :
-			QDMA_CTXT_SEL_HW_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ctx_conf() - configure HW context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_hw_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_hw_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_hw_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_read() - read credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_read(void *dev_hndl, uint8_t c2h,
-			 uint16_t hw_qid,
-			 struct qdma_descq_credit_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t cr_ctxt[QDMA_CR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p credit_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, hw_qid,
-			QDMA_CR_CONTEXT_NUM_WORDS, cr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->credit = FIELD_GET(QDMA_CR_CTXT_W0_CREDT_MASK, cr_ctxt[0]);
-
-	qdma_log_debug("%s: credit=%u\n", __func__, ctxt->credit);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_clear() - clear credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_clear(void *dev_hndl, uint8_t c2h,
-			  uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_context_invalidate() - invalidate credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_credit_context_invalidate(void *dev_hndl, uint8_t c2h,
-				   uint16_t hw_qid)
-{
-	enum ind_ctxt_cmd_sel sel = c2h ? QDMA_CTXT_SEL_CR_C2H :
-			QDMA_CTXT_SEL_CR_H2C;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, hw_qid);
-}
-
-/*****************************************************************************/
-/**
- * qdma_credit_ctx_conf() - configure credit context
- *
- * @dev_hndl:	device handle
- * @c2h:	is c2h queue
- * @hw_qid:	hardware qid of the queue
- * @ctxt:	pointer to the context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_WRITE Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	/** ctxt requires only H2C-0 or C2H-1
-	 *  return error for any other values
-	 */
-	if (c2h > 1) {
-		qdma_log_error("%s: c2h(%d) invalid, err:%d\n",
-						__func__,
-						c2h,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_credit_context_read(dev_hndl, c2h, hw_qid, ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_credit_context_clear(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_credit_context_invalidate(dev_hndl, c2h, hw_qid);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-	default:
-		qdma_log_error("%s: Invalid access type=%d, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_write() - create indirect interrupt context
- *					and program it
- *
- * @dev_hndl:   device handle
- * @ring_index: indirect interrupt ring index
- * @ctxt:	pointer to the interrupt context data strucutre
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_write(void *dev_hndl, uint16_t ring_index,
-		const struct qdma_indirect_intr_ctxt *ctxt)
-{
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint32_t baddr_l, baddr_m, baddr_h;
-	uint16_t num_words_count = 0;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	baddr_l = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_L_MASK,
-			ctxt->baddr_4k);
-	baddr_m = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_M_MASK,
-			ctxt->baddr_4k);
-	baddr_h = (uint32_t)FIELD_GET(QDMA_INTR_CTXT_BADDR_GET_H_MASK,
-			ctxt->baddr_4k);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W0_VALID_MASK, ctxt->valid) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, ctxt->vec) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_INT_ST_MASK, ctxt->int_st) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_COLOR_MASK, ctxt->color) |
-		FIELD_SET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, baddr_l);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, baddr_m);
-
-	intr_ctxt[num_words_count++] =
-		FIELD_SET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, baddr_h) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, ctxt->page_size) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_PIDX_MASK, ctxt->pidx) |
-		FIELD_SET(QDMA_INTR_CTXT_W2_AT_MASK, ctxt->at);
-
-	return qdma_indirect_reg_write(dev_hndl, sel, ring_index,
-			intr_ctxt, num_words_count);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_read() - read indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to the output context data
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_read(void *dev_hndl, uint16_t ring_index,
-				   struct qdma_indirect_intr_ctxt *ctxt)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t intr_ctxt[QDMA_IND_INTR_CONTEXT_NUM_WORDS] = {0};
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-	uint64_t baddr_l, baddr_m, baddr_h;
-
-	if (!dev_hndl || !ctxt) {
-		qdma_log_error("%s: dev_hndl=%p intr_ctxt=%p, err:%d\n",
-						__func__, dev_hndl, ctxt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_indirect_reg_read(dev_hndl, sel, ring_index,
-			QDMA_IND_INTR_CONTEXT_NUM_WORDS, intr_ctxt);
-	if (rv < 0)
-		return rv;
-
-	ctxt->valid = FIELD_GET(QDMA_INTR_CTXT_W0_VALID_MASK, intr_ctxt[0]);
-	ctxt->vec = FIELD_GET(QDMA_INTR_CTXT_W0_VEC_ID_MASK, intr_ctxt[0]);
-	ctxt->int_st =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_INT_ST_MASK,
-			intr_ctxt[0]));
-	ctxt->color =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W0_COLOR_MASK,
-			intr_ctxt[0]));
-
-	baddr_l = FIELD_GET(QDMA_INTR_CTXT_W0_BADDR_64_MASK, intr_ctxt[0]);
-
-	baddr_m = FIELD_GET(QDMA_INTR_CTXT_W1_BADDR_64_MASK, intr_ctxt[1]);
-
-	baddr_h = FIELD_GET(QDMA_INTR_CTXT_W2_BADDR_64_MASK, intr_ctxt[2]);
-	ctxt->page_size =
-		FIELD_GET(QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK, intr_ctxt[2]);
-	ctxt->pidx =
-		(uint16_t)(FIELD_GET(QDMA_INTR_CTXT_W2_PIDX_MASK,
-			intr_ctxt[2]));
-	ctxt->at =
-		(uint8_t)(FIELD_GET(QDMA_INTR_CTXT_W2_AT_MASK, intr_ctxt[2]));
-
-	ctxt->baddr_4k =
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_L_MASK, baddr_l) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_M_MASK, baddr_m) |
-		FIELD_SET(QDMA_INTR_CTXT_BADDR_GET_H_MASK, baddr_h);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_clear() - clear indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_clear(void *dev_hndl, uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_clear(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_context_invalidate() - invalidate indirect interrupt
- * context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_indirect_intr_context_invalidate(void *dev_hndl,
-					  uint16_t ring_index)
-{
-	enum ind_ctxt_cmd_sel sel = QDMA_CTXT_SEL_INT_COAL;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return qdma_indirect_reg_invalidate(dev_hndl, sel, ring_index);
-}
-
-/*****************************************************************************/
-/**
- * qdma_indirect_intr_ctx_conf() - configure indirect interrupt context
- *
- * @dev_hndl:	device handle
- * @ring_index:	indirect interrupt ring index
- * @ctxt:	pointer to context data
- * @access_type HW access type (qdma_hw_access_type enum) value
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_indirect_intr_context_read(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_indirect_intr_context_write(dev_hndl, ring_index,
-							ctxt);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-		rv = qdma_indirect_intr_context_clear(dev_hndl,
-							ring_index);
-		break;
-	case QDMA_HW_ACCESS_INVALIDATE:
-		rv = qdma_indirect_intr_context_invalidate(dev_hndl,
-								ring_index);
-		break;
-	default:
-		qdma_log_error("%s: access_type=%d is invalid, err:%d\n",
-					   __func__, access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_set_default_global_csr() - function to set the global CSR register to
- * default values. The value can be modified later by using the set/get csr
- * functions
- *
- * @dev_hndl:	device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_set_default_global_csr(void *dev_hndl)
-{
-	/* Default values */
-	uint32_t cfg_val = 0, reg_val = 0;
-	uint32_t rng_sz[QDMA_NUM_RING_SIZES] = {2049, 65, 129, 193, 257, 385,
-		513, 769, 1025, 1537, 3073, 4097, 6145, 8193, 12289, 16385};
-	uint32_t tmr_cnt[QDMA_NUM_C2H_TIMERS] = {1, 2, 4, 5, 8, 10, 15, 20, 25,
-		30, 50, 75, 100, 125, 150, 200};
-	uint32_t cnt_th[QDMA_NUM_C2H_COUNTERS] = {2, 4, 8, 16, 24, 32, 48, 64,
-		80, 96, 112, 128, 144, 160, 176, 192};
-	uint32_t buf_sz[QDMA_NUM_C2H_BUFFER_SIZES] = {4096, 256, 512, 1024,
-		2048, 3968, 4096, 4096, 4096, 4096, 4096, 4096, 4096, 8192,
-		9018, 16384};
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	/* Configuring CSR registers */
-	/* Global ring sizes */
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, 0,
-			QDMA_NUM_RING_SIZES, rng_sz);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		/* Counter thresholds */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, 0,
-				QDMA_NUM_C2H_COUNTERS, cnt_th);
-
-		/* Timer Counters */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT, 0,
-				QDMA_NUM_C2H_TIMERS, tmr_cnt);
-
-
-		/* Writeback Interval */
-		reg_val =
-			FIELD_SET(QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK,
-					DEFAULT_MAX_DSC_FETCH) |
-			FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK,
-					DEFAULT_WRB_INT);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	}
-
-	if (dev_cap.st_en) {
-		/* Buffer Sizes */
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, 0,
-				QDMA_NUM_C2H_BUFFER_SIZES, buf_sz);
-
-		/* Prefetch Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_PFCH_FL_TH_MASK,
-					DEFAULT_PFCH_STOP_THRESH) |
-			FIELD_SET(QDMA_C2H_NUM_PFCH_MASK,
-					DEFAULT_PFCH_NUM_ENTRIES_PER_Q) |
-			FIELD_SET(QDMA_C2H_PFCH_QCNT_MASK, (cfg_val >> 1)) |
-			FIELD_SET(QDMA_C2H_EVT_QCNT_TH_MASK,
-					((cfg_val >> 1) - 2));
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_PFETCH_CFG, reg_val);
-
-		/* C2H interrupt timer tick */
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_INT_TIMER_TICK,
-				DEFAULT_C2H_INTR_TIMER_TICK);
-
-		/* C2h Completion Coalesce Configuration */
-		cfg_val = qdma_reg_read(dev_hndl,
-				QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH);
-		reg_val =
-			FIELD_SET(QDMA_C2H_TICK_CNT_MASK,
-					DEFAULT_CMPT_COAL_TIMER_CNT) |
-			FIELD_SET(QDMA_C2H_TICK_VAL_MASK,
-					DEFAULT_CMPT_COAL_TIMER_TICK) |
-			FIELD_SET(QDMA_C2H_MAX_BUF_SZ_MASK, cfg_val);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_C2H_WRB_COAL_CFG, reg_val);
-
-		/* H2C throttle Configuration*/
-		reg_val =
-			FIELD_SET(QDMA_H2C_DATA_THRESH_MASK,
-					QDMA_H2C_THROT_DATA_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_DATA_MASK,
-					QDMA_THROT_EN_DATA) |
-			FIELD_SET(QDMA_H2C_REQ_THRESH_MASK,
-					QDMA_H2C_THROT_REQ_THRESH) |
-			FIELD_SET(QDMA_H2C_REQ_THROT_EN_REQ_MASK,
-					QDMA_THROT_EN_REQ);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_H2C_REQ_THROT, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_pidx_update() - function to update the desc PIDX
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @reg_info:	data needed for the PIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!is_vf) {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX;
-	} else {
-		reg_addr = (is_c2h) ?  QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX :
-			QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX;
-	}
-
-	reg_addr += (qid * QDMA_PIDX_STEP);
-
-	reg_val = FIELD_SET(QDMA_DMA_SEL_DESC_PIDX_MASK, reg_info->pidx) |
-			  FIELD_SET(QDMA_DMA_SEL_IRQ_EN_MASK,
-			  reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_cmpt_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_CMPT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-						__func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += (qid * QDMA_CMPT_CIDX_STEP);
-
-	reg_val =
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK,
-				reg_info->wrb_cidx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK,
-				reg_info->counter_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK,
-				reg_info->timer_idx) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK,
-				reg_info->trig_mode) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK,
-				reg_info->wrb_en) |
-		FIELD_SET(QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK, reg_info->irq_en);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_queue_intr_cidx_update() - function to update the CMPT CIDX update
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @qid:	Queue id relative to the PF/VF calling this API
- * @reg_info:	data needed for the CIDX register update
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info)
-{
-	uint32_t reg_addr = (is_vf) ? QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX :
-		QDMA_OFFSET_DMAP_SEL_INT_CIDX;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_info) {
-		qdma_log_error("%s: reg_info is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_addr += qid * QDMA_INT_CIDX_STEP;
-
-	reg_val =
-		FIELD_SET(QDMA_DMA_SEL_INT_SW_CIDX_MASK, reg_info->sw_cidx) |
-		FIELD_SET(QDMA_DMA_SEL_INT_RING_IDX_MASK, reg_info->rng_idx);
-
-	qdma_reg_write(dev_hndl, reg_addr, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_user_bar() - Function to get the
- *						AXI Master Lite(user bar) number
- *
- * @dev_hndl:	device handle
- * @is_vf:	Whether PF or VF
- * @func_id:	function id of the PF
- * @user_bar:	pointer to hold the AXI Master Lite number
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar)
-{
-	uint8_t bar_found = 0;
-	uint8_t bar_idx = 0;
-	uint32_t user_bar_id = 0;
-	uint32_t reg_addr = (is_vf) ?  QDMA_OFFSET_VF_USER_BAR_ID :
-			QDMA_OFFSET_GLBL2_PF_BARLITE_EXT;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!user_bar) {
-		qdma_log_error("%s: user_bar is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	user_bar_id = qdma_reg_read(dev_hndl, reg_addr);
-
-	if (!is_vf)
-		user_bar_id = (user_bar_id >> (6 * func_id)) & 0x3F;
-	else
-		user_bar_id = user_bar_id & 0x3F;
-
-	for (bar_idx = 0; bar_idx < QDMA_BAR_NUM; bar_idx++) {
-		if (user_bar_id & (1 << bar_idx)) {
-			*user_bar = bar_idx;
-			bar_found = 1;
-			break;
-		}
-	}
-	if (bar_found == 0) {
-		*user_bar = 0;
-		qdma_log_error("%s: Bar not found, vf:%d, usrbar:%d, err:%d\n",
-					   __func__,
-					   is_vf,
-					   *user_bar,
-					   -QDMA_ERR_HWACC_BAR_NOT_FOUND);
-		return -QDMA_ERR_HWACC_BAR_NOT_FOUND;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_get_device_attributes() - Function to get the qdma device attributes
- *
- * @dev_hndl:	device handle
- * @dev_info:	pointer to hold the device info
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info)
-{
-	uint8_t count = 0;
-	uint32_t reg_val = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!dev_info) {
-		qdma_log_error("%s: dev_info is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	/* number of PFs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_PF_BARLITE_INT);
-	if (FIELD_GET(QDMA_GLBL2_PF0_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF1_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF2_BAR_MAP_MASK, reg_val))
-		count++;
-	if (FIELD_GET(QDMA_GLBL2_PF3_BAR_MAP_MASK, reg_val))
-		count++;
-	dev_info->num_pfs = count;
-
-	/* Number of Qs */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP);
-	dev_info->num_qs = FIELD_GET(QDMA_GLBL2_MULTQ_MAX_MASK, reg_val);
-
-	/* FLR present */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_MISC_CAP);
-	dev_info->mailbox_en  = FIELD_GET(QDMA_GLBL2_MAILBOX_EN_MASK, reg_val);
-	dev_info->flr_present = FIELD_GET(QDMA_GLBL2_FLR_PRESENT_MASK, reg_val);
-	dev_info->mm_cmpt_en  = FIELD_GET(QDMA_GLBL2_MM_CMPT_EN_MASK, reg_val);
-
-	/* ST/MM enabled? */
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL2_CHANNEL_MDMA);
-	dev_info->mm_en = (FIELD_GET(QDMA_GLBL2_MM_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_MM_H2C_MASK, reg_val)) ? 1 : 0;
-	dev_info->st_en = (FIELD_GET(QDMA_GLBL2_ST_C2H_MASK, reg_val)
-			&& FIELD_GET(QDMA_GLBL2_ST_H2C_MASK, reg_val)) ? 1 : 0;
-
-	/* num of mm channels */
-	/* TODO : Register not yet defined for this. Hard coding it to 1.*/
-	dev_info->mm_channel_max = 1;
-
-	dev_info->debug_mode = 0;
-	dev_info->desc_eng_mode = 0;
-	dev_info->qid2vec_ctx = 0;
-	dev_info->cmpt_ovf_chk_dis = 1;
-	dev_info->mailbox_intr = 1;
-	dev_info->sw_desc_64b = 1;
-	dev_info->cmpt_desc_64b = 1;
-	dev_info->dynamic_bar = 1;
-	dev_info->legacy_intr = 1;
-	dev_info->cmpt_trig_count_timer = 1;
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_sbe_err_process() - Function to dump SBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_sbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_SBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_ram_dbe_err_process() - Function to dump DBE error debug information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_ram_dbe_err_process(void *dev_hndl)
-{
-	qdma_dump_reg_info(dev_hndl, QDMA_OFFSET_RAM_DBE_STAT,
-						1, NULL, 0);
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_desc_err_process() - Function to dump Descriptor Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_desc_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t desc_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_DSC_ERR_STS,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG0,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG1,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT0,
-		QDMA_OFFSET_GLBL_DSC_DBG_DAT1,
-		QDMA_OFFSET_GLBL_DSC_ERR_LOG2
-	};
-	int desc_err_num_regs = sizeof(desc_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < desc_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, desc_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_trq_err_process() - Function to dump Target Access Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_trq_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t trq_err_reg_list[] = {
-		QDMA_OFFSET_GLBL_TRQ_ERR_STS,
-		QDMA_OFFSET_GLBL_TRQ_ERR_LOG
-	};
-	int trq_err_reg_num_regs = sizeof(trq_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < trq_err_reg_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, trq_err_reg_list[i],
-					1, NULL, 0);
-	}
-
-
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_h2c_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_h2c_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_h2c_err_reg_list[] = {
-		QDMA_OFFSET_H2C_ERR_STAT,
-		QDMA_OFFSET_H2C_FIRST_ERR_QID,
-		QDMA_OFFSET_H2C_DBG_REG0,
-		QDMA_OFFSET_H2C_DBG_REG1,
-		QDMA_OFFSET_H2C_DBG_REG2,
-		QDMA_OFFSET_H2C_DBG_REG3,
-		QDMA_OFFSET_H2C_DBG_REG4
-	};
-	int st_h2c_err_num_regs = sizeof(st_h2c_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_h2c_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_h2c_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_st_c2h_err_process() - Function to dump MM H2C Error information
- *
- * @dev_hndl: device handle
- * @buf: Bufffer for the debug info to be dumped in
- * @buflen: Length of the buffer
- *
- * Return: void
- *****************************************************************************/
-static void qdma_hw_st_c2h_err_process(void *dev_hndl)
-{
-	int i = 0;
-	uint32_t st_c2h_err_reg_list[] = {
-		QDMA_OFFSET_C2H_ERR_STAT,
-		QDMA_OFFSET_C2H_FATAL_ERR_STAT,
-		QDMA_OFFSET_C2H_FIRST_ERR_QID,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2,
-		QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED,
-		QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED
-	};
-	int st_c2h_err_num_regs = sizeof(st_c2h_err_reg_list)/sizeof(uint32_t);
-
-	for (i = 0; i < st_c2h_err_num_regs; i++) {
-		qdma_dump_reg_info(dev_hndl, st_c2h_err_reg_list[i],
-					1, NULL, 0);
-	}
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_get_error_name() - Function to get the error in string format
- *
- * @err_idx: error index
- *
- * Return: string - success and NULL on failure
- *****************************************************************************/
-const char *qdma_hw_get_error_name(uint32_t err_idx)
-{
-	if (err_idx >= QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, returning NULL\n",
-				__func__, (enum qdma_error_idx)err_idx);
-		return NULL;
-	}
-
-	return qdma_err_info[(enum qdma_error_idx)err_idx].err_name;
-}
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_process() - Function to find the error that got
- * triggered and call the handler qdma_hw_error_handler of that
- * particular error.
- *
- * @dev_hndl: device handle
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_process(void *dev_hndl)
-{
-	uint32_t glbl_err_stat = 0, err_stat = 0;
-	uint32_t bit = 0, i = 0;
-	int32_t idx = 0;
-	struct qdma_dev_attributes dev_cap;
-	uint32_t hw_err_position[TOTAL_LEAF_ERROR_AGGREGATORS] = {
-		QDMA_DSC_ERR_POISON,
-		QDMA_TRQ_ERR_UNMAPPED,
-		QDMA_ST_C2H_ERR_MTY_MISMATCH,
-		QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-		QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-		QDMA_SBE_ERR_MI_H2C0_DAT,
-		QDMA_DBE_ERR_MI_H2C0_DAT
-	};
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	glbl_err_stat = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT);
-	if (!glbl_err_stat)
-		return QDMA_HW_ERR_NOT_DETECTED;
-
-	qdma_log_info("addr = 0x%08x val = 0x%08x",
-			QDMA_OFFSET_GLBL_ERR_STAT,
-			glbl_err_stat);
-	for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-		bit = hw_err_position[i];
-
-		if ((!dev_cap.st_en) && (bit == QDMA_ST_C2H_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_FATAL_ERR_MTY_MISMATCH ||
-				bit == QDMA_ST_H2C_ERR_ZERO_LEN_DESC))
-			continue;
-
-		err_stat = qdma_reg_read(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr);
-
-		if (err_stat) {
-			qdma_log_info("addr = 0x%08x val = 0x%08x",
-					qdma_err_info[bit].stat_reg_addr,
-					err_stat);
-
-			qdma_err_info[bit].qdma_hw_err_process(
-						dev_hndl);
-
-			for (idx = bit; idx < all_hw_errs[i]; idx++) {
-				/* call the platform specific handler */
-				if (err_stat & qdma_err_info[idx].leaf_err_mask)
-					qdma_log_error("%s detected %s",
-						__func__,
-						qdma_hw_get_error_name(idx));
-			}
-
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[bit].stat_reg_addr,
-				err_stat);
-
-		}
-
-	}
-
-	/* Write 1 to the global status register to clear the bits */
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_STAT, glbl_err_stat);
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_hw_error_enable() - Function to enable all or a specific error
- *
- * @dev_hndl: device handle
- * @err_idx: error index
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx)
-{
-	uint32_t idx = 0, i = 0;
-	uint32_t reg_val = 0;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (err_idx > QDMA_ERRS_ALL) {
-		qdma_log_error("%s: err_idx=%d is invalid, err:%d\n",
-					   __func__, err_idx,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (err_idx == QDMA_ERRS_ALL) {
-		for (i = 0; i < TOTAL_LEAF_ERROR_AGGREGATORS; i++) {
-
-			idx = all_hw_errs[i];
-
-			/* Don't access streaming registers in
-			 * MM only bitstreams
-			 */
-			if (!dev_cap.st_en) {
-				if (idx == QDMA_ST_C2H_ERR_ALL ||
-					idx == QDMA_ST_FATAL_ERR_ALL ||
-					idx == QDMA_ST_H2C_ERR_ALL)
-					continue;
-			}
-
-			reg_val = qdma_err_info[idx].leaf_err_mask;
-			qdma_reg_write(dev_hndl,
-				qdma_err_info[idx].mask_reg_addr, reg_val);
-
-			reg_val = qdma_reg_read(dev_hndl,
-					QDMA_OFFSET_GLBL_ERR_MASK);
-			reg_val |= FIELD_SET(
-				qdma_err_info[idx].global_err_mask, 1);
-			qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK,
-					reg_val);
-		}
-
-	} else {
-		/* Don't access streaming registers in MM only bitstreams
-		 *  QDMA_C2H_ERR_MTY_MISMATCH to QDMA_H2C_ERR_ALL are all
-		 *  ST errors
-		 */
-		if (!dev_cap.st_en) {
-			if (err_idx >= QDMA_ST_C2H_ERR_MTY_MISMATCH &&
-					err_idx <= QDMA_ST_H2C_ERR_ALL)
-				return QDMA_SUCCESS;
-		}
-
-		reg_val = qdma_reg_read(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].leaf_err_mask, 1);
-		qdma_reg_write(dev_hndl,
-				qdma_err_info[err_idx].mask_reg_addr, reg_val);
-
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK);
-		reg_val |= FIELD_SET(qdma_err_info[err_idx].global_err_mask, 1);
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_ERR_MASK, reg_val);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_regs() - Function to get qdma config register dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @is_vf:      Whether PF or VF
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen)
-{
-	uint32_t i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs) / sizeof((qdma_config_regs)[0]);
-	uint32_t len = 0, val = 0;
-	int rv = QDMA_SUCCESS;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (buflen < qdma_soft_reg_dump_buf_len()) {
-		qdma_log_error("%s: Buffer too small, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	if (is_vf) {
-		qdma_log_error("%s: Wrong API used for VF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	reg_info = qdma_config_regs;
-	for (i = 0; i < num_regs; i++) {
-		if ((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0)
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d", reg_info[i].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			val = qdma_reg_read(dev_hndl,
-					(reg_info[i].addr + (j * 4)));
-			rv = dump_reg(buf + len, buflen - len,
-					(reg_info[i].addr + (j * 4)),
-						name, val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-	}
-
-	return len;
-}
-
-/*
- * qdma_fill_intr_ctxt() - Helper function to fill interrupt context
- *                           into structure
- *
- */
-static void qdma_fill_intr_ctxt(struct qdma_indirect_intr_ctxt *intr_ctxt)
-{
-	ind_intr_ctxt_entries[0].value = intr_ctxt->valid;
-	ind_intr_ctxt_entries[1].value = intr_ctxt->vec;
-	ind_intr_ctxt_entries[2].value = intr_ctxt->int_st;
-	ind_intr_ctxt_entries[3].value = intr_ctxt->color;
-	ind_intr_ctxt_entries[4].value =
-			intr_ctxt->baddr_4k & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[5].value =
-			(intr_ctxt->baddr_4k >> 32) & 0xFFFFFFFF;
-	ind_intr_ctxt_entries[6].value = intr_ctxt->page_size;
-	ind_intr_ctxt_entries[7].value = intr_ctxt->pidx;
-	ind_intr_ctxt_entries[8].value = intr_ctxt->at;
-}
-
-
-static uint32_t qdma_intr_context_buf_len(void)
-{
-	uint32_t len = 0;
-
-	len += (((sizeof(ind_intr_ctxt_entries) /
-			sizeof(ind_intr_ctxt_entries[0])) + 1) *
-			REG_DUMP_SIZE_PER_LINE);
-	return len;
-}
-
-/*
- * dump_intr_context() - Helper function to dump interrupt context into string
- *
- * return len - length of the string copied into buffer
- */
-static int dump_intr_context(struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, int buf_sz)
-{
-	int i = 0;
-	int n;
-	int len = 0;
-	int rv;
-	char banner[DEBGFS_LINE_SZ];
-
-	qdma_fill_intr_ctxt(intr_ctx);
-
-	for (i = 0; i < DEBGFS_LINE_SZ - 5; i++) {
-		rv = QDMA_SNPRINTF_S(banner + i,
-			(DEBGFS_LINE_SZ - i),
-			sizeof("-"), "-");
-		if ((rv < 0) || (rv > (int)sizeof("-"))) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-	}
-
-	/* Interrupt context dump */
-	n = sizeof(ind_intr_ctxt_entries) /
-			sizeof((ind_intr_ctxt_entries)[0]);
-	for (i = 0; i < n; i++) {
-		if ((len >= buf_sz) || ((len + DEBGFS_LINE_SZ) >= buf_sz))
-			goto INSUF_BUF_EXIT;
-
-		if (i == 0) {
-			if ((len + (3 * DEBGFS_LINE_SZ)) >= buf_sz)
-				goto INSUF_BUF_EXIT;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%50s %d",
-				"Interrupt Context for ring#", ring_index);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-
-			rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len),
-				DEBGFS_LINE_SZ, "\n%s\n", banner);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				goto INSUF_BUF_EXIT;
-			}
-			len += rv;
-		}
-
-		rv = QDMA_SNPRINTF_S(buf + len, (buf_sz - len), DEBGFS_LINE_SZ,
-			"%-47s %#-10x %u\n",
-			ind_intr_ctxt_entries[i].name,
-			ind_intr_ctxt_entries[i].value,
-			ind_intr_ctxt_entries[i].value);
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-			goto INSUF_BUF_EXIT;
-		}
-		len += rv;
-	}
-
-	return len;
-
-INSUF_BUF_EXIT:
-	if (buf_sz > DEBGFS_LINE_SZ) {
-		rv = QDMA_SNPRINTF_S((buf + buf_sz - DEBGFS_LINE_SZ),
-			buf_sz, DEBGFS_LINE_SZ,
-			"\n\nInsufficient buffer size, partial context dump\n");
-		if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-			qdma_log_error(
-				"%d:%s QDMA_SNPRINTF_S() failed, err:%d\n",
-				__LINE__, __func__,
-				rv);
-		}
-	}
-
-	qdma_log_error("%s: Insufficient buffer size, err:%d\n",
-		__func__, -QDMA_ERR_NO_MEM);
-
-	return -QDMA_ERR_NO_MEM;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_dump_intr_context() - Function to get qdma interrupt context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @hw_qid:     queue id
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!intr_ctx) {
-		qdma_log_error("%s: intr_ctx is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	req_buflen = qdma_intr_context_buf_len();
-	if (buflen < req_buflen) {
-		qdma_log_error("%s: Too small buffer(%d), reqd(%d), err:%d\n",
-			__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_intr_context(intr_ctx, ring_index, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_queue_context() - Function to get qdma queue context dump in a
- * buffer
- *
- * @dev_hndl:   device handle
- * @st:			Queue Mode (ST or MM)
- * @q_type:		Queue Type
- * @ctxt_data:  Context Data
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen)
-{
-	int rv = 0;
-	uint32_t req_buflen = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!ctxt_data) {
-		qdma_log_error("%s: ctxt_data is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: invalid q_type, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	rv = dump_soft_context(ctxt_data, st, q_type, buf, buflen);
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_dump_queue_context() - Function to read and dump the queue
- * context in the user-provided buffer. This API is valid only for PF and
- * should not be used for VFs. For VF's use qdma_dump_queue_context() API
- * after reading the context through mailbox.
- *
- * @dev_hndl:   device handle
- * @is_vf:		VF or PF
- * @hw_qid:     queue id
- * @st:			Queue Mode(ST or MM)
- * @q_type:		Queue type(H2C/C2H/CMPT)*
- * @buf :       pointer to buffer to be filled
- * @buflen :    Length of the buffer
- *
- * Return:	Length up-till the buffer is filled -success and < 0 - failure
- *****************************************************************************/
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen)
-{
-	int rv = QDMA_SUCCESS;
-	uint32_t req_buflen = 0;
-	struct qdma_descq_context context;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (q_type >= QDMA_DEV_Q_TYPE_MAX) {
-		qdma_log_error("%s: Not supported for q_type, err = %d\n",
-			__func__, -QDMA_ERR_INV_PARAM);
-
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = qdma_soft_context_buf_len(st, q_type, &req_buflen);
-
-	if (rv != QDMA_SUCCESS)
-		return rv;
-
-	if (buflen < req_buflen) {
-		qdma_log_error(
-		"%s: Too small buffer(%d), reqd(%d), err:%d\n",
-		__func__, buflen, req_buflen, -QDMA_ERR_NO_MEM);
-		return -QDMA_ERR_NO_MEM;
-	}
-
-	qdma_memset(&context, 0, sizeof(struct qdma_descq_context));
-
-	if (q_type != QDMA_DEV_Q_TYPE_CMPT) {
-		rv = qdma_sw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.sw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:sw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_hw_ctx_conf(dev_hndl, (uint8_t)q_type, qid_hw,
-				&(context.hw_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:hw ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		rv = qdma_credit_ctx_conf(dev_hndl, (uint8_t)q_type,
-				qid_hw,
-				&(context.cr_ctxt),
-				QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error("%s:cr ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-
-		if (st && (q_type == QDMA_DEV_Q_TYPE_C2H)) {
-			rv = qdma_pfetch_ctx_conf(dev_hndl,
-				qid_hw, &(context.pfetch_ctxt),
-				QDMA_HW_ACCESS_READ);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s:pftch ctxt read fail, err = %d",
-						__func__, rv);
-				return rv;
-			}
-		}
-	}
-
-	if ((st && (q_type == QDMA_DEV_Q_TYPE_C2H)) ||
-		(!st && (q_type == QDMA_DEV_Q_TYPE_CMPT))) {
-		rv = qdma_cmpt_ctx_conf(dev_hndl, qid_hw,
-					 &(context.cmpt_ctxt),
-					 QDMA_HW_ACCESS_READ);
-		if (rv < 0) {
-			qdma_log_error(
-			"%s:cmpt ctxt read fail, err = %d",
-					__func__, rv);
-			return rv;
-		}
-	}
-
-	rv = dump_soft_context(&context, st, q_type, buf, buflen);
-
-	return rv;
-}
-/*****************************************************************************/
-/**
- * qdma_is_legacy_intr_pend() - function to get legacy_intr_pending status bit
- *
- * @dev_hndl: device handle
- *
- * Return: legacy interrupt pending status bit value
- *****************************************************************************/
-int qdma_is_legacy_intr_pend(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	if (FIELD_GET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, reg_val))
-		return QDMA_SUCCESS;
-
-	qdma_log_error("%s: no pending legacy intr, err:%d\n",
-				   __func__, -QDMA_ERR_INV_PARAM);
-	return -QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR;
-}
-
-/*****************************************************************************/
-/**
- * qdma_clear_pend_legacy_intr() - function to clear legacy_intr_pending bit
- *
- * @dev_hndl: device handle
- *
- * Return: void
- *****************************************************************************/
-int qdma_clear_pend_legacy_intr(void *dev_hndl)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK, 1);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_legacy_intr_conf() - function to disable/enable legacy interrupt
- *
- * @dev_hndl: device handle
- * @enable: enable/disable flag. 1 - enable, 0 - disable
- *
- * Return: void
- *****************************************************************************/
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable)
-{
-	uint32_t reg_val;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG);
-	reg_val |= FIELD_SET(QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK, enable);
-	qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_INTERRUPT_CFG, reg_val);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_init_ctxt_memory() - function to initialize the context memory
- *
- * @dev_hndl: device handle
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_init_ctxt_memory(void *dev_hndl)
-{
-#ifdef ENABLE_INIT_CTXT_MEMORY
-	uint32_t data[QDMA_REG_IND_CTXT_REG_COUNT];
-	uint16_t i = 0;
-	struct qdma_dev_attributes dev_info;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_memset(data, 0, sizeof(uint32_t) * QDMA_REG_IND_CTXT_REG_COUNT);
-	qdma_get_device_attributes(dev_hndl, &dev_info);
-
-	for (; i < dev_info.num_qs; i++) {
-		int sel = QDMA_CTXT_SEL_SW_C2H;
-		int rv;
-
-		for (; sel <= QDMA_CTXT_SEL_PFTCH; sel++) {
-			/** if the st mode(h2c/c2h) not enabled
-			 *  in the design, then skip the PFTCH
-			 *  and CMPT context setup
-			 */
-			if ((dev_info.st_en == 0) &&
-			    ((sel == QDMA_CTXT_SEL_PFTCH) ||
-				(sel == QDMA_CTXT_SEL_CMPT))) {
-				qdma_log_debug("%s: ST context is skipped:",
-					__func__);
-				qdma_log_debug("sel = %d\n", sel);
-				continue;
-			}
-
-			rv = qdma_indirect_reg_clear(dev_hndl,
-					(enum ind_ctxt_cmd_sel)sel, i);
-			if (rv < 0)
-				return rv;
-		}
-	}
-
-	/* fmap */
-	for (i = 0; i < dev_info.num_pfs; i++)
-		qdma_indirect_reg_clear(dev_hndl,
-				QDMA_CTXT_SEL_FMAP, i);
-
-#else
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-#endif
-	return QDMA_SUCCESS;
-
-}
-
-static int get_reg_entry(uint32_t reg_addr, int *reg_entry)
-{
-	uint32_t i = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-
-	reg_info = qdma_config_regs;
-
-	for (i = 0; (i < num_regs - 1); i++) {
-		if (reg_info[i].addr == reg_addr) {
-			*reg_entry = i;
-			break;
-		}
-	}
-
-	if (i >= num_regs - 1) {
-		qdma_log_error("%s: 0x%08x is missing register list, err:%d\n",
-					__func__,
-					reg_addr,
-					-QDMA_ERR_INV_PARAM);
-		*reg_entry = -1;
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	return 0;
-}
-
-/*****************************************************************************/
-/**
- * qdma_soft_dump_config_reg_list() - Dump the registers
- *
- * @dev_hndl:		device handle
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- * @buf :		pointer to buffer to be filled
- * @buflen :		Length of the buffer
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_soft_dump_config_reg_list(void *dev_hndl, uint32_t total_regs,
-		struct qdma_reg_data *reg_list, char *buf, uint32_t buflen)
-{
-	uint32_t j = 0, len = 0;
-	uint32_t reg_count = 0;
-	int reg_data_entry;
-	int rv = 0;
-	char name[DEBGFS_GEN_NAME_SZ] = "";
-	struct xreg_info *reg_info = qdma_config_regs;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!buf) {
-		qdma_log_error("%s: buf is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (reg_count = 0;
-			(reg_count < total_regs);) {
-
-		rv = get_reg_entry(reg_list[reg_count].reg_addr,
-					&reg_data_entry);
-		if (rv < 0) {
-			qdma_log_error("%s: register missing in list, err:%d\n",
-						   __func__,
-						   -QDMA_ERR_INV_PARAM);
-			return rv;
-		}
-
-		for (j = 0; j < reg_info[reg_data_entry].repeat; j++) {
-			rv = QDMA_SNPRINTF_S(name, DEBGFS_GEN_NAME_SZ,
-					DEBGFS_GEN_NAME_SZ,
-					"%s_%d",
-					reg_info[reg_data_entry].name, j);
-			if ((rv < 0) || (rv > DEBGFS_GEN_NAME_SZ)) {
-				qdma_log_error(
-					"%d:%s snprintf failed, err:%d\n",
-					__LINE__, __func__,
-					rv);
-				return -QDMA_ERR_NO_MEM;
-			}
-			rv = dump_reg(buf + len, buflen - len,
-				(reg_info[reg_data_entry].addr + (j * 4)),
-					name,
-					reg_list[reg_count + j].reg_val);
-			if (rv < 0) {
-				qdma_log_error(
-				"%s Buff too small, err:%d\n",
-				__func__,
-				-QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			len += rv;
-		}
-		reg_count += j;
-	}
-
-	return len;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_read_reg_list() - read the register values
- *
- * @dev_hndl:		device handle
- * @is_vf:		Whether PF or VF
- * @total_regs :	Max registers to read
- * @reg_list :		array of reg addr and reg values
- *
- * Return: returns the platform specific error code
- *****************************************************************************/
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list)
-{
-	uint16_t reg_count = 0, i = 0, j = 0;
-	struct xreg_info *reg_info;
-	uint32_t num_regs =
-		sizeof(qdma_config_regs)/
-		sizeof((qdma_config_regs)[0]);
-	struct qdma_dev_attributes dev_cap;
-	uint32_t reg_start_addr = 0;
-	int reg_index = 0;
-	int rv = 0;
-
-	if (!is_vf) {
-		qdma_log_error("%s: not supported for PF, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!reg_list) {
-		qdma_log_error("%s: reg_list is NULL, err:%d\n",
-					   __func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	switch (reg_rd_group) {
-	case QDMA_REG_READ_GROUP_1:
-			reg_start_addr = QDMA_REG_GROUP_1_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_2:
-			reg_start_addr = QDMA_REG_GROUP_2_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_3:
-			reg_start_addr = QDMA_REG_GROUP_3_START_ADDR;
-			break;
-	case QDMA_REG_READ_GROUP_4:
-			reg_start_addr = QDMA_REG_GROUP_4_START_ADDR;
-			break;
-	default:
-		qdma_log_error("%s: Invalid group received\n",
-			   __func__);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	rv = get_reg_entry(reg_start_addr, &reg_index);
-	if (rv < 0) {
-		qdma_log_error("%s: register missing in list, err:%d\n",
-					   __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return rv;
-	}
-	reg_info = &qdma_config_regs[reg_index];
-
-	for (i = 0, reg_count = 0;
-			((i < num_regs - 1 - reg_index) &&
-			(reg_count < QDMA_MAX_REGISTER_DUMP)); i++) {
-
-		if (((GET_CAPABILITY_MASK(dev_cap.mm_en, dev_cap.st_en,
-				dev_cap.mm_cmpt_en, dev_cap.mailbox_en)
-				& reg_info[i].mode) == 0) ||
-			(reg_info[i].read_type == QDMA_REG_READ_PF_ONLY))
-			continue;
-
-		for (j = 0; j < reg_info[i].repeat &&
-				(reg_count < QDMA_MAX_REGISTER_DUMP);
-				j++) {
-			reg_list[reg_count].reg_addr =
-					(reg_info[i].addr + (j * 4));
-			reg_list[reg_count].reg_val =
-				qdma_reg_read(dev_hndl,
-					reg_list[reg_count].reg_addr);
-			reg_count++;
-		}
-	}
-
-	*total_regs = reg_count;
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_ring_sizes() - function to set the global ring size array
- *
- * @dev_hndl:   device handle
- * @index: Index from where the values needs to written
- * @count: number of entries to be written
- * @glbl_rng_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_RING_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_write_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_ring_sizes() - function to get the global rng_sz array
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_rng_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_ring_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_rng_sz)
-{
-	if (!dev_hndl || !glbl_rng_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_rng_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_rng_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_RING_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_read_csr_values(dev_hndl, QDMA_OFFSET_GLBL_RNG_SZ, index, count,
-			glbl_rng_sz);
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_timer_count() - function to set the timer values
- *
- * @dev_hndl:   device handle
- * @glbl_tmr_cnt: pointer to the array having the values to write
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, const uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_TIMER_CNT,
-				index, count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_timer_count() - function to get the timer values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_tmr_cnt: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_timer_count(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_tmr_cnt)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_tmr_cnt || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_tmr_cnt=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_tmr_cnt,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_TIMERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_TIMERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl,
-				QDMA_OFFSET_C2H_TIMER_CNT, index,
-				count, glbl_tmr_cnt);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_counter_threshold() - function to set the counter
- *						threshold values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_cnt_th: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_counter_threshold() - function to get the counter threshold
- * values
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_cnt_th: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_counter_threshold(void *dev_hndl, uint8_t index,
-		uint8_t count, uint32_t *glbl_cnt_th)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_cnt_th || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_cnt_th=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_cnt_th,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_COUNTERS) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_COUNTERS,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_CNT_TH, index,
-				count, glbl_cnt_th);
-	else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_write_global_buffer_sizes() - function to set the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to written
- * @count:	 number of entries to be written
- * @glbl_buf_sz: pointer to the array having the values to write
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_write_global_buffer_sizes(void *dev_hndl, uint8_t index,
-		uint8_t count, const uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_write_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST not supported, err:%d\n",
-				__func__,
-				-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_read_global_buffer_sizes() - function to get the buffer sizes
- *
- * @dev_hndl:   device handle
- * @index:	 Index from where the values needs to read
- * @count:	 number of entries to be read
- * @glbl_buf_sz: pointer to array to hold the values read
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_read_global_buffer_sizes(void *dev_hndl, uint8_t index,
-				uint8_t count, uint32_t *glbl_buf_sz)
-{
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl || !glbl_buf_sz || !count) {
-		qdma_log_error("%s: dev_hndl=%p glbl_buf_sz=%p, err:%d\n",
-					   __func__, dev_hndl, glbl_buf_sz,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if ((index + count) > QDMA_NUM_C2H_BUFFER_SIZES) {
-		qdma_log_error("%s: index=%u count=%u > %d, err:%d\n",
-					   __func__, index, count,
-					   QDMA_NUM_C2H_BUFFER_SIZES,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en)
-		qdma_read_csr_values(dev_hndl, QDMA_OFFSET_C2H_BUF_SZ, index,
-				count, glbl_buf_sz);
-	else {
-		qdma_log_error("%s: ST is not supported, err:%d\n",
-					__func__,
-					-QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_csr_conf() - function to configure global csr
- *
- * @dev_hndl:	device handle
- * @index:	Index from where the values needs to read
- * @count:	number of entries to be read
- * @csr_val:	uint32_t pointer to csr value
- * @csr_type:	Type of the CSR (qdma_global_csr_type enum) to configure
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * (index + count) shall not be more than 16
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (csr_type) {
-	case QDMA_CSR_RING_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_ring_sizes(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_TIMER_CNT:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv = qdma_read_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv = qdma_write_global_timer_count(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_CNT_TH:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_counter_threshold(
-						dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	case QDMA_CSR_BUF_SZ:
-		switch (access_type) {
-		case QDMA_HW_ACCESS_READ:
-			rv =
-			qdma_read_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		case QDMA_HW_ACCESS_WRITE:
-			rv =
-			qdma_write_global_buffer_sizes(dev_hndl,
-						index,
-						count,
-						csr_val);
-			break;
-		default:
-			qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-							__func__,
-							access_type,
-						   -QDMA_ERR_INV_PARAM);
-			rv = -QDMA_ERR_INV_PARAM;
-			break;
-		}
-		break;
-	default:
-		qdma_log_error("%s: csr_type(%d) invalid, err:%d\n",
-						__func__,
-						csr_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_write() -  function to set the writeback
- * interval
- *
- * @dev_hndl	device handle
- * @wb_int:	Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_write(void *dev_hndl,
-		enum qdma_wrb_interval wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (wb_int >=  QDMA_NUM_WRB_INTERVALS) {
-		qdma_log_error("%s: wb_int=%d is invalid, err:%d\n",
-					   __func__, wb_int,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		reg_val |= FIELD_SET(QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, wb_int);
-
-		qdma_reg_write(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_read() -  function to get the writeback
- * interval
- *
- * @dev_hndl:	device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-static int qdma_global_writeback_interval_read(void *dev_hndl,
-		enum qdma_wrb_interval *wb_int)
-{
-	uint32_t reg_val;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	if (!wb_int) {
-		qdma_log_error("%s: wb_int is NULL, err:%d\n", __func__,
-					   -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.st_en || dev_cap.mm_cmpt_en) {
-		reg_val = qdma_reg_read(dev_hndl, QDMA_OFFSET_GLBL_DSC_CFG);
-		*wb_int = (enum qdma_wrb_interval)FIELD_GET(
-				QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK, reg_val);
-	} else {
-		qdma_log_error("%s: ST or MM cmpt not supported, err:%d\n",
-			   __func__, -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED);
-		return -QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED;
-	}
-
-	return QDMA_SUCCESS;
-}
-
-/*****************************************************************************/
-/**
- * qdma_global_writeback_interval_conf() - function to configure
- *					the writeback interval
- *
- * @dev_hndl:   device handle
- * @wb_int:	pointer to the data to hold Writeback Interval
- * @access_type HW access type (qdma_hw_access_type enum) value
- *		QDMA_HW_ACCESS_CLEAR - Not supported
- *		QDMA_HW_ACCESS_INVALIDATE - Not supported
- *
- * Return:	0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type)
-{
-	int rv = QDMA_SUCCESS;
-
-	switch (access_type) {
-	case QDMA_HW_ACCESS_READ:
-		rv = qdma_global_writeback_interval_read(dev_hndl, wb_int);
-		break;
-	case QDMA_HW_ACCESS_WRITE:
-		rv = qdma_global_writeback_interval_write(dev_hndl, *wb_int);
-		break;
-	case QDMA_HW_ACCESS_CLEAR:
-	case QDMA_HW_ACCESS_INVALIDATE:
-	default:
-		qdma_log_error("%s: access_type(%d) invalid, err:%d\n",
-						__func__,
-						access_type,
-					   -QDMA_ERR_INV_PARAM);
-		rv = -QDMA_ERR_INV_PARAM;
-		break;
-	}
-
-	return rv;
-}
-
-
-/*****************************************************************************/
-/**
- * qdma_mm_channel_conf() - Function to enable/disable the MM channel
- *
- * @dev_hndl:	device handle
- * @channel:	MM channel number
- * @is_c2h:	Queue direction. Set 1 for C2H and 0 for H2C
- * @enable:	Enable or disable MM channel
- *
- * Presently, we have only 1 MM channel
- *
- * Return:   0   - success and < 0 - failure
- *****************************************************************************/
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable)
-{
-	uint32_t reg_addr = (is_c2h) ?  QDMA_OFFSET_C2H_MM_CONTROL :
-			QDMA_OFFSET_H2C_MM_CONTROL;
-	struct qdma_dev_attributes dev_cap;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	qdma_get_device_attributes(dev_hndl, &dev_cap);
-
-	if (dev_cap.mm_en) {
-		qdma_reg_write(dev_hndl,
-				reg_addr + (channel * QDMA_MM_CONTROL_STEP),
-				enable);
-	}
-
-	return QDMA_SUCCESS;
-}
-
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-		uint32_t num_regs, char *buf, uint32_t buflen)
-{
-	uint32_t total_num_regs = qdma_get_config_num_regs();
-	struct xreg_info *config_regs  = qdma_get_config_regs();
-	const char *bitfield_name;
-	uint32_t i = 0, num_regs_idx = 0, k = 0, j = 0,
-			bitfield = 0, lsb = 0, msb = 31;
-	int rv = 0;
-	uint32_t reg_val;
-	uint32_t data_len = 0;
-
-	if (!dev_hndl) {
-		qdma_log_error("%s: dev_handle is NULL, err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	for (i = 0; i < total_num_regs; i++) {
-		if (reg_addr == config_regs[i].addr) {
-			j = i;
-			break;
-		}
-	}
-
-	if (i == total_num_regs) {
-		qdma_log_error("%s: Register not found err:%d\n",
-				__func__, -QDMA_ERR_INV_PARAM);
-		if (buf)
-			QDMA_SNPRINTF_S(buf, buflen,
-					DEBGFS_LINE_SZ,
-					"Register not found 0x%x\n", reg_addr);
-		return -QDMA_ERR_INV_PARAM;
-	}
-
-	num_regs_idx = (j + num_regs < total_num_regs) ?
-					(j + num_regs) : total_num_regs;
-
-	for (; j < num_regs_idx ; j++) {
-		reg_val = qdma_reg_read(dev_hndl,
-				config_regs[j].addr);
-
-		if (buf) {
-			rv = QDMA_SNPRINTF_S(buf, buflen,
-						DEBGFS_LINE_SZ,
-						"\n%-40s 0x%-7x %-#10x %-10d\n",
-						config_regs[j].name,
-						config_regs[j].addr,
-						reg_val, reg_val);
-			if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-				qdma_log_error(
-					"%s: Insufficient buffer, err:%d\n",
-					__func__, -QDMA_ERR_NO_MEM);
-				return -QDMA_ERR_NO_MEM;
-			}
-			buf += rv;
-			data_len += rv;
-			buflen -= rv;
-		} else
-			qdma_log_info("%-40s 0x%-7x %-#10x %-10d\n",
-						  config_regs[j].name,
-						  config_regs[j].addr,
-						  reg_val, reg_val);
-
-
-		for (k = 0;
-			 k < config_regs[j].num_bitfields; k++) {
-
-			bitfield =
-				config_regs[j].bitfields[k].field_mask;
-			bitfield_name =
-				config_regs[i].bitfields[k].field_name;
-			lsb = 0;
-			msb = 31;
-
-			while (!(BIT(lsb) & bitfield))
-				lsb++;
-
-			while (!(BIT(msb) & bitfield))
-				msb--;
-
-			if (msb != lsb) {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%2u,%2u]   %#-10x\n",
-							bitfield_name,
-							msb, lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%2u,%2u]   %#-10x\n",
-						bitfield_name,
-						msb, lsb,
-						(reg_val & bitfield) >> lsb);
-
-
-			} else {
-				if (buf) {
-					rv = QDMA_SNPRINTF_S(buf, buflen,
-							DEBGFS_LINE_SZ,
-							"%-40s [%5u]   %#-10x\n",
-							bitfield_name,
-							lsb,
-							(reg_val & bitfield) >>
-								lsb);
-					if ((rv < 0) || (rv > DEBGFS_LINE_SZ)) {
-						qdma_log_error(
-							"%s: Insufficient buffer, err:%d\n",
-							__func__,
-							-QDMA_ERR_NO_MEM);
-						return -QDMA_ERR_NO_MEM;
-					}
-					buf += rv;
-					data_len += rv;
-					buflen -= rv;
-				} else
-					qdma_log_info(
-						"%-40s [%5u]   %#-10x\n",
-						bitfield_name,
-						lsb,
-						(reg_val & bitfield) >> lsb);
-
-			}
-		}
-	}
-
-	return data_len;
-
-}
-
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.h
deleted file mode 100644
index f71ee57..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_access.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_SOFT_ACCESS_H_
-#define __QDMA_SOFT_ACCESS_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * DOC: QDMA common library interface definitions
- *
- * Header file *qdma_access.h* defines data structures and function signatures
- * exported by QDMA common library.
- */
-
-#include "qdma_platform.h"
-
-/**
- * enum qdma_error_idx - qdma errors
- */
-enum qdma_error_idx {
-	/* Descriptor errors */
-	QDMA_DSC_ERR_POISON,
-	QDMA_DSC_ERR_UR_CA,
-	QDMA_DSC_ERR_PARAM,
-	QDMA_DSC_ERR_ADDR,
-	QDMA_DSC_ERR_TAG,
-	QDMA_DSC_ERR_FLR,
-	QDMA_DSC_ERR_TIMEOUT,
-	QDMA_DSC_ERR_DAT_POISON,
-	QDMA_DSC_ERR_FLR_CANCEL,
-	QDMA_DSC_ERR_DMA,
-	QDMA_DSC_ERR_DSC,
-	QDMA_DSC_ERR_RQ_CANCEL,
-	QDMA_DSC_ERR_DBE,
-	QDMA_DSC_ERR_SBE,
-	QDMA_DSC_ERR_ALL,
-
-	/* TRQ Errors */
-	QDMA_TRQ_ERR_UNMAPPED,
-	QDMA_TRQ_ERR_QID_RANGE,
-	QDMA_TRQ_ERR_VF_ACCESS,
-	QDMA_TRQ_ERR_TCP_TIMEOUT,
-	QDMA_TRQ_ERR_ALL,
-
-	/* C2H Errors */
-	QDMA_ST_C2H_ERR_MTY_MISMATCH,
-	QDMA_ST_C2H_ERR_LEN_MISMATCH,
-	QDMA_ST_C2H_ERR_QID_MISMATCH,
-	QDMA_ST_C2H_ERR_DESC_RSP_ERR,
-	QDMA_ST_C2H_ERR_ENG_WPL_DATA_PAR_ERR,
-	QDMA_ST_C2H_ERR_MSI_INT_FAIL,
-	QDMA_ST_C2H_ERR_ERR_DESC_CNT,
-	QDMA_ST_C2H_ERR_PORTID_CTXT_MISMATCH,
-	QDMA_ST_C2H_ERR_PORTID_BYP_IN_MISMATCH,
-	QDMA_ST_C2H_ERR_CMPT_INV_Q_ERR,
-	QDMA_ST_C2H_ERR_CMPT_QFULL_ERR,
-	QDMA_ST_C2H_ERR_CMPT_CIDX_ERR,
-	QDMA_ST_C2H_ERR_CMPT_PRTY_ERR,
-	QDMA_ST_C2H_ERR_ALL,
-
-	/* Fatal Errors */
-	QDMA_ST_FATAL_ERR_MTY_MISMATCH,
-	QDMA_ST_FATAL_ERR_LEN_MISMATCH,
-	QDMA_ST_FATAL_ERR_QID_MISMATCH,
-	QDMA_ST_FATAL_ERR_TIMER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_II_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PFCH_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_INT_CTXT_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_TUSER_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_QID_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE,
-	QDMA_ST_FATAL_ERR_WPL_DATA_PAR,
-	QDMA_ST_FATAL_ERR_ALL,
-
-	/* H2C Errors */
-	QDMA_ST_H2C_ERR_ZERO_LEN_DESC,
-	QDMA_ST_H2C_ERR_CSI_MOP,
-	QDMA_ST_H2C_ERR_NO_DMA_DSC,
-	QDMA_ST_H2C_ERR_SBE,
-	QDMA_ST_H2C_ERR_DBE,
-	QDMA_ST_H2C_ERR_ALL,
-
-	/* Single bit errors */
-	QDMA_SBE_ERR_MI_H2C0_DAT,
-	QDMA_SBE_ERR_MI_C2H0_DAT,
-	QDMA_SBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_SBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_SBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_SBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_SBE_ERR_FUNC_MAP,
-	QDMA_SBE_ERR_DSC_HW_CTXT,
-	QDMA_SBE_ERR_DSC_CRD_RCV,
-	QDMA_SBE_ERR_DSC_SW_CTXT,
-	QDMA_SBE_ERR_DSC_CPLI,
-	QDMA_SBE_ERR_DSC_CPLD,
-	QDMA_SBE_ERR_PASID_CTXT_RAM,
-	QDMA_SBE_ERR_TIMER_FIFO_RAM,
-	QDMA_SBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_SBE_ERR_QID_FIFO_RAM,
-	QDMA_SBE_ERR_TUSER_FIFO_RAM,
-	QDMA_SBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_SBE_ERR_INT_QID2VEC_RAM,
-	QDMA_SBE_ERR_INT_CTXT_RAM,
-	QDMA_SBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_SBE_ERR_PFCH_CTXT_RAM,
-	QDMA_SBE_ERR_WRB_CTXT_RAM,
-	QDMA_SBE_ERR_PFCH_LL_RAM,
-	QDMA_SBE_ERR_H2C_PEND_FIFO,
-	QDMA_SBE_ERR_ALL,
-
-	/* Double bit Errors */
-	QDMA_DBE_ERR_MI_H2C0_DAT,
-	QDMA_DBE_ERR_MI_C2H0_DAT,
-	QDMA_DBE_ERR_H2C_RD_BRG_DAT,
-	QDMA_DBE_ERR_H2C_WR_BRG_DAT,
-	QDMA_DBE_ERR_C2H_RD_BRG_DAT,
-	QDMA_DBE_ERR_C2H_WR_BRG_DAT,
-	QDMA_DBE_ERR_FUNC_MAP,
-	QDMA_DBE_ERR_DSC_HW_CTXT,
-	QDMA_DBE_ERR_DSC_CRD_RCV,
-	QDMA_DBE_ERR_DSC_SW_CTXT,
-	QDMA_DBE_ERR_DSC_CPLI,
-	QDMA_DBE_ERR_DSC_CPLD,
-	QDMA_DBE_ERR_PASID_CTXT_RAM,
-	QDMA_DBE_ERR_TIMER_FIFO_RAM,
-	QDMA_DBE_ERR_PAYLOAD_FIFO_RAM,
-	QDMA_DBE_ERR_QID_FIFO_RAM,
-	QDMA_DBE_ERR_TUSER_FIFO_RAM,
-	QDMA_DBE_ERR_WRB_COAL_DATA_RAM,
-	QDMA_DBE_ERR_INT_QID2VEC_RAM,
-	QDMA_DBE_ERR_INT_CTXT_RAM,
-	QDMA_DBE_ERR_DESC_REQ_FIFO_RAM,
-	QDMA_DBE_ERR_PFCH_CTXT_RAM,
-	QDMA_DBE_ERR_WRB_CTXT_RAM,
-	QDMA_DBE_ERR_PFCH_LL_RAM,
-	QDMA_DBE_ERR_H2C_PEND_FIFO,
-	QDMA_DBE_ERR_ALL,
-
-	QDMA_ERRS_ALL
-};
-
-struct qdma_hw_err_info {
-	enum qdma_error_idx idx;
-	const char *err_name;
-	uint32_t mask_reg_addr;
-	uint32_t stat_reg_addr;
-	uint32_t leaf_err_mask;
-	uint32_t global_err_mask;
-	void (*qdma_hw_err_process)(void *dev_hndl);
-};
-
-
-int qdma_set_default_global_csr(void *dev_hndl);
-
-int qdma_get_version(void *dev_hndl, uint8_t is_vf,
-		struct qdma_hw_version_info *version_info);
-
-int qdma_pfetch_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-				struct qdma_descq_prefetch_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_sw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_sw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_fmap_conf(void *dev_hndl, uint16_t func_id,
-				struct qdma_fmap_cfg *config,
-				enum qdma_hw_access_type access_type);
-
-int qdma_cmpt_ctx_conf(void *dev_hndl, uint16_t hw_qid,
-			struct qdma_descq_cmpt_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_hw_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-				struct qdma_descq_hw_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_credit_ctx_conf(void *dev_hndl, uint8_t c2h, uint16_t hw_qid,
-			struct qdma_descq_credit_ctxt *ctxt,
-			enum qdma_hw_access_type access_type);
-
-int qdma_indirect_intr_ctx_conf(void *dev_hndl, uint16_t ring_index,
-				struct qdma_indirect_intr_ctxt *ctxt,
-				enum qdma_hw_access_type access_type);
-
-int qdma_queue_pidx_update(void *dev_hndl, uint8_t is_vf, uint16_t qid,
-		uint8_t is_c2h, const struct qdma_q_pidx_reg_info *reg_info);
-
-int qdma_queue_cmpt_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_q_cmpt_cidx_reg_info *reg_info);
-
-int qdma_queue_intr_cidx_update(void *dev_hndl, uint8_t is_vf,
-		uint16_t qid, const struct qdma_intr_cidx_reg_info *reg_info);
-
-int qdma_init_ctxt_memory(void *dev_hndl);
-
-int qdma_legacy_intr_conf(void *dev_hndl, enum status_type enable);
-
-int qdma_clear_pend_legacy_intr(void *dev_hndl);
-
-int qdma_is_legacy_intr_pend(void *dev_hndl);
-
-int qdma_dump_intr_context(void *dev_hndl,
-		struct qdma_indirect_intr_ctxt *intr_ctx,
-		int ring_index,
-		char *buf, uint32_t buflen);
-
-uint32_t qdma_soft_reg_dump_buf_len(void);
-
-uint32_t qdma_get_config_num_regs(void);
-
-struct xreg_info *qdma_get_config_regs(void);
-
-int qdma_soft_context_buf_len(uint8_t st,
-		enum qdma_dev_q_type q_type, uint32_t *buflen);
-
-int qdma_soft_dump_config_regs(void *dev_hndl, uint8_t is_vf,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_dump_queue_context(void *dev_hndl,
-		uint8_t st,
-		enum qdma_dev_q_type q_type,
-		struct qdma_descq_context *ctxt_data,
-		char *buf, uint32_t buflen);
-
-int qdma_soft_read_dump_queue_context(void *dev_hndl,
-				uint16_t qid_hw,
-				uint8_t st,
-				enum qdma_dev_q_type q_type,
-				char *buf, uint32_t buflen);
-
-int qdma_hw_error_process(void *dev_hndl);
-
-const char *qdma_hw_get_error_name(uint32_t err_idx);
-
-int qdma_hw_error_enable(void *dev_hndl, uint32_t err_idx);
-
-int qdma_get_device_attributes(void *dev_hndl,
-		struct qdma_dev_attributes *dev_info);
-
-int qdma_get_user_bar(void *dev_hndl, uint8_t is_vf,
-		uint8_t func_id, uint8_t *user_bar);
-
-int qdma_soft_dump_config_reg_list(void *dev_hndl,
-		uint32_t total_regs,
-		struct qdma_reg_data *reg_list,
-		char *buf, uint32_t buflen);
-
-int qdma_read_reg_list(void *dev_hndl, uint8_t is_vf,
-		uint16_t reg_rd_group,
-		uint16_t *total_regs,
-		struct qdma_reg_data *reg_list);
-
-int qdma_global_csr_conf(void *dev_hndl, uint8_t index, uint8_t count,
-				uint32_t *csr_val,
-				enum qdma_global_csr_type csr_type,
-				enum qdma_hw_access_type access_type);
-
-int qdma_global_writeback_interval_conf(void *dev_hndl,
-				enum qdma_wrb_interval *wb_int,
-				enum qdma_hw_access_type access_type);
-
-int qdma_mm_channel_conf(void *dev_hndl, uint8_t channel, uint8_t is_c2h,
-				uint8_t enable);
-
-int qdma_dump_reg_info(void *dev_hndl, uint32_t reg_addr,
-			uint32_t num_regs, char *buf, uint32_t buflen);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_ACCESS_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_reg.h b/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_reg.h
deleted file mode 100644
index 38b35e9..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_access/qdma_soft_access/qdma_soft_reg.h
+++ /dev/null
@@ -1,582 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef __QDMA_SOFT_REG_H__
-#define __QDMA_SOFT_REG_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * User defined helper macros for masks and shifts. If the same macros are
- * defined in linux kernel code , then undefined them and used the user
- * defined macros
- */
-#ifdef CHAR_BIT
-#undef CHAR_BIT
-#endif
-#define CHAR_BIT 8
-
-#ifdef BIT
-#undef BIT
-#endif
-#define BIT(n)                  (1u << (n))
-
-#ifdef BITS_PER_BYTE
-#undef BITS_PER_BYTE
-#endif
-#define BITS_PER_BYTE           CHAR_BIT
-
-#ifdef BITS_PER_LONG
-#undef BITS_PER_LONG
-#endif
-#define BITS_PER_LONG           (sizeof(uint32_t) * BITS_PER_BYTE)
-
-#ifdef BITS_PER_LONG_LONG
-#undef BITS_PER_LONG_LONG
-#endif
-#define BITS_PER_LONG_LONG      (sizeof(uint64_t) * BITS_PER_BYTE)
-
-#ifdef GENMASK
-#undef GENMASK
-#endif
-#define GENMASK(h, l) \
-	((0xFFFFFFFF << (l)) & (0xFFFFFFFF >> (BITS_PER_LONG - 1 - (h))))
-
-#ifdef GENMASK_ULL
-#undef GENMASK_ULL
-#endif
-#define GENMASK_ULL(h, l) \
-	((0xFFFFFFFFFFFFFFFF << (l)) & \
-			(0xFFFFFFFFFFFFFFFF >> (BITS_PER_LONG_LONG - 1 - (h))))
-
-
-#define DEBGFS_LINE_SZ			(81)
-
-
-#define QDMA_H2C_THROT_DATA_THRESH       0x4000
-#define QDMA_THROT_EN_DATA               1
-#define QDMA_THROT_EN_REQ                0
-#define QDMA_H2C_THROT_REQ_THRESH        0x60
-
-/*
- * Q Context programming (indirect)
- */
-
-#define QDMA_REG_IND_CTXT_REG_COUNT                         8
-#define QDMA_REG_IND_CTXT_WCNT_1                            1
-#define QDMA_REG_IND_CTXT_WCNT_2                            2
-#define QDMA_REG_IND_CTXT_WCNT_3                            3
-#define QDMA_REG_IND_CTXT_WCNT_4                            4
-#define QDMA_REG_IND_CTXT_WCNT_5                            5
-#define QDMA_REG_IND_CTXT_WCNT_6                            6
-#define QDMA_REG_IND_CTXT_WCNT_7                            7
-#define QDMA_REG_IND_CTXT_WCNT_8                            8
-
-/* ------------------------- QDMA_TRQ_SEL_IND (0x00800) ----------------*/
-#define QDMA_OFFSET_IND_CTXT_DATA                           0x804
-#define QDMA_OFFSET_IND_CTXT_MASK                           0x824
-#define QDMA_OFFSET_IND_CTXT_CMD                            0x844
-#define     QDMA_IND_CTXT_CMD_BUSY_MASK                     0x1
-
-/** QDMA_IND_REG_SEL_FMAP */
-#define QDMA_FMAP_CTXT_W1_QID_MAX_MASK                      GENMASK(11, 0)
-#define QDMA_FMAP_CTXT_W0_QID_MASK                          GENMASK(10, 0)
-
-/** QDMA_IND_REG_SEL_SW_C2H */
-/** QDMA_IND_REG_SEL_SW_H2C */
-#define QDMA_SW_CTXT_W4_INTR_AGGR_MASK                      BIT(11)
-#define QDMA_SW_CTXT_W4_VEC_MASK                            GENMASK(10, 0)
-#define QDMA_SW_CTXT_W3_DSC_H_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W2_DSC_L_MASK                          GENMASK(31, 0)
-#define QDMA_SW_CTXT_W1_IS_MM_MASK                          BIT(31)
-#define QDMA_SW_CTXT_W1_MRKR_DIS_MASK                       BIT(30)
-#define QDMA_SW_CTXT_W1_IRQ_REQ_MASK                        BIT(29)
-#define QDMA_SW_CTXT_W1_ERR_WB_SENT_MASK                    BIT(28)
-#define QDMA_SW_CTXT_W1_ERR_MASK                            GENMASK(27, 26)
-#define QDMA_SW_CTXT_W1_IRQ_NO_LAST_MASK                    BIT(25)
-#define QDMA_SW_CTXT_W1_PORT_ID_MASK                        GENMASK(24, 22)
-#define QDMA_SW_CTXT_W1_IRQ_EN_MASK                         BIT(21)
-#define QDMA_SW_CTXT_W1_WBK_EN_MASK                         BIT(20)
-#define QDMA_SW_CTXT_W1_MM_CHN_MASK                         BIT(19)
-#define QDMA_SW_CTXT_W1_BYP_MASK                            BIT(18)
-#define QDMA_SW_CTXT_W1_DSC_SZ_MASK                         GENMASK(17, 16)
-#define QDMA_SW_CTXT_W1_RNG_SZ_MASK                         GENMASK(15, 12)
-#define QDMA_SW_CTXT_W1_FETCH_MAX_MASK                      GENMASK(7, 5)
-#define QDMA_SW_CTXT_W1_AT_MASK                             BIT(4)
-#define QDMA_SW_CTXT_W1_WB_INT_EN_MASK                      BIT(3)
-#define QDMA_SW_CTXT_W1_WBI_CHK_MASK                        BIT(2)
-#define QDMA_SW_CTXT_W1_FCRD_EN_MASK                        BIT(1)
-#define QDMA_SW_CTXT_W1_QEN_MASK                            BIT(0)
-#define QDMA_SW_CTXT_W0_FUNC_ID_MASK                        GENMASK(24, 17)
-#define QDMA_SW_CTXT_W0_IRQ_ARM_MASK                        BIT(16)
-#define QDMA_SW_CTXT_W0_PIDX                                GENMASK(15, 0)
-
-
-
-#define QDMA_PFTCH_CTXT_W1_VALID_MASK                       BIT(13)
-#define QDMA_PFTCH_CTXT_W1_SW_CRDT_H_MASK                   GENMASK(12, 0)
-#define QDMA_PFTCH_CTXT_W0_SW_CRDT_L_MASK                   GENMASK(31, 29)
-#define QDMA_PFTCH_CTXT_W0_Q_IN_PFETCH_MASK                 BIT(28)
-#define QDMA_PFTCH_CTXT_W0_PFETCH_EN_MASK                   BIT(27)
-#define QDMA_PFTCH_CTXT_W0_ERR_MASK                         BIT(26)
-#define QDMA_PFTCH_CTXT_W0_PORT_ID_MASK                     GENMASK(7, 5)
-#define QDMA_PFTCH_CTXT_W0_BUF_SIZE_IDX_MASK                GENMASK(4, 1)
-#define QDMA_PFTCH_CTXT_W0_BYPASS_MASK                      BIT(0)
-
-
-
-
-#define QDMA_COMPL_CTXT_W4_INTR_AGGR_MASK                   BIT(15)
-#define QDMA_COMPL_CTXT_W4_INTR_VEC_MASK                    GENMASK(14, 4)
-#define QDMA_COMPL_CTXT_W4_AT_MASK                          BIT(3)
-#define QDMA_COMPL_CTXT_W4_OVF_CHK_DIS_MASK                 BIT(2)
-#define QDMA_COMPL_CTXT_W4_FULL_UPDT_MASK                   BIT(1)
-#define QDMA_COMPL_CTXT_W4_TMR_RUN_MASK                     BIT(0)
-#define QDMA_COMPL_CTXT_W3_USR_TRG_PND_MASK                 BIT(31)
-#define QDMA_COMPL_CTXT_W3_ERR_MASK                         GENMASK(30, 29)
-#define QDMA_COMPL_CTXT_W3_VALID_MASK                       BIT(28)
-#define QDMA_COMPL_CTXT_W3_CIDX_MASK                        GENMASK(27, 12)
-#define QDMA_COMPL_CTXT_W3_PIDX_H_MASK                      GENMASK(11, 0)
-#define QDMA_COMPL_CTXT_W2_PIDX_L_MASK                      GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W2_DESC_SIZE_MASK                   GENMASK(27, 26)
-#define QDMA_COMPL_CTXT_W2_BADDR_64_H_MASK                  GENMASK(25, 0)
-#define QDMA_COMPL_CTXT_W1_BADDR_64_L_MASK                  GENMASK(31, 6)
-#define QDMA_COMPL_CTXT_W0_RING_SZ_MASK                     GENMASK(31, 28)
-#define QDMA_COMPL_CTXT_W0_COLOR_MASK                       BIT(27)
-#define QDMA_COMPL_CTXT_W0_INT_ST_MASK                      GENMASK(26, 25)
-#define QDMA_COMPL_CTXT_W0_TIMER_IDX_MASK                   GENMASK(24, 21)
-#define QDMA_COMPL_CTXT_W0_COUNTER_IDX_MASK                 GENMASK(20, 17)
-#define QDMA_COMPL_CTXT_W0_FNC_ID_MASK                      GENMASK(12, 5)
-#define QDMA_COMPL_CTXT_W0_TRIG_MODE_MASK                   GENMASK(4, 2)
-#define QDMA_COMPL_CTXT_W0_EN_INT_MASK                      BIT(1)
-#define QDMA_COMPL_CTXT_W0_EN_STAT_DESC_MASK                BIT(0)
-
-/** QDMA_IND_REG_SEL_HW_C2H */
-/** QDMA_IND_REG_SEL_HW_H2C */
-#define QDMA_HW_CTXT_W1_FETCH_PEND_MASK                     GENMASK(14, 11)
-#define QDMA_HW_CTXT_W1_EVENT_PEND_MASK                     BIT(10)
-#define QDMA_HW_CTXT_W1_IDL_STP_B_MASK                      BIT(9)
-#define QDMA_HW_CTXT_W1_DSC_PND_MASK                        BIT(8)
-#define QDMA_HW_CTXT_W0_CRD_USE_MASK                        GENMASK(31, 16)
-#define QDMA_HW_CTXT_W0_CIDX_MASK                           GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_CR_C2H */
-/** QDMA_IND_REG_SEL_CR_H2C */
-#define QDMA_CR_CTXT_W0_CREDT_MASK                          GENMASK(15, 0)
-
-/** QDMA_IND_REG_SEL_INTR */
-
-
-#define QDMA_INTR_CTXT_W2_AT_MASK                           BIT(18)
-#define QDMA_INTR_CTXT_W2_PIDX_MASK                         GENMASK(17, 6)
-#define QDMA_INTR_CTXT_W2_PAGE_SIZE_MASK                    GENMASK(5, 3)
-#define QDMA_INTR_CTXT_W2_BADDR_64_MASK                     GENMASK(2, 0)
-#define QDMA_INTR_CTXT_W1_BADDR_64_MASK                     GENMASK(31, 0)
-#define QDMA_INTR_CTXT_W0_BADDR_64_MASK                     GENMASK(31, 15)
-#define QDMA_INTR_CTXT_W0_COLOR_MASK                        BIT(14)
-#define QDMA_INTR_CTXT_W0_INT_ST_MASK                       BIT(13)
-#define QDMA_INTR_CTXT_W0_VEC_ID_MASK                       GENMASK(11, 1)
-#define QDMA_INTR_CTXT_W0_VALID_MASK                        BIT(0)
-
-
-
-
-
-/* ------------------------ QDMA_TRQ_SEL_GLBL (0x00200)-------------------*/
-#define QDMA_OFFSET_GLBL_RNG_SZ                             0x204
-#define QDMA_OFFSET_GLBL_SCRATCH                            0x244
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define QDMA_OFFSET_GLBL_DSC_CFG                            0x250
-#define     QDMA_GLBL_DSC_CFG_WB_ACC_INT_MASK               GENMASK(2, 0)
-#define     QDMA_GLBL_DSC_CFG_MAX_DSC_FETCH_MASK            GENMASK(5, 3)
-#define QDMA_OFFSET_GLBL_DSC_ERR_STS                        0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MSK                        0x258
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG0                       0x25C
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG1                       0x260
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STS                        0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MSK                        0x268
-#define QDMA_OFFSET_GLBL_TRQ_ERR_LOG                        0x26C
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT0                       0x270
-#define QDMA_OFFSET_GLBL_DSC_DBG_DAT1                       0x274
-#define QDMA_OFFSET_GLBL_DSC_ERR_LOG2                       0x27C
-#define QDMA_OFFSET_GLBL_INTERRUPT_CFG                      0x2C4
-#define     QDMA_GLBL_INTR_CFG_EN_LGCY_INTR_MASK            BIT(0)
-#define     QDMA_GLBL_INTR_LGCY_INTR_PEND_MASK              BIT(1)
-
-/* ------------------------- QDMA_TRQ_SEL_C2H (0x00A00) ------------------*/
-#define QDMA_OFFSET_C2H_TIMER_CNT                           0xA00
-#define QDMA_OFFSET_C2H_CNT_TH                              0xA40
-#define QDMA_OFFSET_C2H_QID2VEC_MAP_QID                     0xA80
-#define QDMA_OFFSET_C2H_QID2VEC_MAP                         0xA84
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_C2H_ACCEPTED            0xA88
-#define QDMA_OFFSET_C2H_STAT_S_AXIS_CMPT_ACCEPTED           0xA8C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_PKT_ACCEPTED          0xA90
-#define QDMA_OFFSET_C2H_STAT_AXIS_PKG_CMP                   0xA94
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ACCEPTED              0xA98
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_CMP                   0xA9C
-#define QDMA_OFFSET_C2H_STAT_WRQ_OUT                        0xAA0
-#define QDMA_OFFSET_C2H_STAT_WPL_REN_ACCEPTED               0xAA4
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WRQ_LEN                  0xAA8
-#define QDMA_OFFSET_C2H_STAT_TOTAL_WPL_LEN                  0xAAC
-#define QDMA_OFFSET_C2H_BUF_SZ                              0xAB0
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define QDMA_OFFSET_C2H_FATAL_ERR_ENABLE                    0xB00
-#define QDMA_OFFSET_C2H_ERR_INT                             0xB04
-#define QDMA_OFFSET_C2H_PFETCH_CFG                          0xB08
-#define     QDMA_C2H_EVT_QCNT_TH_MASK                       GENMASK(31, 25)
-#define     QDMA_C2H_PFCH_QCNT_MASK                         GENMASK(24, 18)
-#define     QDMA_C2H_NUM_PFCH_MASK                          GENMASK(17, 9)
-#define     QDMA_C2H_PFCH_FL_TH_MASK                        GENMASK(8, 0)
-#define QDMA_OFFSET_C2H_INT_TIMER_TICK                      0xB0C
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_DROP_ACCEPTED         0xB10
-#define QDMA_OFFSET_C2H_STAT_DESC_RSP_ERR_ACCEPTED          0xB14
-#define QDMA_OFFSET_C2H_STAT_DESC_REQ                       0xB18
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_0                0xB1C
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_1                0xB20
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_2                0xB24
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_3                0xB28
-#define QDMA_OFFSET_C2H_DBG_PFCH_ERR_CTXT                   0xB2C
-#define QDMA_OFFSET_C2H_FIRST_ERR_QID                       0xB30
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_IN                    0xB34
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_OUT                   0xB38
-#define QDMA_OFFSET_C2H_STAT_NUM_CMPT_DRP                   0xB3C
-#define QDMA_OFFSET_C2H_STAT_NUM_STAT_DESC_OUT              0xB40
-#define QDMA_OFFSET_C2H_STAT_NUM_DSC_CRDT_SENT              0xB44
-#define QDMA_OFFSET_C2H_STAT_NUM_FCH_DSC_RCVD               0xB48
-#define QDMA_OFFSET_C2H_STAT_NUM_BYP_DSC_RCVD               0xB4C
-#define QDMA_OFFSET_C2H_WRB_COAL_CFG                        0xB50
-#define     QDMA_C2H_MAX_BUF_SZ_MASK                        GENMASK(31, 26)
-#define     QDMA_C2H_TICK_VAL_MASK                          GENMASK(25, 14)
-#define     QDMA_C2H_TICK_CNT_MASK                          GENMASK(13, 2)
-#define     QDMA_C2H_SET_GLB_FLUSH_MASK                     BIT(1)
-#define     QDMA_C2H_DONE_GLB_FLUSH_MASK                    BIT(0)
-#define QDMA_OFFSET_C2H_INTR_H2C_REQ                        0xB54
-#define QDMA_OFFSET_C2H_INTR_C2H_MM_REQ                     0xB58
-#define QDMA_OFFSET_C2H_INTR_ERR_INT_REQ                    0xB5C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_REQ                     0xB60
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_ACK        0xB64
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_FAIL       0xB68
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_MSIX_NO_MSIX    0xB6C
-#define QDMA_OFFSET_C2H_INTR_H2C_ERR_C2H_MM_CTXT_INVAL      0xB70
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_ACK                0xB74
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_MSIX_FAIL               0xB78
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_NO_MSIX                 0xB7C
-#define QDMA_OFFSET_C2H_INTR_C2H_ST_CTXT_INVAL              0xB80
-#define QDMA_OFFSET_C2H_STAT_WR_CMP                         0xB84
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_4                0xB88
-#define QDMA_OFFSET_C2H_STAT_DEBUG_DMA_ENG_5                0xB8C
-#define QDMA_OFFSET_C2H_DBG_PFCH_QID                        0xB90
-#define QDMA_OFFSET_C2H_DBG_PFCH                            0xB94
-#define QDMA_OFFSET_C2H_INT_DEBUG                           0xB98
-#define QDMA_OFFSET_C2H_STAT_IMM_ACCEPTED                   0xB9C
-#define QDMA_OFFSET_C2H_STAT_MARKER_ACCEPTED                0xBA0
-#define QDMA_OFFSET_C2H_STAT_DISABLE_CMP_ACCEPTED           0xBA4
-#define QDMA_OFFSET_C2H_PAYLOAD_FIFO_CRDT_CNT               0xBA8
-#define QDMA_OFFSET_C2H_PFETCH_CACHE_DEPTH                  0xBE0
-#define QDMA_OFFSET_C2H_CMPT_COAL_BUF_DEPTH                 0xBE4
-
-/* ------------------------- QDMA_TRQ_SEL_H2C (0x00E00) ------------------*/
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define QDMA_OFFSET_H2C_FIRST_ERR_QID                       0xE08
-#define QDMA_OFFSET_H2C_DBG_REG0                            0xE0C
-#define QDMA_OFFSET_H2C_DBG_REG1                            0xE10
-#define QDMA_OFFSET_H2C_DBG_REG2                            0xE14
-#define QDMA_OFFSET_H2C_DBG_REG3                            0xE18
-#define QDMA_OFFSET_H2C_DBG_REG4                            0xE1C
-#define QDMA_OFFSET_H2C_FATAL_ERR_EN                        0xE20
-#define QDMA_OFFSET_H2C_REQ_THROT                           0xE24
-#define     QDMA_H2C_REQ_THROT_EN_REQ_MASK                  BIT(31)
-#define     QDMA_H2C_REQ_THRESH_MASK                        GENMASK(25, 17)
-#define     QDMA_H2C_REQ_THROT_EN_DATA_MASK                 BIT(16)
-#define     QDMA_H2C_DATA_THRESH_MASK                       GENMASK(15, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_H2C_MM (0x1200) ----------------*/
-#define QDMA_OFFSET_H2C_MM_CONTROL                          0x1204
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1S                      0x1208
-#define QDMA_OFFSET_H2C_MM_CONTROL_W1C                      0x120C
-#define QDMA_OFFSET_H2C_MM_STATUS                           0x1240
-#define QDMA_OFFSET_H2C_MM_STATUS_RC                        0x1244
-#define QDMA_OFFSET_H2C_MM_COMPLETED_DESC_COUNT             0x1248
-#define QDMA_OFFSET_H2C_MM_ERR_CODE_EN_MASK                 0x1254
-#define QDMA_OFFSET_H2C_MM_ERR_CODE                         0x1258
-#define QDMA_OFFSET_H2C_MM_ERR_INFO                         0x125C
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CONTROL                 0x12C0
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_0           0x12C4
-#define QDMA_OFFSET_H2C_MM_PERF_MON_CYCLE_COUNT_1           0x12C8
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_0            0x12CC
-#define QDMA_OFFSET_H2C_MM_PERF_MON_DATA_COUNT_1            0x12D0
-#define QDMA_OFFSET_H2C_MM_DEBUG                            0x12E8
-
-/* ------------------------- QDMA_TRQ_SEL_C2H_MM (0x1000) ----------------*/
-#define QDMA_OFFSET_C2H_MM_CONTROL                          0x1004
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1S                      0x1008
-#define QDMA_OFFSET_C2H_MM_CONTROL_W1C                      0x100C
-#define QDMA_OFFSET_C2H_MM_STATUS                           0x1040
-#define QDMA_OFFSET_C2H_MM_STATUS_RC                        0x1044
-#define QDMA_OFFSET_C2H_MM_COMPLETED_DESC_COUNT             0x1048
-#define QDMA_OFFSET_C2H_MM_ERR_CODE_EN_MASK                 0x1054
-#define QDMA_OFFSET_C2H_MM_ERR_CODE                         0x1058
-#define QDMA_OFFSET_C2H_MM_ERR_INFO                         0x105C
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CONTROL                 0x10C0
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_0           0x10C4
-#define QDMA_OFFSET_C2H_MM_PERF_MON_CYCLE_COUNT_1           0x10C8
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_0            0x10CC
-#define QDMA_OFFSET_C2H_MM_PERF_MON_DATA_COUNT_1            0x10D0
-#define QDMA_OFFSET_C2H_MM_DEBUG                            0x10E8
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL1 (0x0) -----------------*/
-#define QDMA_OFFSET_CONFIG_BLOCK_ID                         0x0
-#define     QDMA_CONFIG_BLOCK_ID_MASK                       GENMASK(31, 16)
-
-
-/* ------------------------- QDMA_TRQ_SEL_GLBL2 (0x00100) ----------------*/
-#define QDMA_OFFSET_GLBL2_ID                                0x100
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_INT                    0x104
-#define     QDMA_GLBL2_PF3_BAR_MAP_MASK                     GENMASK(23, 18)
-#define     QDMA_GLBL2_PF2_BAR_MAP_MASK                     GENMASK(17, 12)
-#define     QDMA_GLBL2_PF1_BAR_MAP_MASK                     GENMASK(11, 6)
-#define     QDMA_GLBL2_PF0_BAR_MAP_MASK                     GENMASK(5, 0)
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_INT                 0x108
-#define QDMA_OFFSET_GLBL2_PF_BARLITE_EXT                    0x10C
-#define QDMA_OFFSET_GLBL2_PF_VF_BARLITE_EXT                 0x110
-#define QDMA_OFFSET_GLBL2_CHANNEL_INST                      0x114
-#define QDMA_OFFSET_GLBL2_CHANNEL_MDMA                      0x118
-#define     QDMA_GLBL2_ST_C2H_MASK                          BIT(16)
-#define     QDMA_GLBL2_ST_H2C_MASK                          BIT(17)
-#define     QDMA_GLBL2_MM_C2H_MASK                          BIT(8)
-#define     QDMA_GLBL2_MM_H2C_MASK                          BIT(0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_STRM                      0x11C
-#define QDMA_OFFSET_GLBL2_CHANNEL_QDMA_CAP                  0x120
-#define     QDMA_GLBL2_MULTQ_MAX_MASK                       GENMASK(11, 0)
-#define QDMA_OFFSET_GLBL2_CHANNEL_PASID_CAP                 0x128
-#define QDMA_OFFSET_GLBL2_CHANNEL_FUNC_RET                  0x12C
-#define QDMA_OFFSET_GLBL2_SYSTEM_ID                         0x130
-#define QDMA_OFFSET_GLBL2_MISC_CAP                          0x134
-
-#define     QDMA_GLBL2_DEVICE_ID_MASK                       GENMASK(31, 28)
-#define     QDMA_GLBL2_VIVADO_RELEASE_MASK                  GENMASK(27, 24)
-#define     QDMA_GLBL2_VERSAL_IP_MASK                       GENMASK(23, 20)
-#define     QDMA_GLBL2_RTL_VERSION_MASK                     GENMASK(19, 16)
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ0                      0x1B8
-#define QDMA_OFFSET_GLBL2_DBG_PCIE_RQ1                      0x1BC
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR0                     0x1C0
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_WR1                     0x1C4
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD0                     0x1C8
-#define QDMA_OFFSET_GLBL2_DBG_AXIMM_RD1                     0x1CC
-
-/* used for VF bars identification */
-#define QDMA_OFFSET_VF_USER_BAR_ID                          0x1018
-#define QDMA_OFFSET_VF_CONFIG_BAR_ID                        0x1014
-
-/* FLR programming */
-#define QDMA_OFFSET_VF_REG_FLR_STATUS                       0x1100
-#define QDMA_OFFSET_PF_REG_FLR_STATUS                       0x2500
-#define     QDMA_FLR_STATUS_MASK                            0x1
-
-/* VF qdma version */
-#define QDMA_OFFSET_VF_VERSION                              0x1014
-#define QDMA_OFFSET_PF_VERSION                              0x2414
-#define     QDMA_GLBL2_VF_UNIQUE_ID_MASK                    GENMASK(31, 16)
-#define     QDMA_GLBL2_VF_DEVICE_ID_MASK                    GENMASK(15, 12)
-#define     QDMA_GLBL2_VF_VIVADO_RELEASE_MASK               GENMASK(11, 8)
-#define     QDMA_GLBL2_VF_VERSAL_IP_MASK                    GENMASK(7, 4)
-#define     QDMA_GLBL2_VF_RTL_VERSION_MASK                  GENMASK(3, 0)
-
-
-/* ------------------------- QDMA_TRQ_SEL_QUEUE_PF (0x18000) ----------------*/
-
-#define QDMA_OFFSET_DMAP_SEL_INT_CIDX                       0x18000
-#define QDMA_OFFSET_DMAP_SEL_H2C_DSC_PIDX                   0x18004
-#define QDMA_OFFSET_DMAP_SEL_C2H_DSC_PIDX                   0x18008
-#define QDMA_OFFSET_DMAP_SEL_CMPT_CIDX                      0x1800C
-
-#define QDMA_OFFSET_VF_DMAP_SEL_INT_CIDX                    0x3000
-#define QDMA_OFFSET_VF_DMAP_SEL_H2C_DSC_PIDX                0x3004
-#define QDMA_OFFSET_VF_DMAP_SEL_C2H_DSC_PIDX                0x3008
-#define QDMA_OFFSET_VF_DMAP_SEL_CMPT_CIDX                   0x300C
-
-#define     QDMA_DMA_SEL_INT_SW_CIDX_MASK                   GENMASK(15, 0)
-#define     QDMA_DMA_SEL_INT_RING_IDX_MASK                  GENMASK(23, 16)
-#define     QDMA_DMA_SEL_DESC_PIDX_MASK                     GENMASK(15, 0)
-#define     QDMA_DMA_SEL_IRQ_EN_MASK                        BIT(16)
-#define     QDMA_DMAP_SEL_CMPT_IRQ_EN_MASK                  BIT(28)
-#define     QDMA_DMAP_SEL_CMPT_STS_DESC_EN_MASK             BIT(27)
-#define     QDMA_DMAP_SEL_CMPT_TRG_MODE_MASK                GENMASK(26, 24)
-#define     QDMA_DMAP_SEL_CMPT_TMR_CNT_MASK                 GENMASK(23, 20)
-#define     QDMA_DMAP_SEL_CMPT_CNT_THRESH_MASK              GENMASK(19, 16)
-#define     QDMA_DMAP_SEL_CMPT_WRB_CIDX_MASK                GENMASK(15, 0)
-
-/* ------------------------- Hardware Errors ------------------------------ */
-#define TOTAL_LEAF_ERROR_AGGREGATORS                        7
-
-#define QDMA_OFFSET_GLBL_ERR_INT                            0xB04
-#define     QDMA_GLBL_ERR_FUNC_MASK                         GENMASK(7, 0)
-#define     QDMA_GLBL_ERR_VEC_MASK                          GENMASK(22, 12)
-#define     QDMA_GLBL_ERR_ARM_MASK                          BIT(24)
-
-#define QDMA_OFFSET_GLBL_ERR_STAT                           0x248
-#define QDMA_OFFSET_GLBL_ERR_MASK                           0x24C
-#define     QDMA_GLBL_ERR_RAM_SBE_MASK                      BIT(0)
-#define     QDMA_GLBL_ERR_RAM_DBE_MASK                      BIT(1)
-#define     QDMA_GLBL_ERR_DSC_MASK                          BIT(2)
-#define     QDMA_GLBL_ERR_TRQ_MASK                          BIT(3)
-#define     QDMA_GLBL_ERR_ST_C2H_MASK                       BIT(8)
-#define     QDMA_GLBL_ERR_ST_H2C_MASK                       BIT(11)
-
-#define QDMA_OFFSET_C2H_ERR_STAT                            0xAF0
-#define QDMA_OFFSET_C2H_ERR_MASK                            0xAF4
-#define     QDMA_C2H_ERR_MTY_MISMATCH_MASK                  BIT(0)
-#define     QDMA_C2H_ERR_LEN_MISMATCH_MASK                  BIT(1)
-#define     QDMA_C2H_ERR_QID_MISMATCH_MASK                  BIT(3)
-#define     QDMA_C2H_ERR_DESC_RSP_ERR_MASK                  BIT(4)
-#define     QDMA_C2H_ERR_ENG_WPL_DATA_PAR_ERR_MASK          BIT(6)
-#define     QDMA_C2H_ERR_MSI_INT_FAIL_MASK                  BIT(7)
-#define     QDMA_C2H_ERR_ERR_DESC_CNT_MASK                  BIT(9)
-#define     QDMA_C2H_ERR_PORTID_CTXT_MISMATCH_MASK          BIT(10)
-#define     QDMA_C2H_ERR_PORTID_BYP_IN_MISMATCH_MASK        BIT(11)
-#define     QDMA_C2H_ERR_CMPT_INV_Q_ERR_MASK                BIT(12)
-#define     QDMA_C2H_ERR_CMPT_QFULL_ERR_MASK                BIT(13)
-#define     QDMA_C2H_ERR_CMPT_CIDX_ERR_MASK                 BIT(14)
-#define     QDMA_C2H_ERR_CMPT_PRTY_ERR_MASK                 BIT(15)
-#define     QDMA_C2H_ERR_ALL_MASK                           0xFEDB
-
-#define QDMA_OFFSET_C2H_FATAL_ERR_STAT                      0xAF8
-#define QDMA_OFFSET_C2H_FATAL_ERR_MASK                      0xAFC
-#define     QDMA_C2H_FATAL_ERR_MTY_MISMATCH_MASK            BIT(0)
-#define     QDMA_C2H_FATAL_ERR_LEN_MISMATCH_MASK            BIT(1)
-#define     QDMA_C2H_FATAL_ERR_QID_MISMATCH_MASK            BIT(3)
-#define     QDMA_C2H_FATAL_ERR_TIMER_FIFO_RAM_RDBE_MASK     BIT(4)
-#define     QDMA_C2H_FATAL_ERR_PFCH_II_RAM_RDBE_MASK        BIT(8)
-#define     QDMA_C2H_FATAL_ERR_CMPT_CTXT_RAM_RDBE_MASK      BIT(9)
-#define     QDMA_C2H_FATAL_ERR_PFCH_CTXT_RAM_RDBE_MASK      BIT(10)
-#define     QDMA_C2H_FATAL_ERR_DESC_REQ_FIFO_RAM_RDBE_MASK  BIT(11)
-#define     QDMA_C2H_FATAL_ERR_INT_CTXT_RAM_RDBE_MASK       BIT(12)
-#define     QDMA_C2H_FATAL_ERR_CMPT_COAL_DATA_RAM_RDBE_MASK BIT(14)
-#define     QDMA_C2H_FATAL_ERR_TUSER_FIFO_RAM_RDBE_MASK     BIT(15)
-#define     QDMA_C2H_FATAL_ERR_QID_FIFO_RAM_RDBE_MASK       BIT(16)
-#define     QDMA_C2H_FATAL_ERR_PAYLOAD_FIFO_RAM_RDBE_MASK   BIT(17)
-#define     QDMA_C2H_FATAL_ERR_WPL_DATA_PAR_MASK            BIT(18)
-#define     QDMA_C2H_FATAL_ERR_ALL_MASK                     0x7DF1B
-
-#define QDMA_OFFSET_H2C_ERR_STAT                            0xE00
-#define QDMA_OFFSET_H2C_ERR_MASK                            0xE04
-#define     QDMA_H2C_ERR_ZERO_LEN_DESC_MASK                 BIT(0)
-#define     QDMA_H2C_ERR_CSI_MOP_MASK                       BIT(1)
-#define     QDMA_H2C_ERR_NO_DMA_DSC_MASK                    BIT(2)
-#define     QDMA_H2C_ERR_SBE_MASK                           BIT(3)
-#define     QDMA_H2C_ERR_DBE_MASK                           BIT(4)
-#define     QDMA_H2C_ERR_ALL_MASK                           0x1F
-
-#define QDMA_OFFSET_GLBL_DSC_ERR_STAT                       0x254
-#define QDMA_OFFSET_GLBL_DSC_ERR_MASK                       0x258
-#define     QDMA_GLBL_DSC_ERR_POISON_MASK                   BIT(0)
-#define     QDMA_GLBL_DSC_ERR_UR_CA_MASK                    BIT(1)
-#define     QDMA_GLBL_DSC_ERR_PARAM_MASK                    BIT(2)
-#define     QDMA_GLBL_DSC_ERR_ADDR_MASK                     BIT(3)
-#define     QDMA_GLBL_DSC_ERR_TAG_MASK                      BIT(4)
-#define     QDMA_GLBL_DSC_ERR_FLR_MASK                      BIT(5)
-#define     QDMA_GLBL_DSC_ERR_TIMEOUT_MASK                  BIT(9)
-#define     QDMA_GLBL_DSC_ERR_DAT_POISON_MASK               BIT(16)
-#define     QDMA_GLBL_DSC_ERR_FLR_CANCEL_MASK               BIT(19)
-#define     QDMA_GLBL_DSC_ERR_DMA_MASK                      BIT(20)
-#define     QDMA_GLBL_DSC_ERR_DSC_MASK                      BIT(21)
-#define     QDMA_GLBL_DSC_ERR_RQ_CANCEL_MASK                BIT(22)
-#define     QDMA_GLBL_DSC_ERR_DBE_MASK                      BIT(23)
-#define     QDMA_GLBL_DSC_ERR_SBE_MASK                      BIT(24)
-#define     QDMA_GLBL_DSC_ERR_ALL_MASK                      0x1F9023F
-
-#define QDMA_OFFSET_GLBL_TRQ_ERR_STAT                       0x264
-#define QDMA_OFFSET_GLBL_TRQ_ERR_MASK                       0x268
-#define     QDMA_GLBL_TRQ_ERR_UNMAPPED_MASK                 BIT(0)
-#define     QDMA_GLBL_TRQ_ERR_QID_RANGE_MASK                BIT(1)
-#define     QDMA_GLBL_TRQ_ERR_VF_ACCESS_MASK                BIT(2)
-#define     QDMA_GLBL_TRQ_ERR_TCP_TIMEOUT_MASK              BIT(3)
-#define     QDMA_GLBL_TRQ_ERR_ALL_MASK                      0xF
-
-#define QDMA_OFFSET_RAM_SBE_STAT                            0xF4
-#define QDMA_OFFSET_RAM_SBE_MASK                            0xF0
-#define     QDMA_SBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_SBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_SBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_SBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_SBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_SBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_SBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_SBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_SBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_SBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_SBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_SBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_SBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_SBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_SBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_SBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_SBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_SBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_SBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_SBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_SBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_SBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_SBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_SBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_SBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_SBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_RAM_DBE_STAT                            0xFC
-#define QDMA_OFFSET_RAM_DBE_MASK                            0xF8
-#define     QDMA_DBE_ERR_MI_H2C0_DAT_MASK                   BIT(0)
-#define     QDMA_DBE_ERR_MI_C2H0_DAT_MASK                   BIT(4)
-#define     QDMA_DBE_ERR_H2C_RD_BRG_DAT_MASK                BIT(9)
-#define     QDMA_DBE_ERR_H2C_WR_BRG_DAT_MASK                BIT(10)
-#define     QDMA_DBE_ERR_C2H_RD_BRG_DAT_MASK                BIT(11)
-#define     QDMA_DBE_ERR_C2H_WR_BRG_DAT_MASK                BIT(12)
-#define     QDMA_DBE_ERR_FUNC_MAP_MASK                      BIT(13)
-#define     QDMA_DBE_ERR_DSC_HW_CTXT_MASK                   BIT(14)
-#define     QDMA_DBE_ERR_DSC_CRD_RCV_MASK                   BIT(15)
-#define     QDMA_DBE_ERR_DSC_SW_CTXT_MASK                   BIT(16)
-#define     QDMA_DBE_ERR_DSC_CPLI_MASK                      BIT(17)
-#define     QDMA_DBE_ERR_DSC_CPLD_MASK                      BIT(18)
-#define     QDMA_DBE_ERR_PASID_CTXT_RAM_MASK                BIT(19)
-#define     QDMA_DBE_ERR_TIMER_FIFO_RAM_MASK                BIT(20)
-#define     QDMA_DBE_ERR_PAYLOAD_FIFO_RAM_MASK              BIT(21)
-#define     QDMA_DBE_ERR_QID_FIFO_RAM_MASK                  BIT(22)
-#define     QDMA_DBE_ERR_TUSER_FIFO_RAM_MASK                BIT(23)
-#define     QDMA_DBE_ERR_WRB_COAL_DATA_RAM_MASK             BIT(24)
-#define     QDMA_DBE_ERR_INT_QID2VEC_RAM_MASK               BIT(25)
-#define     QDMA_DBE_ERR_INT_CTXT_RAM_MASK                  BIT(26)
-#define     QDMA_DBE_ERR_DESC_REQ_FIFO_RAM_MASK             BIT(27)
-#define     QDMA_DBE_ERR_PFCH_CTXT_RAM_MASK                 BIT(28)
-#define     QDMA_DBE_ERR_WRB_CTXT_RAM_MASK                  BIT(29)
-#define     QDMA_DBE_ERR_PFCH_LL_RAM_MASK                   BIT(30)
-#define     QDMA_DBE_ERR_H2C_PEND_FIFO_MASK                 BIT(31)
-#define     QDMA_DBE_ERR_ALL_MASK                           0xFFFFFF11
-
-#define QDMA_OFFSET_MBOX_BASE_VF                            0x1000
-#define QDMA_OFFSET_MBOX_BASE_PF                            0x2400
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __QDMA_SOFT_REG_H__ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_config.h b/QDMA/windows/sys/libqdma/source/qdma_config.h
deleted file mode 100644
index 2cd7193..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#define QDMA_QBASE              0
-#define QDMA_TOTAL_Q            2048
diff --git a/QDMA/windows/sys/libqdma/source/qdma_license.h b/QDMA/windows/sys/libqdma/source/qdma_license.h
deleted file mode 100644
index cca956a..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_license.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef LIBQDMA_QDMA_LICENSE_H_
-#define LIBQDMA_QDMA_LICENSE_H_
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-#endif /* LIBQDMA_QDMA_LICENSE_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_platform.cpp b/QDMA/windows/sys/libqdma/source/qdma_platform.cpp
deleted file mode 100644
index e9400c7..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_platform.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "qdma.h"
-#include "qdma_platform.h"
-#include "qdma_access_errors.h"
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "qdma_platform.tmh"
-#endif
-
-using namespace xlnx;
-
-/** Xilinx TAG for tagged memory allocations */
-static constexpr ULONG QDMA_MEMPOOL_TAG = 'MADQ';
-static WDFSPINLOCK resource_manager_lock = nullptr;
-
-struct err_code_map error_code_map_list[] = {
-    {QDMA_SUCCESS,                          STATUS_SUCCESS},
-    {QDMA_ERR_INV_PARAM,                    STATUS_INVALID_PARAMETER},
-    {QDMA_ERR_NO_MEM,                       STATUS_BUFFER_TOO_SMALL},
-    {QDMA_ERR_HWACC_BUSY_TIMEOUT,           STATUS_IO_TIMEOUT},
-    {QDMA_ERR_HWACC_INV_CONFIG_BAR,         STATUS_INVALID_HW_PROFILE},
-    {QDMA_ERR_HWACC_NO_PEND_LEGCY_INTR,     STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_HWACC_BAR_NOT_FOUND,          STATUS_NOT_FOUND},
-    {QDMA_ERR_HWACC_FEATURE_NOT_SUPPORTED,  STATUS_NOT_SUPPORTED},
-    {QDMA_ERR_RM_RES_EXISTS,                STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_RM_RES_NOT_EXISTS,            STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_RM_DEV_EXISTS,                STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_RM_DEV_NOT_EXISTS,            STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_RM_NO_QUEUES_LEFT,            STATUS_UNSUCCESSFUL},
-    {QDMA_ERR_RM_QMAX_CONF_REJECTED,        STATUS_UNSUCCESSFUL}
-};
-
-
-void qdma_udelay(
-    UINT32 delay_us)
-{
-    KeStallExecutionProcessor(delay_us);
-}
-
-/* Suppressing the static analysis tool reported warning.
- * Common qdma_access.c file takes care of acquiring and
- * releasing the locks properly via callbacks APIs
- * NOTE: These callback funtions are intended to use only
- * by HW access common code.
- */
-#pragma warning(suppress: 28167)
-int qdma_reg_access_lock(
-    void *dev_hndl)
-{
-    qdma_device *qdma_dev = static_cast<qdma_device *>(dev_hndl);
-    WdfSpinLockAcquire(qdma_dev->register_access_lock);
-    return 0;
-}
-
-#pragma warning(suppress: 28167)
-int qdma_reg_access_release(
-    void *dev_hndl)
-{
-    qdma_device *qdma_dev = static_cast<qdma_device *>(dev_hndl);
-    WdfSpinLockRelease(qdma_dev->register_access_lock);
-    return 0;
-}
-
-void qdma_reg_write(
-    void *dev_hndl,
-    uint32_t reg_offset,
-    uint32_t val)
-{
-    qdma_device *qdma_dev = static_cast<qdma_device *>(dev_hndl);
-    qdma_dev->qdma_conf_reg_write(reg_offset, (ULONG)val);
-}
-
-uint32_t qdma_reg_read(
-    void *dev_hndl,
-    uint32_t reg_offset)
-{
-    qdma_device *qdma_dev = static_cast<qdma_device *>(dev_hndl);
-    return qdma_dev->qdma_conf_reg_read(reg_offset);
-}
-
-void qdma_get_hw_access(
-    void *dev_hndl,
-    struct qdma_hw_access **hw)
-{
-    qdma_device *qdma_dev = static_cast<qdma_device *>(dev_hndl);
-    *hw = &qdma_dev->hw;
-}
-
-void qdma_strncpy(
-    char *dest,
-    const char *src,
-    size_t n)
-{
-    RtlStringCchPrintfA(dest, n, "%s", src);
-}
-
-int qdma_get_err_code(
-    int acc_err_code)
-{
-    int n;
-
-    if (acc_err_code < 0)
-        acc_err_code = -(acc_err_code);
-
-    n = sizeof(error_code_map_list) / sizeof(error_code_map_list[0]);
-    if (acc_err_code < n)
-        return (error_code_map_list[acc_err_code].err_code);
-    else
-        return STATUS_UNSUCCESSFUL;
-}
-
-void *qdma_calloc(
-    uint32_t num_blocks,
-    uint32_t size)
-{
-    size_t total_size = (size_t)num_blocks * size;
-    void *ptr = ExAllocatePoolWithTag(NonPagedPoolNx, total_size, QDMA_MEMPOOL_TAG);
-    if (ptr != NULL) {
-        RtlZeroMemory(ptr, total_size);
-    }
-
-    return ptr;
-}
-
-void qdma_memfree(
-    void *memptr)
-{
-    ExFreePoolWithTag(memptr, QDMA_MEMPOOL_TAG);
-}
-
-int qdma_resource_lock_init(void)
-{
-    if (resource_manager_lock == nullptr) {
-        WDF_OBJECT_ATTRIBUTES attr;
-        WDF_OBJECT_ATTRIBUTES_INIT(&attr);
-        attr.ParentObject = WdfGetDriver();
-
-        NTSTATUS status = WdfSpinLockCreate(&attr, &resource_manager_lock);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_QDMA, "Resource lock creation failed!");
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-/* Suppressing the static analysis tool reported warning.
- * Common qdma_access.c file takes care of acquiring and
- * releasing the locks properly via callback APIs
- * NOTE: These callback funtions are intended to use only
- * by HW access common code.
- */
-#pragma warning(suppress: 28167)
-void qdma_resource_lock_take(void)
-{
-    WdfSpinLockAcquire(resource_manager_lock);
-}
-
-#pragma warning(suppress: 28167)
-void qdma_resource_lock_give(void)
-{
-    WdfSpinLockRelease(resource_manager_lock);
-}
diff --git a/QDMA/windows/sys/libqdma/source/qdma_platform_env.h b/QDMA/windows/sys/libqdma/source/qdma_platform_env.h
deleted file mode 100644
index 3aeb023..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_platform_env.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#ifndef LIBQDMA_QDMA_PLATFORM_ENV_H_
-#define LIBQDMA_QDMA_PLATFORM_ENV_H_
-
-#pragma once
-
-#ifndef STRICT
-#define STRICT
-#endif
-
-#include <ntddk.h>
-#include <wdf.h>
-#include <ntintsafe.h>
-#include <ntstrsafe.h>
-#include <stdio.h>
-#include <stddef.h>
-
-#include "trace.h"
-
-#define QDMA_SNPRINTF_S _snprintf_s
-
-typedef UINT32 uint32_t;
-typedef UINT8 uint8_t;
-typedef UINT16 uint16_t;
-typedef UINT64 uint64_t;
-typedef INT32 int32_t;
-
-#endif /* LIBQDMA_QDMA_PLATFORM_ENV_H_ */
diff --git a/QDMA/windows/sys/libqdma/source/qdma_reg_ext.h b/QDMA/windows/sys/libqdma/source/qdma_reg_ext.h
deleted file mode 100644
index caa068e..0000000
--- a/QDMA/windows/sys/libqdma/source/qdma_reg_ext.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include <ntintsafe.h>
-#include <stddef.h>
-
-namespace xlnx {
-
-/* ----------- constants ----------- */
-static constexpr UINT8 DEFAULT_USER_BAR = 1;
-
-/* register base address */
-static constexpr size_t qdma_trq_cmc_msix_table = 0x0000'2000;
-static constexpr size_t qdma_msix_vectors_mask_step = 0x0000'000c;
-
-/* HW Config Constants */
-static constexpr size_t qdma_max_msix_vectors_per_pf = 8;
-
-/* ---------- struct definitions ---------- */
-#pragma pack(1)
-
-/* ---------- descriptor structures ---------- */
-struct c2h_descriptor {
-    UINT64 addr;
-};
-static_assert(sizeof(c2h_descriptor) == (8 * sizeof(UINT8)), "c2h_descriptor must be 8 bytes wide!");
-
-struct h2c_descriptor {
-    UINT16 cdh_flags;     /**< Dont care bits */
-    UINT16 pld_len;       /**< Packet length in bytes */
-    UINT16 length;
-    UINT16 sop : 1;
-    UINT16 eop : 1;
-    UINT16 reserved : 14;
-    UINT64 addr;
-};
-static_assert(sizeof(h2c_descriptor) == (16 * sizeof(UINT8)), "h2c_descriptor must be 16 bytes wide!");
-
-struct mm_descriptor {
-    UINT64 addr;
-
-    UINT64 length : 28;
-    UINT64 valid : 1;
-    UINT64 sop : 1;
-    UINT64 eop : 1;
-    UINT64 reserved_0 : 33;
-
-    UINT64 dest_addr;
-
-    UINT64 reserved_1;
-};
-static_assert(sizeof(mm_descriptor) == (32 * sizeof(UINT8)), "mm_descriptor must be 32 bytes wide!");
-
-/* interrupt ring entry structure */
-struct intr_entry {
-    /* Desc bits */
-    UINT32 desc_pidx : 16;
-    UINT32 desc_cidx : 16;
-
-    UINT32 desc_color : 1;
-    UINT32 desc_int_state : 2;
-    UINT32 desc_err : 2;
-    /* source bits */
-    UINT32 rsvd : 1;
-    UINT32 intr_type : 1;
-    UINT32 qid : 24;
-    UINT32 color : 1;
-};
-static_assert(sizeof(intr_entry) == (8 * sizeof(UINT8)), "intr_entry must be 8 bytes wide!");
-
-struct cpm_intr_entry {
-    /* Desc bits */
-    UINT32 desc_pidx : 16;
-    UINT32 desc_cidx : 16;
-
-    UINT32 desc_color : 1;
-    UINT32 desc_int_state : 2;
-    UINT32 desc_err : 4;
-    /* source bits */
-    UINT32 rsvd : 11;
-    UINT32 err_int : 1;
-    UINT32 intr_type : 1;
-    UINT32 qid : 11;
-    UINT32 color : 1;
-};
-static_assert(sizeof(cpm_intr_entry) == (8 * sizeof(UINT8)), "intr_entry must be 8 bytes wide!");
-/* ------ */
-
-/* ---------- writeback structures ---------- */
-
-/** c2h_wb_header_8B -- C2H Completion data structure
-  * This includes user defined data, optional color, err bits, etc.,.
-  * The user defined data has four size options: 8B, 16B, 32B and 64B
-  *
-  * The below format is specific to QDMA example design present in vivado
-  */
-struct c2h_wb_header_8B {
-    /** @data_frmt : 0 indicates valid length field is present */
-    UINT64 data_frmt      : 1;
-    /** @color : Indicates the validity of the entry */
-    UINT64 color          : 1;
-    /** @desc_error : Indicates the error status */
-    UINT64 desc_error     : 1;
-    /** @desc_used : Indicates whether data descriptor used */
-    UINT64 desc_used      : 1;
-    /** @length : Length of the completion entry */
-    UINT64 length         : 16;
-    /** @user_rsv : Reserved */
-    UINT64 user_rsv       : 4;
-    /** @user_defined_0 : User Defined Data (UDD) */
-    UINT64 user_defined_0 : 40;
-};
-static_assert(sizeof(c2h_wb_header_8B) == (8 * sizeof(UINT8)), "c2h_wb_header_8B must be 8 bytes wide!");
-
-struct c2h_wb_header_16B : c2h_wb_header_8B {
-    /** @user_defined_1 : User Defined Data (UDD) for 16B completion size */
-    UINT64 user_defined_1;
-};
-static_assert(sizeof(c2h_wb_header_16B) == (16 * sizeof(UINT8)), "c2h_wb_header_16B must be 16 bytes wide!");
-
-struct c2h_wb_header_32B : c2h_wb_header_16B {
-    /** @user_defined_2 : User Defined Data (UDD) for 32B completion size */
-    UINT64 user_defined_2[2];
-};
-static_assert(sizeof(c2h_wb_header_32B) == (32 * sizeof(UINT8)), "c2h_wb_header_32B must be 32 bytes wide!");
-
-struct c2h_wb_header_64B : c2h_wb_header_32B {
-    /** @user_defined_3 : User Defined Data (UDD) for 64B completion size */
-    UINT64 user_defined_3[4];
-};
-static_assert(sizeof(c2h_wb_header_64B) == (64 * sizeof(UINT8)), "c2h_wb_header_64B must be 64 bytes wide!");
-
-
-struct wb_status_base {
-    UINT16 pidx;
-    UINT16 cidx;
-};
-
-struct c2h_wb_status : wb_status_base {
-    UINT32 color : 1;
-    UINT32 irq_state : 2;
-    UINT32 reserved : 29;
-};
-static_assert(sizeof(c2h_wb_status) == (sizeof(UINT64)), "c2h_wb_status must be 64 bits wide!");
-static_assert(sizeof(c2h_wb_status) == (sizeof(c2h_wb_header_8B)), "c2h_wb_status and c2h_wb_header_8B must be same size!");
-
-struct h2c_wb_status : wb_status_base {
-    UINT32 reserved_1;
-};
-static_assert(sizeof(h2c_wb_status) == (sizeof(UINT64)), "h2c_wb_status must be 64 bits wide!");
-
-using mm_wb_status = h2c_wb_status; /* MM wb status has same struct layout as h2c wb */
-
-#pragma pack()
-
-} /* namespace xlnx */
diff --git a/QDMA/windows/sys/libqdma/source/thread.cpp b/QDMA/windows/sys/libqdma/source/thread.cpp
deleted file mode 100644
index 65ec4b3..0000000
--- a/QDMA/windows/sys/libqdma/source/thread.cpp
+++ /dev/null
@@ -1,341 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include "thread.h"
-#include "qdma.h"
-#include "trace.h"
-
-#ifdef ENABLE_WPP_TRACING
-#include "thread.tmh"
-#endif
-
-using namespace xlnx;
-KDEFERRED_ROUTINE queueDataDpc;
-
-VOID qdma_poll_thread(
-    PVOID context)
-{
-    qdma_thread *th = (qdma_thread *)context;
-    KAFFINITY affinity = (KAFFINITY)1 << th->id;
-    KeSetSystemAffinityThread(affinity);
-
-    TraceVerbose(TRACE_THREAD, "Thread active on CPU core : %lu", th->id);
-
-    while (1) {
-
-        KeWaitForSingleObject(&th->semaphore,
-                              Executive,
-                              KernelMode,
-                              FALSE,
-                              NULL);
-
-        InterlockedDecrement(&th->sem_count);
-
-        if (th->terminate) {
-            TraceVerbose(TRACE_THREAD, "Terminating thread on CPU core: %lu", th->id);
-            PsTerminateSystemThread(STATUS_SUCCESS);
-        }
-
-        WdfSpinLockAcquire(th->lock);
-
-        PLIST_ENTRY entry;
-        PLIST_ENTRY temp;
-        LIST_FOR_EACH_ENTRY_SAFE(&th->poll_ops_head, temp, entry) {
-            poll_operation_entry *poll_op = CONTAINING_RECORD(entry, poll_operation_entry, list_entry);
-            poll_op->op.fn(poll_op->op.arg);
-        }
-
-        WdfSpinLockRelease(th->lock);
-    }
-}
-
-ULONG thread_manager::get_active_proc_cnt(void)
-{
-    return KeQueryActiveProcessorCount(NULL);
-}
-
-_Use_decl_annotations_
-VOID
-queueDataDpc(
-    PKDPC dpc,
-    PVOID context,
-    PVOID arg1,
-    PVOID arg2)
-{
-    UNREFERENCED_PARAMETER(dpc);
-    UNREFERENCED_PARAMETER(context);
-    UNREFERENCED_PARAMETER(arg2);
-
-    qdma_thread* thread = static_cast<qdma_thread *>(arg1);
-    wakeup_thread(thread);
-}
-
-void thread_manager::init_dpc(qdma_thread *thread) {
-    KeInitializeDpc(&thread->dpc, queueDataDpc, thread);
-}
-
-NTSTATUS thread_manager::create_sys_threads(queue_op_mode mode)
-{
-    ULONG i = 0;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    active_processors = get_active_proc_cnt();
-
-    threads = static_cast<qdma_thread *>(qdma_calloc(active_processors, sizeof(qdma_thread)));
-    if (nullptr == threads) {
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    for (i = 0; i < active_processors; ++i) {
-        /* THREAD DATA INITIALIZATION */
-        threads[i].weight = 0;
-        threads[i].id = i;
-        threads[i].terminate = false;
-        INIT_LIST_HEAD(&threads[i].poll_ops_head);
-
-        KeInitializeSemaphore(&threads[i].semaphore, 0, MAXLONG);
-
-        status = PsCreateSystemThread(&threads[i].th_handle,
-                                      (ACCESS_MASK)0,
-                                      NULL,
-                                      (HANDLE)0,
-                                      NULL,
-                                      qdma_poll_thread,
-                                      &threads[i]);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_THREAD, "Failed to create thread on cpu core %d - %!STATUS!", i, status);
-            break;
-        }
-
-        ObReferenceObjectByHandle(threads[i].th_handle,
-                                  THREAD_ALL_ACCESS,
-                                  NULL,
-                                  KernelMode,
-                                  &threads[i].th_object,
-                                  NULL);
-
-        ZwClose(threads[i].th_handle);
-
-        status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &threads[i].lock);
-        if (!NT_SUCCESS(status)) {
-            TraceError(TRACE_THREAD, "Failed to create thread spinlock for CPU core %d - %!STATUS!", i, status);
-            active_threads = i + 1;
-            goto ErrExit;
-        }
-
-        /* Per Thread DPC creation */
-        if (mode != queue_op_mode::POLL_MODE) {
-            init_dpc(&threads[i]);
-        }
-    }
-
-    active_threads = i;
-
-    if ((ULONG)0 == active_threads) {
-        /* If no thread is active, then return failure. */
-        goto ErrExit;
-    }
-
-    status = WdfSpinLockCreate(WDF_NO_OBJECT_ATTRIBUTES, &lock);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_THREAD, "Failed to create thread manager lock %!STATUS!", status);
-        goto ErrExit;
-    }
-
-    TraceVerbose(TRACE_THREAD, "Active threads %lu", active_threads);
-
-    return status;
-
-ErrExit:
-    terminate_sys_threads();
-    return status;
-}
-
-void thread_manager::terminate_sys_threads(void)
-{
-    if (nullptr == threads)
-        return;
-
-    for (ULONG i = 0; i < active_threads; ++i) {
-        threads[i].terminate = true;
-        KeReleaseSemaphore(&threads[i].semaphore, 0, 1, FALSE);
-    }
-
-    for (ULONG i = 0; i < active_threads; ++i) {
-        if (threads[i].lock)
-            WdfObjectDelete(threads[i].lock);
-
-        KeWaitForSingleObject(threads[i].th_object,
-                              Executive,
-                              KernelMode,
-                              FALSE,
-                              NULL);
-
-        ObDereferenceObject(threads[i].th_object);
-    }
-
-    if (lock) {
-        WdfObjectDelete(lock);
-        lock = nullptr;
-    }
-
-    qdma_memfree(threads);
-    threads = nullptr;
-}
-
-void err_poll_thread(PVOID context)
-{
-    err_thread *ctx = (err_thread *)context;
-    LARGE_INTEGER  Interval;
-    Interval.QuadPart = WDF_REL_TIMEOUT_IN_MS(1000);
-
-    while (1) {
-        ctx->device->hw.qdma_hw_error_process(ctx->device);
-
-        if (ctx->terminate) {
-            TraceVerbose(TRACE_THREAD, "ctx->terminate");
-            PsTerminateSystemThread(STATUS_SUCCESS);
-        }
-
-        KeDelayExecutionThread(KernelMode, FALSE, &Interval);
-    }
-}
-
-NTSTATUS thread_manager::create_err_poll_thread(qdma_device *device)
-{
-    err_th_para = static_cast<err_thread *>(qdma_calloc(1, sizeof(err_thread)));
-    if (nullptr == err_th_para) {
-        return STATUS_INSUFFICIENT_RESOURCES;
-    }
-
-    /* THREAD DATA INITIALIZATION */
-    err_th_para->terminate = false;
-    err_th_para->device = device;
-
-    auto status = PsCreateSystemThread(&err_th_para->th_handle,
-                                       (ACCESS_MASK)0,
-                                       NULL,
-                                       (HANDLE)0,
-                                       NULL,
-                                       err_poll_thread,
-                                       err_th_para);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_THREAD, "Failed to create Error handling thread - %!STATUS!", status);
-        qdma_memfree(err_th_para);
-        err_th_para = nullptr;
-        return status;
-    }
-
-    ObReferenceObjectByHandle(err_th_para->th_handle,
-        THREAD_ALL_ACCESS,
-        NULL,
-        KernelMode,
-        &err_th_para->th_object,
-        NULL);
-
-    ZwClose(err_th_para->th_handle);
-
-    TraceVerbose(TRACE_THREAD, "Error handling Thread Active");
-
-    return STATUS_SUCCESS;
-}
-
-void thread_manager::terminate_err_poll_thread(void)
-{
-    TraceVerbose(TRACE_THREAD, "terminating error handling thread");
-
-    if (err_th_para == nullptr)
-        return;
-
-    err_th_para->terminate = true;
-
-    KeWaitForSingleObject(err_th_para->th_object,
-                          Executive,
-                          KernelMode,
-                          FALSE,
-                          NULL);
-
-    ObDereferenceObject(err_th_para->th_object);
-
-    qdma_memfree(err_th_para);
-    err_th_para = nullptr;
-}
-
-poll_operation_entry *thread_manager::register_poll_function(poll_op& ops)
-{
-    UINT32 weight;
-    UINT32 sel_weight_id;
-
-    WdfSpinLockAcquire(lock);
-
-    weight = threads[0].weight;
-    sel_weight_id = 0;
-
-    for (ULONG i = 1; i < active_threads; ++i) {
-        if (weight > threads[i].weight) {
-            weight = threads[i].weight;
-            sel_weight_id = i;
-        }
-    }
-
-    threads[sel_weight_id].weight++;
-    WdfSpinLockRelease(lock);
-
-    poll_operation_entry *poll_op_entry = static_cast<poll_operation_entry *>
-                                          (qdma_calloc(1, sizeof(poll_operation_entry)));
-    if (nullptr == poll_op_entry) {
-        return nullptr;
-    }
-
-    poll_op_entry->op.fn = ops.fn;
-    poll_op_entry->op.arg = ops.arg;
-    poll_op_entry->thread = &threads[sel_weight_id];
-
-    /* To Avoid Visual studio static analysis reported warning */
-    WDFSPINLOCK th_lock = threads[sel_weight_id].lock;
-    WdfSpinLockAcquire(th_lock);
-    LIST_ADD_TAIL(&threads[sel_weight_id].poll_ops_head, &poll_op_entry->list_entry);
-    WdfSpinLockRelease(th_lock);
-
-    TraceVerbose(TRACE_THREAD, "Poll function registered for thread : %u New Weight : %u, Poll Handle : %p",
-        sel_weight_id, threads[sel_weight_id].weight, poll_op_entry);
-
-    return poll_op_entry;
-}
-
-void thread_manager::unregister_poll_function(poll_operation_entry *poll_entry)
-{
-    qdma_thread *thread = poll_entry->thread;
-
-    WdfSpinLockAcquire(lock);
-    thread->weight--;
-    WdfSpinLockRelease(lock);
-
-    WdfSpinLockAcquire(thread->lock);
-    PLIST_ENTRY entry = &(poll_entry->list_entry);
-    LIST_DEL_NODE(entry);
-    WdfSpinLockRelease(thread->lock);
-
-    qdma_memfree(poll_entry);
-}
-
-void xlnx::wakeup_thread(qdma_thread* thread)
-{
-    if (thread->sem_count <= 10) {
-        InterlockedIncrement(&thread->sem_count);
-        KeReleaseSemaphore(&thread->semaphore, 0, 1, FALSE);
-    }
-}
diff --git a/QDMA/windows/sys/libqdma/source/thread.h b/QDMA/windows/sys/libqdma/source/thread.h
deleted file mode 100644
index 7600e80..0000000
--- a/QDMA/windows/sys/libqdma/source/thread.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "qdma_platform_env.h"
-#include "qdma_config.h"
-#include "qdma_exports.h"
-#include "qdma_reg_ext.h"
-
-namespace xlnx {
-/* Forward declaration */
-class qdma_device;
-struct queue_pair;
-
-typedef void (*poll_fn) (void *);
-
-struct poll_op {
-    poll_fn fn;
-    void *arg;
-};
-
-struct qdma_thread {
-    bool terminate;
-    ULONG id;
-    HANDLE th_handle;
-    KSEMAPHORE semaphore;
-    volatile LONG sem_count = 0;
-    void *th_object;
-    UINT32 weight;
-    WDFSPINLOCK lock;
-    /* Per thread DPC object to wake up the thread for completion processing */
-    KDPC dpc;
-    LIST_ENTRY poll_ops_head;
-};
-
-struct poll_operation_entry {
-    poll_op op;
-    qdma_thread *thread;
-    LIST_ENTRY list_entry;
-};
-
-struct err_thread {
-    bool terminate;
-    HANDLE th_handle;
-    void *th_object;
-    qdma_device *device = nullptr;
-};
-
-struct thread_manager {
-    ULONG active_processors = 0;
-    ULONG active_threads = 0;
-    WDFSPINLOCK lock = nullptr;
-
-    qdma_thread *threads = nullptr;
-    err_thread *err_th_para = nullptr;
-
-    ULONG get_active_proc_cnt(void);
-    NTSTATUS create_sys_threads(queue_op_mode mode);
-    void terminate_sys_threads(void);
-    void init_dpc(qdma_thread *thread);
-    NTSTATUS create_err_poll_thread(qdma_device *device);
-    void terminate_err_poll_thread(void);
-
-    poll_operation_entry *register_poll_function(poll_op& ops);
-    void unregister_poll_function(poll_operation_entry *poll_entry);
-};
-
-void wakeup_thread(qdma_thread *thread);
-
-} /* namespace xlnx */
-
-
diff --git a/QDMA/windows/sys/libqdma/source/trace.h b/QDMA/windows/sys/libqdma/source/trace.h
deleted file mode 100644
index 1dcb727..0000000
--- a/QDMA/windows/sys/libqdma/source/trace.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#if defined(DBG) || defined(ENABLE_WPP)
-#define ENABLE_WPP_TRACING
-#endif
-
-/**
- * Define the tracing flags.
- *
- * Tracing GUID - 0bed1f17-aa40-5163-c038-33715b81ae49
- * Trace Name : 'Xilinx-QDMA-Debug'
- */
-#define WPP_CONTROL_GUIDS                                                   \
-        WPP_DEFINE_CONTROL_GUID(                                            \
-            QDMATraceGuid, (0bed1f17, aa40, 5163, c038, 33715b81ae49),      \
-                                                                            \
-            WPP_DEFINE_BIT(TRACE_PCIE)                                      \
-            WPP_DEFINE_BIT(TRACE_INTR)                                      \
-            WPP_DEFINE_BIT(TRACE_THREAD)                                    \
-            WPP_DEFINE_BIT(TRACE_QDMA)                                      \
-            WPP_DEFINE_BIT(TRACE_DBG)                                       \
-            WPP_DEFINE_BIT(TRACE_QDMA_ACCESS)                               \
-            )
-
-/* WPP_LEVEL_FLAGS_LOGGER and WPP_LEVEL_FLAGS_ENABLED support trace functions
-   with LEVEL and FLAGS static parameters (in that order) prior to any dynamic
-   parameters (such as MSG)
-*/
-#define WPP_LEVEL_FLAGS_LOGGER(level, flags) \
-        WPP_LEVEL_LOGGER(flags)
-
-#define WPP_LEVEL_FLAGS_ENABLED(level, flags) \
-        (WPP_LEVEL_ENABLED(flags) && WPP_CONTROL(WPP_BIT_ ## flags).Level >= level)
-
-/* Optimize WPP tracing call site conditional checks
-
-   NOTE: This is only safe if we ensure no WPP tracing functions are called
-         before WPP_INIT_TRACING() or after WPP_CLEANUP().
-*/
-#define WPP_CHECK_INIT
-
-
-//
-// This comment block is scanned by the trace preprocessor to define our
-// Trace functions.
-//
-// begin_wpp config
-// FUNC TraceVerbose{LEVEL=TRACE_LEVEL_VERBOSE}(FLAGS, MSG, ...);
-// FUNC TraceInfo{LEVEL=TRACE_LEVEL_INFORMATION}(FLAGS, MSG, ...);
-// FUNC TraceWarning{LEVEL=TRACE_LEVEL_WARNING}(FLAGS, MSG, ...);
-// FUNC TraceError{LEVEL=TRACE_LEVEL_ERROR}(FLAGS, MSG, ...);
-// FUNC TraceEvents(LEVEL, FLAGS, MSG, ...);
-// FUNC qdma_log_error{LEVEL=TRACE_LEVEL_ERROR, FLAGS=TRACE_QDMA_ACCESS}(MSG, ...);
-// FUNC qdma_log_debug{LEVEL=TRACE_LEVEL_VERBOSE, FLAGS=TRACE_QDMA_ACCESS}(MSG, ...);
-// FUNC qdma_log_info{LEVEL=TRACE_LEVEL_INFORMATION, FLAGS=TRACE_QDMA_ACCESS}(MSG, ...);
-// FUNC qdma_log_warn{LEVEL=TRACE_LEVEL_WARNING, FLAGS=TRACE_QDMA_ACCESS}(MSG, ...);
-// end_wpp
-//
-
-/** WPP tracing is disabled by default in release configuration.
- *  so stub out definitions and functions
- *
- *  To Enable WPP Tracing,  Enable Run WPP Tracing in settings and
- *  define MACRO "ENABLE_WPP"
- */
-#ifndef ENABLE_WPP_TRACING
-#define WPP_INIT_TRACING(driver_object, registry_path)
-#define WPP_CLEANUP(driver_object)
-#define TraceVerbose(flags, ...)        (__VA_ARGS__)
-#define TraceInfo(flags, ...)           (__VA_ARGS__)
-#define TraceWarning(flags, ...)        (__VA_ARGS__)
-#define TraceError(flags, ...)          (__VA_ARGS__)
-#define TraceEvents(flags, ...)         (__VA_ARGS__)
-#define qdma_log_error(...)             (__VA_ARGS__)
-#define qdma_log_debug(...)             (__VA_ARGS__)
-#define qdma_log_info(...)              (__VA_ARGS__)
-#define qdma_log_warn(...)              (__VA_ARGS__)
-#endif
diff --git a/QDMA/windows/sys/libqdma/source/xpcie.cpp b/QDMA/windows/sys/libqdma/source/xpcie.cpp
deleted file mode 100644
index ad4ba76..0000000
--- a/QDMA/windows/sys/libqdma/source/xpcie.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#include <initguid.h>
-#include "xpcie.hpp"
-#include "qdma_reg_ext.h"
-#include "trace.h"
-#include <pciprop.h>
-
-#ifdef ENABLE_WPP_TRACING
-#include "xpcie.tmh"
-#endif
-
-using namespace xlnx;
-
-NTSTATUS xpcie_device::map(
-    const WDFCMRESLIST resources)
-{
-    num_bars = 0;
-    const ULONG num_resources = WdfCmResourceListGetCount(resources);
-    TraceVerbose(TRACE_PCIE, "# PCIe resources = %d", num_resources);
-
-    for (ULONG i = 0; i < num_resources; i++) {
-        PCM_PARTIAL_RESOURCE_DESCRIPTOR resource = WdfCmResourceListGetDescriptor(resources, i);
-        if (resource == nullptr) {
-            TraceError(TRACE_PCIE, "WdfCmResourceListGetDescriptor() fails");
-            return STATUS_DEVICE_CONFIGURATION_ERROR;
-        }
-
-        if (resource->Type == CmResourceTypeMemory) {
-            /** index = 0 indictaes the first BAR details found in resource list, 
-                index = 1 indicates the second BAR detauls found in resource list, etc.,
-
-                This index is not the BAR number.
-            */
-            bars[num_bars].index = num_bars;
-            bars[num_bars].length = resource->u.Memory.Length;
-            bars[num_bars].base = static_cast<UCHAR *>(MmMapIoSpaceEx(resource->u.Memory.Start, 
-                resource->u.Memory.Length, PAGE_READWRITE | PAGE_NOCACHE));
-
-            if (bars[num_bars].base == nullptr) {
-                TraceError(TRACE_PCIE, "MmMapIoSpace returned NULL! for BAR%u", num_bars);
-                return STATUS_DEVICE_CONFIGURATION_ERROR;
-            }
-            TraceVerbose(TRACE_PCIE, "MM BAR %d (addr:0x%lld, length:%llu) mapped at 0x%08p",
-                      num_bars, resource->u.Memory.Start.QuadPart, bars[num_bars].length, bars[num_bars].base);
-            num_bars++;
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-void xpcie_device::unmap(void)
-{
-    /* Unmap any I/O ports. Disconnecting from the interrupt will be done automatically by the framework. */
-    for (unsigned int i = 0; i < num_bars; i++) {
-        if (bars[i].base != nullptr) {
-            TraceVerbose(TRACE_PCIE, "Unmapping BAR%d, VA:(%p) Length %llu", i, bars[i].base, bars[i].length);
-            MmUnmapIoSpace(bars[i].base, bars[i].length);
-            bars[i].base = nullptr;
-        }
-    }
-}
-
-NTSTATUS xpcie_device::get_bdf(const WDFDEVICE device, UINT32 &bdf)
-{
-    ULONG bus_number;
-    ULONG address;
-    NTSTATUS status;
-    ULONG length;
-    union pci_sbdf dev_sbdf;
-
-    status = WdfDeviceQueryProperty(device, DevicePropertyBusNumber,
-        sizeof(bus_number), (PVOID)&bus_number,
-        &length);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_PCIE,
-            "WdfDeviceQueryProperty failed for DevicePropertyBusNumber: %!STATUS!",
-            status);
-        return status;
-    }
-
-    status = WdfDeviceQueryProperty(device, DevicePropertyAddress,
-        sizeof(address), (PVOID)&address,
-        &length);
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_PCIE,
-            "WdfDeviceQueryProperty failed for DevicePropertyAddress: %!STATUS!",
-            status);
-        return status;
-    }
-
-    dev_sbdf.val = 0x0;
-    dev_sbdf.sbdf.seg_no = (bus_number >> 8) & 0xFFFF;
-    dev_sbdf.sbdf.bus_no = bus_number & 0xFF;
-    dev_sbdf.sbdf.dev_no = (address >> 16) & 0xFFFF;
-    dev_sbdf.sbdf.fun_no = address & 0xFFFF;
-
-    TraceVerbose(TRACE_PCIE,
-        "PCIe Seg_No : 0x%X, Bus_No : 0x%X, Dev_No: 0x%X, Fun_No: 0x%X",
-        dev_sbdf.sbdf.seg_no, dev_sbdf.sbdf.bus_no, dev_sbdf.sbdf.dev_no, dev_sbdf.sbdf.fun_no);
-
-    bdf = dev_sbdf.val;
-
-    return STATUS_SUCCESS;
-}
-
-ULONG xpcie_device::get_num_msix_vectors(void) const
-{
-    return msix_vectors;
-}
-
-NTSTATUS xpcie_device::find_num_msix_vectors(
-    const WDFDEVICE device)
-{
-    NTSTATUS status;
-    ULONG intr_support;
-    ULONG intr_max;
-    ULONG length;
-    DEVPROPTYPE type;
-    WDF_DEVICE_PROPERTY_DATA dev_prop_data;
-
-    msix_vectors = 0;
-
-    WDF_DEVICE_PROPERTY_DATA_INIT(&dev_prop_data, &DEVPKEY_PciDevice_InterruptSupport);
-
-    status = WdfDeviceQueryPropertyEx(device, &dev_prop_data, sizeof(intr_support), (PVOID)&intr_support,
-        &length, &type);
-
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_PCIE,
-            "WdfDeviceQueryProperty failed for PciDevice_InterruptSupport: %!STATUS!",
-            status);
-        return status;
-    }
-
-    TraceVerbose(TRACE_PCIE, "PciDevice_InterruptSupport: %d, type : %d", intr_support, type);
-
-    if (!(intr_support & DevProp_PciDevice_InterruptType_MsiX)) {
-        TraceError(TRACE_PCIE, "MSI-X interrupts are not supported");
-        return STATUS_NOT_SUPPORTED;
-    }
-
-    WDF_DEVICE_PROPERTY_DATA_INIT(&dev_prop_data, &DEVPKEY_PciDevice_InterruptMessageMaximum);
-
-    status = WdfDeviceQueryPropertyEx(device, &dev_prop_data, sizeof(intr_max), (PVOID)&intr_max,
-        &length, &type);
-
-    if (!NT_SUCCESS(status)) {
-        TraceError(TRACE_PCIE,
-            "WdfDeviceQueryProperty failed for DEVPKEY_PciDevice_InterruptMessageMaximum: %!STATUS!",
-            status);
-        return status;
-    }
-
-    TraceVerbose(TRACE_PCIE, "InterruptMessageMaximum: %d, type : %d", intr_max, type);
-
-    msix_vectors = intr_max;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS xpcie_device::assign_config_bar(const UINT8 bar_idx)
-{
-    if (bar_idx > num_bars)
-        return STATUS_UNSUCCESSFUL;
-
-    config_bar = &bars[bar_idx];
-    return STATUS_SUCCESS;
-}
-
-
-NTSTATUS xpcie_device::assign_bar_types(const UINT8 user_bar_idx)
-{
-    UINT32 config_bar_idx = 0;
-    config_bar_idx = (UINT8)(config_bar - bars);
-
-    if (num_bars > 1) {
-        user_bar = &bars[user_bar_idx];
-        TraceInfo(TRACE_PCIE, "AXI Master Lite BAR %u", (user_bar_idx * 2));
-
-        if (num_bars > 2) {
-            for (auto i = 0u; i < num_bars; ++i) {
-                if (i == user_bar_idx || i == config_bar_idx)
-                    continue;
-
-                bypass_bar = &bars[i];
-                TraceInfo(TRACE_PCIE, "AXI Bridge Master BAR %d", (i * 2));
-                break;
-            }
-        }
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS xpcie_device::read_bar(
-    qdma_bar_type bar_type,
-    size_t offset,
-    void* data,
-    size_t size) const
-{
-    xpcie_device::bar *bar = nullptr;
-
-    if ((nullptr == data) || ((size_t)0 == size)) {
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    switch (bar_type) {
-    case qdma_bar_type::CONFIG_BAR:
-        bar = config_bar;
-        break;
-    case qdma_bar_type::USER_BAR:
-        bar = user_bar;
-        break;
-    case qdma_bar_type::BYPASS_BAR:
-        bar = bypass_bar;
-        break;
-    }
-
-    if (nullptr == bar)
-        return STATUS_INVALID_PARAMETER;
-
-    return bar->read(offset, data, size);
-}
-
-NTSTATUS xpcie_device::write_bar(
-    qdma_bar_type bar_type,
-    size_t offset,
-    void* data,
-    size_t size) const
-{
-    xpcie_device::bar *bar = nullptr;
-
-    if ((nullptr == data) || ((size_t)0 == size)) {
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    switch (bar_type) {
-    case qdma_bar_type::CONFIG_BAR:
-        bar = config_bar;
-        break;
-    case qdma_bar_type::USER_BAR:
-        bar = user_bar;
-        break;
-    case qdma_bar_type::BYPASS_BAR:
-        bar = bypass_bar;
-        break;
-    }
-
-    if (nullptr == bar)
-        return STATUS_INVALID_PARAMETER;
-
-    return bar->write(offset, data, size);
-}
-
-NTSTATUS xpcie_device::get_bar_info(
-    qdma_bar_type bar_type,
-    PVOID &bar_base,
-    size_t &bar_length) const
-{
-    switch (bar_type) {
-    case qdma_bar_type::CONFIG_BAR:
-        bar_base = (PVOID)config_bar->base;
-        bar_length = config_bar->length;
-        break;
-    case qdma_bar_type::USER_BAR:
-        bar_base = (PVOID)user_bar->base;
-        bar_length = user_bar->length;
-        break;
-    case qdma_bar_type::BYPASS_BAR:
-        bar_base = (PVOID)bypass_bar->base;
-        bar_length = bypass_bar->length;
-        break;
-    default:
-        bar_base = NULL;
-        bar_length = (size_t)0;
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    return STATUS_SUCCESS;
-}
-
-ULONG xpcie_device::conf_reg_read(size_t offset) const
-{
-    NT_ASSERTMSG("Error: BAR not assigned!", config_bar->base != nullptr);
-    NT_ASSERTMSG("Error: BAR overrun!", ((offset + sizeof(ULONG)) <= config_bar->length));
-
-    return READ_REGISTER_ULONG(reinterpret_cast<volatile ULONG*>(config_bar->base + offset));
-}
-
-void xpcie_device::conf_reg_write(size_t offset, ULONG data) const
-{
-    NT_ASSERTMSG("Error: BAR not assigned!", config_bar->base != nullptr);
-    NT_ASSERTMSG("Error: BAR overrun!", ((offset + sizeof(ULONG)) <= config_bar->length));
-
-    WRITE_REGISTER_ULONG(reinterpret_cast<volatile ULONG*>(config_bar->base + offset), data);
-}
-
-NTSTATUS xpcie_device::bar::write(
-    const size_t offset,
-    void *data,
-    const size_t size) const
-{
-    if (base == nullptr) {
-        TraceError(TRACE_PCIE, "Attempted to access non-mapped BAR!");
-        return STATUS_INVALID_ADDRESS;
-    }
-
-    /* check if request runs over BAR address space */
-    if ((offset + size) > length) {
-        TraceError(TRACE_PCIE, "Error: BAR overrun!");
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    UCHAR *vaddr = base + offset;
-
-    if (size % sizeof(ULONG64) == 0) {
-        WRITE_REGISTER_BUFFER_ULONG64(reinterpret_cast<volatile ULONG64*>(vaddr), 
-            static_cast<PULONG64>(data), static_cast<ULONG>(size) / sizeof(ULONG64));
-    } else if (size % sizeof(ULONG) == 0) {
-        WRITE_REGISTER_BUFFER_ULONG(reinterpret_cast<volatile ULONG*>(vaddr), 
-            static_cast<PULONG>(data), static_cast<ULONG>(size) / sizeof(ULONG));
-    } else if (size % sizeof(USHORT) == 0) {
-        WRITE_REGISTER_BUFFER_USHORT(reinterpret_cast<volatile USHORT*>(vaddr), 
-            static_cast<PUSHORT>(data), static_cast<ULONG>(size) / sizeof(USHORT));
-    } else {
-        WRITE_REGISTER_BUFFER_UCHAR(reinterpret_cast<volatile UCHAR*>(vaddr), 
-            static_cast<PUCHAR>(data), static_cast<ULONG>(size));
-    }
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS xpcie_device::bar::read(
-    const size_t offset,
-    void *data,
-    const size_t size) const
-{
-    if (base == nullptr) {
-        TraceError(TRACE_PCIE, "Attempted to access non-mapped BAR!");
-        return STATUS_INVALID_ADDRESS;
-    }
-
-    /* check if request runs over BAR address space */
-    if ((offset + size) > length) {
-        TraceError(TRACE_PCIE, "Error: BAR overrun!");
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    UCHAR* vaddr = base + offset;
-
-    if (size % sizeof(ULONG) == 0) {
-        READ_REGISTER_BUFFER_ULONG(reinterpret_cast<volatile ULONG*>(vaddr), static_cast<PULONG>(data), static_cast<ULONG>(size) / sizeof(ULONG));
-    } else if (size % sizeof(USHORT) == 0) {
-        READ_REGISTER_BUFFER_USHORT(reinterpret_cast<volatile USHORT*>(vaddr), static_cast<PUSHORT>(data), static_cast<ULONG>(size) / sizeof(USHORT));
-    } else {
-        READ_REGISTER_BUFFER_UCHAR(vaddr, static_cast<PUCHAR>(data), static_cast<ULONG>(size));
-    }
-
-    return STATUS_SUCCESS;
-}
diff --git a/QDMA/windows/sys/libqdma/source/xpcie.hpp b/QDMA/windows/sys/libqdma/source/xpcie.hpp
deleted file mode 100644
index 232c331..0000000
--- a/QDMA/windows/sys/libqdma/source/xpcie.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2020 Xilinx, Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License"). You may
- * not use this file except in compliance with the License. You may obtain
- * a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-#pragma once
-
-#include "qdma_platform_env.h"
-#include "qdma_exports.h"
-#include <wdmguid.h>
-#include <wchar.h>
-
-namespace xlnx {
-
-struct sbdf {
-    UINT32  fun_no : 3;
-    UINT32  dev_no : 5;
-    UINT32  bus_no : 8;
-    UINT32  seg_no : 16;
-};
-
-union pci_sbdf {
-    struct sbdf sbdf;
-    UINT32 val;
-};
-
-class xpcie_device {
-    struct bar {
-        /** kernel virtual address of pcie BAR */
-        UCHAR *base = nullptr;
-        /** length of address space in Bytes */
-        size_t length = 0;
-        /** BAR index, not to confuse with BAR number */
-        unsigned int index = 0;
-
-        NTSTATUS read(size_t offset, void* data, size_t size) const;
-        NTSTATUS write(size_t offset, void* data, size_t size) const;
-    };
-
-    static constexpr size_t MAX_NUM_BARS = 6;
-    ULONG msix_vectors = 0;
-    UINT32 num_bars = 0;
-    bar bars[MAX_NUM_BARS];
-    bar* config_bar = nullptr;
-    bar* user_bar = nullptr;
-    bar* bypass_bar = nullptr;
-
-public:
-    NTSTATUS map(const WDFCMRESLIST resources);
-    void unmap(void);
-    NTSTATUS find_num_msix_vectors(const WDFDEVICE device);
-    ULONG get_num_msix_vectors(void) const;
-    NTSTATUS assign_config_bar(const UINT8 bar_idx);
-    NTSTATUS assign_bar_types(const UINT8 user_bar_idx);
-    NTSTATUS get_bdf(const WDFDEVICE device, UINT32 &bdf);
-
-    NTSTATUS read_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size) const;
-    NTSTATUS write_bar(qdma_bar_type bar_type, size_t offset, void* data, size_t size) const;
-    ULONG conf_reg_read(size_t offset) const;
-    void conf_reg_write(size_t offset, ULONG data) const;
-    NTSTATUS get_bar_info(qdma_bar_type bar_type, PVOID &bar_base, size_t &bar_length) const;
-};
-} /* namespace xlnx */
-
-
diff --git a/README.md b/README.md
deleted file mode 100644
index 194a65f..0000000
--- a/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Xilinx DMA IP Reference drivers
-
-## Xilinx QDMA
-
-The Xilinx PCI Express Multi Queue DMA (QDMA) IP provides high-performance direct memory access (DMA) via PCI Express. The PCIe QDMA can be implemented in UltraScale+ devices.
-
-Both the linux kernel driver and the DPDK driver can be run on a PCI Express root port host PC to interact with the QDMA endpoint IP via PCI Express.
-
-### Getting Started
-
-* [QDMA Reference Drivers Comprehensive documentation](https://xilinx.github.io/dma_ip_drivers/)
-
-## Xilinx-VSEC (XVSEC)
-
-Xilinx-VSEC (XVSEC) are Xilinx supported VSECs. The XVSEC Driver helps creating and deploying designs that may include the Xilinx VSEC PCIe Features.
-
-VSEC (Vendor Specific Extended Capability) is a feature of PCIe.
-
-The VSEC itself is implemented in the PCIe extended capability register in the FPGA hardware (as either soft or hard IP). The drivers and SW are created to interface with and use this hardware implemented feature.
-
-The XVSEC driver currently include the MCAP VSEC, but will be expanded to include the XVC VSEC and NULL VSEC.
-
-### Getting Started
-
-* [XVSEC Linux Kernel Reference Driver Comprehensive documentation](https://xilinx.github.io/dma_ip_drivers/)
-
-### Support
-
-Refer to Xilinx PCIe Forum for any queries/issues/support required w.r.t Xilinx's DMA IP Reference Drivers
-
-Note: Issues are disabled in github for these drivers. All the queries shall be redirected through Xilinx PCIe Forum link given below.
-
-* [Xilinx PCIe Forum](https://forums.xilinx.com/t5/PCIe-and-CPM/bd-p/PCIe)
\ No newline at end of file
diff --git a/XDMA/linux-kernel/RELEASE b/RELEASE
similarity index 100%
rename from XDMA/linux-kernel/RELEASE
rename to RELEASE
diff --git a/XDMA/linux-kernel/COPYING b/XDMA/linux-kernel/COPYING
deleted file mode 100644
index 3912109..0000000
--- a/XDMA/linux-kernel/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/XVSEC/linux-kernel/COPYING b/XVSEC/linux-kernel/COPYING
deleted file mode 100644
index 3912109..0000000
--- a/XVSEC/linux-kernel/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/XVSEC/linux-kernel/LICENSE b/XVSEC/linux-kernel/LICENSE
deleted file mode 100644
index 703e647..0000000
--- a/XVSEC/linux-kernel/LICENSE
+++ /dev/null
@@ -1,30 +0,0 @@
-BSD License
-
-For Xilinx DMA IP software
-
-Copyright (c) 2016-present, Xilinx, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
-   list of conditions and the following disclaimer.
-
- * 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.
-
- * Neither the name Xilinx nor the names of its contributors may be used to
-   endorse or promote products derived from this software without specific
-   prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
diff --git a/XVSEC/linux-kernel/Makefile b/XVSEC/linux-kernel/Makefile
deleted file mode 100644
index 0b574bf..0000000
--- a/XVSEC/linux-kernel/Makefile
+++ /dev/null
@@ -1,99 +0,0 @@
-SHELL = /bin/bash
-BUILD_DIR = ./build
-
-kernelrelease := $(shell uname -r)
-
-# evaluate install paths
-ifeq ($(install_path),)
-	# defaults
-	kernel_install_path ?= $(PREFIX)/lib/modules/$(kernelrelease)/updates/kernel/drivers/xvsec
-	dev_install_path ?= /usr/local/include/
-	user_install_path ?= /usr/local/sbin
-else # bundled install
-	kernel_install_path ?= $(install_path)/modules
-	dev_install_path ?= $(install_path)/include/
-	user_install_path ?= $(install_path)/bin
-endif
-
-.PHONY: all
-all: drv libxvsec tools
-
-.PHONY : drv
-drv :
-	@echo "#######################";
-	@echo "####  drv          ####";
-	@echo "#######################";
-	cd drv && $(MAKE)
-
-.PHONY : libxvsec
-libxvsec :
-	@echo "#######################";
-	@echo "####  libxvsec     ####";
-	@echo "#######################";
-	cd libxvsec && $(MAKE)
-
-.PHONY : tools
-tools : libxvsec app
-app :
-	@echo "#######################";
-	@echo "####  tools        ####";
-	@echo "#######################";
-	cd tools && $(MAKE)
-.PHONY : clean
-clean :
-	@echo "#########################";
-	@echo "#### removing driver ####";
-	@echo "#########################";
-	cd drv && $(MAKE) clean
-	@echo "#########################";
-	@echo "#### removing Lib #######";
-	@echo "#########################";
-	cd libxvsec && $(MAKE) clean
-	@echo "#########################";
-	@echo "#### removing tools #####";
-	@echo "#########################";
-	cd tools && $(MAKE) clean
-
-.PHONY : install
-install :
-	@echo "installing kernel modules to $(kernel_install_path) ..."
-	@mkdir -p -m 755 $(kernel_install_path)
-	@install -v -m 644 $(BUILD_DIR)/modules/*.ko $(kernel_install_path)
-	@depmod -a || true
-
-	@echo "installing development headers to $(dev_install_path) ..."
-	@mkdir -p -m 755 $(dev_install_path)
-	@install -v -m 755 $(BUILD_DIR)/modules/*.h $(dev_install_path)
-
-	@echo "installing user tools to $(user_install_path) ..."
-	@mkdir -p -m 755 $(user_install_path)
-	@install -v -m 755 $(BUILD_DIR)/xvsecctl $(user_install_path)
-
-.PHONY : uninstall
-uninstall :
-	@echo "Un-installing $(kernel_install_path) ..."
-	@/bin/rm -rf $(kernel_install_path)/*
-	@depmod -a
-
-	@echo "Un-installing user tools under $(user_install_path) ..."
-	@/bin/rm -f $(user_install_path)/xvsecctl
-
-	@echo "Un-installing development headers under $(dev_install_path) ..."
-	@/bin/rm -r $(dev_install_path)
-
-.PHONY: help
-help:
-	@echo "Build Targets:";\
-	 echo " install             - Installs all compiled drivers.";\
-	 echo " uninstall           - Uninstalls drivers.";\
-	 echo " clean               - Removes all generated files.";\
-	 echo " drv                 - builds the kernel driver"; \
-	 echo " libxvsec            - builds the user space library"; \
-	 echo " tools               - builds the application tool";
-	 @echo;\
-	 echo "Build Options:";\
-	 echo " kernel_install_path=<path>";\
-	 echo "                     - kernel module install path.";\
-	 echo " user_install_path=<path>";\
-	 echo "                     - user cli tool install path.";\
-	 echo;
diff --git a/XVSEC/linux-kernel/README b/XVSEC/linux-kernel/README
deleted file mode 100644
index dca5b3b..0000000
--- a/XVSEC/linux-kernel/README
+++ /dev/null
@@ -1 +0,0 @@
-docs/README
diff --git a/XVSEC/linux-kernel/RELEASE b/XVSEC/linux-kernel/RELEASE
deleted file mode 100644
index 9eac0f2..0000000
--- a/XVSEC/linux-kernel/RELEASE
+++ /dev/null
@@ -1,81 +0,0 @@
-Release: 2020.2.1
-=================
-
-NOTE:
-	This release is based on the 2020.2.1 XVSEC-MCAP Design.
-
-	XVSEC driver is implemented to support Ultrascale, Ultrascale+, and Versal devices.
-
-SUPPORTED FEATURES:
-===================
-
-Release: 2020.2.1
------------------
-- Integrated the following pull requests in mainline
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/3a9351b0cc30f355a6d48a33b7b76aaae38434c0
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/cb1659b84021d449fc9388d3e04ebef7422932e7
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/12a076ad89094d297bbc8d88d42527b7b24723b8
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/3414e46e64c27dad5d6399429157f3038e439ae4
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/d1fe085fd931f66a8e5d4217414fc514e345534f
-	https://github.com/Xilinx/dma_ip_drivers/pull/134/commits/7805b271bee7344c02c311b01c918e1c43e3ebe5
-
-- Fixed the compilation issue for Ubuntu 20.04 LTS
-
-Release: 2020.2
----------------
-- The XVSEC kernel driver 2020.2 Supports
-	- US/US+ devices (MCAP Rev 0 and 1)
-	- Versal device (MCAP Rev 2)
-- Supports Multiple VSECs on the same device
-- Supports Multiple devices connected on the same host
-
-- Generic VSEC functionality
-	- Lists the supported VSECs by the device
-	- Verbose information about the device
-
-- The following MCAP operations supported for Versal devices
-	- MCAP Module Reset
-	- List MCAP Register set
-	- File Download at user specified address
-		- Fixed Address download for FIFO devices
-		- Increment Address download
-		- 32b mode download for 32b supported devices
-		- 128b mode download for 128b suppported devices
-		- Slow and Fast download mode supported
-	- File Upload from user specified address
-		- Fixed Address upload for FIFO devices
-		- Increment Address upload
-	- Access(Read/Write) any MCAP register by providing offset
-	- Access(Read/Write) any Device register connected to AXI bus by providing address
-	- Set the AXI cache and protections bits
-
-Release: 2018.3
----------------
-- The XVSEC kernel driver 2018.3 Supports
-	- US/US+ devices (MCAP Rev 0 and 1)
-
-- MCAP VSEC functionality is implemented as part of the XVSEC driver
-- Multiple Devices on the Same Host supported
-	- Unique character device gets created per device
-- The following Generic VSEC operations supported
-	- Listing the supported VSECs by HW
-	- Verbose Information of the given device
-- The following MCAP operations supported
-	- Configuration Logic Reset
-	- MCAP Module Reset
-	- Full Reset (Both Configuration Logic and MCAP Module Reset)
-	- Dump MCAP Read Data Registers
-	- Dump MCAP Register set
-	- Dump FPGA Configuration Register set
-	- Access(Read/Write) any MCAP register by providing offset
-	- Access(Read/Write) any FPGA configuration register by providing register number
-	- Program partial clear bitstream
-	- Program Stage-2/partial reconfigurable bitstream
-	
-DRIVER LIMITATIONS:
-===================
-- Only MCAP VSEC is supported
-
-KNOWN Issues:
-===========
-XVSEC kernel driver 2020.2 does not support Fast download mode for Versal devices.
diff --git a/XVSEC/linux-kernel/docs/README b/XVSEC/linux-kernel/docs/README
deleted file mode 100644
index a9e436c..0000000
--- a/XVSEC/linux-kernel/docs/README
+++ /dev/null
@@ -1,662 +0,0 @@
-###############################################################################
-
-                 Xilinx XVSEC Software README
-
-###############################################################################
-_____________________________________________________________________________
-Contents
-
-1.   Installation
-     1.1   Compiling the XVSEC Software
-     1.2   Installing the compiled binaries
-     1.3   Loading the Kernel module
-2.   Xilinx "xvsecctl" Command-line Utility
-     2.1 Using xvsecctl for Generic VSEC functionality
-     2.2 US/US+ MCAP Specific Commands
-     2.3 Versal MCAP Specific Commands
-
-_____________________________________________________________________________
-1. Installation:
-================
-
-  1.1 Compiling the XVSEC Software:
-  --------------------------------
-
-  In order to compile the Xilinx VSEC software, a configured and compiled
-  Linux kernel source tree is required. The source tree may be only compiled
-  header files, or a complete tree. The source tree needs to be configured
-  and the header files need to be compiled. And, the Linux kernel must be
-  configured to use  modules.
-
-  Additionally, the /lib/modules must have been set up for this particular
-  kernel
-  (i.e. "make modules_install" has been run with the Linux kernel source tree).
-
-  a.    QDMA Linux Kernel Driver is available in Xilinx github at
-        https://github.com/Xilinx/dma_ip_drivers/tree/master/XVSEC/linux-kernel
-
-  b.    Compile the Xilinx XVSEC Linux driver:
-
-        [xilinx@]# make clean all
-
-        a sub-directory build/ will be created as a result of running "make".
-
-        By default, xvsec kernel module, xvsec user space library and
-        xvsec application tool gets compiled
-
-        To compile Kernel driver(xvsec.ko):
-        [xilinx@]# make drv
-
-        To compile user space library(libxvsec.a):
-        [xilinx@]# make libxvsec
-
-        To compile application tool(xvsecctl):
-        [xilinx@]# make tools
-
-  1.2 Installing the compiled binaries:
-  -------------------------------------
-
-  To install the XVSEC software, the installer must be the root user, then
-  run "make install".
-
-  [xilinx@]# make install
-
-  The XVSEC module will be installed in the
-  /lib/modules/<linux_kernel_version>/updates/kernel/drivers/xvsec directory.
-
-  The xvsecctl tool will be installed in /user/local/sbin.
-
-  1.3 Loading the Kernel module:
-  --------------------------------
-
-  To load the module run modprobe as follows:
-
-  [root@]# modprobe xvsec
-
-  Now the XVSEC software is ready for use.
-  The eaxmple for the system having VCU1525(US+) card connected on bus 0x03 and device number 0x00 will have char dev nodes as below :
-
-   - Default generic char device node - **/dev/xvsec0300**
-   - For US+ MCAP specific functionalities - **/dev/xvsec0300_mcap**.
-
-2. Xilinx "xvsecctl" Command-line Utility:
-======================================
-
-  The Xilinx XVSEC control tool, xvsecctl, is a Command Line utility
-  which is installed in /usr/local/sbin/ and allows controlling of
-  Xilinx VSEC functionality.
-
-  For help run:
-    xvsecctl -h
-
-  It can perform the following functions:
-
-  - Generic VSEC functionality
-    - Lists the supported VSECs by the device
-    - Verbose information about the device
-
-  - US/US+ device specific functionality
-    - Configuration Logic Reset
-    - MCAP Module Reset
-    - Full Reset (Both Configuration Logic and MCAP Module Reset)
-    - List MCAP Read Data Registers
-    - List MCAP Register set
-    - List FPGA Configuration Register set
-    - Access(Read/Write) any MCAP register by providing offset
-    - Access(Read/Write) any FPGA configuration register by providing register number
-    - Program partial clear bitstream
-    - Program Stage-2/partial reconfigurable bitstream
-
-  - Versal device specific functionality
-    - MCAP Module Reset
-    - List MCAP Register set
-    - File Download at user specified address
-        - Fixed Address download for FIFO devices
-        - Increment Address download
-        - 32b mode download for 32b supported devices
-        - 128b mode download for 128b suppported devices
-        - Slow and Fast download mode supported
-    - File Upload from user specified address
-        - Fixed Address upload for FIFO devices
-        - Increment Address upload
-    - Access(Read/Write) any MCAP register by providing offset
-    - Access(Read/Write) any Device register connected to AXI bus by providing address
-    - Set the AXI cache and protections bits
-
-  2.1 Using xvsecctl for Generic VSEC functionality
-  -------------------------------------------------
-
-  Note:
-    Following parameters are common for all the commands.
-      b <bus_no>:
-        - Specify PCI bus no on which device sits.
-      F <dev_no>:
-        - Specify PCI device no on the bus.
-
-    2.1.1. List XVSEC Capabilities
-    --------------------------
-
-    command: ./xvsecctl -b<bus_no> -F <dev_no> -l
-
-    Description:
-    Lists the supported VSECs
-
-    Example:
-      [xilinx@]# ./xvsecctl -b 0x65 -F 0x0 -l
-
-      No of Supported Extended capabilities : 3
-      VSEC ID         VSEC Rev        VSEC Name       Driver Support
-      -------         --------        ---------       --------------
-      0x0001          0x0001          PCIe_MCAP_VSEC          Yes
-      0x0000          0x0000          UNKNOWN                 No
-      0x0008          0x0000          PCIe_XVC_DEBUG_VSEC     No
-
-
-    2.1.2. Lists basic information about the device
-    -------------------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -v
-
-    Description:
-    Prints Verbose Information of the given device.
-
-    Example:
-      [xilinx@]# ./xvsecctl -b 0x65 -F 0x0 -v
-
-      Xilinx VSEC Tool        : v2020.2.0
-      Xilinx VSEC Library     : v2020.2.0
-      -----------------------------------
-      vendor_id        = 0x10EE
-      device_id        = 0xB03F
-      device_no        = 0x0
-      device_fn        = 0x0
-      subsystem_vendor = 0x10EE
-      subsystem_device = 0x7
-      class_id         = 0x5800
-      cfg_size         = 0x1000
-      is_msi_enabled   = 0x0
-      is_msix_enabled  = 0x0
-
-  2.2 US/US+ MCAP Specific Options
-  --------------------------------
-
-    2.2.1. MCAP Reset
-    -----------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -r
-
-    Description:
-    It Performs Simple Reset.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -r
-
-        MCAP version: 1
-        Configuration Logic Reset Successful
-
-    2.2.2. MCAP Module Reset
-    ------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -m
-
-    Description:
-    Performs Module Reset.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -m
-
-        MCAP version: 1
-        MCAP Module Reset Successful
-
-
-    2.2.3. MCAP Full Reset
-    ----------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -f
-
-    Description:
-    This command Performs Full Reset. It is equivalent to MCAP Simpale Reset + MCAP Module Reset.
-
-      Example:
-        [xilinx@]# sudo ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -f
-
-        MCAP version: 1
-        Both Configuration Logic & MCAP Module Reset Successful
-
-    2.2.4. Lists Data register Contents
-    -----------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -D
-
-    Description:
-    Reads and prints MCAP Data Registers.
-
-      Example:
-        [xilinx@]# sudo ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -D
-
-        MCAP version: 1
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x001C          FPGA Read Data[0]       0x00000000
-        0x0020          FPGA Read Data[1]       0x00000000
-        0x0024          FPGA Read Data[2]       0x00000000
-        0x0028          FPGA Read Data[3]       0x00000000
-
-    2.2.5. Lists MCAP Register Contents
-    -----------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -d
-
-    Description:
-    It Dumps all the MCAP config Registers.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -d
-
-        MCAP version: 1
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x0000          Ext Capability          0x4801000B
-        0x0004          VSEC Header             0x02C10001
-        0x0008          FPGA JTAG ID            0x14B31093
-        0x000C          FPGA BitStream Ver      0x00000000
-        0x0010          Status                  0x00000004
-           bit  0       MCAP Error                       0
-           bit  1       MCAP EOS                         0
-           bit  4       MCAP Read Complete               0
-           bit 5:7      MCAP Read Count                  0
-           bit  8       MCAP FIFO Overflow               0
-           bit 12:15    MCAP FIFO Occupancy              0
-           bit 24       Req for MCAP Release             0
-        0x0014          Control                 0x00001000
-           bit  0       MCAP Enable                      0
-           bit  1       MCAP Read Enable                 0
-           bit  4       MCAP Reset                       0
-           bit  5       MCAP Module Reset                0
-           bit  8       Req for MCAP by PCIe             0
-           bit 12       MCAP Design Switch               1
-           bit 16       Write Data Reg Enable            0
-        0x0018          FPGA Write Data         0x00000000
-        0x001C          FPGA Read Data[0]       0x0000000B
-        0x0020          FPGA Read Data[1]       0x00000000
-        0x0024          FPGA Read Data[2]       0x00000000
-        0x0028          FPGA Read Data[3]       0x00000000
-
-    2.2.6. Lists FPGA Config Reg Dump
-    ---------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -o
-
-    Description:
-    Reads and prints all FPGA Config Registers.
-
-      Example:
-         [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -o
-
-         MCAP version: 1
-         FPGA CFG Registers Dump (see Configuration User Guide for more details)
-
-         Register No     Register Name           Data Value
-         -----------     ----------------        ----------
-         0x0000          crc                     0x00000000
-         0x0001          far                     0x07FC0000
-         0x0002          fdri                    0x00000000
-         0x0003          fdro                    0x00000000
-         0x0004          cmd                     0x00000000
-         0x0005          ctl0                    0x00000401
-         0x0006          mask                    0x00000000
-         0x0007          stat                    0x109079FC
-         0x0008          lout                    0x00000000
-         0x0009          cor0                    0x38003FE5
-         0x000A          mfwr                    0x00000000
-         0x000B          cbc                     0x00000000
-         0x000C          idcode                  0x14B31093
-         0x000D          axss                    0x00000000
-         0x000E          cor1                    0x00400000
-         0x0010          wbstar                  0x00000000
-         0x0011          timer                   0x00000000
-         0x0014          scratchpad              0x00000000
-         0x0016          bootsts                 0x00000001
-         0x0018          ctl1                    0x00000000
-         0x001F          bspi                    0x0000000B
-
-    2.2.7. Access the MCAP Registers
-    --------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -a <byte offset> [type [data]]
-
-    Description:
-    This command is used to read/write the MCAP config Register.
-
-    Parameters:
-      <byte offset>:
-        - MCAP register offset
-      [type[data]]:
-        - Write operation with data
-        - b for byte data [8 bits] read
-        - h for half word data [16 bits] read
-        - w for word data [32 bits] read
-
-      Examples:
-        1) Read MCAP register
-        ---------------------
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -a 0x4 w
-
-        MCAP version: 1
-        [XVSEC] : xvsec_mcap_access_config_reg : read operation completed
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x0004          VSEC Header             0x02C10001
-
-        2) Write MCAP register
-        ----------------------
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -a 0x14 w 0x10000
-
-        MCAP version: 1
-        [XVSEC] : xvsec_mcap_access_config_reg : write operation completed
-        BYTE OFFSET Register Name       Data Value
-        ----------- ----------------    ----------
-        0x0014      Control                 0x00010000
-
-    2.2.8. Access FPGA Config Registers
-    -----------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -s <register no> [w [data]]
-
-    Description:
-    This command is used to read/write the FPGA config Register.
-
-    Parameters:
-      <register no>:
-        - FPGA register offset
-      [w [data]]:
-        - Write operation with data
-        - Read Operation if 'w' not given
-
-      Examples:
-        1) Read FPGA config register
-        ----------------------------
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -s 0x14
-
-        MCAP version: 1
-        [XVSEC] : xvsec_mcap_access_fpga_config_reg : read operation completed
-        Register No     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x0014          scratchpad              0x00000000
-
-        2) Write FPGA config register
-        ----------------------------
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -s 0x14 w 0xDEADBEEF
-        MCAP version: 1
-        In -s option
-        [XVSEC] : xvsec_mcap_access_fpga_config_reg : write operation completed
-        Register No     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x0014          scratchpad              0xDEADBEEF
-
-    2.2.9. Program Stage 2 Bit-stream(.bin/.bit/.rbt)
-    -------------------------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -p <file>
-
-    Description:
-    Programs Stage 2 Bitstream into FPGA. Supported file extentions are *.bin, *.bit, *.rbt.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x08 -F 0x0 -c 0x1 -p Tul_Des03_tfu_update_region_partial.bit
-
-        MCAP version: 1
-        [XVSEC] : xvsec_mcap_configure_fpga : Bitstream Program successful
-        FPGA configuration successful
-
-  2.3 Versal MCAP Specific Options
-  --------------------------------
-
-    2.3.1. MCAP Module Reset
-    ------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -m
-
-    Description:
-    It Performs MCAP Module Reset.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -m
-
-        MCAP version: 2
-        MCAP Module Reset Successful
-
-    2.3.2. Lists MCAP Register Contents
-    -----------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -d
-
-    Description:
-    It will print the contents of the MCAP Registers.
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -d
-
-        MCAP version: 2
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x0000          Ext Capability          0x3A01000B
-        0x0004          VSEC Header             0x02020001
-        0x0008          Status                  0x01800000
-           bit 5:4      MCAP Read/Write Status           0
-           bit  8       MCAP Read Complete               0
-           bit 20:16    MCAP FIFO Occupancy              0
-           bit 21       MCAP Write FIFO Full             0
-           bit 22       Write FIFO Almost Full           0
-           bit 23       Write FIFO Almost Empty          1
-           bit 24       MCAP Write FIFO Empty            1
-           bit 25       Write FIFO Overflow              0
-        0x000C          Control                 0x00000000
-           bit  0       MCAP Read Enable                 0
-           bit  4       MCAP Write Enable                0
-           bit  5       MCAP 128-bit Mode                0
-           bit  8       MCAP Reset                       0
-           bit  19:16   MCAP AXI Cache                   0
-           bit  22:20   MCAP AXI Protect                 0
-        0x0010          MCAP RW Addr Register   0x00000000
-        0x0014          MCAP Write Data         0x00000000
-        0x0018          MCAP Read Data          0x00000000
-
-    2.3.3. PDI Download
-    -------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -p mode <32b/128b> type <fixed/incr> <Address> <PDI File> [tr_mode <slow/fast>] [sbi <SBI reg block addr>]
-
-    Description:
-    This command is used to Download the specified File (.pdi) at given address.
-
-    Parameters:
-      mode
-        - <32b>: 32-bit mode should be used
-        - <128b>: 128-bit mode should be used
-      type
-        - <fixed>: Address is fixed
-        - <incr>: Address should be incremented based on specified mode
-      <Address>
-        - Address to be used for PDI download
-      <PDI File>
-        - PDI file to be downloaded
-      [tr_mode ]
-        - optional slow/fast download mode option for data transfer
-        - If tr_mode is not specified, it will use Default(fast) mode
-      [sbi ]
-        - required specifier if targeting PDI download to slave boot
-          interface (SBI) and the SBI_CTRL register has not been set to
-          accept data from the AXI interface (0xF1220004[4:2] != 3'b010)
-        - Can be specified without tr_mode or after tr_mode
-        - If targeting PDI download to SBI, both the SBI FIFO address
-          and the SBI reg block address must be mapped in hardware
-          from the CPM master to the PMC slave and there must be NMU remap(s)
-          in place to remap from a 32 bit address to a 48 bit address
-
-      Examples:
-        1) Slow mode example: 32b, incr mode with DDR at address 0x0
-        ------------------------------------------------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0x0 -c 0x1 -p mode 32b type incr 0x0 ./design_routed_tandem_off_rp_1_partial.pdi tr_mode slow
-
-        MCAP version: 2
-        tr_mode: 0
-        [XVSEC] : xvsec_mcap_file_download : File Download successful
-        File Download successful
-
-        2) Fast mode example: 128b, incr mode with DDR at address 0x0
-        -------------------------------------------------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0x0 -c 0x1 -p mode 128b type incr 0x0 ./design_routed_tandem_off_rp_1_partial.pdi tr_mode fast
-
-        MCAP version: 2
-        tr_mode: 1
-        [XVSEC] : xvsec_mcap_file_download : File Download successful
-        File Download successful
-
-        3) Slow mode example: 128b, fixed mode with SBI fixed address 0xF2100000
-        ------------------------------------------------------------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0x0 -c 0x1 -p mode 128b type fixed 0xF2100000 ./design_routed_tandem_off_rp_1_partial.pdi tr_mode slow sbi 0x10000
-
-        MCAP version: 2
-        tr_mode: 1
-        [XVSEC] : xvsec_mcap_file_download : File Download successful
-        File Download successful
-
-    2.3.4. PDI Upload
-    -----------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -t type <fixed/incr> <Address> <Length_2_Read> <PDI File>
-
-    Description:
-    It Reads the contents at given address for the given length into given file
-
-    Parameters:
-      type
-        - <fixed>: Address is fixed
-        - <incr>: Address should be incremented based on specified mode
-      <Address>
-        - Address to Read the contents
-      <Length_2_Read>
-        - Number of bytes to read
-      <PDI File>
-        - Read the contents and save in given file
-
-      Example:
-        1) PDI upload with incr mode and DDR at address 0x0
-        ------------------------------------------------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -t type incr 0x0 843312 ./read_from_ddr_32bit_incr.pdi
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_file_upload : File Upload successful
-        File Upload successful
-
-    2.3.5. Access MCAP Register
-    ---------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -a <Reg Offset> <b/h/w> <Data>
-
-    Description:
-    This command is used to read/write the MCAP config Register.
-
-    Parameters:
-      <byte offset>:
-        - MCAP register offset
-      [type[data]]:
-        - Write operation with data
-        - b for byte data [8 bits] read
-        - h for half word data [16 bits] read
-        - w for word data [32 bits] read
-
-      Examples:
-        1) Read MCAP register
-        ---------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -a 0xc w
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_access_config_reg : read operation completed
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x000C          Control                 0x00000000
-
-        2) Write MCAP register
-        ----------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -a 0xc w 0x0010
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_access_config_reg : write operation completed
-        BYTE OFFSET     Register Name           Data Value
-        -----------     ----------------        ----------
-        0x000C          Control                 0x00000010
-
-    2.3.6. Access the AXI Registers
-    -------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 -x mode <32b/128b> <address> w <data>
-
-    Description:
-    This command is used to read/write the 32b/128b AXI addresses.
-
-    Parameters:
-      mode
-        - <32b>: 32-bit mode should be used
-        - <128b>: 128-bit mode should be used
-        - Mode is Not valid for Read Operation
-      <Address>
-        - Address to be used for PDI download
-      [w [data]]
-        - Write operation with data
-        - Read Operation if 'w' not given
-
-      Examples:
-        1) 32bit AXI read
-        -----------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -x 0xf11a0008
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_access_axi_reg : read operation completed
-        axi address:    Data Value
-        ------------    ----------
-        0xF11A0008:     0x00000000
-
-        2) 32-bit AXI write
-        -------------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -x mode 32b 0xf11a0008 w 0x00302021
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_access_axi_reg : write operation completed
-        axi address:    Data Value
-        ------------    ----------
-        0xF11A0008:     0x00302021
-
-        3) 128b AXI write
-        -----------------
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -x mode 128b 0x0 w 0xA0000000 0xB1000000 0xC2000000 0xF10000FF
-
-        MCAP version: 2
-        [XVSEC] : xvsec_mcap_access_axi_reg : write operation completed
-        axi address:    Data Value
-        ------------    ----------
-        0x00000000:     0xA0000000
-        0x00000004:     0xB1000000
-        0x00000008:     0xC2000000
-        0x0000000C:     0xF10000FF
-
-    2.3.7. To set AXI cache and protection settings
-    -----------------------------------------------
-
-    command: ./xvsecctl -b <bus_no> -F <dev_no> -c 0x1 [axi_cache <data> axi_prot <data>]
-
-    Description:
-    It will configure the AXI cache and protections bits.
-
-    Parameters:
-      [axi_cache <data>] - axi_cache valid range 0 to 15
-      [axi_prot <data>]  - axi_prot valid range 0 to 7
-
-      Example:
-        [xilinx@]# ./xvsecctl -b 0x01 -F 0 -c 1 -q axi_cache 0x1 axi_prot 0x2
-
-        MCAP version: 2
-        axi_cache: 0x1
-        axi_prot: 0x2
-
diff --git a/XVSEC/linux-kernel/drv/Makefile b/XVSEC/linux-kernel/drv/Makefile
deleted file mode 100644
index 6e1a1b7..0000000
--- a/XVSEC/linux-kernel/drv/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-XVSEC_HOME := $(shell pwd)
-XVSEC_KVER := $(shell uname -r)
-
-build_path := ../build
-module_path := $(build_path)/modules
-obj-m += xvsec.o
-xvsec-objs := xvsec_drv.o xvsec_cdev.o xvsec_util.o
-xvsec-objs += ./xvsec_mcap/xvsec_mcap.o
-xvsec-objs += ./xvsec_mcap/us/xvsec_mcap_us.o
-xvsec-objs += ./xvsec_mcap/versal/xvsec_mcap_versal.o
-
-ccflags-y := -I$(PWD) -I$(PWD)/xvsec_mcap
-ccflags-y += -I$(PWD)/xvsec_mcap/us
-ccflags-y += -I$(PWD)/xvsec_mcap/versal
-
-all:
-	@mkdir -p -m 755 $(build_path)
-	@mkdir -p -m 755 $(module_path)
-	@mkdir -p -m 755 $(module_path)/obj
-	@mkdir -p -m 755 $(module_path)/obj/xvsec_mcap
-	@mkdir -p -m 755 $(module_path)/obj/xvsec_mcap/us
-	@mkdir -p -m 755 $(module_path)/obj/xvsec_mcap/versal
-	make -C /lib/modules/$(XVSEC_KVER)/build M=$(XVSEC_HOME) modules
-	@mv *.ko $(module_path)/
-	@cp xvsec_drv.h $(module_path)/
-	@cp ./xvsec_mcap/xvsec_mcap.h $(module_path)/
-	@mv *.o  $(module_path)/obj/
-	@mv .*cmd $(module_path)/obj/
-	@mv *.symvers $(module_path)/obj/
-	@mv *.mod* $(module_path)/obj/
-	@mv *.order* $(module_path)/obj/
-	@mv .tmp* $(module_path)/obj/
-	@mv ./xvsec_mcap/*.o $(module_path)/obj/xvsec_mcap/
-	@mv ./xvsec_mcap/us/*.o $(module_path)/obj/xvsec_mcap/us/
-	@mv ./xvsec_mcap/versal/*.o $(module_path)/obj/xvsec_mcap/versal/
-
-clean:
-	@rm -rf $(module_path)
-	make -C /lib/modules/$(XVSEC_KVER)/build M=$(XVSEC_HOME) clean
diff --git a/XVSEC/linux-kernel/drv/version.h b/XVSEC/linux-kernel/drv/version.h
deleted file mode 100644
index f9a2069..0000000
--- a/XVSEC/linux-kernel/drv/version.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_VERSION_H__
-#define __XVSEC_VERSION_H__
-
-#define XVSEC_MODULE_NAME	"xvsec"
-#define XVSEC_MODULE_DESC	"Xilinx VSEC Library"
-
-#define XVSEC_VERSION_MAJOR	2020
-#define XVSEC_VERSION_MINOR	2
-#define XVSEC_VERSION_PATCH	1
-
-#define XVSEC_DRV_VERSION	\
-	__stringify(XVSEC_VERSION_MAJOR) "." \
-	__stringify(XVSEC_VERSION_MINOR) "." \
-	__stringify(XVSEC_VERSION_PATCH)
-
-#define XVSEC_DRV_VERSION_NUM  \
-	((XVSEC_VERSION_MAJOR)*1000 + \
-	 (XVSEC_VERSION_MINOR)*100 + \
-	  XVSEC_VERSION_PATCH)
-
-#endif /* ifndef __XVSEC_VERSION_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_cdev.c b/XVSEC/linux-kernel/drv/xvsec_cdev.c
deleted file mode 100644
index 5ff1aad..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_cdev.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "xvsec_drv.h"
-#include "xvsec_drv_int.h"
-#include "xvsec_cdev.h"
-
-
-int xvsec_cdev_create(
-	struct pci_dev *pdev,
-	struct cdev_info *char_dev,
-	const struct file_operations *fops,
-	const char *dev_name)
-{
-	int ret = 0;
-	uint8_t bus_no;
-	uint8_t dev_no;
-
-	if ((pdev == NULL) || (char_dev == NULL) ||
-		(fops == NULL)) {
-		pr_err(__FILE__": Invalid Parameters\n");
-		return -EINVAL;
-	}
-
-	bus_no = pdev->bus->number;
-	dev_no = PCI_SLOT(pdev->devfn);
-
-	ret = alloc_chrdev_region(&char_dev->dev_no,
-		XVSEC_MINOR_BASE, XVSEC_MINOR_COUNT, XVSEC_NODE_NAME);
-	if (ret < 0) {
-		pr_err("Major number allocation is failed\n");
-		goto CLEANUP1;
-	}
-
-	char_dev->major_no =
-		MAJOR(char_dev->dev_no);
-
-	pr_info("The major number is %d, bus no : %d, dev no : %d\n",
-		char_dev->major_no, bus_no, dev_no);
-
-	cdev_init(&char_dev->cdev, fops);
-
-	ret = cdev_add(&char_dev->cdev, char_dev->dev_no, 1);
-	if (ret < 0) {
-		pr_err("Unable to add cdev\n");
-		goto CLEANUP2;
-	}
-
-	if (dev_name != NULL) {
-		snprintf(char_dev->name,
-			XVSEC_CDEV_NAME_MAX_LEN, "%s%02X%02X_%s",
-			XVSEC_NODE_NAME, bus_no, dev_no, dev_name);
-	} else {
-		snprintf(char_dev->name,
-			XVSEC_CDEV_NAME_MAX_LEN, "%s%02X%02X",
-			XVSEC_NODE_NAME, bus_no, dev_no);
-	}
-
-	kobject_set_name(&char_dev->cdev.kobj, "%s", char_dev->name);
-
-	char_dev->sys_device =
-		device_create(g_xvsec_class, NULL,
-			char_dev->dev_no, NULL, "%s", char_dev->name);
-
-	if (IS_ERR(char_dev->sys_device)) {
-		pr_err("failed to create device");
-		ret = -(PTR_ERR(char_dev->sys_device));
-		goto CLEANUP3;
-	}
-
-	pr_info("%s : %s\n", __func__, char_dev->name);
-
-	return ret;
-
-CLEANUP3:
-	cdev_del(&char_dev->cdev);
-CLEANUP2:
-	unregister_chrdev_region(char_dev->dev_no,
-		XVSEC_MINOR_COUNT);
-CLEANUP1:
-	return ret;
-
-}
-EXPORT_SYMBOL_GPL(xvsec_cdev_create);
-
-void xvsec_cdev_remove(
-	struct cdev_info *char_dev)
-{
-	if (char_dev == NULL)
-		return;
-
-	pr_info("%s : %s\n", __func__, char_dev->name);
-	device_destroy(g_xvsec_class, char_dev->dev_no);
-	cdev_del(&char_dev->cdev);
-	unregister_chrdev_region(char_dev->dev_no, 1);
-}
-EXPORT_SYMBOL_GPL(xvsec_cdev_remove);
-
-MODULE_LICENSE("Dual BSD/GPL");
diff --git a/XVSEC/linux-kernel/drv/xvsec_cdev.h b/XVSEC/linux-kernel/drv/xvsec_cdev.h
deleted file mode 100644
index 99e68a9..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_cdev.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_CDEV_H__
-#define __XVSEC_CDEV_H__
-
-/**
- * @file xvsec_cdev.h
- *
- * Xilinx XVSEC Driver Library Definitions
- *
- * Header file *xvsec_cdev.h* defines data structures neeed for
- * character device implementation by the driver
- *
- * These data structures are purely internal to the driver
- * and not meant to user
- */
-
-
-/** @defgroup xvsec_enums Enumerations
- */
-/** @defgroup xvsec_struct Data Structures
- */
-/**
- * @defgroup xvsec_defines Definitions
- * @{
- */
-
-
-#define XVSEC_CDEV_NAME_MAX_LEN		(20)
-
-#define XVSEC_NODE_NAME			"xvsec"
-
-/**
- * XVSEC char device first minor number
- */
-#define XVSEC_MINOR_BASE			(0)
-/**
- * XVSEC char device total minor numbers count
- */
-#define XVSEC_MINOR_COUNT			(1)
-
-
-/** @} */
-
-struct cdev_info {
-	dev_t		dev_no;
-	int		major_no;
-	char		name[XVSEC_CDEV_NAME_MAX_LEN];
-	struct cdev	cdev;
-	struct device	*sys_device;
-};
-
-int xvsec_cdev_create(
-	struct pci_dev *pdev,
-	struct cdev_info *char_dev,
-	const struct file_operations *fops,
-	const char *dev_name);
-
-void xvsec_cdev_remove(
-	struct cdev_info *char_dev);
-
-#endif /* __XVSEC_CDEV_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_drv.c b/XVSEC/linux-kernel/drv/xvsec_drv.c
deleted file mode 100644
index 64d4b84..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_drv.c
+++ /dev/null
@@ -1,570 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-
-#include "version.h"
-#include "xvsec_drv.h"
-#include "xvsec_drv_int.h"
-#include "xvsec_cdev.h"
-#include "xvsec_mcap.h"
-
-static char version[] = XVSEC_MODULE_DESC " v" XVSEC_DRV_VERSION "\n";
-static struct xvsec_dev	xvsec_dev;
-
-/** Global context information to store VSEC information of all pcie devices */
-struct class		*g_xvsec_class;
-
-/** ioctl function to retrieve capability list of a pcie-device */
-static long xvsec_ioc_get_cap_list(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-
-/** ioctl function to retrieve the pcie-device info */
-static long xvsec_ioc_get_device_info(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-
-/** This structure holds the vsec information supported by this driver
- *
- *  All supported VSECs by this driver should be added here.
- *
- *  This is the master VSEC list supported by this driver
- */
-static struct vsec_ops xvsec_supported_ops[] = {
-	/** MCAP VSEC info */
-	{
-		.vsec_id = XVSEC_MCAP_VSEC_ID,
-		.vsec_module_init = xvsec_mcap_module_init,
-		.vsec_module_exit = xvsec_mcap_module_exit,
-	}
-};
-
-
-static int xvsec_populate_vsec_capabilities(struct context *dev_ctx,
-	int index, uint32_t vendor_data)
-{
-	int ret = 0;
-	uint16_t vsec_rev_id = 0x0;
-	uint16_t vsec_id = 0x0;
-
-	dev_ctx->capabilities.vsec_info[index].is_supported = false;
-
-	vsec_id = (uint16_t)(vendor_data & XVSEC_VSEC_ID_POS) >>
-		XVSEC_VSEC_ID_SHIFT;
-
-	dev_ctx->capabilities.vsec_info[index].cap_id = vsec_id;
-
-	vsec_rev_id = (vendor_data & XVSEC_REV_ID_POS) >>
-		XVSEC_REV_ID_SHIFT;
-
-	dev_ctx->capabilities.vsec_info[index].rev_id = vsec_rev_id;
-
-	pr_debug("%s: vsec_id: %d, vsec_rev_id: %d\n", __func__,
-			dev_ctx->capabilities.vsec_info[index].cap_id,
-			dev_ctx->capabilities.vsec_info[index].rev_id);
-
-	switch (dev_ctx->capabilities.vsec_info[index].cap_id) {
-	case XVSEC_MCAP_VSEC_ID:
-		dev_ctx->capabilities.vsec_info[index].is_supported = true;
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_MCAP_VSEC     ");
-			break;
-	case XVSEC_XVC_DEBUG_VSEC_ID:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_XVC_DEBUG_VSEC");
-			break;
-	case XVSEC_SCID_VSEC_ID:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_SCID_VSEC     ");
-			break;
-	case XVSEC_ALF_VSEC_ID:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_ALF_VSEC      ");
-			break;
-	case XVSEC_SWITCH_VSEC_ID:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_SWITCH_VSEC   ");
-			break;
-	case XVSEC_NULL_VSEC_ID:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"PCIe_NULL_VSEC     ");
-			break;
-	default:
-		snprintf(dev_ctx->capabilities.vsec_info[index].name,
-			MAX_VSEC_STR_LEN,
-			"UNKNOWN            ");
-			break;
-	}
-
-	return ret;
-}
-
-static int xvsec_retrieve_vsec_capabilities(struct context *dev_ctx)
-{
-	int ret = 0;
-	int offset = 0;
-	int nxt_offset;
-	int index = 0;
-	uint16_t i, j;
-	uint16_t count = 0;
-	struct pci_dev *pdev = dev_ctx->pdev;
-	uint32_t vendor_data;
-
-	index = 0;
-	do {
-		nxt_offset = pci_find_next_ext_capability(pdev,
-			offset, XVSEC_EXT_CAP_VSEC_ID);
-		if (nxt_offset == 0)
-			break;
-
-		ret = pci_read_config_dword(pdev,
-				(nxt_offset + XVSEC_VENDOR_HEADER_OFFSET),
-				&vendor_data);
-
-		if (ret != 0) {
-			pr_warn("pci_read_config_dword failed with error");
-			pr_warn(" %d, offset : 0x%X\n", ret, offset);
-			break;
-		}
-
-		dev_ctx->capabilities.vsec_info[index].offset = nxt_offset;
-		xvsec_populate_vsec_capabilities(dev_ctx, index, vendor_data);
-		offset = nxt_offset;
-
-		for (i = 0; i < ARRAY_SIZE(xvsec_supported_ops); i++) {
-			if (dev_ctx->capabilities.vsec_info[index].cap_id ==
-				xvsec_supported_ops[i].vsec_id)
-				count++;
-		}
-
-		index = index + 1;
-	} while (nxt_offset != 0);
-
-	dev_ctx->capabilities.no_of_caps = index;
-
-	pr_debug("dev_ctx->capabilities.no_of_caps : %d\n", index);
-
-	/** Allocate memory for supported vsec count to store its context */
-	dev_ctx->vsec_supported_cnt = count;
-	dev_ctx->vsec_ctx =
-		kzalloc((count * sizeof(struct vsec_context)), GFP_KERNEL);
-	if (dev_ctx->vsec_ctx == NULL) {
-		pr_err("Memory Allocation failed for dev_ctx->vsec_ctx");
-		return -(ENOMEM);
-	}
-
-
-	/** Scan through supported vsec ids */
-	index = 0;
-	for (i = 0; i < dev_ctx->capabilities.no_of_caps; i++) {
-		for (j = 0; j < ARRAY_SIZE(xvsec_supported_ops); j++) {
-			if (dev_ctx->capabilities.vsec_info[i].cap_id ==
-				xvsec_supported_ops[j].vsec_id) {
-				dev_ctx->vsec_ctx[index].vsec_offset =
-				dev_ctx->capabilities.vsec_info[i].offset;
-				dev_ctx->vsec_ctx[index].vsec_ops =
-					&xvsec_supported_ops[j];
-				dev_ctx->vsec_ctx[index].pdev = dev_ctx->pdev;
-				index++;
-				break;
-			}
-		}
-	}
-
-	return ret;
-}
-
-static int xvsec_gen_open(struct inode *inode, struct file *filep)
-{
-	int ret = 0;
-	struct context		*dev_ctx;
-	struct file_priv	*priv;
-
-	dev_ctx = container_of(inode->i_cdev,
-			struct context, generic_cdev.cdev);
-
-	spin_lock(&dev_ctx->lock);
-
-	if (dev_ctx->fopen_cnt != 0) {
-		ret = -(EBUSY);
-		goto CLEANUP;
-	}
-
-	priv = kzalloc(sizeof(struct file_priv), GFP_KERNEL);
-	if (priv == NULL) {
-		ret = -(ENOMEM);
-		goto CLEANUP;
-	}
-
-	dev_ctx->fopen_cnt++;
-
-	priv->dev_ctx = (void *)dev_ctx;
-	filep->private_data = priv;
-
-	pr_info("%s success\n", __func__);
-
-CLEANUP:
-	spin_unlock(&dev_ctx->lock);
-	return ret;
-}
-
-static int xvsec_gen_close(struct inode *inode, struct file *filep)
-{
-	struct file_priv *priv = filep->private_data;
-	struct context   *dev_ctx = (struct context *)priv->dev_ctx;
-
-	spin_lock(&dev_ctx->lock);
-	if (dev_ctx->fopen_cnt == 0) {
-		pr_warn("File Open/close mismatch\n");
-	} else {
-		dev_ctx->fopen_cnt--;
-		pr_info("%s success\n", __func__);
-	}
-	kfree(priv);
-	spin_unlock(&dev_ctx->lock);
-
-	return 0;
-}
-
-static long xvsec_ioc_get_cap_list(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv *priv = filep->private_data;
-	struct context   *dev_ctx = (struct context *)priv->dev_ctx;
-
-	pr_debug("ioctl : IOC_XVSEC_GET_CAP_LIST\n");
-
-	spin_lock(&dev_ctx->lock);
-	ret = copy_to_user((void __user *)arg,
-		(void *)&dev_ctx->capabilities,
-		sizeof(struct xvsec_capabilities));
-	spin_unlock(&dev_ctx->lock);
-
-	return ret;
-}
-
-static int xvsec_get_dev_info(struct context *dev_ctx,
-	union device_info *dev_info)
-{
-	int ret = 0;
-	struct pci_dev *pdev = dev_ctx->pdev;
-
-	dev_info->vendor_id		= pdev->vendor;
-	dev_info->device_id		= pdev->device;
-	dev_info->device_no		= PCI_SLOT(pdev->devfn);
-	dev_info->device_fn		= PCI_FUNC(pdev->devfn);
-	dev_info->subsystem_vendor	= pdev->subsystem_vendor;
-	dev_info->subsystem_device	= pdev->subsystem_device;
-	dev_info->class_id		= pdev->class;
-	dev_info->cfg_size		= pdev->cfg_size;
-	dev_info->is_msi_enabled	= pdev->msi_enabled;
-	dev_info->is_msix_enabled	= pdev->msix_enabled;
-
-	return ret;
-}
-
-static long xvsec_ioc_get_device_info(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv	*priv = filep->private_data;
-	struct context		*dev_ctx = (struct context *)priv->dev_ctx;
-	union device_info	dev_info;
-
-	pr_debug("ioctl : IOC_GET_DEVICE_INFO\n");
-
-	spin_lock(&dev_ctx->lock);
-	ret = xvsec_get_dev_info(dev_ctx, &dev_info);
-	spin_unlock(&dev_ctx->lock);
-
-	if (ret < 0)
-		goto CLEANUP;
-
-	ret = copy_to_user((void __user *)arg,
-		(void *)&dev_info, sizeof(union device_info));
-CLEANUP:
-	return ret;
-}
-
-
-static const struct xvsec_ioctl_ops xvsec_gen_ioctl_ops[] = {
-	{IOC_XVSEC_GET_CAP_LIST,	xvsec_ioc_get_cap_list},
-	{IOC_XVSEC_GET_DEVICE_INFO,	xvsec_ioc_get_device_info},
-};
-
-static long xvsec_gen_ioctl(struct file *filep, uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	int index, cmd_cnt;
-	bool cmd_found = false;
-
-	cmd_cnt = ARRAY_SIZE(xvsec_gen_ioctl_ops);
-	for (index = 0; index < cmd_cnt; index++) {
-		if (xvsec_gen_ioctl_ops[index].cmd == cmd) {
-			cmd_found = true;
-			ret = xvsec_gen_ioctl_ops[index].fpfunction(
-				filep, cmd, arg);
-			break;
-		}
-	}
-	if (cmd_found == false)
-		ret = -(EINVAL);
-
-	return ret;
-}
-
-/** pcie device generic fops structure */
-static const struct file_operations xvsec_gen_fops = {
-	.owner		= THIS_MODULE,
-	.open		= xvsec_gen_open,
-	.release	= xvsec_gen_close,
-	.unlocked_ioctl	= xvsec_gen_ioctl,
-};
-
-
-static int xvsec_initialize(struct pci_dev *pdev, struct context *dev_ctx)
-{
-	int ret = 0;
-	int status;
-	uint16_t index;
-	struct vsec_ops *vsec_ops;
-
-	if ((pdev == NULL) || (dev_ctx == NULL))
-		return -(EINVAL);
-
-	dev_ctx->pdev = pdev;
-
-	pr_info("%s : dev_ctx address : %p\n", __func__, dev_ctx);
-
-	ret = xvsec_retrieve_vsec_capabilities(dev_ctx);
-	if (ret < 0) {
-		pr_err("Error In retrieving VSEC capabilities :");
-		pr_err(" err code : %d\n", ret);
-		return ret;
-	}
-
-	spin_lock_init(&dev_ctx->lock);
-	ret = xvsec_cdev_create(pdev,
-		&dev_ctx->generic_cdev, &xvsec_gen_fops, NULL);
-	if (ret < 0) {
-		pr_err("xvsec_cdev_create failed for generic cdev, err : %d\n",
-			ret);
-	}
-
-	/** Initialize the supported VSEC IDs */
-	for (index = 0; index < dev_ctx->vsec_supported_cnt; index++) {
-		vsec_ops = dev_ctx->vsec_ctx[index].vsec_ops;
-		status = vsec_ops->vsec_module_init(&dev_ctx->vsec_ctx[index]);
-		if (status < 0) {
-			pr_warn("vsec_module_init failed");
-			pr_warn("    Index : %d, VSEC ID : %d\n", index,
-				dev_ctx->vsec_ctx[index].vsec_ops->vsec_id);
-		}
-	}
-
-	return ret;
-}
-EXPORT_SYMBOL_GPL(xvsec_initialize);
-
-static int xvsec_deinitialize(struct context *dev_ctx)
-{
-	int ret = 0;
-	uint16_t index;
-	struct vsec_ops *vsec_ops;
-
-	if (dev_ctx == NULL)
-		return -(EINVAL);
-
-	pr_err("%s : cnt : %d\n", __func__, dev_ctx->vsec_supported_cnt);
-
-	xvsec_cdev_remove(&dev_ctx->generic_cdev);
-
-	for (index = 0; index < dev_ctx->vsec_supported_cnt; index++) {
-		vsec_ops = dev_ctx->vsec_ctx[index].vsec_ops;
-		vsec_ops->vsec_module_exit(&dev_ctx->vsec_ctx[index]);
-	}
-
-	/** Checkpatch : kfree(NULL) is safe */
-	kfree(dev_ctx->vsec_ctx);
-	dev_ctx->vsec_ctx = NULL;
-
-	return ret;
-}
-EXPORT_SYMBOL_GPL(xvsec_deinitialize);
-
-static int __init xvsec_drv_init(void)
-{
-	int ret = 0;
-	int index, loop;
-	uint32_t dev_count, count;
-	bool duplicate;
-	struct pci_dev *pdev;
-	struct pci_dev **pdev_list = NULL;
-
-
-	pr_info("%s", version);
-
-	dev_count = 0x0;
-	pdev = NULL;
-	do {
-		pdev = pci_get_device(XILINX_VENDOR_ID, PCI_ANY_ID, pdev);
-		if (pdev == NULL)
-			break;
-
-		dev_count = dev_count + 1;
-	} while (pdev != NULL);
-
-	if (dev_count == 0)
-		return 0;
-
-	g_xvsec_class = class_create(THIS_MODULE, XVSEC_NODE_NAME);
-	if (IS_ERR(g_xvsec_class)) {
-		pr_err("failed to create class");
-		ret = -(PTR_ERR(g_xvsec_class));
-		return ret;
-	}
-
-
-	pdev_list = kzalloc((dev_count * sizeof(struct pci_dev *)),
-		GFP_KERNEL);
-	if (pdev_list == NULL) {
-		class_destroy(g_xvsec_class);
-		g_xvsec_class = NULL;
-		return -(ENOMEM);
-	}
-
-	count = 0;
-	pdev = NULL;
-	for (index = 0; index < dev_count; index++) {
-		duplicate = false;
-		pdev = pci_get_device(XILINX_VENDOR_ID, PCI_ANY_ID, pdev);
-		if (pdev == NULL) {
-			ret = -(EBUSY);
-			goto CLEANUP_PDEV_MEM;
-		}
-		for (loop = 0; loop < count; loop++) {
-			if ((pdev_list[loop]->bus->number == pdev->bus->number)
-				&& (PCI_SLOT(pdev_list[loop]->devfn) ==
-				PCI_SLOT(pdev->devfn))) {
-				duplicate = true;
-				break;
-			}
-		}
-
-		if (duplicate == false) {
-			pdev_list[count] = pdev;
-			count = count + 1;
-		}
-	}
-
-	xvsec_dev.ctx = kzalloc((count * sizeof(struct context)),
-		GFP_KERNEL);
-	if (xvsec_dev.ctx == NULL) {
-		ret = -(ENOMEM);
-		goto CLEANUP_PDEV_MEM;
-	}
-
-	dev_count = count;
-	xvsec_dev.dev_cnt = dev_count;
-	for (index = 0; index < dev_count; index++) {
-		ret = xvsec_initialize(pdev_list[index], &xvsec_dev.ctx[index]);
-		if (ret < 0) {
-			pr_err("xvsec_initialize() failed with error ");
-			pr_err("%d for device %d\n", ret, (index + 1));
-			goto CLEANUP;
-		} else {
-			pr_info("xvsec_initialize() success for device %d\n",
-				(index + 1));
-		}
-	}
-	xvsec_dev.dev_cnt = index;
-
-	kfree(pdev_list);
-	pr_info("%s : Success\n", __func__);
-
-	return ret;
-CLEANUP:
-	for (; index > 0; index--)
-		xvsec_deinitialize(&xvsec_dev.ctx[index - 1]);
-
-	kfree(xvsec_dev.ctx);
-	xvsec_dev.ctx = NULL;
-
-CLEANUP_PDEV_MEM:
-	kfree(pdev_list);
-	class_destroy(g_xvsec_class);
-	g_xvsec_class = NULL;
-	return ret;
-}
-
-static void __exit xvsec_drv_exit(void)
-{
-	int index;
-	int ret;
-
-	for (index = 0; index < xvsec_dev.dev_cnt; index++) {
-		ret = xvsec_deinitialize(&xvsec_dev.ctx[index]);
-		if (ret < 0) {
-			pr_err("xvsec_deinitialize() failed with error ");
-			pr_err("%d for device %d\n", ret, (index + 1));
-		} else {
-			pr_info("xvsec_deinitialize() success for device %d\n",
-				(index + 1));
-		}
-	}
-
-	pr_info("In %s : dev_cnt : %d\n", __func__, xvsec_dev.dev_cnt);
-
-	class_destroy(g_xvsec_class);
-	g_xvsec_class = NULL;
-	kfree(xvsec_dev.ctx);
-	xvsec_dev.ctx = NULL;
-}
-
-module_init(xvsec_drv_init);
-module_exit(xvsec_drv_exit);
-
-MODULE_INFO(intree, "Y");
-MODULE_LICENSE("Dual BSD/GPL");
-MODULE_VERSION(XVSEC_DRV_VERSION);
-MODULE_AUTHOR("Xilinx Inc.");
-MODULE_DESCRIPTION("XVSEC Device Driver");
diff --git a/XVSEC/linux-kernel/drv/xvsec_drv.h b/XVSEC/linux-kernel/drv/xvsec_drv.h
deleted file mode 100644
index c31a79c..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_drv.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_DRV_H__
-#define __XVSEC_DRV_H__
-
-/**
- * @file xvsec_drv.h
- *
- * Xilinx XVSEC Driver Library Interface Definitions
- *
- * Header file *xvsec_drv.h* defines data structures and ioctl codes
- * exported by Xilinx XVSEC driver for common VSEC operations.
- *
- * These data structures and ioctl codes can be used by user space
- * applications to carry-out the XVSEC functionality
- */
-
-/** @defgroup xvsec_enums Enumerations
- */
-/** @defgroup xvsec_struct Data Structures
- */
-/** @defgroup xvsec_union Data Structures
- */
-/**
- * @defgroup xvsec_defines Definitions
- * @{
- */
-
-/**
- * XVSEC ioctl magic character
- */
-#define XVSEC_IOC_MAGIC		'v'
-
-/**
- * Maximum Supported capabilities by the driver
- */
-#define MAX_CAPABILITIES_SUPPORTED		10
-
-/**
- * Maximum Vsec string length
- */
-#define MAX_VSEC_STR_LEN		20
-
-/**
- * Unknown VSEC Revision ID
- */
-#define VSEC_REV_UNKNOWN		(0xFF)
-
-/** @} */
-
-/**
- * @struct - device_info
- * @brief	PCIe device information for verbose option
- *
- * @ingroup xvsec_union
- */
-union device_info {
-	struct {
-		/** PCIe Vendor Identifier */
-		uint16_t vendor_id;
-		/** PCIe Device Identifier */
-		uint16_t device_id;
-		/** PCIe Device number */
-		uint16_t device_no;
-		/** PCIe Device function */
-		uint16_t device_fn;
-		/** PCIe Subsystem Vendor Identifier */
-		uint16_t subsystem_vendor;
-		/** PCIe Subsystem Device Identifier */
-		uint16_t subsystem_device;
-		/** PCIe Class Identifier */
-		uint16_t class_id;
-		/** Flag which indicates MSI enabled status */
-		uint32_t is_msi_enabled;
-		/** Flag which indicates MSIx enabled status */
-		uint32_t is_msix_enabled;
-		/** Size of the PCIe Device configuration space */
-		int      cfg_size;
-	};
-};
-
-/**
- * @struct - xvsec_vsec_info
- * @brief       Xilinx Vendor Specific Capabilities device information
- *
- * @ingroup xvsec_struct
- */
-struct xvsec_vsec_info {
-	/** Capability ID Info */
-	uint16_t	cap_id;
-	/** VSEC revision Info */
-	uint16_t	rev_id;
-	/** Capability Offset Info in PCIe configuration space */
-	uint16_t	offset;
-	/** VSEC Capability name */
-	char	name[MAX_VSEC_STR_LEN];
-	/** info to check capability supported by this drv or not*/
-	bool	is_supported;
-};
-
-/**
- * @struct - xvsec_capabilities
- * @brief	Xilinx Vendor Specific Capabilities present in the device
- *
- * @ingroup xvsec_struct
- */
-struct xvsec_capabilities {
-	/** Number of VSEC capabilities supported by the device */
-	uint16_t	no_of_caps;
-	/** Vsec inforamtion */
-	struct xvsec_vsec_info vsec_info[MAX_CAPABILITIES_SUPPORTED];
-};
-
-/**
- * Capability list operation code to use in ioctls
- */
-#define CODE_XVSEC_GET_CAP_LIST			0
-
-/**
- * Device Info operation code to use in ioctls
- */
-#define CODE_XVSEC_GET_DEV_INFO			1
-
-/**
- * ioctl code for retrieving the XVSEC capability list
- */
-#define IOC_XVSEC_GET_CAP_LIST \
-	_IOW(XVSEC_IOC_MAGIC, CODE_XVSEC_GET_CAP_LIST, \
-	struct xvsec_capabilities *)
-
-/**
- * ioctl code for retrieving the Device information
- */
-#define IOC_XVSEC_GET_DEVICE_INFO \
-	_IOWR(XVSEC_IOC_MAGIC, CODE_XVSEC_GET_DEV_INFO, \
-	union device_info *)
-
-#endif /* __XVSEC_DRV_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_drv_int.h b/XVSEC/linux-kernel/drv/xvsec_drv_int.h
deleted file mode 100644
index 2d17240..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_drv_int.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_DRV_INT_H__
-#define __XVSEC_DRV_INT_H__
-
-#include "xvsec_cdev.h"
-
-/**
- * @file xvsec_drv_int.h
- *
- * Xilinx XVSEC Driver Library Definitions
- *
- * Header file *xvsec_drv_int.h* defines data structures
- * needed for driver implementation
- *
- * These data structures are purely internal to the driver
- * and not meant to user
- */
-
-/**
- * XILINX PCIe vendor ID
- */
-#define XILINX_VENDOR_ID		(uint16_t)(0x10ee)
-
-#define XVSEC_EXT_CAP_VSEC_ID		(0x000B)
-
-#define XVSEC_MCAP_VSEC_ID		(0x0001)
-#define XVSEC_XVC_DEBUG_VSEC_ID		(0x0008)
-#define XVSEC_SCID_VSEC_ID		(0x0010)
-#define XVSEC_ALF_VSEC_ID		(0x0020)
-#define XVSEC_SWITCH_VSEC_ID		(0x0040)
-#define XVSEC_NULL_VSEC_ID		(0xFFFF)
-
-
-#define INVALID_DEVICE_INDEX		(uint8_t)(255)
-#define INVALID_OFFSET			(0xFFFF)
-
-/**
- * Extended Capability Header Offset
- */
-#define XVSEC_EXTENDED_HEADER_OFFSET	(0x0000)
-/**
- * Vendor Specific Header Offset
- *
- * provides details about the VSEC information
- */
-#define XVSEC_VENDOR_HEADER_OFFSET	(0x0004)
-#define XVSEC_VSEC_ID_SHIFT		0
-#define XVSEC_REV_ID_SHIFT		16
-#define XVSEC_VSEC_ID_POS		(0xFFFF << XVSEC_VSEC_ID_SHIFT)
-#define XVSEC_REV_ID_POS		(0xF << XVSEC_REV_ID_SHIFT)
-#define XVSEC_MCAP_ID			(0x0001)
-
-
-struct file_priv {
-	void *dev_ctx;
-};
-
-struct xvsec_ioctl_ops {
-	uint32_t cmd;
-	long (*fpfunction)(struct file *filep, uint32_t cmd, unsigned long arg);
-};
-
-struct vsec_context {
-	struct pci_dev		*pdev;
-	spinlock_t		lock;
-	struct cdev_info	char_dev;
-	int			fopen_cnt;
-	uint16_t		vsec_offset;
-	struct vsec_ops		*vsec_ops;
-	void			*vsec_priv;
-};
-
-struct vsec_ops {
-	uint32_t	vsec_id;
-	int (*vsec_module_init)(struct vsec_context *vsec_ctx);
-	void (*vsec_module_exit)(struct vsec_context *vsec_ctx);
-};
-
-struct context {
-	struct pci_dev			*pdev;
-	int				fopen_cnt;
-	spinlock_t			lock;
-	struct cdev_info		generic_cdev;
-	uint16_t			vsec_supported_cnt;
-	struct vsec_context		*vsec_ctx;
-	struct xvsec_capabilities	capabilities;
-};
-
-struct xvsec_dev {
-	uint32_t	dev_cnt;
-	struct context	*ctx;
-};
-
-extern struct class		*g_xvsec_class;
-
-int xvsec_mcap_module_init(struct vsec_context *dev_ctx);
-void xvsec_mcap_module_exit(struct vsec_context *dev_ctx);
-
-#endif /* __XVSEC_DRV_INT_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.c b/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.c
deleted file mode 100644
index 81cb53d..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.c
+++ /dev/null
@@ -1,1190 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "xvsec_util.h"
-#include "xvsec_drv.h"
-#include "xvsec_drv_int.h"
-#include "xvsec_mcap.h"
-#include "xvsec_mcap_us.h"
-
-
-
-static const uint16_t fpga_valid_addr[] = {
-		0x00, 0x01, 0x02, 0x03, 0x04,
-		0x05, 0x06, 0x07, 0x08, 0x09,
-		0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
-		0x10, 0x11, 0x14, 0x16, 0x18,
-		0x1F
-	};
-
-
-static void xvsec_fpga_cfg_setup(struct vsec_context *mcap_ctx,
-	enum oper operation);
-static void xvsec_fpga_cfg_teardown(struct vsec_context *mcap_ctx);
-static void xvsec_fpga_cfg_write_cmd(struct vsec_context *mcap_ctx,
-	enum oper operation, uint8_t offset, uint16_t word_count);
-static void xvsec_fpga_cfg_write_data(struct vsec_context *mcap_ctx,
-	uint32_t data);
-static int xvsec_mcap_req_access(struct vsec_context *mcap_ctx,
-	uint32_t *restore);
-static int xvsec_mcap_program(struct vsec_context *mcap_ctx, char *fname);
-static int xvsec_write_rbt(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size);
-static int xvsec_write_bit(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size);
-static int xvsec_write_bin(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size);
-
-static int check_for_completion(struct vsec_context *mcap_ctx,
-	uint32_t *ret);
-
-
-static void xvsec_fpga_cfg_setup(struct vsec_context *mcap_ctx,
-	enum oper operation)
-{
-	int wr_offset;
-	int index;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	switch (operation) {
-	case FPGA_WR_CMD:
-		for (index = 0; index < 16; index++)
-			pci_write_config_dword(pdev, wr_offset, DUMMY_WORD);
-		pci_write_config_dword(pdev, wr_offset, BUS_WIDTH_SYNC);
-		pci_write_config_dword(pdev, wr_offset, BUS_WIDTH_DETECT);
-		pci_write_config_dword(pdev, wr_offset, DUMMY_WORD);
-		pci_write_config_dword(pdev, wr_offset, DUMMY_WORD);
-		pci_write_config_dword(pdev, wr_offset, SYNC_WORD);
-		pci_write_config_dword(pdev, wr_offset, NOOP);
-		pci_write_config_dword(pdev, wr_offset, NOOP);
-		break;
-
-	case FPGA_RD_CMD:
-	default:
-
-		pci_write_config_dword(pdev, wr_offset, DUMMY_WORD);
-		pci_write_config_dword(pdev, wr_offset, BUS_WIDTH_SYNC);
-		pci_write_config_dword(pdev, wr_offset, BUS_WIDTH_DETECT);
-		pci_write_config_dword(pdev, wr_offset, DUMMY_WORD);
-		pci_write_config_dword(pdev, wr_offset, SYNC_WORD);
-		pci_write_config_dword(pdev, wr_offset, NOOP);
-
-		break;
-	}
-}
-
-static void xvsec_fpga_cfg_teardown(struct vsec_context *mcap_ctx)
-{
-	int wr_offset;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	pci_write_config_dword(pdev, wr_offset, TYPE1_WR_CMD);
-	pci_write_config_dword(pdev, wr_offset, DESYNC);
-	pci_write_config_dword(pdev, wr_offset, NOOP);
-	pci_write_config_dword(pdev, wr_offset, NOOP);
-}
-
-static void xvsec_fpga_cfg_write_cmd(struct vsec_context *mcap_ctx,
-	enum oper operation, uint8_t offset, uint16_t word_count)
-{
-	int wr_offset;
-	union type1_header  header;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	header.data		= 0x0;
-
-	header.header_type	= TYPE1_HEADER_TYPE;
-	header.opcode		= (operation == FPGA_WR_CMD) ?
-					FPGA_CFG_WRITE : FPGA_CFG_READ;
-	header.address		= offset;
-	header.word_count	= word_count;
-
-	pci_write_config_dword(pdev, wr_offset, header.data);
-	if (operation == FPGA_RD_CMD) {
-		pci_write_config_dword(pdev, wr_offset, NOOP);
-		pci_write_config_dword(pdev, wr_offset, NOOP);
-	}
-}
-
-static void xvsec_fpga_cfg_write_data(struct vsec_context *mcap_ctx,
-	uint32_t data)
-{
-	int wr_offset;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	pci_write_config_dword(pdev, wr_offset, data);
-	pci_write_config_dword(pdev, wr_offset, NOOP);
-	pci_write_config_dword(pdev, wr_offset, NOOP);
-}
-
-static int check_for_completion(struct vsec_context *mcap_ctx, uint32_t *ret)
-{
-	unsigned long retry_count = 0;
-	int i;
-	uint16_t sts_offset, data_off;
-	uint32_t sts_data;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	sts_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_STATUS_REGISTER;
-	data_off = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	pci_read_config_dword(pdev, sts_offset, &sts_data);
-
-	while ((sts_data & XVSEC_MCAP_STATUS_EOS) == 0x0) {
-		msleep(20);
-		for (i = 0 ; i < EMCAP_EOS_LOOP_COUNT; i++)
-			pci_write_config_dword(pdev, data_off, EMCAP_NOOP_VAL);
-
-		pci_read_config_dword(pdev, sts_offset, &sts_data);
-		retry_count++;
-		if (retry_count > EMCAP_EOS_RETRY_COUNT) {
-			pr_err("Error: The MCAP EOS bit did not assert after");
-			pr_err(" programming the specified programming file\n");
-			pr_err("Status Reg : 0x%X\n", sts_data);
-			*ret = sts_data;
-			return -EIO;
-		}
-	}
-	*ret = sts_data;
-	return 0;
-}
-
-static int xvsec_mcap_req_access(struct vsec_context *mcap_ctx,
-	uint32_t *restore)
-{
-	int ret = 0;
-	int delay = XVSEC_MCAP_LOOP_COUNT;
-	uint16_t mcap_offset;
-	uint16_t ctrl_offset, sts_offset;
-	uint32_t ctrl_data, sts_data;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	if (mcap_offset == INVALID_OFFSET)
-		return -(EPERM);
-
-	ctrl_offset = mcap_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	sts_offset = mcap_offset + XVSEC_MCAP_STATUS_REGISTER;
-
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-	*restore = ctrl_data;
-
-	pci_read_config_dword(pdev, sts_offset, &sts_data);
-
-	if ((sts_data & XVSEC_MCAP_STATUS_ACCESS) != 0x0) {
-
-		ctrl_data = ctrl_data |
-			(XVSEC_MCAP_CTRL_ENABLE | XVSEC_MCAP_CTRL_REQ_ACCESS);
-
-		pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-		do {
-			pci_read_config_dword(pdev, sts_offset, &sts_data);
-			if ((sts_data & XVSEC_MCAP_STATUS_ACCESS) == 0x0)
-				break;
-
-			delay = delay - 1;
-		} while (delay != 0);
-
-		if (delay == 0) {
-			pr_err("Unable to get the FPGA CFG Access\n");
-
-			ctrl_data = ctrl_data &
-				~(XVSEC_MCAP_CTRL_ENABLE |
-				XVSEC_MCAP_CTRL_REQ_ACCESS);
-			pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-			ret = -(EBUSY);
-		}
-	}
-
-	return ret;
-}
-
-int xvsec_mcap_reset(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	uint16_t mcap_offset;
-	uint16_t ctrl_offset, status_offset;
-	uint32_t ctrl_data, status_data, read_data, restore;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	ctrl_offset = mcap_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-
-	/* Asserting the Reset */
-	ctrl_data = ctrl_data | XVSEC_MCAP_CTRL_RESET |
-		XVSEC_MCAP_CTRL_ENABLE | XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	/* Read Back */
-	pci_read_config_dword(pdev, ctrl_offset, &read_data);
-	if ((read_data & XVSEC_MCAP_CTRL_RESET) == 0x0)
-		ret = -(EBUSY);
-
-	status_offset = mcap_offset + XVSEC_MCAP_STATUS_REGISTER;
-	pci_read_config_dword(pdev, status_offset, &status_data);
-	if ((status_data & XVSEC_MCAP_STATUS_ERR) == 0x1)
-		ret = -(EBUSY);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_mcap_module_reset(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	uint16_t mcap_offset;
-	uint16_t ctrl_offset, status_offset;
-	uint32_t ctrl_data, status_data, read_data, restore;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	ctrl_offset = mcap_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-
-	/* Asserting the Module Reset */
-	ctrl_data = ctrl_data | XVSEC_MCAP_CTRL_MOD_RESET |
-		XVSEC_MCAP_CTRL_ENABLE | XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	/* Read Back */
-	pci_read_config_dword(pdev, ctrl_offset, &read_data);
-	if ((read_data & XVSEC_MCAP_CTRL_MOD_RESET) == 0x0)
-		ret = -(EBUSY);
-
-	status_offset = mcap_offset + XVSEC_MCAP_STATUS_REGISTER;
-	pci_read_config_dword(pdev, status_offset, &status_data);
-	if ((status_data & XVSEC_MCAP_STATUS_ERR) == 0x1)
-		ret = -(EBUSY);
-
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_mcap_full_reset(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	uint16_t mcap_offset;
-	uint16_t ctrl_offset, status_offset;
-	uint32_t ctrl_data, status_data, read_data, restore;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	ctrl_offset = mcap_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-
-	/* Asserting the Module Reset */
-	ctrl_data = ctrl_data |
-		XVSEC_MCAP_CTRL_RESET | XVSEC_MCAP_CTRL_MOD_RESET |
-		XVSEC_MCAP_CTRL_ENABLE | XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	/* Read Back */
-	pci_read_config_dword(pdev, ctrl_offset, &read_data);
-	if ((read_data &
-		(XVSEC_MCAP_CTRL_RESET | XVSEC_MCAP_CTRL_MOD_RESET)) == 0x0)
-		ret = -(EBUSY);
-
-	status_offset = mcap_offset + XVSEC_MCAP_STATUS_REGISTER;
-	pci_read_config_dword(pdev, status_offset, &status_data);
-	if ((status_data & XVSEC_MCAP_STATUS_ERR) == 0x1)
-		ret = -(EBUSY);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_mcap_get_data_regs(struct vsec_context *mcap_ctx, uint32_t regs[4])
-{
-	uint16_t mcap_offset;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	if (mcap_offset == INVALID_OFFSET)
-		return -(EPERM);
-
-	pci_read_config_dword(pdev,
-		(mcap_offset + XVSEC_MCAP_READ_DATA_REG0), &regs[0]);
-	pci_read_config_dword(pdev,
-		(mcap_offset + XVSEC_MCAP_READ_DATA_REG1), &regs[1]);
-	pci_read_config_dword(pdev,
-		(mcap_offset + XVSEC_MCAP_READ_DATA_REG2), &regs[2]);
-	pci_read_config_dword(pdev,
-		(mcap_offset + XVSEC_MCAP_READ_DATA_REG3), &regs[3]);
-
-	return 0;
-}
-
-int xvsec_mcap_get_regs(struct vsec_context *mcap_ctx,
-	union mcap_regs *regs)
-{
-	uint16_t mcap_offset;
-	uint16_t index;
-	uint32_t *ptr;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	regs->v1.valid = 0;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	if (mcap_offset == INVALID_OFFSET)
-		return -(EPERM);
-
-	ptr = &regs->v1.ext_cap_header;
-	for (index = 0; index <= (XVSEC_MCAP_READ_DATA_REG3 / 4); index++) {
-		pci_read_config_dword(pdev, mcap_offset, &ptr[index]);
-		mcap_offset = mcap_offset + 4;
-	}
-
-	regs->v1.valid = 1;
-
-	return 0;
-}
-
-int xvsec_mcap_get_fpga_regs(struct vsec_context *mcap_ctx,
-	union fpga_cfg_regs *regs)
-{
-	int ret = 0;
-	int index, reg_count;
-	int ctrl_offset, sts_offset;
-	int rd_offset;
-	uint32_t rd_data, ctrl_data, sts_data, restore;
-	uint16_t count;
-	uint32_t *reg_dump;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-
-	pr_info("In %s\n", __func__);
-
-	regs->v1.valid = 0;
-	regs->v1.far = 1;
-
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	rd_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_READ_DATA_REG0;
-	ctrl_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	sts_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_STATUS_REGISTER;
-
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-	ctrl_data = ctrl_data |
-		XVSEC_MCAP_CTRL_WR_ENABLE | XVSEC_MCAP_CTRL_ENABLE |
-		XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	xvsec_fpga_cfg_setup(mcap_ctx, FPGA_RD_CMD);
-
-	reg_count = ARRAY_SIZE(fpga_valid_addr);
-	/* sizeof(fpga_valid_addr)/sizeof(fpga_valid_addr[0]); */
-	reg_dump = &regs->v1.crc;
-	for (index = 0; index < reg_count; index++) {
-		xvsec_fpga_cfg_write_cmd(mcap_ctx, FPGA_RD_CMD,
-					fpga_valid_addr[index], 1);
-
-		ctrl_data = ctrl_data | XVSEC_MCAP_CTRL_RD_ENABLE;
-		pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-		count = 0x0;
-		while (count < 20) {
-			pci_read_config_dword(pdev, sts_offset, &sts_data);
-			if ((sts_data & 0x10) != 0x0)
-				break;
-			count = count + 1;
-			msleep(20);
-		}
-
-		if (count >= 20) {
-			/* FIXME : should discuss with brain martin
-			 * and close this teardown
-			 */
-			pr_err("Time out happened while ");
-			pr_err("reading FPGA CFG Register\n");
-			ret = -(EBUSY);
-			goto CLEANUP;
-		}
-
-		pci_read_config_dword(pdev, rd_offset, &rd_data);
-
-		reg_dump[index] = rd_data;
-
-		ctrl_data = ctrl_data & (~XVSEC_MCAP_CTRL_RD_ENABLE);
-		pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-	}
-
-	if (ret == 0)
-		regs->v1.valid = 1;
-
-CLEANUP:
-	xvsec_fpga_cfg_teardown(mcap_ctx);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_mcap_program_bitstream(struct vsec_context *mcap_ctx,
-	union bitstream_file *bit_files)
-{
-	int ret = 0;
-	uint16_t ctrl_offset;
-	uint32_t ctrl_data, restore;
-	char bitfile[MAX_FLEN];
-	uint16_t len;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	bit_files->v1.status = MCAP_BITSTREAM_PROGRAM_FAILURE;
-
-	if ((bit_files->v1.partial_clr_file == NULL) &&
-		(bit_files->v1.bitstream_file == NULL)) {
-		pr_err("Both Bit files are NULL\n");
-		return -(EINVAL);
-	}
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	ctrl_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-
-	/* Asserting the Reset */
-	ctrl_data = ctrl_data | XVSEC_MCAP_CTRL_WR_ENABLE |
-			XVSEC_MCAP_CTRL_ENABLE | XVSEC_MCAP_CTRL_REQ_ACCESS;
-
-
-	ctrl_data = ctrl_data &
-		~(XVSEC_MCAP_CTRL_RESET | XVSEC_MCAP_CTRL_MOD_RESET |
-		XVSEC_MCAP_CTRL_RD_ENABLE | XVSEC_MCAP_CTRL_CFG_SWICTH);
-
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	pr_info("Ctrl Data : 0x%X, 0x%X\n", ctrl_offset, ctrl_data);
-
-	if (bit_files->v1.partial_clr_file != NULL) {
-		len = strnlen_user(
-			(char __user *)bit_files->v1.partial_clr_file,
-			MAX_FLEN);
-		if (len > MAX_FLEN) {
-			pr_err("File Name too long\n");
-			goto CLEANUP;
-		}
-
-		ret = strncpy_from_user(bitfile,
-			(char __user *)bit_files->v1.partial_clr_file, len);
-		if (ret < 0) {
-			pr_err("File Name Copy Failed\n");
-			goto CLEANUP;
-		}
-		pr_info("Clear File Name : %s\n", bitfile);
-
-		ret = xvsec_mcap_program(mcap_ctx, bitfile);
-		if (ret < 0) {
-			pr_err("[xvsec_mcap] : xvsec_mcap_program ");
-			pr_err("failed for partial clear file with err : ");
-			pr_err("%d\n", ret);
-
-			goto CLEANUP;
-		}
-	}
-
-	if (bit_files->v1.bitstream_file != NULL) {
-		len = strnlen_user(
-			(char __user *)bit_files->v1.bitstream_file,
-			MAX_FLEN);
-		if (len > MAX_FLEN) {
-			pr_err("File Name too long\n");
-			goto CLEANUP;
-		}
-
-		ret = strncpy_from_user(bitfile,
-			(char __user *)bit_files->v1.bitstream_file, len);
-		if (ret < 0) {
-			pr_err("File Name Copy Failed\n");
-			goto CLEANUP;
-		}
-
-		pr_info("Bit File Name : %s\n", bitfile);
-
-		ret = xvsec_mcap_program(mcap_ctx, bitfile);
-		if (ret < 0) {
-			pr_err("[xvsec_mcap] : xvsec_mcap_program ");
-			pr_err("failed for bit file with err : %d\n", ret);
-			goto CLEANUP;
-		}
-		restore = restore | XVSEC_MCAP_CTRL_CFG_SWICTH;
-	}
-
-	if (ret == 0)
-		bit_files->v1.status = MCAP_BITSTREAM_PROGRAM_SUCCESS;
-
-CLEANUP:
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-static int xvsec_parse_rbt_file(struct file *filep, int file_size, int *offset)
-{
-	uint8_t chunk_size;
-	char raw_buf[RBT_WORD_LEN];
-	int search_off = 0, len;
-	int size, index;
-	uint8_t count;
-
-	size = file_size;
-	count = 0x0;
-	memset(raw_buf, 0, RBT_WORD_LEN);
-	while (size != 0) {
-		chunk_size = (size > RBT_WORD_LEN) ? RBT_WORD_LEN : size;
-		len = xvsec_util_fread(filep, search_off,
-				(uint8_t *)raw_buf,
-				chunk_size);
-
-		for (index = 0; index < len ; index++) {
-			if ((raw_buf[index] == '1') ||
-				(raw_buf[index] == '0')) {
-				count = count + 1;
-			} else {
-				count = 0x0;
-			}
-
-			if (count >= RBT_WORD_LEN)
-				break;
-		}
-
-		if (count >= RBT_WORD_LEN) {
-			*offset = search_off + (index + 1) - chunk_size;
-			len = xvsec_util_fread(filep,
-				*offset, (uint8_t *)raw_buf, RBT_WORD_LEN);
-			count = 0x0;
-			for (index = 0; index < len ; index++) {
-				if ((raw_buf[index] == '1') ||
-					(raw_buf[index] == '0')) {
-					count = count + 1;
-				}
-			}
-			if (count == RBT_WORD_LEN)
-				break;
-			return -(EAGAIN);
-
-		}
-
-		search_off = search_off + len;
-		size = size - len;
-	}
-
-	if (size == 0)
-		return -(ENOEXEC);
-
-	return 0;
-}
-
-static int xvsec_write_rbt(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size)
-{
-	int status;
-	char bitdata[RBT_WORD_LEN + 1], dummy_data = 0;
-	uint16_t wr_offset;
-	uint32_t *buf, buf_index;
-	int i, len, offset = 0, remain_size, dummy_len;
-	uint32_t worddata, chunk_size;
-	bool done;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	status = xvsec_parse_rbt_file(filep, size, &offset);
-	if (status < 0)
-		return -(ENOEXEC);
-
-	pr_info("File Parsed Successfully..Offset found : 0x%X\n", offset);
-
-	buf = kmalloc(DMA_HWICAP_BITFILE_BUFFER_SIZE, GFP_KERNEL);
-	if (buf == NULL)
-		return -(ENOMEM);
-
-	remain_size = size - offset;
-	worddata = 0x0;
-	buf_index = 0x0;
-	done = false;
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-
-	memset(bitdata, 0, (RBT_WORD_LEN + 1));
-	while (done == false) {
-		chunk_size = (remain_size > (RBT_WORD_LEN + 1)) ?
-			(RBT_WORD_LEN + 1) : remain_size;
-		len = xvsec_util_fread(filep, offset,
-				(uint8_t *)bitdata,
-				chunk_size);
-		/* Discarding Comments */
-		if (bitdata[0] == '#') {
-			offset = offset + chunk_size;
-			remain_size = remain_size - chunk_size;
-			continue;
-		}
-
-		if (len != chunk_size)
-			pr_warn("Len and chunk_size mismatch\n");
-
-		for (i = 0; i < (len - 1) ; i++) {
-			if ((bitdata[i] == '1') || (bitdata[i] == '0')) {
-				worddata = (worddata << 1) |
-						(bitdata[i] - 0x30);
-			} else {
-				pr_info("Corrupted Character : %c, 0x%X\n",
-					bitdata[i], bitdata[i]);
-				break;
-			}
-		}
-
-		if (i != (len - 1)) {
-			pr_err("Corrupted rbt file..Found ASCII character\n");
-			pr_err("in middle of the bits\n");
-			pr_info("i : %d, len : %d\n", i, len);
-
-			kfree(buf);
-			return -(EFAULT);
-		}
-
-		buf[buf_index] = worddata;
-		worddata = 0x0;
-		offset = offset + chunk_size;
-		remain_size = remain_size - chunk_size;
-
-		buf_index = buf_index + 1;
-		/* Check whether complete buffer filled up */
-		if (((buf_index * 4) == DMA_HWICAP_BITFILE_BUFFER_SIZE) ||
-			(remain_size == 0x0)) {
-
-			/* Write the Data to MCAP */
-			for (i = 0; i < buf_index; i++) {
-				pci_write_config_dword(pdev, wr_offset, buf[i]);
-
-				/* FROM SDAccel Code:
-				 * This delay resolves the MIG calibration
-				 * issues we have been seeing with
-				 * Tandem Stage 2 Loading
-				 */
-				udelay(1);
-			}
-			buf_index = 0x0;
-		}
-
-		/* More than one word in a same line..just ignore that data */
-		if (bitdata[len - 1] != '\n') {
-			pr_info("Found multiple words in single line\n");
-			pr_info("Character : %c\n", bitdata[len - 1]);
-			while (remain_size != 0) {
-				dummy_len = xvsec_util_fread(filep,
-					offset, (uint8_t *)&dummy_data, 1);
-				offset = offset + 1;
-				remain_size = remain_size - 1;
-				if ((dummy_data == '\n') || (dummy_len != 1))
-					break;
-			}
-		}
-
-		if (remain_size == 0)
-			done = true;
-	}
-
-	kfree(buf);
-	return offset;
-}
-
-static int xvsec_write_bit(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size)
-{
-	int err;
-	uint8_t val = 0, len = 0;
-	uint32_t index, loop;
-	uint64_t offset = 0x0;
-	uint32_t *buf = NULL;
-	uint16_t chunk = 0;
-	uint16_t wr_offset;
-	loff_t remain_size = 0;
-	bool	sync_found = false;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	/*
-	 * .bit files are not guaranteed to be aligned with
-	 * the bitstream sync word on a 32-bit boundary. So,
-	 * we need to check every byte here.
-	 */
-	while (xvsec_util_fread(filep, offset, &val, 1) == 1) {
-		if (offset >= size) {
-			pr_err("[xvsec_cdev] : Reached End of BIT file");
-			pr_err(" Failed to find the sync word\n");
-			return -(EINVAL);
-		}
-		len++; offset++;
-		if ((val == MCAP_SYNC_BYTE0) &&
-			(xvsec_util_fread(filep,
-				offset, &val, 1)) == 1) {
-			len++; offset++;
-			if ((val == MCAP_SYNC_BYTE1) &&
-				(xvsec_util_fread(filep,
-					offset, &val, 1)) == 1) {
-				len++; offset++;
-				if ((val == MCAP_SYNC_BYTE2) &&
-					(xvsec_util_fread(filep,
-						offset, &val, 1)) == 1) {
-					len++; offset++;
-					if (val == MCAP_SYNC_BYTE3) {
-						sync_found = true;
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	if (sync_found != true) {
-		pr_err("[xvsec_cdev] : Failed to Read BIT file\n");
-		return -(EINVAL);
-	}
-
-	pr_info("found sync pattern : %d\n", len);
-
-	buf = kmalloc(DMA_HWICAP_BITFILE_BUFFER_SIZE, GFP_KERNEL);
-	if (buf == NULL)
-		return -(ENOMEM);
-
-	buf[0] = (uint32_t)cpu_to_be32(MCAP_SYNC_DWORD);
-
-	remain_size = size - len;
-	index = 4;
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-	while (remain_size != 0) {
-		chunk = (remain_size > DMA_HWICAP_BITFILE_BUFFER_SIZE) ?
-			DMA_HWICAP_BITFILE_BUFFER_SIZE : remain_size;
-
-		chunk = (index == 0) ? chunk : (chunk - 4);
-
-		err = xvsec_util_fread(filep,
-			offset, (uint8_t *)&buf[index/4], chunk);
-		if (err < 0)
-			goto CLEANUP;
-
-		for (loop = 0; loop < ((chunk+index) / 4); loop++) {
-			pci_write_config_dword(pdev, wr_offset,
-				(uint32_t)cpu_to_be32(buf[loop]));
-
-			/* FROM SDAccel Code:
-			 * This delay resolves the MIG calibration issues
-			 * we have been seeing with Tandem Stage 2 Loading
-			 */
-			udelay(1);
-		}
-
-
-		index = 0;
-		offset = offset + chunk;
-		remain_size = remain_size - chunk;
-	}
-
-CLEANUP:
-	kfree(buf);
-	return offset;
-}
-
-static int xvsec_write_bin(struct vsec_context *mcap_ctx,
-	struct file *filep, loff_t size)
-{
-	int err = 0;
-	uint32_t loop;
-	uint64_t offset = 0x0;
-	uint32_t *buf;
-	uint16_t chunk = 0;
-	uint16_t wr_offset;
-	loff_t remain_size = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-
-	buf = kmalloc(DMA_HWICAP_BITFILE_BUFFER_SIZE, GFP_KERNEL);
-	if (buf == NULL)
-		return -(ENOMEM);
-
-	memset(buf, 0, DMA_HWICAP_BITFILE_BUFFER_SIZE);
-	remain_size = size;
-	wr_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_WRITE_DATA_REG;
-	while (remain_size != 0) {
-		chunk = (remain_size > DMA_HWICAP_BITFILE_BUFFER_SIZE) ?
-			DMA_HWICAP_BITFILE_BUFFER_SIZE : remain_size;
-
-
-		err = xvsec_util_fread(filep,
-			offset, (uint8_t *)&buf[0], chunk);
-		if (err < 0)
-			goto CLEANUP;
-
-		for (loop = 0; loop < (chunk / 4); loop++) {
-			pci_write_config_dword(pdev, wr_offset,
-				(uint32_t)cpu_to_be32(buf[loop]));
-
-			/* FROM SDAccel Code:
-			 * This delay resolves the MIG calibration issues
-			 * we have been seeing with Tandem Stage 2 Loading
-			 */
-			udelay(1);
-		}
-
-		offset = offset + chunk;
-		remain_size = remain_size - chunk;
-	}
-CLEANUP:
-	kfree(buf);
-	return err;
-}
-
-static int xvsec_mcap_program(struct vsec_context *mcap_ctx, char *fname)
-{
-	int ret = 0;
-	loff_t file_size;
-	struct file *filep;
-	uint32_t sts_data;
-
-	pr_info("Before fopen\n");
-	pr_info("file name : %p\n", fname);
-	filep = xvsec_util_fopen(fname, O_RDONLY, 0);
-	if (filep == NULL)
-		return -(ENOENT);
-
-	pr_info("After fopen\n");
-
-	ret = xvsec_util_get_file_size(fname, &file_size);
-	if (ret < 0)
-		goto CLEANUP;
-
-	pr_info("After getsize\n");
-
-	if (file_size <= 0) {
-		ret = -(EINVAL);
-		goto CLEANUP;
-	}
-
-	if (xvsec_util_find_file_type(fname, MCAP_RBT_FILE) == 0) {
-		ret = xvsec_write_rbt(mcap_ctx, filep, file_size);
-		pr_info("xvsec_write_rbt : output : 0x%X\n", ret);
-		if (ret < 0)
-			goto CLEANUP;
-	} else if (xvsec_util_find_file_type(fname, MCAP_BIT_FILE) == 0) {
-		ret = xvsec_write_bit(mcap_ctx, filep, file_size);
-		if (ret < 0)
-			goto CLEANUP;
-	} else if (xvsec_util_find_file_type(fname, MCAP_BIN_FILE) == 0) {
-		ret = xvsec_write_bin(mcap_ctx, filep, file_size);
-		if (ret < 0)
-			goto CLEANUP;
-	}
-
-	ret = check_for_completion(mcap_ctx, &sts_data);
-	if ((ret != 0) ||
-		((sts_data & XVSEC_MCAP_STATUS_ERR) != 0x0) ||
-		((sts_data & XVSEC_MCAP_STATUS_FIFO_OVFL) != 0x0)) {
-		pr_err("Performing Full Reset\n");
-		xvsec_mcap_full_reset(mcap_ctx);
-		ret = -(EIO);
-	}
-
-CLEANUP:
-	xvsec_util_fclose(filep);
-	return ret;
-
-}
-
-int xvsec_mcap_rd_cfg_addr(struct vsec_context *mcap_ctx,
-	union cfg_data *data)
-{
-	int ret = 0;
-	uint8_t byte_data;
-	uint16_t short_data;
-	uint32_t word_data;
-	uint32_t address;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	address = mcap_ctx->vsec_offset + data->v1.offset;
-	switch (data->v1.access) {
-	case 'b':
-		ret = pci_read_config_byte(pdev, address, &byte_data);
-		if (ret == 0)
-			data->v1.data = byte_data;
-		break;
-	case 'h':
-		ret = pci_read_config_word(pdev, address, &short_data);
-		if (ret == 0)
-			data->v1.data = short_data;
-		break;
-	case 'w':
-		ret = pci_read_config_dword(pdev, address, &word_data);
-		if (ret == 0)
-			data->v1.data = word_data;
-		break;
-	default:
-		ret = -(EINVAL);
-		break;
-	}
-
-	return ret;
-}
-
-int xvsec_mcap_wr_cfg_addr(struct vsec_context *mcap_ctx,
-	union cfg_data *data)
-{
-	int ret = 0;
-	uint8_t byte_data;
-	uint16_t short_data;
-	uint32_t word_data;
-	uint32_t address;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	address = mcap_ctx->vsec_offset + data->v1.offset;
-
-	switch (data->v1.access) {
-	case 'b':
-		byte_data = (uint8_t)data->v1.data;
-		ret = pci_write_config_byte(pdev, address, byte_data);
-		break;
-	case 'h':
-		short_data = (uint16_t)data->v1.data;
-		ret = pci_write_config_word(pdev, address, short_data);
-		break;
-	case 'w':
-		word_data = (uint32_t)data->v1.data;
-		ret = pci_write_config_dword(pdev, address, word_data);
-		break;
-	default:
-		ret = -(EINVAL);
-		break;
-	}
-
-	return ret;
-}
-
-int xvsec_fpga_rd_cfg_addr(struct vsec_context *mcap_ctx,
-	union fpga_cfg_reg *cfg_reg)
-{
-	int ret = 0;
-	int ctrl_offset, status_offset;
-	int rd_offset;
-	int i, n;
-	uint32_t rd_data, ctrl_data, status_data, restore;
-	uint16_t count;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	i = 0x0;
-	n = ARRAY_SIZE(fpga_valid_addr);
-
-	while ((i < n) && (cfg_reg->v1.offset != fpga_valid_addr[i++]))
-		;
-
-	if ((i == n) && (cfg_reg->v1.offset != fpga_valid_addr[n - 1])) {
-		pr_err("Invalid FPGA Register Access : ");
-		pr_err("Addr : 0x%X\n", cfg_reg->v1.offset);
-		return -(EACCES);
-	}
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	rd_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_READ_DATA_REG0;
-	ctrl_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_CONTROL_REGISTER;
-	status_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_STATUS_REGISTER;
-
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-	ctrl_data = ctrl_data |
-		XVSEC_MCAP_CTRL_WR_ENABLE | XVSEC_MCAP_CTRL_ENABLE |
-		XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	xvsec_fpga_cfg_setup(mcap_ctx, FPGA_RD_CMD);
-
-	xvsec_fpga_cfg_write_cmd(mcap_ctx, FPGA_RD_CMD, cfg_reg->v1.offset, 1);
-
-	ctrl_data = ctrl_data | XVSEC_MCAP_CTRL_RD_ENABLE;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	count = 0x0;
-	while (count < 20) {
-		pci_read_config_dword(pdev, status_offset, &status_data);
-		if ((status_data & 0x10) != 0x0)
-			break;
-		count = count + 1;
-		msleep(20);
-	}
-
-	if (count >= 20) {
-		pr_err("Time out happened while reading FPGA CFG Register\n");
-		ret = -(EBUSY);
-		goto CLEANUP;
-	}
-
-	pci_read_config_dword(pdev, rd_offset, &rd_data);
-
-	pr_info("%s : data : 0x%X\n", __func__, rd_data);
-
-	cfg_reg->v1.data = rd_data;
-
-	ctrl_data = ctrl_data & (~XVSEC_MCAP_CTRL_RD_ENABLE);
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-
-CLEANUP:
-	xvsec_fpga_cfg_teardown(mcap_ctx);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_fpga_wr_cfg_addr(struct vsec_context *mcap_ctx,
-	union fpga_cfg_reg *cfg_reg)
-{
-	int ret = 0;
-	int ctrl_offset;
-	int i, n;
-	uint32_t ctrl_data, restore;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	i = 0x0;
-	n = ARRAY_SIZE(fpga_valid_addr);
-
-	while ((i < n) && (cfg_reg->v1.offset != fpga_valid_addr[i++]))
-		;
-
-	if ((i == n) && (cfg_reg->v1.offset != fpga_valid_addr[n - 1])) {
-		pr_err("Invalid FPGA Register Access : ");
-		pr_err("Addr : 0x%X\n", cfg_reg->v1.offset);
-		return -(EACCES);
-	}
-
-	/* Acquire the Access */
-	ret = xvsec_mcap_req_access(mcap_ctx, &restore);
-	if (ret < 0)
-		return ret;
-
-	ctrl_offset = mcap_ctx->vsec_offset + XVSEC_MCAP_CONTROL_REGISTER;
-
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-	ctrl_data = ctrl_data |
-		XVSEC_MCAP_CTRL_WR_ENABLE | XVSEC_MCAP_CTRL_ENABLE |
-		XVSEC_MCAP_CTRL_REQ_ACCESS;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	xvsec_fpga_cfg_setup(mcap_ctx, FPGA_WR_CMD);
-
-	xvsec_fpga_cfg_write_cmd(mcap_ctx, FPGA_WR_CMD, cfg_reg->v1.offset, 1);
-
-	xvsec_fpga_cfg_write_data(mcap_ctx, cfg_reg->v1.data);
-
-	xvsec_fpga_cfg_teardown(mcap_ctx);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-/*
- * unsupported v1 functions for US/US+
- */
-int xvsec_mcapv1_axi_rd_addr(struct vsec_context *mcap_ctx,
-	union axi_reg_data *cfg_reg)
-{
-	pr_err("AXI Read operation not supported for US/US+ devices\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv1_axi_wr_addr(struct vsec_context *mcap_ctx,
-	union axi_reg_data *cfg_reg)
-{
-	pr_err("AXI Write operation not supported for US/US+ devices\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv1_file_download(struct vsec_context *mcap_ctx,
-	union file_download_upload *file)
-{
-	pr_err("AXI File Download not supported for US/US+ devices\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv1_file_upload(struct vsec_context *mcap_ctx,
-	union file_download_upload *file)
-{
-	pr_err("AXI File upload not supported for US/US+ devices\n");
-	return -(EPERM);
-}
-int xvsec_mcapv1_set_axi_cache_attr(
-	struct vsec_context *mcap_ctx, union axi_cache_attr *attr)
-{
-	pr_err("AXI attributes settings not supported for US/US+ devices\n");
-	return -(EPERM);
-}
-
-MODULE_LICENSE("Dual BSD/GPL");
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.h b/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.h
deleted file mode 100644
index c016efd..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/us/xvsec_mcap_us.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_MCAP_US_H__
-#define __XVSEC_MCAP_US_H__
-
-/**
- * @file xvsec_mcap_us.h
- *
- * Xilinx XVSEC MCAP US/US+ Driver Library  Definitions
- *
- * Header file *xvsec_mcap_us.h* defines data structures & register
- * definitions needed to implement the MCAP version 1 driver
- *
- * These data structures and register definitions can be used by
- * XVSEC MCAP common driver
- */
-
-
-#define MAX_FLEN						(300)
-#define RBT_WORD_LEN					(32)
-
-#define XVSEC_MCAP_LOOP_COUNT			(1000000)
-#define EMCAP_EOS_LOOP_COUNT			(100)
-#define EMCAP_NOOP_VAL					0x2000000
-#define EMCAP_EOS_RETRY_COUNT			10
-#define DMA_HWICAP_BITFILE_BUFFER_SIZE	1024 /* from xbar_sys_parameters.h */
-
-#define MCAP_SYNC_DWORD	0xFFFFFFFF
-#define MCAP_SYNC_BYTE0 ((MCAP_SYNC_DWORD & 0xFF000000) >> 24)
-#define MCAP_SYNC_BYTE1 ((MCAP_SYNC_DWORD & 0x00FF0000) >> 16)
-#define MCAP_SYNC_BYTE2 ((MCAP_SYNC_DWORD & 0x0000FF00) >> 8)
-#define MCAP_SYNC_BYTE3 ((MCAP_SYNC_DWORD & 0x000000FF) >> 0)
-
-#define MCAP_RBT_FILE	".rbt"
-#define MCAP_BIT_FILE	".bit"
-#define MCAP_BIN_FILE	".bin"
-
-/* MCAP Register Offsets */
-#define XVSEC_MCAP_EXTENDED_HEADER	(0x0000)
-#define XVSEC_MCAP_VENDOR_HEADER	(0x0004)
-#define XVSEC_MCAP_FPGA_JTAG_ID		(0x0008)
-#define XVSEC_MCAP_FPGA_BIT_VER		(0x000c)
-#define XVSEC_MCAP_STATUS_REGISTER	(0x0010)
-#define XVSEC_MCAP_CONTROL_REGISTER	(0x0014)
-#define XVSEC_MCAP_WRITE_DATA_REG	(0x0018)
-#define XVSEC_MCAP_READ_DATA_REG0	(0x001c)
-#define XVSEC_MCAP_READ_DATA_REG1	(0x0020)
-#define XVSEC_MCAP_READ_DATA_REG2	(0x0024)
-#define XVSEC_MCAP_READ_DATA_REG3	(0x0028)
-
-#define XVSEC_MCAP_DATA_REG_CNT		4
-
-#define XVSEC_MCAP_VSEC_ID_SHIFT	0
-#define XVSEC_MCAP_REV_ID_SHIFT		16
-#define XVSEC_MCAP_VSEC_ID_POS		(0xFFFF << XVSEC_MCAP_VSEC_ID_SHIFT)
-#define XVSEC_MCAP_REV_ID_POS		(0xF << XVSEC_MCAP_REV_ID_SHIFT)
-
-/* CTRL REG FIELDS */
-#define XVSEC_MCAP_CTRL_ENABLE		(1 << 0)
-#define XVSEC_MCAP_CTRL_RD_ENABLE	(1 << 1)
-#define XVSEC_MCAP_CTRL_RESET		(1 << 4)
-#define XVSEC_MCAP_CTRL_MOD_RESET	(1 << 5)
-#define XVSEC_MCAP_CTRL_REQ_ACCESS	(1 << 8)
-#define XVSEC_MCAP_CTRL_CFG_SWICTH	(1 << 12)
-#define XVSEC_MCAP_CTRL_WR_ENABLE	(1 << 16)
-
-/* STATUS REG FIELDS */
-#define XVSEC_MCAP_STATUS_ERR			(1 << 0)
-#define XVSEC_MCAP_STATUS_EOS			(1 << 1)
-#define XVSEC_MCAP_STATUS_RD_COMPLETE	(1 << 4)
-#define XVSEC_MCAP_STATUS_RD_COUNT		(0x7 << 5)
-#define XVSEC_MCAP_STATUS_FIFO_OVFL		(1 << 8)
-#define XVSEC_MCAP_STATUS_FIFO_LEVEL	(0xF << 12)
-#define XVSEC_MCAP_STATUS_ACCESS		(1 << 24)
-
-/* FPGA CFG RD/WR SEQUENCE WORDS */
-#define DUMMY_WORD				0xFFFFFFFF
-#define BUS_WIDTH_SYNC			0x000000BB
-#define BUS_WIDTH_DETECT		0x11220044
-#define SYNC_WORD				0xAA995566
-#define NOOP					0x20000000
-#define TYPE1_WR_CMD			0x30008001
-#define DESYNC					0x0000000D
-
-#define TYPE1_HEADER_TYPE		0x1
-#define FPGA_CFG_READ			0x1
-#define FPGA_CFG_WRITE			0x2
-
-
-enum oper {
-	FPGA_WR_CMD = 0x0,
-	FPGA_RD_CMD,
-};
-
-union type1_header {
-	struct {
-		uint32_t    word_count  : 11;
-		uint32_t    reserved02  : 2;
-		uint32_t    address     : 5;
-		uint32_t    reserved01  : 9;
-		uint32_t    opcode      : 2;
-		uint32_t    header_type : 3;
-	};
-	uint32_t data;
-};
-
-
-int xvsec_mcap_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcap_module_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcap_full_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcap_get_data_regs(struct vsec_context *mcap_ctx,
-	uint32_t regs[4]);
-int xvsec_mcap_get_regs(struct vsec_context *mcap_ctx,
-	union mcap_regs *regs);
-int xvsec_mcap_get_fpga_regs(struct vsec_context *mcap_ctx,
-	union fpga_cfg_regs *regs);
-int xvsec_mcap_program_bitstream(struct vsec_context *mcap_ctx,
-	union bitstream_file *bit_files);
-int xvsec_mcap_rd_cfg_addr(struct vsec_context *mcap_ctx,
-	union cfg_data *data);
-int xvsec_mcap_wr_cfg_addr(struct vsec_context *mcap_ctx,
-	union cfg_data *data);
-int xvsec_fpga_rd_cfg_addr(struct vsec_context *mcap_ctx,
-	union fpga_cfg_reg *cfg_reg);
-int xvsec_fpga_wr_cfg_addr(struct vsec_context *mcap_ctx,
-	union fpga_cfg_reg *cfg_reg);
-
-/*unsupported for US/US+ */
-int xvsec_mcapv1_axi_rd_addr(struct vsec_context *mcap_ctx,
-	union axi_reg_data *cfg_reg);
-int xvsec_mcapv1_axi_wr_addr(struct vsec_context *mcap_ctx,
-	union axi_reg_data *cfg_reg);
-int xvsec_mcapv1_file_download(struct vsec_context *mcap_ctx,
-	union file_download_upload *file);
-int xvsec_mcapv1_file_upload(struct vsec_context *mcap_ctx,
-	union file_download_upload *file);
-int xvsec_mcapv1_set_axi_cache_attr(struct vsec_context *mcap_ctx,
-	union axi_cache_attr *attr);
-
-
-#endif /* __XVSEC_MCAP_US_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.c b/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.c
deleted file mode 100644
index 5827f82..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.c
+++ /dev/null
@@ -1,1144 +0,0 @@
-/*
- *This file is part of the XVSEC driver for Linux
- *
- *Copyright (c) 2020-2022  Xilinx, Inc.
- *All rights reserved.
- *
- *This source code is free software; you can redistribute it and/or modify it
- *under the terms and conditions of the GNU General Public License,
- *version 2, as published by the Free Software Foundation.
- *
- *This program is distributed in the hope that it will be useful, but WITHOUT
- *ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- *FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- *more details.
- *
- *The full GNU General Public License is included in this distribution in
- *the file called "COPYING".
- *
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "xvsec_drv.h"
-#include "xvsec_drv_int.h"
-#include "xvsec_mcap.h"
-#include "xvsec_mcap_versal.h"
-#include "xvsec_util.h"
-
-static int xvsec_mcapv2_wr_enable(struct vsec_context *mcap_ctx);
-static int xvsec_mcapv2_rd_enable(struct vsec_context *mcap_ctx);
-static int xvsec_mcapv2_wr_disable(struct vsec_context *mcap_ctx);
-static int xvsec_mcapv2_rd_disable(struct vsec_context *mcap_ctx);
-static int xvsec_mcapv2_set_mode(
-	struct vsec_context *mcap_ctx, enum axi_access_mode mode);
-static int xvsec_mcapv2_set_address(
-	struct vsec_context *mcap_ctx, uint32_t address);
-static int xvsec_mcapv2_set_axi_cache_prot(
-	struct vsec_context *mcap_ctx, uint8_t axi_cache, uint8_t axi_prot);
-static int xvsec_mcapv2_write_data_reg(
-	struct vsec_context *mcap_ctx, uint32_t data);
-static int xvsec_mcapv2_read_data_reg(
-	struct vsec_context *mcap_ctx, uint32_t *data);
-static int xvsec_mcapv2_read_status_reg(
-	struct vsec_context *mcap_ctx, uint32_t *sts);
-static int xvsec_mcapv2_wait_for_write_FIFO_empty(
-	struct vsec_context *mcap_ctx);
-static int xvsec_mcapv2_check_mcap_rw_status(
-	struct vsec_context *mcap_ctx, uint32_t sts,
-	enum file_operation_status *op_status);
-static int xvsec_mcapv2_read_fifo_capacity(
-	struct vsec_context *mcap_ctx, uint8_t *fifo_capacity);
-static int xvsec_mcapv2_wait_for_rw_complete(
-	struct vsec_context *mcap_ctx);
-
-int xvsec_mcapv2_module_reset(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	uint16_t mcap_offset;
-	uint16_t ctrl_offset;
-	uint32_t ctrl_data, read_data, restore;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	ctrl_offset = mcap_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_offset, &ctrl_data);
-	restore = ctrl_data;
-
-	/* Asserting the Module Reset */
-	ctrl_data = ctrl_data | XVSEC_MCAPV2_CTRL_RESET;
-	pci_write_config_dword(pdev, ctrl_offset, ctrl_data);
-
-	/* Read Back */
-	pci_read_config_dword(pdev, ctrl_offset, &read_data);
-	if ((read_data & XVSEC_MCAPV2_CTRL_RESET) == 0x0)
-		ret = -(EBUSY);
-
-	pci_write_config_dword(pdev, ctrl_offset, restore);
-
-	return ret;
-}
-
-int xvsec_mcapv2_get_regs(
-	struct vsec_context *mcap_ctx, union mcap_regs *regs)
-{
-	uint16_t mcap_offset;
-	uint16_t index;
-	uint32_t *ptr;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	regs->v2.valid = 0;
-
-	mcap_offset = mcap_ctx->vsec_offset;
-	if (mcap_offset == INVALID_OFFSET)
-		return -(EPERM);
-
-	ptr = &regs->v2.ext_cap_header;
-	for (index = 0; index <= (XVSEC_MCAPV2_READ_DATA_REG / 4); index++) {
-		pci_read_config_dword(pdev, mcap_offset, &ptr[index]);
-		mcap_offset = mcap_offset + 4;
-	}
-
-	regs->v2.valid = 1;
-
-	return 0;
-}
-
-int xvsec_mcapv2_rd_cfg_addr(
-	struct vsec_context *mcap_ctx, union cfg_data *data)
-{
-	int ret = 0;
-	uint8_t byte_data;
-	uint16_t short_data;
-	uint32_t word_data;
-	uint32_t address;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	address = mcap_ctx->vsec_offset + data->v2.offset;
-	switch (data->v2.access) {
-	case 'b':
-		ret = pci_read_config_byte(pdev, address, &byte_data);
-		if (ret == 0)
-			data->v2.data = byte_data;
-		break;
-	case 'h':
-		ret = pci_read_config_word(pdev, address, &short_data);
-		if (ret == 0)
-			data->v2.data = short_data;
-		break;
-	case 'w':
-		ret = pci_read_config_dword(pdev, address, &word_data);
-		if (ret == 0)
-			data->v2.data = word_data;
-		break;
-	default:
-		ret = -(EINVAL);
-		break;
-	}
-
-	return ret;
-}
-
-int xvsec_mcapv2_wr_cfg_addr(
-	struct vsec_context *mcap_ctx, union cfg_data *data)
-{
-	int ret = 0;
-	uint8_t byte_data;
-	uint16_t short_data;
-	uint32_t word_data;
-	uint32_t address;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-
-	address = mcap_ctx->vsec_offset + data->v2.offset;
-
-	switch (data->v2.access) {
-	case 'b':
-		byte_data = (uint8_t)data->v2.data;
-		ret = pci_write_config_byte(pdev, address, byte_data);
-		break;
-	case 'h':
-		short_data = (uint16_t)data->v2.data;
-		ret = pci_write_config_word(pdev, address, short_data);
-		break;
-	case 'w':
-		word_data = (uint32_t)data->v2.data;
-		ret = pci_write_config_dword(pdev, address, word_data);
-		break;
-	default:
-		ret = -(EINVAL);
-		break;
-	}
-
-	return ret;
-}
-
-int xvsec_mcapv2_axi_rd_addr(
-	struct vsec_context *mcap_ctx, union axi_reg_data *cfg_reg)
-{
-	int ret = 0, wcnt = 0;
-	uint32_t data = 0, sts = 0;
-	uint8_t rw_status;
-	uint32_t address = cfg_reg->v2.address;
-
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	if (XVSEC_MCAPV2_IS_RW_COMPLETE(sts) == true) {
-		/* TO Clear the MCAP Read Complete bit by asserting reset */
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-	}
-
-	xvsec_mcapv2_set_mode(mcap_ctx, MCAP_AXI_MODE_32B);
-
-	xvsec_mcapv2_set_address(mcap_ctx, address);
-
-	xvsec_mcapv2_rd_enable(mcap_ctx);
-
-	/* Poll the MCAP Status Register MCAP Read Complete bit */
-	wcnt = 0;
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	while (XVSEC_MCAPV2_IS_RW_COMPLETE(sts) != true) {
-		udelay(1);
-		if (wcnt++ >= MAX_OP_POLL_CNT) {
-			pr_err("%s: timeout on rw_complete.\n", __func__);
-			ret = -(ETIME);
-			goto CLEANUP;
-		}
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	}
-
-	/* If the MCAP rw_status != OK, report the error to the user.*/
-	XVSEC_MCAPV2_GET_RW_STATUS(sts, rw_status);
-	if (rw_status != XVSEC_MCAPV2_RW_OK) {
-		pr_err("%s: AXI write transaction failed.\n", __func__);
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-		ret = -(EIO);
-		goto CLEANUP;
-	}
-
-	/*read 32bit data*/
-	xvsec_mcapv2_read_data_reg(mcap_ctx, &data);
-
-	/*return data*/
-	cfg_reg->v2.data[0] = data;
-
-CLEANUP:
-	/*disable the read*/
-	xvsec_mcapv2_rd_disable(mcap_ctx);
-	return ret;
-}
-
-int xvsec_mcapv2_axi_wr_addr(
-	struct vsec_context *mcap_ctx, union axi_reg_data *cfg_reg)
-{
-	int ret = 0, reg_cnt = 0, wcnt = 0, i = 0;
-	uint8_t rw_status;
-	uint32_t address = cfg_reg->v2.address;
-	uint32_t *data = (uint32_t *)&cfg_reg->v2.data[0];
-	enum axi_access_mode mode = cfg_reg->v2.mode;
-	uint32_t sts = 0;
-
-	if (mode == MCAP_AXI_MODE_128B)
-		reg_cnt = 4; /* four 32bit writes */
-	else
-		reg_cnt = 1; /* one 32bit writes */
-
-	xvsec_mcapv2_wr_enable(mcap_ctx);
-	xvsec_mcapv2_set_mode(mcap_ctx, mode);
-
-	xvsec_mcapv2_set_address(mcap_ctx, address);
-
-	for (i = 0; i < reg_cnt; i++) {
-		/* Wait if FIFO is full for a while */
-		wcnt = 0;
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-		while (XVSEC_MCAPV2_IS_FIFO_FULL(sts) == true) {
-			udelay(1);
-			if (wcnt++ >= MAX_OP_POLL_CNT) {
-				pr_err("%s: Timeout, FIFO FULL\n", __func__);
-				ret = -(ETIME);
-				goto CLEANUP;
-			}
-			xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-		}
-
-		xvsec_mcapv2_write_data_reg(mcap_ctx, data[i]);
-	}
-
-	/*If FIFO != empty and time-out reached, report error to user.*/
-	wcnt = 0;
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	while (XVSEC_MCAPV2_IS_FIFO_EMPTY(sts) != true) {
-		udelay(1);
-		if (wcnt++ >= MAX_OP_POLL_CNT) {
-			pr_err("%s: Timeout, FIFO not Empty\n", __func__);
-			ret = -(ETIME);
-			goto CLEANUP;
-		}
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	}
-
-	XVSEC_MCAPV2_GET_RW_STATUS(sts, rw_status);
-	/*If rw_status != OK, report error to user.*/
-	if (rw_status != XVSEC_MCAPV2_RW_OK) {
-		pr_err("%s: AXI write transaction failed.\n", __func__);
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-		ret = -(EIO);
-		goto CLEANUP;
-	}
-
-	/*If FIFO Overflow bit == set, report error to user */
-	if (XVSEC_MCAPV2_IS_FIFO_OVERFLOW(sts) == true) {
-		pr_err("%s: Write FIFO overflow error occured.\n", __func__);
-		ret = -(EIO);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	return ret;
-}
-
-int xvsec_mcapv2_file_download(
-	struct vsec_context *mcap_ctx, union file_download_upload *file_info)
-{
-	int ret = 0;
-	char *fname;
-	loff_t file_size = 0;
-	struct file *filep;
-	uint32_t dev_address;
-	loff_t offset;
-	loff_t frag_size;
-	loff_t rem_len = 0;
-	int index = 0;
-	int rd_len = 0;
-	uint32_t data_buf[MAX_FRAG_SZ / 4];
-	enum axi_access_mode mode;
-	uint32_t sts = 0;
-	char pdifile[MAX_FILE_LEN];
-	int len = 0;
-	enum data_transfer_mode tr_mode;
-	uint8_t fifo_capacity = 0;
-	uint8_t min_len = 0;
-	union axi_reg_data sbi_ctrl;
-	uint32_t sbi_address;
-	uint32_t sbi_ctrl_data_restore = 0;
-
-	pr_debug("In %s\n", __func__);
-
-	file_info->v2.op_status = FILE_OP_FAILED;
-
-	if ((file_info->v2.mode > MCAP_AXI_MODE_128B) ||
-		(file_info->v2.addr_type > INCREMENT_ADDRESS) ||
-		(file_info->v2.file_name == NULL) ||
-		(file_info->v2.tr_mode > DATA_TRANSFER_MODE_SLOW)) {
-		pr_err("%s: Invalid Params : mode : %d, type : %d, tr_mode : %d, name : %p",
-			__func__, file_info->v2.mode, file_info->v2.addr_type,
-			file_info->v2.tr_mode, file_info->v2.file_name);
-		return -(EINVAL);
-	}
-
-	if (file_info->v2.file_name != NULL) {
-		len = strnlen_user(
-			(char __user *)file_info->v2.file_name,
-			MAX_FILE_LEN);
-		if (len > MAX_FILE_LEN) {
-			pr_err("File Name too long\n");
-			file_info->v2.op_status = FILE_PATH_TOO_LONG;
-			return -(ENAMETOOLONG);
-		}
-
-		ret = strncpy_from_user(pdifile,
-				(char __user *)file_info->v2.file_name, len);
-		if (ret < 0) {
-			pr_err("File Name Copy Failed\n");
-			return -(EINVAL);
-		}
-		pr_info("pdi File Name : %s, tr_mode: %d\n", pdifile,
-			file_info->v2.tr_mode);
-	}
-
-	fname = pdifile;
-	dev_address = file_info->v2.address;
-	mode = file_info->v2.mode;
-	tr_mode = file_info->v2.tr_mode;
-	sbi_address = file_info->v2.sbi_address;
-
-	/** At present only PDI file format is implemented */
-	if (xvsec_util_find_file_type(fname, MCAPV2_PDI_FILE) < 0) {
-		pr_err("Only PDI files supported for a while\n");
-		return -(EINVAL);
-	}
-
-	filep = xvsec_util_fopen(fname, O_RDONLY, 0);
-	if (filep == NULL)
-		return -(ENOENT);
-
-	ret = xvsec_util_get_file_size(fname, &file_size);
-	if (ret < 0)
-		goto CLEANUP_EXIT;
-
-	if (file_size <= 0) {
-		file_info->v2.op_status = FILE_OP_ZERO_FSIZE;
-		ret = -(EINVAL);
-		goto CLEANUP_EXIT;
-	}
-
-	/* Check the file size is proper (multiple of 128bit/16Bytes) */
-	if ((mode == MCAP_AXI_MODE_128B) && ((file_size % MIN_LEN_128B) != 0)) {
-		file_info->v2.op_status = FILE_OP_INVALID_FSIZE;
-		pr_err("%s: file size is not multiple of 128b/16B\n", __func__);
-		ret = -(EINVAL);
-		goto CLEANUP_EXIT;
-	}
-
-	ret = xvsec_mcapv2_wait_for_write_FIFO_empty(mcap_ctx);
-	if (ret != 0)
-		goto CLEANUP_EXIT;
-
-	/* RdModWr SBI Control register to accept data from
-	 * MCAP datapath; restore later
-	 */
-	if (sbi_address != 0xFFFFFFFF) {
-		sbi_ctrl.v2.mode = MCAP_AXI_MODE_32B;
-		sbi_ctrl.v2.address = sbi_address + SLAVE_BOOT_CTRL_OFFSET;
-		xvsec_mcapv2_axi_rd_addr(mcap_ctx, &sbi_ctrl);
-		/* Storing in a tempeoray variable to retore in
-		 *  the control register while cleanup
-		 */
-		sbi_ctrl_data_restore = sbi_ctrl.v2.data[0];
-		sbi_ctrl.v2.data[0] &= ~SBI_CTRL_IF_MASK;
-		sbi_ctrl.v2.data[0] |= (SBI_CTRL_IF_AXI | SBI_CTRL_ENABLE);
-		xvsec_mcapv2_axi_wr_addr(mcap_ctx, &sbi_ctrl);
-	}
-
-	/** Enable write mode */
-	xvsec_mcapv2_wr_enable(mcap_ctx);
-	xvsec_mcapv2_set_mode(mcap_ctx, mode);
-	if (file_info->v2.addr_type == FIXED_ADDRESS)
-		xvsec_mcapv2_set_address(mcap_ctx, dev_address);
-
-	if (mode == MCAP_AXI_MODE_32B)
-		min_len = MIN_LEN_32B;
-	else
-		min_len = MIN_LEN_128B;
-
-	offset = 0;
-	rem_len = file_size;
-	file_info->v2.err_index = 0;
-	memset(data_buf, 0, sizeof(data_buf));
-
-	while (rem_len != 0) {
-		frag_size = (rem_len >= MAX_FRAG_SZ) ? MAX_FRAG_SZ : rem_len;
-
-		rd_len = xvsec_util_fread(filep,
-				offset, (uint8_t *)data_buf, frag_size);
-
-		if (mode == MCAP_AXI_MODE_128B) {
-			/** Truncates the length for 128b mode */
-			truncate_len_128b_mode(rd_len);
-		} else {
-			/** Truncates the length for 32b mode */
-			truncate_len_32b_mode(rd_len);
-		}
-
-		index = 0;
-		while (index < rd_len) {
-			/*read the status*/
-			xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-			/*
-			 * Fast download
-			 * - no condition check except FIFO occupancy
-			 * - FIFO occupancy, Need to check inside loop
-			 *   if the FIFO occupancy is 16 will wait for a while
-			 * - fifo_capacity set to 1 for slow download and
-			 *   for fast download mode based on fifo occupancy
-			 */
-			fifo_capacity = 1;
-			if (tr_mode == DATA_TRANSFER_MODE_FAST) {
-				fifo_capacity = 0;
-				ret = xvsec_mcapv2_read_fifo_capacity(
-					mcap_ctx, &fifo_capacity);
-				if (ret != 0)
-					goto CLEANUP;
-			}
-			/*slow download - Fifo should be empty*/
-			else if (tr_mode == DATA_TRANSFER_MODE_SLOW) {
-				/* Wait until the Write FIFO is empty */
-				/* for 128B, check after every 4 dwords*/
-				if ((index % min_len) == 0) {
-					ret =
-					xvsec_mcapv2_wait_for_write_FIFO_empty(
-						mcap_ctx);
-					if (ret != 0)
-						goto CLEANUP;
-				}
-			}
-
-			while (fifo_capacity--) {
-				/** Continue when FIFO has some room */
-				if (
-				(file_info->v2.addr_type == INCREMENT_ADDRESS)
-				&& ((index % min_len) == 0)) {
-					xvsec_mcapv2_set_address(mcap_ctx,
-							dev_address);
-					dev_address = dev_address + min_len;
-				}
-
-				xvsec_mcapv2_write_data_reg(mcap_ctx,
-						data_buf[index / 4]);
-				index = index + 4;
-
-				/*
-				 * - Break This loop if remaining data is
-				 *   less then the fifo capacity and it gets
-				 *   transferred to the HW
-				 */
-				if (index >= rd_len) {
-					pr_debug("%s: Fifo cap: %d, index: %d, rd_len: %d\n",
-						__func__, fifo_capacity,
-						index, rd_len);
-					break;
-				}
-			}
-
-			/*slow download:
-			 * sts_ok and rw_complete for every dword
-			 */
-			if (tr_mode == DATA_TRANSFER_MODE_SLOW) {
-				if ((index % min_len) == 0) {
-					ret = xvsec_mcapv2_wait_for_rw_complete(
-						mcap_ctx);
-					if (ret != 0)
-						goto CLEANUP;
-
-					xvsec_mcapv2_read_status_reg(
-						mcap_ctx, &sts);
-					ret = xvsec_mcapv2_check_mcap_rw_status(
-						mcap_ctx, sts,
-						&file_info->v2.op_status);
-					if (ret != 0)
-						goto CLEANUP;
-				}
-			}
-		}
-
-		offset = offset + rd_len;
-		rem_len = rem_len - rd_len;
-	}
-
-	/** common for all modes:
-	 ** to check all the conditions and report to user if error **/
-
-	/** Wait for write transactions in FIFO are complete */
-	ret = xvsec_mcapv2_wait_for_write_FIFO_empty(mcap_ctx);
-	if (ret != 0)
-		goto CLEANUP;
-
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	ret = xvsec_mcapv2_check_mcap_rw_status(mcap_ctx, sts,
-		&file_info->v2.op_status);
-	if (ret != 0)
-		goto CLEANUP;
-
-	/* If the MCAP FIFO Overflow bit is set report the error to the user. */
-	if (XVSEC_MCAPV2_IS_FIFO_OVERFLOW(sts) == true) {
-		file_info->v2.op_status = FILE_OP_HW_BUSY;
-		pr_err("%s: Write FIFO overflow error occured.\n", __func__);
-		ret = -(EIO);
-		goto CLEANUP;
-	}
-
-	/** Finally, Update op_status to SUCCESS */
-	file_info->v2.op_status = FILE_OP_SUCCESS;
-
-CLEANUP:
-	if (ret != 0) {
-		file_info->v2.err_index = (file_size - rem_len) + index;
-		pr_err("%s: file_size: %lld, rem_len: %lld, rd_len: %d, index: %d, sts: 0x%X\n",
-			__func__, file_size, rem_len, rd_len, index, sts);
-
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-	}
-
-	/** Restore SBI control reg to previous state */
-	if (sbi_address != 0xFFFFFFFF) {
-		sbi_ctrl.v2.data[0] = sbi_ctrl_data_restore;
-		xvsec_mcapv2_axi_wr_addr(mcap_ctx, &sbi_ctrl);
-	}
-
-CLEANUP_EXIT:
-	xvsec_util_fclose(filep);
-
-	return ret;
-}
-
-int xvsec_mcapv2_file_upload(
-	struct vsec_context *mcap_ctx, union file_download_upload *file_info)
-{
-	int ret = 0;
-	char *fname;
-	struct file *filep;
-	uint32_t dev_address;
-	loff_t offset;
-	loff_t frag_size = 0;
-	loff_t rem_len = 0;
-	int index = 0;
-	int written_len;
-	uint32_t data_buf[MAX_FRAG_SZ / 4];
-	uint32_t wait_cnt;
-	bool is_rw_done;
-	uint8_t rw_status;
-	uint8_t *ptr;
-	loff_t file_size = 0;
-	uint32_t sts = 0;
-	char pdifile[MAX_FILE_LEN];
-	int len = 0;
-
-	pr_debug("In %s\n", __func__);
-
-	file_info->v2.op_status = FILE_OP_FAILED;
-
-	if ((file_info->v2.addr_type > INCREMENT_ADDRESS) ||
-		(file_info->v2.file_name == NULL) ||
-		(file_info->v2.length == 0)) {
-		pr_err("%s: Invalid Params : type : %d, name : %p", __func__,
-			file_info->v2.addr_type, file_info->v2.file_name);
-		return -(EINVAL);
-	}
-
-	if (file_info->v2.file_name != NULL) {
-		len = strnlen_user(
-			(char __user *)file_info->v2.file_name,
-			MAX_FILE_LEN);
-		if (len > MAX_FILE_LEN) {
-			pr_err("File Name too long\n");
-			file_info->v2.op_status = FILE_PATH_TOO_LONG;
-			return -(ENAMETOOLONG);
-		}
-
-		ret = strncpy_from_user(pdifile,
-				(char __user *)file_info->v2.file_name, len);
-		if (ret < 0) {
-			pr_err("File Name Copy Failed\n");
-			return -(EINVAL);
-		}
-		pr_info("pdi File Name : %s\n", pdifile);
-	}
-
-	fname = pdifile;
-	dev_address = file_info->v2.address;
-
-	/** Check for any previous read/operation completed */
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	is_rw_done = XVSEC_MCAPV2_IS_RW_COMPLETE(sts);
-	if (is_rw_done == true) {
-		/* Reset MCAP module to clear rw_complete bit */
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-	}
-
-	filep = xvsec_util_fopen(fname, O_WRONLY|O_CREAT, 0);
-	if (filep == NULL)
-		return -(ENOENT);
-
-	xvsec_mcapv2_set_mode(mcap_ctx, MCAP_AXI_MODE_32B);
-	if (file_info->v2.addr_type == FIXED_ADDRESS)
-		xvsec_mcapv2_set_address(mcap_ctx, dev_address);
-
-	offset = 0;
-	rem_len = file_info->v2.length;
-	file_info->v2.err_index = 0;
-
-	while (rem_len != 0) {
-		index = 0;
-		frag_size = (rem_len >= MAX_FRAG_SZ) ? MAX_FRAG_SZ : rem_len;
-		while (index < frag_size) {
-			if (file_info->v2.addr_type == INCREMENT_ADDRESS) {
-				xvsec_mcapv2_set_address(mcap_ctx, dev_address);
-				dev_address = dev_address + 4;
-			}
-			/** Enable read mode */
-			xvsec_mcapv2_rd_enable(mcap_ctx);
-
-			/** Wait for write transactions in FIFO are complete */
-			wait_cnt = 0;
-			/** Wait until the Write FIFO is empty */
-			xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-			while (((is_rw_done =
-				XVSEC_MCAPV2_IS_RW_COMPLETE(sts)) != true)
-					&& (wait_cnt++ < MAX_OP_POLL_CNT)) {
-				/* Sleep for a while */
-				udelay(1);
-				xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-			}
-			if (is_rw_done != true) {
-				pr_err("%s: Err file upload: RW Cmplt : %d\n",
-					__func__, is_rw_done);
-				file_info->v2.op_status = FILE_OP_HW_BUSY;
-				ret = -(EIO);
-				goto CLEANUP;
-			}
-
-			XVSEC_MCAPV2_GET_RW_STATUS(sts, rw_status);
-			if (rw_status != XVSEC_MCAPV2_RW_OK) {
-				file_info->v2.op_status =
-					(enum file_operation_status)rw_status;
-				pr_err("%s: Err file upload: RW Status : %d\n",
-					__func__, rw_status);
-				ret = -(EIO);
-				goto CLEANUP;
-			}
-			xvsec_mcapv2_read_data_reg(mcap_ctx,
-					&data_buf[index / 4]);
-			index = index + 4;
-
-			/** Check for any previous read/operation completed */
-			xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-			xvsec_mcapv2_rd_disable(mcap_ctx);
-
-			is_rw_done = XVSEC_MCAPV2_IS_RW_COMPLETE(sts);
-			if (is_rw_done == true) {
-				/* Reset MCAP module to clear rw_complete bit */
-				xvsec_mcapv2_module_reset(mcap_ctx);
-				pr_debug("%s: MCAP Reset is issued.\n",
-					__func__);
-			}
-
-		}
-
-		written_len = 0;
-		ptr = (uint8_t *)data_buf;
-		while (written_len < frag_size) {
-			written_len += xvsec_util_fwrite(filep, offset,
-				&ptr[written_len], (frag_size - written_len));
-		}
-
-		offset = offset + frag_size;
-		rem_len = rem_len - frag_size;
-	}
-
-	/* Make sure the file contents written to disk */
-	xvsec_util_fsync(filep);
-
-	/** Compare the requested size with file size */
-	ret = xvsec_util_get_file_size(fname, &file_size);
-	if (ret < 0)
-		goto CLEANUP;
-
-	if (file_size != file_info->v2.length) {
-		pr_err("%s: Could not read complete requested length\n",
-			__func__);
-		/** Replace the requested length with read length */
-		file_info->v2.length = file_size;
-	}
-
-	file_info->v2.op_status = FILE_OP_SUCCESS;
-CLEANUP:
-
-	if (ret != 0) {
-		file_info->v2.err_index = (file_size - rem_len) + index;
-		pr_err("%s: file_size: %lld, rem_len: %lld, frag_size: %lld, index: %d, sts: 0x%X\n",
-			__func__, file_size, rem_len, frag_size, index, sts);
-
-		xvsec_mcapv2_module_reset(mcap_ctx);
-		pr_debug("%s: MCAP Reset is issued.\n", __func__);
-	}
-	/*disable the read*/
-	xvsec_mcapv2_rd_disable(mcap_ctx);
-	xvsec_util_fclose(filep);
-
-	return ret;
-}
-
-int xvsec_mcapv2_set_axi_cache_attr(
-	struct vsec_context *mcap_ctx, union axi_cache_attr *attr)
-{
-	int ret = 0;
-	uint8_t axi_cache;
-	uint8_t axi_prot;
-
-	axi_cache = attr->v2.axi_cache;
-	axi_prot = attr->v2.axi_prot;
-
-	pr_debug("%s: axi_cache:%d, axi_prot:%d\n",
-		__func__, (int)axi_cache, (int)axi_prot);
-	ret = xvsec_mcapv2_set_axi_cache_prot(mcap_ctx, axi_cache, axi_prot);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_wait_for_write_FIFO_empty(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	bool is_fifo_empty;
-	uint32_t wait_cnt;
-	uint32_t sts = 0;
-
-	wait_cnt = 0;
-	/** Wait until the Write FIFO is empty */
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	while (((is_fifo_empty = XVSEC_MCAPV2_IS_FIFO_EMPTY(sts)) != true)
-			&& (wait_cnt++ < MAX_OP_POLL_CNT)) {
-		/* Sleep for a while */
-		udelay(1);
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	}
-	if (is_fifo_empty != true) {
-		pr_err("%s: Timeout on FIFO Empty\n", __func__);
-		ret = -(ETIME);
-	}
-
-	return ret;
-}
-
-static int xvsec_mcapv2_wait_for_rw_complete(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	bool is_rw_done;
-	uint32_t wait_cnt;
-	uint32_t sts = 0;
-
-	/** Wait until the rw_complete bit sets */
-	wait_cnt = 0;
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	while (((is_rw_done = XVSEC_MCAPV2_IS_RW_COMPLETE(sts)) != true)
-			&& (wait_cnt++ < MAX_OP_POLL_CNT)) {
-		/* Sleep for a while */
-		udelay(1);
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	}
-	if (is_rw_done != true) {
-		pr_err("%s: Timeout on rw_complete\n", __func__);
-		ret = -(ETIME);
-	}
-
-	/*reset the module to clear the rw_complete bit*/
-	xvsec_mcapv2_module_reset(mcap_ctx);
-	pr_debug("%s: MCAP Reset is issued.\n", __func__);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_read_fifo_capacity(struct vsec_context *mcap_ctx,
-	uint8_t *fifo_capacity)
-{
-	int ret = 0;
-	uint32_t wait_cnt;
-	uint8_t fifo_occupancy;
-	uint32_t sts = 0;
-
-	wait_cnt = 0;
-	/** Wait if the Write FIFO occupancy reached to MAX */
-	xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-	XVSEC_MCAPV2_GET_FIFO_OCCUPANCY(sts, fifo_occupancy);
-	while ((fifo_occupancy >= MAX_FIFO_OCCUPANCY)) {
-
-		if (wait_cnt++ >= MAX_OP_POLL_CNT) {
-			pr_err("%s: Timeout on FIFO occupancy.\n",
-				__func__);
-			ret = -(ETIME);
-			break;
-		}
-		/* Sleep for a while */
-		udelay(1);
-
-		xvsec_mcapv2_read_status_reg(mcap_ctx, &sts);
-		XVSEC_MCAPV2_GET_FIFO_OCCUPANCY(sts, fifo_occupancy);
-	}
-
-	*fifo_capacity = (MAX_FIFO_OCCUPANCY - fifo_occupancy);
-
-	return ret;
-}
-
-
-
-static int xvsec_mcapv2_check_mcap_rw_status(struct vsec_context *mcap_ctx,
-	uint32_t sts, enum file_operation_status *op_status)
-{
-	int ret = 0;
-	uint8_t rw_status;
-
-	XVSEC_MCAPV2_GET_RW_STATUS(sts, rw_status);
-	if (rw_status != XVSEC_MCAPV2_RW_OK) {
-		*op_status =
-			(enum file_operation_status)rw_status;
-		pr_err("%s: Err :file download : RW Status : %d\n",
-				__func__, rw_status);
-		ret = -(EIO);
-	}
-
-	return ret;
-}
-
-static int xvsec_mcapv2_wr_enable(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data = 0;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-	/* MCAP Read Enable = 0 */
-	ctrl_data = ctrl_data & ~(XVSEC_MCAPV2_CTRL_READ_ENABLE);
-	/* MCAP Write Enable = 1 */
-	ctrl_data = ctrl_data | XVSEC_MCAPV2_CTRL_WRITE_ENABLE;
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data:0x%X\n",
-		__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-__attribute__((unused))
-static int xvsec_mcapv2_wr_disable(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data = 0;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-	/* MCAP Write Enable = 0 */
-	ctrl_data = ctrl_data & ~XVSEC_MCAPV2_CTRL_WRITE_ENABLE;
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data:0x%X\n",
-			__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_rd_enable(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data = 0;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-	/* MCAP Read Enable = 1 */
-	ctrl_data = ctrl_data | XVSEC_MCAPV2_CTRL_READ_ENABLE;
-	/* MCAP Write Enable = 0 */
-	ctrl_data = ctrl_data & ~(XVSEC_MCAPV2_CTRL_WRITE_ENABLE);
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data:0x%X\n",
-		__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_rd_disable(struct vsec_context *mcap_ctx)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data = 0;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-	/* MCAP Read Enable = 0 */
-	ctrl_data = ctrl_data & ~XVSEC_MCAPV2_CTRL_READ_ENABLE;
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data:0x%X\n",
-			__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-
-static int xvsec_mcapv2_set_mode(
-	struct vsec_context *mcap_ctx, enum axi_access_mode mode)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data = 0;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-
-	if (mode == MCAP_AXI_MODE_32B) {
-		/* 0 for 32-bit transactions  */
-		ctrl_data = ctrl_data & ~XVSEC_MCAPV2_CTRL_128B_MODE;
-	} else if (mode == MCAP_AXI_MODE_128B) {
-		/* 1 for 128-bit transactions */
-		ctrl_data = ctrl_data | XVSEC_MCAPV2_CTRL_128B_MODE;
-	}
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data:0x%X\n",
-			__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_set_address(
-	struct vsec_context *mcap_ctx, uint32_t address)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t rw_addr_reg;
-
-	rw_addr_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_RW_ADDRESS;
-
-	pr_debug("In %s: addr_reg:0x%X, addr:0x%X\n",
-		__func__, rw_addr_reg, address);
-
-	ret = pci_write_config_dword(pdev, rw_addr_reg, address);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_set_axi_cache_prot(struct vsec_context *mcap_ctx,
-	uint8_t axi_cache, uint8_t axi_prot)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t ctrl_reg;
-	uint32_t ctrl_data;
-
-	ctrl_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_CONTROL_REG;
-	pci_read_config_dword(pdev, ctrl_reg, &ctrl_data);
-
-	ctrl_data &= ~XVSEC_MCAPV2_CTRL_AXI_CACHE;
-	ctrl_data &= ~XVSEC_MCAPV2_CTRL_AXI_PROTECT;
-
-	/*configure AXI Cache*/
-
-	ctrl_data =
-		ctrl_data | ((axi_cache & XVSEC_MCAPV2_CTRL_AXI_CACHE_MASK) <<
-		XVSEC_MCAPV2_CTRL_AXI_CACHE_SHIFT);
-
-	/*configure AXI Protect*/
-	ctrl_data =
-		ctrl_data | ((axi_prot & XVSEC_MCAPV2_CTRL_AXI_PROTECT_MASK) <<
-		XVSEC_MCAPV2_CTRL_AXI_PROTECT_SHIFT);
-
-	pr_debug("In %s: ctrl_reg:0x%X, ctrl_data_cp:0x%X\n",
-		__func__, ctrl_reg, ctrl_data);
-	ret = pci_write_config_dword(pdev, ctrl_reg, ctrl_data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_write_data_reg(
-	struct vsec_context *mcap_ctx, uint32_t data)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t wr_data_reg;
-
-	wr_data_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_WRITE_DATA_REG;
-
-	pr_debug("In %s, wr_data_reg: 0x%X, data:0x%X\n",
-		__func__, wr_data_reg, data);
-
-	ret = pci_write_config_dword(pdev, wr_data_reg, data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_read_data_reg(
-	struct vsec_context *mcap_ctx, uint32_t *data)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t rd_data_reg;
-
-	rd_data_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_READ_DATA_REG;
-	ret = pci_read_config_dword(pdev, rd_data_reg, data);
-
-	pr_debug("In %s, rd_data_reg: 0x%X, data:0x%X\n",
-		__func__, rd_data_reg, *data);
-
-	return ret;
-}
-
-static int xvsec_mcapv2_read_status_reg(
-	struct vsec_context *mcap_ctx, uint32_t *sts)
-{
-	int ret = 0;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	uint32_t sts_reg;
-
-	sts_reg = mcap_ctx->vsec_offset + XVSEC_MCAPV2_STATUS_REG;
-	ret = pci_read_config_dword(pdev, sts_reg, sts);
-
-	pr_debug("In %s, sts_reg: 0x%X, data:0x%X\n", __func__, sts_reg, *sts);
-
-	return ret;
-}
-
-/*unsupported for versal devices */
-int xvsec_mcapv2_reset(struct vsec_context *mcap_ctx)
-{
-	pr_err("reset is not supported for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv2_full_reset(struct vsec_context *mcap_ctx)
-{
-	pr_err("Full reset is not supported for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv2_get_data_regs(struct vsec_context *mcap_ctx, uint32_t regs[4])
-{
-	pr_err("get_data_regs is not supported for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv2_get_fpga_regs(
-	struct vsec_context *mcap_ctx, union fpga_cfg_regs *regs)
-{
-	pr_err("fpga read is not supported for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_mcapv2_program_bitstream(
-	struct vsec_context *mcap_ctx, union bitstream_file *bit_files)
-{
-	pr_err("unsupported ioctl call for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_fpgav2_rd_cfg_addr(
-	struct vsec_context *mcap_ctx, union fpga_cfg_reg *cfg_reg)
-{
-	pr_err("fpga read is not supported for versal\n");
-	return -(EPERM);
-}
-
-int xvsec_fpgav2_wr_cfg_addr(
-	struct vsec_context *mcap_ctx, union fpga_cfg_reg *cfg_reg)
-{
-	pr_err("fpga write is not supported for versal\n");
-	return -(EPERM);
-}
-
-MODULE_LICENSE("Dual BSD/GPL");
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.h b/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.h
deleted file mode 100644
index 541371a..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/versal/xvsec_mcap_versal.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_MCAP_VERSAL_H__
-#define __XVSEC_MCAP_VERSAL_H__
-
-/**
- * @file xvsec_mcap_versal.h
- *
- * Xilinx XVSEC Driver header file for versal MCAP register definations.
- *
- * Header file *xvsec_mcap_versal.h* declares mcap register macros and
- * functions to use internal to driver to configure MCAP and AXI
- *
- */
-
-#define MCAPV2_PDI_FILE		".pdi"
-#define MAX_FILE_LEN		300
-
-#define MAX_FRAG_SZ			512 /** in bytes */
-/**
- * Versal S80 ES2 HW Limitation:
- * Increased Polling timout as a workaround due to HW limitation for SBI.
- * SBI is back pressuring at certain data locations in PDI
- * due to PLM decoding/processing involved. Due to this it's getting
- * timeout for rw_complete status for some of the data locations
- *
- */
-#define MAX_OP_POLL_CNT		100000
-#define MAX_FIFO_OCCUPANCY	16
-
-#define MIN_LEN_32B			4
-#define MIN_LEN_128B		16
-#define truncate_len_32b_mode(val)	\
-		do { \
-			if (val % 4) \
-				val = (val / 4) * 4 ;\
-		} while (0)
-#define truncate_len_128b_mode(val)	\
-	do { \
-		if (val % 16) \
-			val = (val / 16) * 16; \
-	} while (0)
-
-/* Versal SBI Control Register | Physical Addr: 0xF1220004 */
-/* Versal alias 0x1_0xxx_xxxx -> 0xFxxx_xxxx (128 MB)
- * MCAP can only address 32b, must use NMU remaps in HW to reach 48b address */
-#define SLAVE_BOOT_CTRL_OFFSET (0x4) 
-#define SBI_CTRL_IF_MASK (0x7 << 2)
-#define SBI_CTRL_IF_AXI  (0x2 << 2)
-#define SBI_CTRL_ENABLE  (0x1 << 0)
-
-/* MCAP Versal Register Offsets */
-#define XVSEC_MCAPV2_EXTENDED_HEADER	(0x0000)
-#define XVSEC_MCAPV2_VENDOR_HEADER	(0x0004)
-#define XVSEC_MCAPV2_STATUS_REG		(0x0008)
-#define XVSEC_MCAPV2_CONTROL_REG	(0x000c)
-#define XVSEC_MCAPV2_RW_ADDRESS		(0x0010)
-#define XVSEC_MCAPV2_WRITE_DATA_REG	(0x0014)
-#define XVSEC_MCAPV2_READ_DATA_REG	(0x0018)
-
-/* CTRL REG FIELDS */
-#define XVSEC_MCAPV2_CTRL_READ_ENABLE	(1 << 0)
-#define XVSEC_MCAPV2_CTRL_WRITE_ENABLE	(1 << 4)
-#define XVSEC_MCAPV2_CTRL_128B_MODE	(1 << 5)
-#define XVSEC_MCAPV2_CTRL_RESET		(1 << 8)
-#define XVSEC_MCAPV2_CTRL_AXI_CACHE	(0xF << 16) /* AXI Cache 19:16 */
-#define XVSEC_MCAPV2_CTRL_AXI_PROTECT	(0x7 << 20) /* AXI Protect 22:20 */
-
-#define XVSEC_MCAPV2_CTRL_AXI_CACHE_MASK 0xF /* AXI Cache MASK */
-#define XVSEC_MCAPV2_CTRL_AXI_CACHE_SHIFT 16 /* AXI Cache SHIFT */
-
-#define XVSEC_MCAPV2_CTRL_AXI_PROTECT_MASK 0x7 /* AXI PROTECT MASK */
-#define XVSEC_MCAPV2_CTRL_AXI_PROTECT_SHIFT 20 /* AXI PROTECT SHIFT */
-
-/** STATUS REG FIELDS */
-
-/** Read/Write Status 5:4 */
-#define XVSEC_MCAPV2_STATUS_RW_STS			(0x3 << 4)
-#define XVSEC_MCAPV2_STATUS_RW_COMPLETE			(0x1 << 8)
-/* FIFO Occupancy 20:16 */
-#define XVSEC_MCAPV2_STATUS_FIFO_OCCUPANCY		(0x1F << 16)
-#define XVSEC_MCAPV2_STATUS_WRITE_FIFO_FULL		(0x1 << 21)
-#define XVSEC_MCAPV2_STATUS_WRITE_FIFO_ALMOST_FULL	(0x1 << 22)
-#define XVSEC_MCAPV2_STATUS_WRITE_FIFO_ALMOST_EMPTY	(0x1 << 23)
-#define XVSEC_MCAPV2_STATUS_WRITE_FIFO_EMPTY		(0x1 << 24)
-#define XVSEC_MCAPV2_STATUS_WRITE_FIFO_OVERFLOW		(0x1 << 25)
-
-#define XVSEC_MCAPV2_STATUS_FIFO_OCCUPANCY_MASK		(0x1F)
-#define XVSEC_MCAPV2_STATUS_FIFO_OCCUPANCY_SHIFT	(16)
-
-#define XVSEC_MCAPV2_STATUS_RW_STS_MASK			(0x3)
-#define XVSEC_MCAPV2_STATUS_RW_STS_SHIFT		(4)
-
-#define XVSEC_MCAPV2_IS_RW_COMPLETE(sts) \
-	((sts & XVSEC_MCAPV2_STATUS_RW_COMPLETE) ? true : false)
-#define XVSEC_MCAPV2_IS_FIFO_FULL(sts) \
-	((sts & XVSEC_MCAPV2_STATUS_WRITE_FIFO_FULL) ? true : false)
-#define XVSEC_MCAPV2_IS_FIFO_EMPTY(sts) \
-	((sts & XVSEC_MCAPV2_STATUS_WRITE_FIFO_EMPTY) ? true : false)
-#define XVSEC_MCAPV2_IS_FIFO_OVERFLOW(sts) \
-	((sts & XVSEC_MCAPV2_STATUS_WRITE_FIFO_OVERFLOW) ? true : false)
-
-#define XVSEC_MCAPV2_GET_FIFO_OCCUPANCY(sts, occupancy) { \
-		occupancy = (uint8_t)(sts >> \
-			XVSEC_MCAPV2_STATUS_FIFO_OCCUPANCY_SHIFT) & \
-			XVSEC_MCAPV2_STATUS_FIFO_OCCUPANCY_MASK; \
-	}
-
-#define XVSEC_MCAPV2_GET_RW_STATUS(sts, rw_status) { \
-		rw_status = (uint8_t)(sts >>  \
-			XVSEC_MCAPV2_STATUS_RW_STS_SHIFT) & \
-			XVSEC_MCAPV2_STATUS_RW_STS_MASK; \
-	}
-
-enum xvsec_mcapv2_rw_status {
-	XVSEC_MCAPV2_RW_OK = 0,
-	XVSEC_MCAPV2_SLVERR,
-	XVSEC_MCAPV2_DECERR
-};
-
-int xvsec_mcapv2_module_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcapv2_get_regs(
-	struct vsec_context *mcap_ctx, union mcap_regs *regs);
-int xvsec_mcapv2_rd_cfg_addr(
-	struct vsec_context *mcap_ctx, union cfg_data *data);
-int xvsec_mcapv2_wr_cfg_addr(
-	struct vsec_context *mcap_ctx, union cfg_data *data);
-int xvsec_mcapv2_axi_rd_addr(
-	struct vsec_context *mcap_ctx, union axi_reg_data *cfg_reg);
-int xvsec_mcapv2_axi_wr_addr(
-	struct vsec_context *mcap_ctx, union axi_reg_data *cfg_reg);
-int xvsec_mcapv2_file_download(
-	struct vsec_context *mcap_ctx, union file_download_upload *file_info);
-int xvsec_mcapv2_file_upload(
-	struct vsec_context *mcap_ctx, union file_download_upload *file_info);
-int xvsec_mcapv2_set_axi_cache_attr(
-	struct vsec_context *mcap_ctx, union axi_cache_attr *attr);
-
-
-/*unsupported for versal devices */
-int xvsec_mcapv2_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcapv2_full_reset(struct vsec_context *mcap_ctx);
-int xvsec_mcapv2_get_data_regs(struct vsec_context *mcap_ctx, uint32_t regs[4]);
-int xvsec_mcapv2_get_fpga_regs(
-	struct vsec_context *mcap_ctx, union fpga_cfg_regs *regs);
-int xvsec_mcapv2_program_bitstream(
-	struct vsec_context *mcap_ctx, union bitstream_file *bit_files);
-int xvsec_fpgav2_rd_cfg_addr(
-	struct vsec_context *mcap_ctx, union fpga_cfg_reg *cfg_reg);
-int xvsec_fpgav2_wr_cfg_addr(
-	struct vsec_context *mcap_ctx, union fpga_cfg_reg *cfg_reg);
-
-#endif /* __XVSEC_MCAP_VERSAL_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.c b/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.c
deleted file mode 100644
index 0d898e8..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.c
+++ /dev/null
@@ -1,873 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "xvsec_drv.h"
-#include "xvsec_drv_int.h"
-#include "xvsec_cdev.h"
-#include "xvsec_mcap.h"
-#include "xvsec_mcap_us.h"
-#include "xvsec_mcap_versal.h"
-
-/**
- * XVSEC-MCAP character device name
- */
-#define XVSEC_MCAP_CDEV_NAME		"mcap"
-
-enum mcap_revison {
-	XVSEC_MCAP_US_REV = 0,
-	XVSEC_MCAP_USPLUS_REV = 1,
-	XVSEC_MCAP_VERSAL = 2,
-	XVSEC_MCAP_MAX_REV
-};
-
-struct file_priv_mcap {
-	void *ctx;
-};
-
-struct mcap_ioctl_ops {
-	uint32_t cmd;
-	long (*fpfunction)(struct file *filep,
-		uint32_t cmd, unsigned long arg);
-};
-
-struct mcap_fops {
-	int (*reset)(struct vsec_context *mcap_ctx);
-	int (*module_reset)(struct vsec_context *mcap_ctx);
-	int (*full_reset)(struct vsec_context *mcap_ctx);
-	int (*get_revision)(struct vsec_context *mcap_ctx,
-		uint16_t *vsec_id, uint16_t *rev_id);
-	int (*get_data_regs)(struct vsec_context *mcap_ctx,
-		uint32_t regs[4]);
-	int (*get_regs)(struct vsec_context *mcap_ctx,
-		union mcap_regs *regs);
-	int (*get_fpga_regs)(struct vsec_context *mcap_ctx,
-		union fpga_cfg_regs *regs);
-	int (*program_bitstream)(struct vsec_context *mcap_ctx,
-		union bitstream_file *bit_files);
-	int (*rd_cfg_addr)(struct vsec_context *mcap_ctx,
-		union cfg_data *data);
-	int (*wr_cfg_addr)(struct vsec_context *mcap_ctx,
-		union cfg_data *data);
-	int (*fpga_rd_cfg_addr)(struct vsec_context *mcap_ctx,
-		union fpga_cfg_reg *cfg_reg);
-	int (*fpga_wr_cfg_addr)(struct vsec_context *mcap_ctx,
-		union fpga_cfg_reg *cfg_reg);
-	int (*axi_rd_addr)(struct vsec_context *mcap_ctx,
-		union axi_reg_data *cfg_reg);
-	int (*axi_wr_addr)(struct vsec_context *mcap_ctx,
-		union axi_reg_data *cfg_reg);
-	int (*file_download)(struct vsec_context *mcap_ctx,
-		union file_download_upload *file);
-	int (*file_upload)(struct vsec_context *mcap_ctx,
-		union file_download_upload *file);
-	int (*set_axi_cache_attr)(struct vsec_context *mcap_ctx,
-		union axi_cache_attr *attr);
-};
-
-struct mcap_priv_ctx {
-	struct mcap_fops fops;
-	uint16_t vsec_id;
-	uint16_t rev_id;
-};
-
-static int xvsec_mcap_open(struct inode *inode,
-	struct file *filep);
-static int xvsec_mcap_close(struct inode *inode,
-	struct file *filep);
-static long xvsec_mcap_ioctl(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-
-static long xvsec_ioc_mcap_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_mcap_module_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_mcap_full_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_get_mcap_revision(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_get_data_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_get_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_get_fpga_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_prog_bitstream(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_rd_dev_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_wr_dev_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_rd_fpga_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_wr_fpga_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_read_axi_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_write_axi_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_file_download(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_file_upload(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-static long xvsec_ioc_set_axi_attr(struct file *filep,
-	uint32_t cmd, unsigned long arg);
-
-static int xvsec_mcap_get_revision(struct vsec_context *mcap_ctx,
-	uint16_t *vsec_id, uint16_t *rev_id);
-
-static int xvsec_mcap_open(struct inode *inode, struct file *filep)
-{
-	int ret = 0;
-	struct vsec_context	*mcap_ctx;
-	struct file_priv_mcap	*priv;
-
-	mcap_ctx = container_of(inode->i_cdev,
-			struct vsec_context, char_dev.cdev);
-
-	pr_info("%s: mcap_ctx address : %p\n", __func__, mcap_ctx);
-
-	spin_lock(&mcap_ctx->lock);
-
-	if (mcap_ctx->fopen_cnt != 0) {
-		ret = -(EBUSY);
-		goto CLEANUP;
-	}
-
-	priv = kzalloc(sizeof(struct file_priv_mcap), GFP_KERNEL);
-	if (priv == NULL) {
-		ret = -(ENOMEM);
-		goto CLEANUP;
-	}
-
-	mcap_ctx->fopen_cnt++;
-	priv->ctx = (void *)mcap_ctx;
-	filep->private_data = priv;
-
-	pr_debug("%s success\n", __func__);
-
-CLEANUP:
-	spin_unlock(&mcap_ctx->lock);
-	return	ret;
-}
-
-static int xvsec_mcap_close(struct inode *inode, struct file *filep)
-{
-	struct file_priv_mcap	*priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-
-	spin_lock(&mcap_ctx->lock);
-
-	if (mcap_ctx->fopen_cnt == 0) {
-		pr_warn("File Open/close mismatch\n");
-	} else {
-		mcap_ctx->fopen_cnt--;
-		pr_debug("%s success\n", __func__);
-	}
-	kfree(priv);
-
-	spin_unlock(&mcap_ctx->lock);
-
-	return 0;
-}
-
-static const struct mcap_ioctl_ops mcap_ioctl_ops[] = {
-	{IOC_MCAP_RESET,		xvsec_ioc_mcap_reset},
-	{IOC_MCAP_MODULE_RESET,		xvsec_ioc_mcap_module_reset},
-	{IOC_MCAP_FULL_RESET,		xvsec_ioc_mcap_full_reset},
-	{IOC_MCAP_GET_REVISION,		xvsec_ioc_get_mcap_revision},
-	{IOC_MCAP_GET_DATA_REGISTERS,	xvsec_ioc_get_data_regs},
-	{IOC_MCAP_GET_REGISTERS,	xvsec_ioc_get_regs},
-	{IOC_MCAP_GET_FPGA_REGISTERS,	xvsec_ioc_get_fpga_regs},
-	{IOC_MCAP_PROGRAM_BITSTREAM,	xvsec_ioc_prog_bitstream},
-	{IOC_MCAP_READ_DEV_CFG_REG,	xvsec_ioc_rd_dev_cfg_reg},
-	{IOC_MCAP_WRITE_DEV_CFG_REG,	xvsec_ioc_wr_dev_cfg_reg},
-	{IOC_MCAP_READ_FPGA_CFG_REG,	xvsec_ioc_rd_fpga_cfg_reg},
-	{IOC_MCAP_WRITE_FPGA_CFG_REG,	xvsec_ioc_wr_fpga_cfg_reg},
-	{IOC_MCAP_READ_AXI_REG,		xvsec_ioc_read_axi_reg},
-	{IOC_MCAP_WRITE_AXI_REG,	xvsec_ioc_write_axi_reg},
-	{IOC_MCAP_FILE_DOWNLOAD,	xvsec_ioc_file_download},
-	{IOC_MCAP_FILE_UPLOAD,		xvsec_ioc_file_upload},
-	{IOC_MCAP_SET_AXI_ATTR,		xvsec_ioc_set_axi_attr},
-};
-
-static long xvsec_ioc_mcap_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-
-	pr_debug("ioctl : IOC_MCAP_RESET\n");
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->reset(mcap_ctx);
-	spin_unlock(&mcap_ctx->lock);
-
-	return ret;
-
-}
-
-static long xvsec_ioc_mcap_module_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-
-	pr_debug("ioctl : IOC_MCAP_MODULE_RESET\n");
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->module_reset(mcap_ctx);
-	spin_unlock(&mcap_ctx->lock);
-
-	return ret;
-}
-
-static long xvsec_ioc_mcap_full_reset(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-
-	pr_debug("ioctl : IOC_MCAP_FULL_RESET\n");
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->full_reset(mcap_ctx);
-	spin_unlock(&mcap_ctx->lock);
-
-	return ret;
-}
-
-static long xvsec_ioc_get_mcap_revision(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	uint16_t vsec_id = 0;
-	uint16_t rev_id = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-
-	pr_debug("ioctl : IOC_MCAP_GET_REVISION\n");
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->get_revision(mcap_ctx, &vsec_id, &rev_id);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret == 0) {
-		pr_debug("vsec_id: %d, rev_id: %d\n", vsec_id, rev_id);
-		ret = copy_to_user((void __user *)arg,
-			(void *)&rev_id, sizeof(uint16_t));
-	}
-
-	return ret;
-}
-
-static long xvsec_ioc_get_data_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	uint32_t read_data_reg[XVSEC_MCAP_DATA_REG_CNT];
-
-	pr_debug("ioctl : IOC_MCAP_GET_DATA_REGISTERS\n");
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->get_data_regs(mcap_ctx, read_data_reg);
-	spin_unlock(&mcap_ctx->lock);
-
-	memset(read_data_reg, 0, sizeof(read_data_reg));
-	if (ret == 0) {
-		ret = copy_to_user((void __user *)arg, (void *)read_data_reg,
-			sizeof(uint32_t)*XVSEC_MCAP_DATA_REG_CNT);
-	}
-
-	return ret;
-
-}
-
-static long xvsec_ioc_get_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union mcap_regs mcap_regs;
-
-	pr_debug("ioctl : IOC_MCAP_GET_REGISTERS\n");
-
-	memset(&mcap_regs, 0, sizeof(union mcap_regs));
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->get_regs(mcap_ctx, &mcap_regs);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret == 0) {
-		ret = copy_to_user((void __user *)arg,
-			(void *)&mcap_regs, sizeof(union mcap_regs));
-	}
-
-	return ret;
-}
-
-static long xvsec_ioc_get_fpga_regs(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union fpga_cfg_regs	fpga_cfg_regs;
-
-	pr_debug("ioctl : IOC_MCAP_GET_FPGA_REGISTERS\n");
-
-	memset(&fpga_cfg_regs, 0, sizeof(union fpga_cfg_regs));
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->get_fpga_regs(mcap_ctx, &fpga_cfg_regs);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret == 0) {
-		ret = copy_to_user((void __user *)arg,
-			(void *)&fpga_cfg_regs,
-			sizeof(union fpga_cfg_regs));
-	}
-
-	return ret;
-}
-
-static long xvsec_ioc_prog_bitstream(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union bitstream_file	bit_files;
-
-	pr_debug("ioctl : IOC_MCAP_PROGRAM_BITSTREAM\n");
-	ret = copy_from_user(&bit_files, (void __user *)arg,
-		sizeof(union bitstream_file));
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->program_bitstream(mcap_ctx, &bit_files);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret < 0)
-		goto CLEANUP;
-
-	ret = copy_to_user((void __user *)arg, (void *)&bit_files,
-		sizeof(union bitstream_file));
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_rd_dev_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union cfg_data	rw_cfg_data;
-
-	pr_debug("ioctl : IOC_MCAP_READ_DEV_CFG_REG\n");
-
-	ret = copy_from_user(&rw_cfg_data,
-		(void __user *)arg, sizeof(union cfg_data));
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->rd_cfg_addr(mcap_ctx, &rw_cfg_data);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret < 0)
-		goto CLEANUP;
-
-	ret = copy_to_user((void __user *)arg,
-		(void *)&rw_cfg_data, sizeof(union cfg_data));
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_wr_dev_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union cfg_data	rw_cfg_data;
-
-	pr_debug("ioctl : IOC_MCAP_WRITE_DEV_CFG_REG\n");
-
-	ret = copy_from_user(&rw_cfg_data,
-		(void __user *)arg, sizeof(union cfg_data));
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->wr_cfg_addr(mcap_ctx, &rw_cfg_data);
-	spin_unlock(&mcap_ctx->lock);
-
-CLEANUP:
-	return ret;
-
-}
-
-static long xvsec_ioc_rd_fpga_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-		(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union fpga_cfg_reg fpga_cfg_data;
-
-	pr_debug("ioctl : IOC_MCAP_READ_FPGA_CFG_REG\n");
-	ret = copy_from_user(&fpga_cfg_data,
-		(void __user *)arg, sizeof(union fpga_cfg_reg));
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->fpga_rd_cfg_addr(mcap_ctx, &fpga_cfg_data);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	ret = copy_to_user((void __user *)arg,
-		(void *)&fpga_cfg_data, sizeof(union fpga_cfg_reg));
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_wr_fpga_cfg_reg(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union fpga_cfg_reg fpga_cfg_data;
-
-	pr_debug("ioctl : IOC_MCAP_WRITE_FPGA_CFG_REG\n");
-
-	ret = copy_from_user(&fpga_cfg_data,
-		(void __user *)arg, sizeof(union fpga_cfg_reg));
-
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->fpga_wr_cfg_addr(mcap_ctx, &fpga_cfg_data);
-	spin_unlock(&mcap_ctx->lock);
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_read_axi_reg(struct file *filep,
-		uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union axi_reg_data axi_rd_info;
-
-	pr_debug("ioctl : IOC_MCAP_READ_AXI_REG\n");
-
-	ret = copy_from_user(&axi_rd_info,
-		(void __user *)arg, sizeof(union axi_reg_data));
-	if (ret != 0)
-		goto CLEANUP;
-
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->axi_rd_addr(mcap_ctx, &axi_rd_info);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret == 0) {
-		ret = copy_to_user((void __user *)arg,
-			(void *)&axi_rd_info, sizeof(union axi_reg_data));
-	}
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_write_axi_reg(struct file *filep,
-		uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx = (
-			struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union axi_reg_data axi_wr_info;
-
-	pr_debug("ioctl : IOC_MCAP_WRITE_AXI_REG\n");
-
-	ret = copy_from_user(&axi_wr_info,
-		(void __user *)arg, sizeof(union axi_reg_data));
-	if (ret != 0)
-		goto CLEANUP;
-
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->axi_wr_addr(mcap_ctx, &axi_wr_info);
-	spin_unlock(&mcap_ctx->lock);
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_file_download(struct file *filep,
-		uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	int rv = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union file_download_upload file_args;
-
-	pr_debug("ioctl : IOC_MCAP_FILE_DOWNLOAD\n");
-
-	ret = copy_from_user(&file_args,
-			(void __user *)arg, sizeof(union file_download_upload));
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->file_download(mcap_ctx, &file_args);
-	spin_unlock(&mcap_ctx->lock);
-
-	rv = copy_to_user((void __user *)arg, (void *)&file_args,
-			sizeof(union file_download_upload));
-
-	if (rv != 0)
-		ret = rv;
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_file_upload(struct file *filep,
-		uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	int rv = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union file_download_upload file_args;
-
-	pr_debug("ioctl : IOC_MCAP_FILE_UPLOAD\n");
-
-	ret = copy_from_user(&file_args,
-		(void __user *)arg, sizeof(union file_download_upload));
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->file_upload(mcap_ctx, &file_args);
-	spin_unlock(&mcap_ctx->lock);
-
-	rv = copy_to_user((void __user *)arg, (void *)&file_args,
-			sizeof(union file_download_upload));
-
-	if (rv != 0)
-		ret = rv;
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_ioc_set_axi_attr(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	struct file_priv_mcap *priv = filep->private_data;
-	struct vsec_context *mcap_ctx = (struct vsec_context *)priv->ctx;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-		(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-	struct mcap_fops *mcap_fops = (struct mcap_fops *)&mcap_priv_ctx->fops;
-	union axi_cache_attr axi_attr_info;
-
-	pr_debug("ioctl : IOC_MCAP_SET_AXI_ATTR\n");
-
-	ret = copy_from_user(&axi_attr_info,
-			(void __user *)arg, sizeof(union axi_cache_attr));
-	if (ret != 0)
-		goto CLEANUP;
-
-	spin_lock(&mcap_ctx->lock);
-	ret = mcap_fops->set_axi_cache_attr(mcap_ctx, &axi_attr_info);
-	spin_unlock(&mcap_ctx->lock);
-
-	if (ret != 0)
-		goto CLEANUP;
-
-CLEANUP:
-	return ret;
-}
-
-static long xvsec_mcap_ioctl(struct file *filep,
-	uint32_t cmd, unsigned long arg)
-{
-	int ret = 0;
-	int index, cmd_cnt;
-	bool cmd_found = false;
-
-	cmd_cnt = ARRAY_SIZE(mcap_ioctl_ops);
-	for (index = 0; index < cmd_cnt; index++) {
-		if (mcap_ioctl_ops[index].cmd == cmd) {
-			cmd_found = true;
-			ret = mcap_ioctl_ops[index].fpfunction(filep, cmd, arg);
-			break;
-		}
-	}
-	if (cmd_found == false)
-		ret = -(EINVAL);
-
-	return ret;
-}
-
-static int xvsec_mcap_get_revision(struct vsec_context *mcap_ctx,
-	uint16_t *vsec_id, uint16_t *rev_id)
-{
-	int rv = 0;
-	uint16_t vendor_offset;
-	uint32_t vendor_data;
-	struct pci_dev *pdev = mcap_ctx->pdev;
-	static bool is_rev_avail;
-	struct mcap_priv_ctx *mcap_priv_ctx =
-			(struct mcap_priv_ctx *)mcap_ctx->vsec_priv;
-
-	if (is_rev_avail == false) {
-		vendor_offset =
-			mcap_ctx->vsec_offset + XVSEC_MCAP_VENDOR_HEADER;
-
-		rv = pci_read_config_dword(pdev, vendor_offset, &vendor_data);
-
-		mcap_priv_ctx->vsec_id =
-			(vendor_data & XVSEC_MCAP_VSEC_ID_POS) >>
-			XVSEC_MCAP_VSEC_ID_SHIFT;
-		mcap_priv_ctx->rev_id =
-			(vendor_data & XVSEC_MCAP_REV_ID_POS) >>
-			XVSEC_MCAP_REV_ID_SHIFT;
-
-		is_rev_avail = true;
-		pr_info("%s: Version details vsec_id:%d, rev_id: %d\n",
-			__func__, *vsec_id, *rev_id);
-	} else {
-		*vsec_id = mcap_priv_ctx->vsec_id;
-		*rev_id = mcap_priv_ctx->rev_id;
-
-		pr_info("%s: vsec_id:%d, rev_id: %d\n",
-			__func__, *vsec_id, *rev_id);
-	}
-
-	return rv;
-}
-
-static const struct file_operations xvsec_mcap_fops = {
-	.owner		= THIS_MODULE,
-	.open		= xvsec_mcap_open,
-	.release	= xvsec_mcap_close,
-	.unlocked_ioctl	= xvsec_mcap_ioctl,
-};
-
-int xvsec_mcap_module_init(struct vsec_context *mcap_ctx)
-{
-	int rv;
-	struct mcap_priv_ctx *mcap_priv_ctx;
-	struct mcap_fops *mcap_fops;
-
-	pr_info("%s: mcap_ctx address : %p\n", __func__, mcap_ctx);
-
-	spin_lock_init(&mcap_ctx->lock);
-	mcap_priv_ctx = kzalloc(sizeof(struct mcap_priv_ctx), GFP_KERNEL);
-	if (mcap_priv_ctx == NULL)
-		return -(ENOMEM);
-
-	/* Private context is getting used by
-	 * xvsec_mcap_get_revision to save version info
-	 */
-	mcap_ctx->vsec_priv = (void *)mcap_priv_ctx;
-	rv = xvsec_mcap_get_revision(mcap_ctx,
-		&mcap_priv_ctx->vsec_id, &mcap_priv_ctx->rev_id);
-	if (rv < 0) {
-		pr_err("xvsec_mcap_get_version failed with error : %d\n", rv);
-		goto CLEANUP;
-	}
-
-	if (mcap_priv_ctx->vsec_id != mcap_ctx->vsec_ops->vsec_id) {
-		pr_err("VSEC ID Mismatch : Context VSEC %d, Actual VSEC : %d\n",
-			mcap_ctx->vsec_ops->vsec_id, mcap_priv_ctx->vsec_id);
-		rv = -(EPERM);
-		goto CLEANUP;
-	}
-
-	if (mcap_priv_ctx->rev_id >= XVSEC_MCAP_MAX_REV) {
-		pr_err("Valid MCAP Rev ID not found, rev_id : %d\n",
-			mcap_priv_ctx->rev_id);
-		rv = -(ENXIO);
-		goto CLEANUP;
-	}
-
-	mcap_fops = &mcap_priv_ctx->fops;
-	if ((mcap_priv_ctx->rev_id == XVSEC_MCAP_US_REV) ||
-		(mcap_priv_ctx->rev_id == XVSEC_MCAP_USPLUS_REV)) {
-		mcap_fops->reset = xvsec_mcap_reset;
-		mcap_fops->module_reset = xvsec_mcap_module_reset;
-		mcap_fops->full_reset = xvsec_mcap_full_reset;
-		mcap_fops->get_revision = xvsec_mcap_get_revision;
-		mcap_fops->get_data_regs = xvsec_mcap_get_data_regs;
-		mcap_fops->get_regs = xvsec_mcap_get_regs;
-		mcap_fops->get_fpga_regs = xvsec_mcap_get_fpga_regs;
-		mcap_fops->program_bitstream = xvsec_mcap_program_bitstream;
-		mcap_fops->rd_cfg_addr = xvsec_mcap_rd_cfg_addr;
-		mcap_fops->wr_cfg_addr = xvsec_mcap_wr_cfg_addr;
-		mcap_fops->fpga_rd_cfg_addr = xvsec_fpga_rd_cfg_addr;
-		mcap_fops->fpga_wr_cfg_addr = xvsec_fpga_wr_cfg_addr;
-		mcap_fops->axi_rd_addr = xvsec_mcapv1_axi_rd_addr;
-		mcap_fops->axi_wr_addr = xvsec_mcapv1_axi_wr_addr;
-		mcap_fops->file_download = xvsec_mcapv1_file_download;
-		mcap_fops->file_upload	= xvsec_mcapv1_file_upload;
-		mcap_fops->set_axi_cache_attr = xvsec_mcapv1_set_axi_cache_attr;
-
-
-	} else if (mcap_priv_ctx->rev_id == XVSEC_MCAP_VERSAL) {
-		mcap_fops->reset = xvsec_mcapv2_reset;
-		mcap_fops->module_reset = xvsec_mcapv2_module_reset;
-		mcap_fops->full_reset = xvsec_mcapv2_full_reset;
-		mcap_fops->get_revision = xvsec_mcap_get_revision;
-		mcap_fops->get_data_regs = xvsec_mcapv2_get_data_regs;
-		mcap_fops->get_regs = xvsec_mcapv2_get_regs;
-		mcap_fops->get_fpga_regs = xvsec_mcapv2_get_fpga_regs;
-		mcap_fops->program_bitstream = xvsec_mcapv2_program_bitstream;
-		mcap_fops->rd_cfg_addr = xvsec_mcapv2_rd_cfg_addr;
-		mcap_fops->wr_cfg_addr = xvsec_mcapv2_wr_cfg_addr;
-		mcap_fops->fpga_rd_cfg_addr = xvsec_fpgav2_rd_cfg_addr;
-		mcap_fops->fpga_wr_cfg_addr = xvsec_fpgav2_wr_cfg_addr;
-		mcap_fops->axi_rd_addr = xvsec_mcapv2_axi_rd_addr;
-		mcap_fops->axi_wr_addr = xvsec_mcapv2_axi_wr_addr;
-		mcap_fops->file_download = xvsec_mcapv2_file_download;
-		mcap_fops->file_upload	= xvsec_mcapv2_file_upload;
-		mcap_fops->set_axi_cache_attr = xvsec_mcapv2_set_axi_cache_attr;
-	}
-
-	rv = xvsec_cdev_create(mcap_ctx->pdev, &mcap_ctx->char_dev,
-		&xvsec_mcap_fops, XVSEC_MCAP_CDEV_NAME);
-	if (rv < 0) {
-		pr_err("xvsec_cdev_create failed with error : %d\n", rv);
-		goto CLEANUP;
-	}
-
-	return 0;
-
-CLEANUP:
-	kfree(mcap_ctx->vsec_priv);
-	mcap_ctx->vsec_priv = NULL;
-	return rv;
-}
-
-void xvsec_mcap_module_exit(struct vsec_context *mcap_ctx)
-{
-	pr_debug("%s\n", __func__);
-
-	xvsec_cdev_remove(&mcap_ctx->char_dev);
-
-	if (mcap_ctx->vsec_priv == NULL)
-		pr_err("mcap_ctx->vsec_priv is NULL\n");
-
-	/** Checkpatch : kfree(NULL) is safe */
-	kfree(mcap_ctx->vsec_priv);
-	mcap_ctx->vsec_priv = NULL;
-}
-
-MODULE_LICENSE("Dual BSD/GPL");
diff --git a/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.h b/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.h
deleted file mode 100644
index fc03986..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_mcap/xvsec_mcap.h
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020-2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_MCAP_H__
-#define __XVSEC_MCAP_H__
-
-/**
- * @file xvsec_mcap.h
- *
- * Xilinx XVSEC MCAP Library Interface Definitions
- *
- * Header file *xvsec_mcap.h* defines data structures and ioctl codes
- * exported by Xilinx XVSEC driver for MCAP functionality.
- *
- * These data structures and ioctl codes can be used by user space
- * applications to carryout the XVSEC-MCAP functionality
- *
- * XVSEC-MCAP IP has two versions V1 & V2.
- *     - Version 1 implementation of MCAP is targeted for Xilinx US/US+ devices
- *     - Version 2 implementation of MCAP is targeted for Xilinx Versal devices
- */
-
-/** @defgroup xvsec_mcap_enums Enumerations
- */
-/** @defgroup xvsec_mcap_union Data Structures
- */
-
-/**
- * @defgroup xvsec_defines Definitions
- * @{
- */
-
-/**
- * XVSEC-MCAP ioctl magic character
- */
-#define XVSEC_MCAP_IOC_MAGIC		'm'
-
-/** @} */
-
-/**
- * @enum - bitstream_program_status
- * @brief	Enumeration for XVSEC-MCAP bitstream program Result
- *
- * @ingroup xvsec_mcap_enums
- */
-enum bitstream_program_status {
-	/** Programming Success Indication */
-	MCAP_BITSTREAM_PROGRAM_SUCCESS = 0,
-	/** Programming Failure Indication */
-	MCAP_BITSTREAM_PROGRAM_FAILURE = 1
-};
-
-/**
- * @enum - axi_access_mode
- * @brief	AXI Address Access mode used to access
- *		AXI sub-devices via XVSEC-MCAP interface
- *
- * @ingroup xvsec_mcap_enums
- */
-enum axi_access_mode {
-	/** 32-bit AXI address mode */
-	MCAP_AXI_MODE_32B = 0,
-	/** 128-bit AXI address mode */
-	MCAP_AXI_MODE_128B,
-};
-
-/**
- * @enum - axi_address_type
- * @brief	Indicates the AXI device access type.
- *
- *		FIFO type devices support fixed mode where the address is fixed.
- *
- *		Other types of device support increment address type
- *		where the address to be incremented for every transaction.
- *
- * @ingroup xvsec_mcap_enums
- */
-enum axi_address_type {
-	/** Fixed address type for FIFO type devices */
-	FIXED_ADDRESS = 0,
-	/** Increment address type for other devices */
-	INCREMENT_ADDRESS
-};
-
-/**
- * @enum - data_transfer_mode
- * @brief	Indicates mode of data transfer for
- *		download functionality.
- *
- * @ingroup xvsec_mcap_enums
- **/
-enum data_transfer_mode {
-	/** Fast Transfer mode
-	 *  and the default one when not specified
-	 */
-	DATA_TRANSFER_MODE_FAST = 0,
-	/** Slow Transfer mode */
-	DATA_TRANSFER_MODE_SLOW
-};
-
-/**
- * @enum - file_operation_status
- * @brief	Indicates File operation(Download/Upload) result
- *
- * @ingroup xvsec_mcap_enums
- **/
-enum file_operation_status {
-	/** File Operation Successful */
-	FILE_OP_SUCCESS = 0,
-	/** File Operation failed with XVSEC-MCAP error SLVERR */
-	FILE_OP_FAIL_SLVERR = 1,
-	/** File Operation failed with XVSEC-MCAP error DECERR */
-	FILE_OP_FAIL_DECERR = 2,
-	FILE_OP_RESERVED = 3,
-	/** File operation failed */
-	FILE_OP_FAILED,
-	/** Zero size file is provided as input */
-	FILE_OP_ZERO_FSIZE,
-	/** Valid File size is not provided
-	 *
-	 * for 32-bit mode, file size must be multiple of 32-bits / 4 bytes
-	 *
-	 * for 128-bit mode, file size must be multiple of 128-bits / 16 bytes
-	 */
-	FILE_OP_INVALID_FSIZE,
-	/** File operation failed with XVSEC-MCAP HW timeout on completion */
-	FILE_OP_HW_BUSY,
-	/** Provided file path is too long to fit in internal buffers */
-	FILE_PATH_TOO_LONG
-};
-
-/*
- * FIXME:
- * There is issue with Sphinx document generation with union
- * To generate Sphinx document purposefully changed all @union to @struct
- * Need to be updated with @union when there is fix from Documentation team
- */
-
-/**
- * @struct - mcap_regs
- * @brief	MCAP register set
- *		V1 corresponds to US/US+ devices
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_mcap_union
- */
-union mcap_regs {
-	/** MCAP register sets for US/US+ device*/
-	struct {
-		/** Valid flag to indicate registers validity */
-		uint32_t	valid;
-		/** Extended capability header register */
-		uint32_t	ext_cap_header;
-		/** Vendor Specific header register */
-		uint32_t	vendor_header;
-		/** FPGA JTAG ID register */
-		uint32_t	fpga_jtag_id;
-		/** FPGA bit-stream version register */
-		uint32_t	fpga_bit_ver;
-		/** Status Register */
-		uint32_t	status_reg;
-		/** Control Register */
-		uint32_t	control_reg;
-		/** Write Data Register */
-		uint32_t	wr_data_reg;
-		/** Read Data Register: 4 data words */
-		uint32_t	rd_data_reg[4];
-	} v1;
-	/** MCAP register sets for Versal device */
-	struct {
-		/** Valid flag to indicate registers validity */
-		uint32_t	valid;
-		/** Extended capability header register */
-		uint32_t	ext_cap_header;
-		/** Vendor Specific header register */
-		uint32_t	vendor_header;
-		/** Status Register */
-		uint32_t	status_reg;
-		/** Control Register */
-		uint32_t	control_reg;
-		/** RW Address register */
-		uint32_t	address_reg;
-		/** Write Data Register */
-		uint32_t	wr_data_reg;
-		/** Read Data Register */
-		uint32_t	rd_data_reg;
-	} v2;
-};
-
-/**
- * @struct - bitstream_file
- * @brief	XVSEC-MCAP bitstream parameters for programming
- *		V1 corresponds to US/US+ devices
- *
- * @ingroup xvsec_mcap_union
- */
-union bitstream_file {
-	/** MCAP bitstream parameters for US/US+ */
-	struct {
-		/** Partial clear bitstream file to
-		 * program ultrascale devices
-		 */
-		char *partial_clr_file;
-		/** bitstream file to program */
-		char *bitstream_file;
-		/** Status of the bitstream programming */
-		enum bitstream_program_status status;
-	} v1;
-};
-
-/**
- * @struct - cfg_data
- * @brief	Parameters needed to perform MCAP read and writes
- *		V1 corresponds to US/US+ devices
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_mcap_union
- */
-union cfg_data {
-	/** MCAP register read/write parameters for US/US+ and Versal */
-	struct {
-		/** access field. 'b' for byte access, 'h'for half word access,
-		 *  'w' for word access
-		 */
-		char		access;
-		/** VSEC address offset */
-		uint16_t	offset;
-		/** data field holds the info to write into the provided offset
-		 *  for Write operation.
-		 *  Holds the info at the provided offset for read operation
-		 */
-		uint32_t	data;
-	} v1, v2;
-};
-
-/**
- * @struct - fpga_cfg_reg
- * @brief	FPGA configuration parameters to perform read and writes
- *		V1 corresponds to US/US+ devices
- *
- * @ingroup xvsec_mcap_union
- */
-union fpga_cfg_reg {
-	/**  FPGA configuration parameters for US/US+ Devices */
-	struct {
-		/** FPGA configuration register number */
-		uint16_t	offset;
-		/** data field holds the info to write into the provided offset
-		 *  for Write operation.
-		 *  Holds the info at the provided offset for read operation
-		 */
-		uint32_t	data;
-	} v1;
-};
-
-/**
- * @struct - fpga_cfg_regs
- * @brief	FPGA configuration register set(See UG570 for more information)
- *		V1 corresponds to US/US+ devices
- *
- * @ingroup xvsec_mcap_union
- */
-union fpga_cfg_regs {
-	/**  FPGA configuration register for US/US+ Devices */
-	struct {
-		/** Valid flag to indicate registers validity */
-		uint32_t valid;
-		/** CRC Register */
-		uint32_t crc;
-		/** Frame Address Register */
-		uint32_t far;
-		/** Frame Data Register,
-		 *  Input Register (write configuration data)
-		 */
-		uint32_t fdri;
-		/** Frame Data Register,
-		 *  Output Register (read configuration data)
-		 */
-		uint32_t fdro;
-		/** Command Register */
-		uint32_t cmd;
-		/** Control Register 0 */
-		uint32_t ctl0;
-		/** Mask Register for CTL0 and CTL1 Registers */
-		uint32_t mask;
-		/** Status Register */
-		uint32_t stat;
-		/** Legacy Output Register for Daisy Chain */
-		uint32_t lout;
-		/** Configuration Option Register 0 */
-		uint32_t cor0;
-		/** Multi Frame Write Register */
-		uint32_t mfwr;
-		/** Initial CBC Value Register */
-		uint32_t cbc;
-		/** Device ID Register */
-		uint32_t idcode;
-		/** User Access Register */
-		uint32_t axss;
-		/** Configuration Option Register 1 */
-		uint32_t cor1;
-		/** Warm Boot Start Address Register */
-		uint32_t wbstar;
-		/** Watchdog Timer Register */
-		uint32_t timer;
-		/** Scratch Pad Register for Dummy Read and Writes */
-		uint32_t scratchpad;
-		/** Boot History Status Register */
-		uint32_t bootsts;
-		/** Control Register 1 */
-		uint32_t ctl1;
-		/** BPI/SPI Configuration Options Register */
-		uint32_t bspi;
-	} v1;
-};
-
-/**
- * @struct - axi_reg_data
- * @brief	AXI register access structure (for Read & Writes)
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_mcap_union
- */
-union axi_reg_data {
-	/** AXI register access parameters for Versal Devices */
-	struct {
-		/** Holds AXI sub-device operating mode (32 bit /128 bit),
-		 *  128 bit mode only supported for write operation
-		 */
-		enum axi_access_mode mode;
-		/** AXI register address */
-		uint32_t address;
-		/** data field holds the data to write into the provided
-		 *  address for Write operation.
-		 *  Holds the data at the provided address for read operation
-		 */
-		uint32_t data[4];
-	} v2;
-};
-
-/**
- * @struct - file_download_upload
- * @brief	File download & upload parameters for sub-devices
- *		connected via NOC
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_mcap_union
- */
-union file_download_upload {
-	/** File download & upload parameters for Versal Devices */
-	struct {
-		/** Holds  AXI sub-device operating mode (32 bit / 128 bit),
-		 *  128 bit mode only supported for write operation
-		 */
-		enum axi_access_mode mode;
-		/** Holds address type (fixed or increment ) */
-		enum axi_address_type addr_type;
-		/** Holds address from where download/upload should happen */
-		uint32_t address;
-		/** File to download/upload */
-		char *file_name;
-		/** Data length read in bytes (for upload option) */
-		size_t length;
-		/** data transfer mode */
-		enum data_transfer_mode tr_mode;
-		/** SBI reg block address */
-		uint32_t sbi_address;
-		/** File Download/Upload Status */
-		enum file_operation_status op_status;
-		/** upload/download failed at byte index */
-		size_t err_index;
-	} v2;
-};
-
-/**
- * @struct - axi_cache_attr
- * @brief	AXI cache and protection settings
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_mcap_union
- */
-union axi_cache_attr {
-	/** AXI cache attributes for Versal Devices */
-	struct {
-		/** AXI cache bits */
-		uint8_t axi_cache;
-		/** AXI protection bits */
-		uint8_t axi_prot;
-	} v2;
-};
-
-/** MCAP operation codes to be used with ioctl codes */
-#define CODE_MCAP_RESET			0
-#define CODE_MCAP_MODULE_RESET		1
-#define CODE_MCAP_FULL_RESET		2
-#define CODE_MCAP_GET_DATA_REG		3
-#define CODE_MCAP_GET_REG		4
-#define CODE_MCAP_GET_FPGA_REG		5
-#define CODE_MCAP_PROG_BITFILE		6
-#define CODE_MCAP_RD_DEV_CFG_REG	7
-#define	CODE_MCAP_WR_DEV_CFG_REG	8
-#define CODE_MCAP_RD_FPGA_REG		9
-#define CODE_MCAP_WR_FPGA_REG		10
-#define CODE_MCAP_RD_AXI_REG		11
-#define CODE_MCAP_WR_AXI_REG		12
-#define CODE_MCAP_FILE_DOWNLOAD		13
-#define CODE_MCAP_FILE_UPLOAD		14
-#define CODE_MCAP_GET_REVISION		15
-#define CODE_MCAP_SET_AXI_ATTR		16
-
-/** Complete set of ioctls for MCAP VSEC */
-
-/**
- * @defgroup xvsec_mcap_defines Definitions
- * @{
- */
-
-/**
- * ioctl code for performing MCAP configuration logic reset
- */
-#define IOC_MCAP_RESET					\
-	_IO(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_RESET)
-/**
- * ioctl code for performing MCAP Module reset
- */
-#define IOC_MCAP_MODULE_RESET			\
-	_IO(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_MODULE_RESET)
-/**
- * ioctl code for performing both IOC_MCAP_RESET & IOC_MCAP_MODULE_RESET
- */
-#define IOC_MCAP_FULL_RESET				\
-	_IO(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_FULL_RESET)
-/**
- * ioctl code for retrieving the MCAP Read Data Registers
- */
-#define IOC_MCAP_GET_DATA_REGISTERS		\
-	_IOR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_GET_DATA_REG, \
-		uint32_t *)
-/**
- * ioctl code for retrieving the MCAP Registers
- */
-#define IOC_MCAP_GET_REGISTERS			\
-	_IOR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_GET_REG, \
-		union mcap_regs *)
-/**
- * ioctl code for retrieving the FPGA configuration Registers
- */
-#define IOC_MCAP_GET_FPGA_REGISTERS			\
-	_IOR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_GET_FPGA_REG, \
-		union fpga_cfg_regs *)
-/**
- * ioctl code for programming the bitstream
- */
-#define IOC_MCAP_PROGRAM_BITSTREAM		\
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_PROG_BITFILE, \
-		union bitstream_file *)
-/**
- * ioctl code for reading an MCAP VSEC register
- */
-#define IOC_MCAP_READ_DEV_CFG_REG		\
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_RD_DEV_CFG_REG, \
-		union cfg_data *)
-/**
- * ioctl code for Writing to an MCAP VSEC register
- */
-#define IOC_MCAP_WRITE_DEV_CFG_REG	\
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_WR_DEV_CFG_REG, \
-		union cfg_data *)
-/**
- * ioctl code for reading an FPGA CFG register
- */
-#define IOC_MCAP_READ_FPGA_CFG_REG \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_RD_FPGA_REG, \
-		union fpga_cfg_reg *)
-/**
- * ioctl code for writing to an FPGA CFG register
- */
-#define IOC_MCAP_WRITE_FPGA_CFG_REG \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_WR_FPGA_REG, \
-		union fpga_cfg_reg *)
-/**
- * ioctl code for reading the AXI register at given address
- */
-#define IOC_MCAP_READ_AXI_REG \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_RD_AXI_REG, \
-		union axi_reg_data *)
-/**
- * ioctl code for writing the AXI register at given address with given data
- */
-#define IOC_MCAP_WRITE_AXI_REG \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_WR_AXI_REG, \
-		union axi_reg_data *)
-/**
- * ioctl code for performing file download
- */
-#define IOC_MCAP_FILE_DOWNLOAD \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_FILE_DOWNLOAD, \
-		union file_download_upload *)
-/**
- * ioctl code for performing file upload
- */
-#define IOC_MCAP_FILE_UPLOAD \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_FILE_UPLOAD, \
-		union file_download_upload *)
-/**
- * ioctl code for retrieving the revision
- */
-#define IOC_MCAP_GET_REVISION \
-	_IOR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_GET_REVISION, \
-		uint32_t *)
-
-/**
- * ioctl code to configure axi cache & protection attributes
- */
-#define IOC_MCAP_SET_AXI_ATTR \
-	_IOWR(XVSEC_MCAP_IOC_MAGIC, CODE_MCAP_SET_AXI_ATTR, \
-		union axi_cache_attr *)
-
-/** @} */
-
-#endif /* __XVSEC_MCAP_H__ */
diff --git a/XVSEC/linux-kernel/drv/xvsec_util.c b/XVSEC/linux-kernel/drv/xvsec_util.c
deleted file mode 100644
index ff16de8..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_util.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2018-2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/aer.h>
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/version.h>
-#include <linux/pci.h>
-#include <linux/vmalloc.h>
-#include <linux/cdev.h>
-#include <linux/fcntl.h>
-#include <linux/sched.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/delay.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-
-#include "xvsec_util.h"
-
-int xvsec_util_find_file_type(char *fname, const char *suffix)
-{
-	size_t	suffix_len;
-	size_t	fname_len;
-	int	ret = -(EINVAL);
-	char	*fname_suffix;
-
-	/* Parameter Validation */
-	if ((fname == NULL) || (suffix == NULL))
-		return ret;
-
-	suffix_len = strlen(suffix);
-	if (suffix_len == 0)
-		return ret;
-	fname_len = strlen(fname);
-
-	fname_suffix = fname+(fname_len - suffix_len);
-	if (strncasecmp(fname_suffix, suffix, suffix_len) == 0)
-		ret = 0;
-
-	return ret;
-}
-
-struct file *xvsec_util_fopen(const char *path, int flags, int rights)
-{
-	struct file *filep;
-	mm_segment_t oldfs;
-	int err = 0;
-
-	oldfs = get_fs();
-	set_fs(KERNEL_DS);
-	filep = filp_open(path, (flags | O_LARGEFILE), rights);
-	set_fs(oldfs);
-	if (IS_ERR(filep) != 0) {
-		err = PTR_ERR(filep);
-		pr_err("%s : filp_open failed, err : 0x%X\n", __func__, err);
-		return NULL;
-	}
-	return filep;
-}
-
-void xvsec_util_fclose(struct file *filep)
-{
-	filp_close(filep, NULL);
-}
-
-int xvsec_util_fread(struct file *filep, uint64_t offset,
-	uint8_t *data, uint32_t size)
-{
-	int ret = 0;
-	mm_segment_t oldfs;
-
-	oldfs = get_fs();
-	set_fs(KERNEL_DS);
-#if KERNEL_VERSION(4, 14, 0) > LINUX_VERSION_CODE
-	ret = vfs_read(filep, (char __user *)data, size, (loff_t *)&offset);
-#else
-	ret = kernel_read(filep, (void *)data, size, (loff_t *)&offset);
-#endif
-	filep->f_pos = offset;
-	set_fs(oldfs);
-
-	if (ret < 0) {
-#if KERNEL_VERSION(4, 14, 0) > LINUX_VERSION_CODE
-		pr_err("%s : vfs_read failed with error : %d\n",
-			__func__, ret);
-#else
-		pr_err("%s : kernel_read failed with error : %d\n",
-			__func__, ret);
-#endif
-		return -(EIO);
-	}
-
-	return ret;
-}
-
-int xvsec_util_fwrite(struct file *filep, uint64_t offset,
-	uint8_t *data, uint32_t size)
-{
-	int ret = 0;
-	mm_segment_t oldfs;
-
-	oldfs = get_fs();
-	set_fs(KERNEL_DS);
-#if KERNEL_VERSION(4, 14, 0) > LINUX_VERSION_CODE
-	ret = vfs_write(filep, (char __user *)data, size, (loff_t *)&offset);
-#else
-	ret = kernel_write(filep, (void *)data, size,
-				(loff_t *)&offset);
-#endif
-	filep->f_pos = offset;
-	set_fs(oldfs);
-
-	if (ret < 0) {
-#if KERNEL_VERSION(4, 14, 0) > LINUX_VERSION_CODE
-		pr_err("%s : vfs_write failed, err : %d\n", __func__, ret);
-#else
-		pr_err("%s : kernel_write failed, err : %d\n", __func__, ret);
-#endif
-		return -(EIO);
-	}
-
-	return ret;
-}
-
-int xvsec_util_fsync(struct file *filep)
-{
-	vfs_fsync(filep, 0);
-	return 0;
-}
-
-int xvsec_util_get_file_size(const char *fname, loff_t *size)
-{
-	int ret = 0;
-	mm_segment_t oldfs;
-	struct kstat stat;
-
-	oldfs = get_fs();
-	set_fs(KERNEL_DS);
-
-	memset(&stat, 0, sizeof(struct kstat));
-	ret = vfs_stat((char __user *)fname, &stat);
-	set_fs(oldfs);
-	if (ret < 0) {
-		pr_err("%s : vfs_stat failed with error : %d\n", __func__, ret);
-		return -(EIO);
-	}
-
-	*size = stat.size;
-
-	return ret;
-}
-
diff --git a/XVSEC/linux-kernel/drv/xvsec_util.h b/XVSEC/linux-kernel/drv/xvsec_util.h
deleted file mode 100644
index 2126ac9..0000000
--- a/XVSEC/linux-kernel/drv/xvsec_util.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * This file is part of the XVSEC driver for Linux
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * The full GNU General Public License is included in this distribution in
- * the file called "COPYING".
- */
-
-#ifndef __XVSEC_UTIL_H__
-#define __XVSEC_UTIL_H__
-
-/**
- * @file xvsec_util.h
- *
- * Xilinx XVSEC Utility functions
- *
- * Header file *xvsec_util.h* defines the utility functions that can be
- * used by driver.
- *
- * These data structures & functions are for driver internal use
- *
- */
-
-int xvsec_util_find_file_type(char *fname, const char *suffix);
-struct file *xvsec_util_fopen(const char *path, int flags, int rights);
-void xvsec_util_fclose(struct file *filep);
-int xvsec_util_fread(struct file *filep, uint64_t offset,
-	uint8_t *data, uint32_t size);
-int xvsec_util_fwrite(struct file *filep, uint64_t offset,
-	uint8_t *data, uint32_t size);
-int xvsec_util_fsync(struct file *filep);
-int xvsec_util_get_file_size(const char *fname, loff_t *size);
-
-#endif /* __XVSEC_UTIL_H__  */
diff --git a/XVSEC/linux-kernel/libxvsec/Makefile b/XVSEC/linux-kernel/libxvsec/Makefile
deleted file mode 100644
index 56d521e..0000000
--- a/XVSEC/linux-kernel/libxvsec/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-SHELL = /bin/bash
-build_dir = $(PWD)/../build
-lib_dir = $(build_dir)/lib
-CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I../include -I../drv/ -I../drv/xvsec_mcap/
-CFLAGS += $(EXTRA_FLAGS)
-
-XVSEC = libxvsec
-XVSEC_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
-
-all: clean $(XVSEC)
-
-$(XVSEC): $(XVSEC_OBJS)
-	@mkdir -p -m 755 $(build_dir)
-	@mkdir -p -m 755 $(lib_dir)
-	@mkdir -p -m 755 $(lib_dir)/obj
-	$(AR) -r $@ $^
-	ranlib $@
-	@mv -f $(XVSEC) $(lib_dir)/$(XVSEC).a
-	@cp -f xvsec.h $(lib_dir)/
-	@mv -f *.o $(lib_dir)/obj/
-
-clean:
-	@rm -rf *.o */*.o $(XVSEC).a $(lib_dir)/
diff --git a/XVSEC/linux-kernel/libxvsec/version.h b/XVSEC/linux-kernel/libxvsec/version.h
deleted file mode 100644
index 39cabfa..0000000
--- a/XVSEC/linux-kernel/libxvsec/version.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This file is part of the XVSEC userspace library which provides the
- * userspace APIs to enable the XSEC driver functionality
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#ifndef __XVSEC_LIB_VERSION_H__
-#define __XVSEC_LIB_VERSION_H__
-
-#define __stringify1(x...)	#x
-#define __stringify(x...)	__stringify1(x)
-
-#define XVSEC_LIB_MODULE_NAME	"xvsec"
-#define XVSEC_LIB_MODULE_DESC	"Xilinx VSEC Library"
-
-#define XVSEC_LIB_VERSION_MAJOR	2020
-#define XVSEC_LIB_VERSION_MINOR	2
-#define XVSEC_LIB_VERSION_PATCH	1
-
-#define XVSEC_LIB_VERSION	\
-	__stringify(XVSEC_LIB_VERSION_MAJOR) "." \
-	__stringify(XVSEC_LIB_VERSION_MINOR) "." \
-	__stringify(XVSEC_LIB_VERSION_PATCH)
-
-#define XVSEC_LIB_VERSION_NUM  \
-	((XVSEC_LIB_VERSION_MAJOR)*1000 + \
-	 (XVSEC_LIB_VERSION_MINOR)*100 + \
-	  XVSEC_LIB_VERSION_PATCH)
-
-#endif /* ifndef __XVSEC_LIB_VERSION_H__ */
diff --git a/XVSEC/linux-kernel/libxvsec/xvsec.c b/XVSEC/linux-kernel/libxvsec/xvsec.c
deleted file mode 100644
index aca414e..0000000
--- a/XVSEC/linux-kernel/libxvsec/xvsec.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/*
- * This file is part of the XVSEC userspace library which provides the
- * userspace APIs to enable the XSEC driver functionality
- *
- * Copyright (c) 2018-2020  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#include "version.h"
-#include "xvsec.h"
-#include "xvsec_int.h"
-#include "xvsec_drv.h"  /* kernel character Driver layer API's*/
-#include "xvsec_mcap.h" /* kernel layer MCAP API's */
-
-
-
-#define XVSEC_MAGIC_NO		0x10EE
-#define INVALID_DEVICE_INDEX	0xFFFF
-
-const static char version[] =
-	XVSEC_LIB_MODULE_DESC "\t: v" XVSEC_LIB_VERSION "\n";
-
-xvsec_user_context_t	*xvsec_user_ctx = NULL;
-int no_of_devs;
-
-const char *error_codes[] = {
-	"XVSEC Success",
-	"XVSEC Operation not permitted",
-	"XVSEC Failure",
-	"XVSEC NULL Pointer",
-	"XVSEC Invalid Parameters",
-	"XVSEC Mutex Lock Fail",
-	"XVSEC Mutex Unlock Fail",
-	"XVSEC MEM Allocation Fail",
-	"XVSEC Operation Not Supported",
-	"XVSEC Bitstream Program Fail",
-	"XVSEC Linux System Call Fail",
-	"XVSEC Max Devices Limit Reached",
-	"XVSEC Invalid File Format",
-	"XVSEC Invalid Combo of Offset and Access Type",
-	"XVSEC Missing Capability ID",
-	"XVSEC Capability ID Not Supported",
-	"XVSEC Invalid FPGA CFG Register",
-	"XVSEC Invalid VSEC Offset"
-};
-
-int xvsec_lib_init(int max_devices)
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			index;
-	uint16_t		failed_index;
-	pthread_mutexattr_t	attr;
-
-	no_of_devs = max_devices;
-	xvsec_user_ctx = malloc(sizeof(xvsec_user_context_t) * no_of_devs);
-	if(xvsec_user_ctx == NULL)
-	{
-		fprintf(stderr, "[XVSEC] : Failed to Allocate "
-			"memory for user context\n");
-		return XVSEC_ERR_MEM_ALLOC_FAILED;
-	}
-
-	memset(xvsec_user_ctx, 0, sizeof(xvsec_user_context_t));
-
-	status = pthread_mutexattr_init(&attr);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : Failed to initialize an attribute"
-			" object: %s\n", strerror(status));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP0;
-	}
-
-	status = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : Failed to set attribute "
-			"ERRORCHECK MUTEX: %s\n", strerror(status));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP1;
-	}
-
-	for(index = 0; index < no_of_devs; index++)
-	{
-		status = pthread_mutex_init(&xvsec_user_ctx[index].mutex, &attr);
-		if (status < 0)
-		{
-			fprintf(stderr, "[XVSEC] : mutex init failed for "
-				"device %d\n", index);
-			ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-			failed_index = index;
-			goto CLEANUP2;
-		}
-	}
-
-	pthread_mutexattr_destroy(&attr);
-
-	return XVSEC_SUCCESS;
-
-CLEANUP2:
-	for(index = 0; index <= failed_index; index++)
-	{
-		pthread_mutex_destroy(&xvsec_user_ctx[index].mutex);
-	}
-CLEANUP1:
-	pthread_mutexattr_destroy(&attr);
-CLEANUP0:
-	free(xvsec_user_ctx);
-	xvsec_user_ctx = NULL;
-	return ret;
-}
-
-int xvsec_lib_deinit(void)
-{
-	int		ret = XVSEC_SUCCESS;
-	int		status;
-	uint32_t	index;
-
-	for(index = 0; index < no_of_devs; index++)
-	{
-		status = pthread_mutex_destroy(&xvsec_user_ctx[index].mutex);
-		if(status < 0)
-		{
-			fprintf(stderr, "[XVSEC] : pthread_mutex_destroy "
-				"failed with error %d(%s) for index %u\n",
-				status, strerror(errno), index);
-			ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		}
-	}
-
-	free(xvsec_user_ctx);
-	xvsec_user_ctx = NULL;
-
-	return ret;
-}
-
-int xvsec_open(uint16_t bus_no, uint16_t dev_no, xvsec_handle_t *handle, char* dev_str)
-{
-	int        ret = XVSEC_SUCCESS;
-	int        status;
-	char       device_name[20];
-	int        fd;
-	uint32_t   index;
-	uint32_t   device_index = INVALID_DEVICE_INDEX;
-
-	/* Parameter checking */
-	if((bus_no > 255) || (dev_no > 255) || (handle == NULL) || (dev_str == NULL))
-	{
-		fprintf(stderr, "[XVSEC] : %s : Invalid Parameters "
-			"bus_no:0x%04X, device no : 0x%04X, handle : %p, dev_str:%p\n",
-			__func__, bus_no, dev_no, handle, dev_str);
-
-		return XVSEC_ERR_INVALID_PARAM;
-	}
-
-	for(index = 0; index < no_of_devs; index++)
-	{
-		if(xvsec_user_ctx[index].handle == NULL)
-		{
-			device_index = index;
-			index = no_of_devs;
-		}
-	}
-
-	if(device_index == INVALID_DEVICE_INDEX)
-	{
-		fprintf(stderr, "[XVSEC] : %s : There is no room to "
-			"open a device\n", __func__);
-		return XVSEC_MAX_DEVICES_LIMIT_REACHED;
-	}
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = snprintf(device_name, sizeof(device_name),
-		"/dev/xvsec%02X%02X%s", bus_no, dev_no, dev_str);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : %s : snprintf returned error "
-			": %d\n", __func__, status);
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-	else if((status == sizeof(device_name)) ||
-		(status >= sizeof(device_name)))
-	{
-		fprintf(stderr, "[XVSEC] : %s : snprintf output truncated :"
-			" %d\n", __func__, status);
-		ret = XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-		goto CLEANUP;
-	}
-
-	fd = open(device_name, O_SYNC|O_RDWR, S_IRWXU);
-	if(fd < 0)
-	{
-		fprintf(stderr, "[XVSEC] : %s : open call failed on device %s "
-			"with error %d(%s)\n", __func__, device_name, errno,
-			strerror(errno));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-
-
-	xvsec_user_ctx[device_index].fd		= fd;
-	xvsec_user_ctx[device_index].handle	= handle;
-
-	((handle_t *)handle)->xvsec_magic_no	= XVSEC_MAGIC_NO;
-	((handle_t *)handle)->bus_no		= bus_no;
-	((handle_t *)handle)->dev_no		= dev_no;
-	((handle_t *)handle)->index		= device_index;
-	((handle_t *)handle)->mrev		= 0xFF;
-	((handle_t *)handle)->valid		= true;
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_close(xvsec_handle_t *handle)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	uint16_t device_index;
-
-	if(handle == NULL)
-	{
-	fprintf(stderr, "[XVSEC] : %s : Invalid Handle : "
-		"handle = %p\n", __func__, handle);
-	return XVSEC_ERR_NULL_POINTER;
-	}
-
-	device_index = ((handle_t *)handle)->index;
-
-	if(device_index >= no_of_devs)
-	{
-		fprintf(stderr, "[XVSEC] : %s : handle corrupted,"
-			" handle = 0x%lX\n", __func__, *handle);
-		return XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-	}
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = close(xvsec_user_ctx[device_index].fd);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : %s : close() failed with "
-			"error %d(%s)\n", __func__, errno, strerror(errno));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-	}
-
-	xvsec_user_ctx[device_index].fd = -1;
-	xvsec_user_ctx[device_index].handle = NULL;
-	memset(handle, 0, sizeof(xvsec_handle_t));
-
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_get_cap_list(xvsec_handle_t *handle, xvsec_cap_list_t *cap_list)
-{
-	int				ret = XVSEC_SUCCESS;
-	int				status;
-	uint16_t			index;
-	uint16_t			device_index;
-	struct xvsec_capabilities	xvsec_caps;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (cap_list == NULL))
-	{
-		return XVSEC_ERR_INVALID_PARAM;
-	}
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-	{
-		return status;
-	}
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(&xvsec_caps, 0, sizeof(struct xvsec_capabilities));
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_XVSEC_GET_CAP_LIST, &xvsec_caps);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : %s : ioctl for "
-			"IOC_XVSEC_GET_CAP_LIST failed with error %d(%s)\n",
-			__func__, errno, strerror(errno));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-
-	cap_list->no_of_caps = (xvsec_caps.no_of_caps > MAX_CAPS_SUPPORTED) ?
-		MAX_CAPS_SUPPORTED : xvsec_caps.no_of_caps;
-
-	for(index = 0; index < cap_list->no_of_caps; index++)
-	{
-		cap_list->cap_info[index].is_supported = xvsec_caps.vsec_info[index].is_supported;
-		cap_list->cap_info[index].cap_id = xvsec_caps.vsec_info[index].cap_id;
-		cap_list->cap_info[index].rev_id = xvsec_caps.vsec_info[index].rev_id;
-
-		snprintf(cap_list->cap_info[index].cap_name, XVSEC_MAX_VSEC_STR_LEN,
-			"%s", xvsec_caps.vsec_info[index].name);
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_show_device(xvsec_handle_t *handle)
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			device_index;
-	union device_info	dev_info;
-
-	/* Parameter Validation */
-	if(handle == NULL)
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_XVSEC_GET_DEVICE_INFO, &dev_info);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : %s : ioctl for "
-			"IOC_GET_DEVICE_INFO failed with error %d(%s)\n",
-			__func__, errno, strerror(errno));
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-
-	fprintf(stdout, "%s", version);
-	fprintf(stdout, "-----------------------------------\n");
-
-	fprintf(stdout, "vendor_id        = 0x%X\n", dev_info.vendor_id       );
-	fprintf(stdout, "device_id        = 0x%X\n", dev_info.device_id       );
-	fprintf(stdout, "device_no        = 0x%X\n", dev_info.device_no       );
-	fprintf(stdout, "device_fn        = 0x%X\n", dev_info.device_fn       );
-	fprintf(stdout, "subsystem_vendor = 0x%X\n", dev_info.subsystem_vendor);
-	fprintf(stdout, "subsystem_device = 0x%X\n", dev_info.subsystem_device);
-	fprintf(stdout, "class_id         = 0x%X\n", dev_info.class_id        );
-	fprintf(stdout, "cfg_size         = 0x%X\n", dev_info.cfg_size        );
-	fprintf(stdout, "is_msi_enabled   = 0x%X\n", dev_info.is_msi_enabled  );
-	fprintf(stdout, "is_msix_enabled  = 0x%X\n", dev_info.is_msix_enabled );
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_validate_handle(xvsec_handle_t *handle)
-{
-	uint16_t device_index;
-
-	device_index = ((handle_t *)handle)->index;
-	if(device_index >= no_of_devs)
-	{
-		fprintf(stderr, "[XVSEC] : %s : corrupted Handle\n", __func__);
-		return XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-	}
-
-	if(xvsec_user_ctx[device_index].handle != handle)
-	{
-		fprintf(stderr, "[XVSEC] : %s : Invalid Handle\n", __func__);
-		return XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-	}
-	return XVSEC_SUCCESS;
-}
diff --git a/XVSEC/linux-kernel/libxvsec/xvsec.h b/XVSEC/linux-kernel/libxvsec/xvsec.h
deleted file mode 100644
index 1ff47b5..0000000
--- a/XVSEC/linux-kernel/libxvsec/xvsec.h
+++ /dev/null
@@ -1,877 +0,0 @@
-/*
- * This file is part of the XVSEC userspace library which provides the
- * userspace APIs to enable the XSEC driver functionality
- *
- * Copyright (c) 2018-2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#ifndef __XVSEC_H__
-#define __XVSEC_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <string.h>
-#include <pthread.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <byteswap.h>
-
-/**
- * @file
- * @brief This file contains the interface declarations of XVSEC User Space
- *        Library
- *
- */
-
-/** @defgroup xvsec_api_enums Enumerations
- */
-/** @defgroup xvsec_api_struct Data Structures
- */
-/** @defgroup xvsec_api_union Data Structures
- */
-/** @defgroup xvsec_api_func Exported Functions
- */
-/** @defgroup xvsec_api_var Exported Variables
- */
-
-
-/**
- * @defgroup xvsec_api_defines Definitions
- * @{
- */
-
-
-/** Indicates Success of API call */
-#define XVSEC_SUCCESS				(0)
-/** Indicates Operation not permitted */
-#define XVSEC_EPERM				(-1)
-/** Indicates Failure of API call */
-#define XVSEC_FAILURE				(-2)
-/** Indicates one or more NULL pointer passed as parameter */
-#define XVSEC_ERR_NULL_POINTER			(-3)
-/** Indicates one or more invalid parameters passed */
-#define XVSEC_ERR_INVALID_PARAM			(-4)
-/** Indicates mutex lock failed */
-#define XVSEC_ERR_MUTEX_LOCK_FAIL		(-5)
-/** Indicates mutex unlock failed while trying to release */
-#define XVSEC_ERR_MUTEX_UNLOCK_FAIL		(-6)
-/** Indicates memory allocation failed */
-#define XVSEC_ERR_MEM_ALLOC_FAILED		(-7)
-/** Indicates the requested operation is not supported */
-#define XVSEC_ERR_OPERATION_NOT_SUPPORTED	(-8)
-/** Indicates BitStream programming Failed */
-#define XVSEC_ERR_BITSTREAM_PROGRAM		(-9)
-/** Indicates one of the linux system call Failed */
-#define XVSEC_ERR_LINUX_SYSTEM_CALL		(-10)
-/** Indicates No more devices present to open */
-#define XVSEC_MAX_DEVICES_LIMIT_REACHED		(-11)
-/** Indicates unsupported file format provided */
-#define XVSEC_ERR_INVALID_FILE_FORMAT		(-12)
-/** Indicates Offset and Access combination
- *  is incorrect (Ex : u16 needs an even offset, u32 needs an offset divisible
- *  by 4 */
-#define XVSEC_ERR_INVALID_OFFSET_ACCESS_COMBO	(-13)
-/** Indicates Capability ID is not provided */
-#define XVSEC_ERR_CAPABILITY_ID_MISSING		(-14)
-/** Indicates Capability ID is not supported */
-#define XVSEC_ERR_CAPABILITY_NOT_SUPPORTED	(-15)
-/** Indicates FPGA CFG Register number provided
- *  is invalid (or) access to the requested register is prohibited */
-#define XVSEC_ERR_INVALID_FPGA_REG_NUM		(-16)
-/** Indicates Provided VSEC Offset is invalid */
-#define XVSEC_ERR_INVALID_OFFSET		(-17)
-
-/** Maximum supported Capability ID by the Library */
-#define MAX_CAPS_SUPPORTED			(10)
-
-/** Maximum VSEC name String length */
-#define XVSEC_MAX_VSEC_STR_LEN		(20)
-
-/** @} */
-
-/** Unique XVSEC handle per device.
-  * This handle is needed for all XVSEC operations
-  * @ingroup xvsec_api_var
-  */
-typedef uint64_t	xvsec_handle_t;
-
-/**
- * @enum - access_type_t
- * @brief	Register/Offset Access Type(Byte/Short/Word)
- * @ingroup xvsec_api_enums
- */
-typedef enum access_type_t
-{
-	/** 8 bits access (read/write) */
-	ACCESS_BYTE = 0,
-	/** 16 bits access (read/write) */
-	ACCESS_SHORT,
-	/** 32 bits access (read/write) */
-	ACCESS_WORD,
-}access_type_t;
-
-/**
- * @struct - xvsec_cap_t
- * @brief	Capability Information
- * @ingroup xvsec_api_struct
- */
-typedef struct xvsec_cap_t
-{
-	/** Capability Identifier */
-	uint16_t	cap_id;
-	/** MCAP Revision info */
-	uint16_t	rev_id;
-	/** Capability Name */
-	char		cap_name[XVSEC_MAX_VSEC_STR_LEN];
-	/** info to check capability supported by this drv or not*/
-	bool		is_supported;
-}xvsec_cap_t;
-
-/**
- * @struct - xvsec_cap_list_t
- * @brief	Capability List
- * @ingroup xvsec_api_struct
- */
-typedef struct xvsec_cap_list_t
-{
-	/** No of capabilities supported */
-	uint16_t	no_of_caps;
-	/** Capabilities Information */
-	xvsec_cap_t	cap_info[MAX_CAPS_SUPPORTED];
-}xvsec_cap_list_t;
-
-/**
- * @struct - xvsec_mcap_sts_reg_t
- * @brief	MCAP Status Register Fields
- * @ingroup xvsec_api_struct
- */
-typedef union xvsec_mcap_sts_reg_t {
-	/** MCAP sts bits for US/US+ Devices */
-	struct  {
-		/** Error */
-		uint32_t err		: 1;
-		/** End of Startup Signal */
-		uint32_t eos		: 1;
-		uint32_t reserved01	: 2;
-		/** MCAP Read complete flag */
-		uint32_t read_complete	: 1;
-		/** MCAP Read word count */
-		uint32_t read_count	: 3;
-		/** MCAP Write Buffer FIFO overflow */
-		uint32_t fifo_ovfl	: 1;
-		uint32_t reserved02	: 3;
-		/** MCAP Write Buffer FIFO Occupency */
-		uint32_t fifo_occu	: 4;
-		uint32_t reserved03	: 8;
-		/** MCAP Request for Release Flag */
-		uint32_t req4mcap_rel	: 1;
-		uint32_t reserved04	: 7;
-	}v1;
-	/** MCAP sts bits for Versal Devices */
-	struct  {
-		/** Reserved */
-		uint32_t reserved01		: 4;
-		/** MCAP Read/Write Status */
-		uint32_t rw_status		: 2;
-		/** Reserved */
-		uint32_t reserved02		: 2;
-		/** MCAP Read Complete */
-		uint32_t rd_complete		: 1;
-		/** Reserved */
-		uint32_t reserved03		: 7;
-		/** MCAP FIFO Occupancy */
-		uint32_t fifo_occupancy		: 5;
-		/** MCAP Write FIFO Full */
-		uint32_t wr_fifo_full		: 1;
-		/** Write FIFO Almost Full */
-		uint32_t wr_fifo_almost_full	: 1;
-		/** Write FIFO Almost Empty */
-		uint32_t wr_fifo_almost_empty	: 1;
-		/* MCAP Write FIFO Empty */
-		uint32_t wr_fifo_empty		: 1;
-		/** Write FIFO Overflow */
-		uint32_t wr_fifo_overflow	: 1;
-		/** Reserved */
-		uint32_t reserved04		: 6;
-	}v2;
-
-}xvsec_mcap_sts_reg_t;
-
-/**
- * @struct - xvsec_mcap_ctl_reg_t
- * @brief	MCAP Control Register Fields
- * @ingroup xvsec_api_struct
- */
-typedef union xvsec_mcap_ctl_reg_t {
-	/** MCAP ctrl bits for US/US+ */
-	struct  {
-		/** MCAP Module Enable */
-		uint32_t enable		: 1;
-		/** MCAP Read Enable to perform FPGA CFG Read operation */
-		uint32_t rd_enable	: 1;
-		uint32_t reserved01	: 2;
-		/** MCAP Configurable Region Reset */
-		uint32_t reset		: 1;
-		/** MCAP Module Reset */
-		uint32_t module_reset	: 1;
-		uint32_t reserved02	: 2;
-		/** Request for gaining access to configurable region */
-		uint32_t req4mcap_pcie	: 1;
-		uint32_t reserved03	: 3;
-		/** MCAP Design Switch : Must be SET after loading bitstream */
-		uint32_t cfg_desgn_sw	: 1;
-		uint32_t reserved04	: 3;
-		/** MCAP Write Register Enable */
-		uint32_t wr_reg_enable	: 1;
-		uint32_t reserved05	: 15;
-	}v1;
-	/** MCAP ctrl bits for Versal */
-	struct  {
-		/** MCAP Read Enable */
-		uint32_t rd_enable	: 1;
-		uint32_t reserved01	: 3;
-		/** MCAP Write Enable */
-		uint32_t wr_enable	: 1;
-		/** MCAP 128-bit Mode */
-		uint32_t mode		: 1;
-		uint32_t reserved02	: 2;
-		/** MCAP Module Reset */
-		uint32_t reset		: 1;
-		uint32_t reserved03	: 7;
-		/** MCAP AXI Cache */
-		uint32_t axi_cache	: 4;
-		/** MCAP AXI Protect */
-		uint32_t axi_protect	: 3;
-		uint32_t reserved04	: 9;
-	}v2;
-}xvsec_mcap_ctl_reg_t;
-
-/**
- * @struct - xvsec_mcap_regs_t
- * @brief	MCAP Register set
- * @ingroup xvsec_api_struct
- */
-typedef union xvsec_mcap_regs_t {
-	 /** MCAP cfg register set for US/US+ */
-	struct	{
-		/** Extended capability header register */
-		uint32_t cap_header;
-		/** Vendor Specific header register */
-		uint32_t vendor_header;
-		/** FPGA JTAG ID register */
-		uint32_t fpga_jtag_id;
-		/** FPGA bit-stream version register */
-		uint32_t fpga_bitstream_ver;
-		/** Status Register */
-		uint32_t status_reg;
-		/** Control Register */
-		uint32_t control_reg;
-		/** Write Data Register */
-		uint32_t write_data_reg;
-		/** Read Data Register: 4 data words */
-		uint32_t read_data_reg[4];
-	}v1;
-	/** MCAP cfg register set for Versal devices */
-	struct {
-		/** Extended capability header register */
-		uint32_t	ext_cap_header;
-		/** Vendor Specific header register */
-		uint32_t	vendor_header;
-		/** Status Register */
-		uint32_t	status_reg;
-		/** Control Register */
-		uint32_t	control_reg;
-		/** RW Address register */
-		uint32_t	address_reg;
-		/** Write Data Register */
-		uint32_t	wr_data_reg;
-		/** Read Data Register */
-		uint32_t	rd_data_reg;
-	}v2;
-}xvsec_mcap_regs_t;
-
-/**
- * @struct - xvsec_fpga_cfg_regs_t
- * @brief	FPGA Configuration Register set
- * @ingroup xvsec_api_struct
- */
-typedef union xvsec_fpga_cfg_regs_t {
-	/** FPGA Configuration Register set for US/US+ devices */
-	struct {
-		/** CRC Register */
-		uint32_t crc;
-		/** Frame Address Register */
-		uint32_t far;
-		/** Frame Data Register, Input Register (write configuration data) */
-		uint32_t fdri;
-		/** Frame Data Register, Output Register (read configuration data) */
-		uint32_t fdro;
-		/** Command Register */
-		uint32_t cmd;
-		/** Control Register 0 */
-		uint32_t ctl0;
-		/** Mask Register for CTL0 and CTL1 Registers */
-		uint32_t mask;
-		/** Status Register */
-		uint32_t stat;
-		/** Legacy Output Register for Daisy Chain */
-		uint32_t lout;
-		/** Configuration Option Register 0 */
-		uint32_t cor0;
-		/** Multi Frame Write Register */
-		uint32_t mfwr;
-		/** Initial CBC Value Register */
-		uint32_t cbc;
-		/** Device ID Register */
-		uint32_t idcode;
-		/** User Access Register */
-		uint32_t axss;
-		/** Configuration Option Register 1 */
-		uint32_t cor1;
-		/** Warm Boot Start Address Register */
-		uint32_t wbstar;
-		/** Watchdog Timer Register */
-		uint32_t timer;
-		/** Scratch Pad Register for Dummy Read and Writes */
-		uint32_t scratchpad;
-		/** Boot History Status Register */
-		uint32_t bootsts;
-		/** Control Register 1 */
-		uint32_t ctl1;
-		/** BPI/SPI Configuration Options Register */
-		uint32_t bspi;
-	}v1; /* fpga register set for US/US+ */
-}xvsec_fpga_cfg_regs_t;
-
-/** Error codes in human readable form
-  * @ingroup xvsec_api_var
-  */
-extern const char *error_codes[];
-
-/**
- * @enum - mcap_revision_t
- * @brief	Revision ID for MCAP IP
- * @ingroup xvsec_api_enums
- */
-typedef enum mcap_revision_t {
-	/** MCAP Revision for Ultrascale device */
-	MCAP_US = 0,
-	/** MCAP Revision for Ultrascale plus device */
-	MCAP_USPLUS,
-	/** MCAP Revision for Versal device */
-	MCAP_VERSAL,
-	/** Unsupported MCAP Revision by this Driver */
-	INVALID_MCAP_REVISION,
-}mcap_revision_t;
-
-/**
- * @struct - _cfg_data
- * @brief	Parameters for accessing MCAP Registers(Read/Write)
- * @ingroup xvsec_api_struct
- */
-typedef struct _cfg_data {
-	/** access field. 'b' for byte access, 'h'for half word access,
-	 * 'w' for word access
-	 */
-	char            access;
-	/** VSEC address offset */
-	uint16_t        offset;
-	/** data field holds the information to write into the provided offset
-	 * for Write operation.
-	 * Holds the information at the provided offset for read operation
-	 */
-	uint32_t        data;
-}cfg_data_t;
-
-/**
- * @enum - _axi_access_mode
- * @brief  AXI Devices addressing mode (32 bit/128 bit)
- *
- * @ingroup xvsec_api_enums
- **/
-typedef enum _axi_access_mode {
-	/** 32-bit addressing mode */
-	XVSEC_MCAP_AXI_MODE_32B = 0,
-	/** 128-bit addressing mode */
-	XVSEC_MCAP_AXI_MODE_128B,
-}axi_access_mode_t;
-
-/**
- * @enum - _data_transfer_mode
- * @brief	Indicates mode of data transfer for
- *		download functionality.
- *
- * @ingroup xvsec_api_enums
- **/
-typedef enum _data_transfer_mode {
-	/** Fast Transfer mode
-	 *  and the default one when not specified */
-	XVSEC_MCAP_DATA_TR_MODE_FAST = 0,
-	/** Slow Transfer mode */
-	XVSEC_MCAP_DATA_TR_MODE_SLOW,
-}data_transfer_mode_t;
-
-/**
- * @enum - _file_operation_status
- * @brief  Indicates File operation(Download/Upload) result
- *
- * @ingroup xvsec_api_enums
- **/
-typedef enum _file_operation_status {
-	/** File Operation Successful */
-	XVSEC_MCAP_FILE_OP_SUCCESS = 0,
-	/** File Operation failed with XVSEC-MCAP error SLVERR */
-	XVSEC_MCAP_FILE_OP_FAIL_SLVERR = 1,
-	/** File Operation failed with XVSEC-MCAP error DECERR */
-	XVSEC_MCAP_FILE_OP_FAIL_DECERR = 2,
-	XVSEC_MCAP_FILE_OP_RESERVED = 3,
-	/** File operation failed */
-	XVSEC_MCAP_FILE_OP_FAILED,
-	/** Zero size file is provided as input */
-	XVSEC_MCAP_FILE_OP_ZERO_FSIZE,
-	/** Valid File size is not provided
-	 *
-	 * for 32-bit mode, file size must be multiple of 32-bits / 4 bytes
-	 *
-	 * for 128-bit mode, file size must be multiple of 128-bits / 16 bytes
-	 */
-	XVSEC_MCAP_FILE_OP_INVALID_FSIZE,
-	/** File operation failed with XVSEC-MCAP HW timeout on completion */
-	XVSEC_MCAP_FILE_OP_HW_BUSY,
-	/** Provided file path is too long to fit in internal buffers */
-	XVSEC_MCAP_FILE_PATH_TOO_LONG
-}file_operation_status_t;
-
-
-/**
- * @struct  -	_axi_reg_data
- * @brief	AXI register access structure (for Read & Writes)
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_api_union
- **/
-
-typedef union _axi_reg_data{
-	/** AXI register access parameters for Versal devices */
-	struct {
-		/** Holds the AXI sub-device operating mode (32 bit mode/128 bit mode),
-		 *  128 bit mode only supported for write operation
-		 **/
-		axi_access_mode_t mode;
-		/** AXI register address */
-		uint32_t address;
-		/** data field holds the data to write into the provided address
-		 *  for Write operation.
-		 *  Holds the data at the provided address for read operation
-		 **/
-		uint32_t data[4];
-	}v2;
-}axi_reg_data_t;
-/**
- * @struct	_axi_cache_attr
- * @brief	AXI cache and protection settings
- *		V2 corresponds to Versal devices
- *
- * @ingroup xvsec_api_union
- **/
-
-typedef union _axi_cache_attr{
-	/** AXI cache attributes for Versal devices */
-	struct {
-		/** AXI cache bits */
-		uint8_t axi_cache;
-		/** AXI protection bits */
-		uint8_t axi_prot;
-	}v2;
-}axi_cache_attr_t;
-
-/*****************************************************************************/
-/**
- * xvsec_lib_init() -	Initializes the XVSEC Library by allocating memory
- *			to support requested number of devices
- *
- * @param[in]	max_devices	Maximum devices to support
- *
- * @return	XVSEC_SUCCESS			: Success
- * @return	XVSEC_ERR_MEM_ALLOC_FAILED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL	: Filure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_lib_init(int max_devices);
-
-/*****************************************************************************/
-/**
- * xvsec_lib_deinit() - De-initializes the XVSEC Library by
- *			freeing allocated memory and clearing the context
- *
- * @param	none
- *
- * @return	XVSEC_SUCCESS			: Success
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL	: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_lib_deinit(void);
-
-/*****************************************************************************/
-/**
- * xvsec_open() - Opens XVSEC character device which is dedicated to the given
- *                bus number and device number and returns a unique handle to
- *                access the device
- *
- *
- * @param[in]	bus_no		PCIe bus number on which device sits
- * @param[in]	dev_no		Device number in the PCIe bus
- * @param[in]	dev_str		string to append to create character device.
- * @param[out]	handle		Unique handle returned to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_MAX_DEVICES_LIMIT_REACHED		: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_open(uint16_t bus_no, uint16_t dev_no, xvsec_handle_t *handle, char *dev_str);
-
-/*****************************************************************************/
-/**
- * xvsec_close() - Closes XVSEC character device of provided handle
- *
- * @param[in]	handle		Unique handle to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_NULL_POINTER			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_close(xvsec_handle_t *handle);
-
-/*****************************************************************************/
-/**
- * xvsec_get_cap_list() - Returns the supported VSEC capabilities
- *			  of the given handle
- *
- * @param[in]		handle		Unique handle to access the device
- * @param[out]		cap_list	Supported capability list
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_get_cap_list(xvsec_handle_t *handle, xvsec_cap_list_t *cap_list);
-
-/*****************************************************************************/
-/**
- * xvsec_show_device() - Shows the device information of the given handle
- *
- * @param[in]	handle		Unique handle to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_show_device(xvsec_handle_t *handle);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_reset() - Resets the configuration logic of the given handle
- *
- * @param[in]	handle		Unique handle to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_reset(xvsec_handle_t *handle);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_module_reset() - Resets the MCAP module of the given handle
- *
- * @param[in]	handle		Unique handle to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_module_reset(xvsec_handle_t *handle);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_full_reset() - Resets bothconfiguration logic & MCAP module
- *                           of the given handle
- *
- * @param[in]	handle		Unique handle to access the device
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_full_reset(xvsec_handle_t *handle);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_get_data_registers() - Returns the MCAP read data registers
- *
- * @param[in]	handle		Unique handle to access the device
- * @param[out]	data[]		MCAP read data register values
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_get_data_registers(xvsec_handle_t *handle, uint32_t data[4]);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_get_revision() - Returns the MCAP read data registers
- *
- * @param[in]   handle          Unique handle to access the device
- * @param[out]  rev[]          MCAP read data register values
- *
- * @return      XVSEC_SUCCESS                           : Success
- * @return      XVSEC_ERR_INVALID_PARAM                 : Failure
- * @return      XVSEC_ERR_OPERATION_NOT_SUPPORTED       : Failure
- * @return      XVSEC_ERR_LINUX_SYSTEM_CALL             : Failure
- * @ingroup xvsec_api_func
- ******************************************************************************/
-int xvsec_mcap_get_revision(xvsec_handle_t *handle, uint32_t *rev);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_get_registers() - Returns the MCAP register set
- *
- * @param[in]	handle		Unique handle to access the device
- * @param[out]	mcap_regs	MCAP register values
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_get_registers(xvsec_handle_t *handle,
-				xvsec_mcap_regs_t *mcap_regs);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_get_fpga_registers() - Returns the FPGA configuration register set
- *
- * @param[in]	handle		Unique handle to access the device
- * @param[out]	fpga_cfg_regs	FPGA configuration register values
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_get_fpga_registers(xvsec_handle_t *handle,
-					xvsec_fpga_cfg_regs_t *fpga_cfg_regs);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_access_config_reg() - Performs read/write operations on
- *                                  the MCAP register set
- *
- * @param[in]		handle	Unique handle to access the device
- * @param[in]		offset	Register address offset from MCAP Base address
- * @param[inout]	data	Data pointer which holds the data to write /
- *                              the data after read
- * @param[in]		access	Control specifier which specifies type of
- *                              access (8 bits/16 bits/32 bits)
- * @param[in]		write	Control specifier which specifies write/read
- *                                operation
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_INVALID_OFFSET		: Failure
- * @return	XVSEC_ERR_INVALID_OFFSET_ACCESS_COMBO	: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_access_config_reg(xvsec_handle_t *handle, uint16_t offset,
-					void *data, access_type_t access,
-					bool write);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_access_fpga_config_reg() - Performs read/write operations on
- *                                       the FPGA configuration register set
- *
- * @param[in]		handle	Unique handle to access the device
- * @param[in]		offset	Register address offset from MCAP Base address
- * @param[inout]	data	Data pointer which holds the data to write /
- *                              the data after read
- * @param[in]		write	Control specifier which specifies write/read
- *                              operation
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @return	XVSEC_ERR_INVALID_FPGA_REG_NUM		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_access_fpga_config_reg(xvsec_handle_t *handle, uint16_t offset,
-					void *data, bool write);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_configure_fpga() - Performs bitstream programming on FPGA
- *
- *
- * @param[in]	handle			Unique handle to access the device
- * @param[in]	partial_cfg_file	Partial Clear bitstream file
- * @param[in]	bitfile			Bitstream file
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @return	XVSEC_ERR_INVALID_FPGA_REG_NUM		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_configure_fpga(xvsec_handle_t *handle,
-				char *partial_cfg_file, char *bitfile);
-
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_access_axi_reg - Performs AXI read/write operations
- *
- * @param[in]		handle	Unique handle to access the device
- * @param[in]		address	axi address to be read/write
- * @param[inout]	value	Data pointer which holds the data to write/read
- *                          For Read Only 32b mode is supported. For Write 32b/128b modes are supported.
- *                          Data buffer size is assumed  4 bytes in case of 32b mode
- *                          Data buffer size is assumed 16 bytes in case of 128b mode
- *
- * @param[in]		write	Control specifier which specifies write/read
- *                              operation
- * @param[in]		mode	32bit or 128bit axi mode
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_access_axi_reg(xvsec_handle_t *handle, uint32_t address,
-	void *value, bool write, axi_access_mode_t mode);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_file_download() - Performs File download at specified address
- *
- *
- * @param[in]	handle          Unique handle to access the device
- * @param[in]	fixed_address   Address Type (is it fixed/incr)
- * @param[in]	mode_128_bit    Access Mode (128 bit or 32 bit)
- * @param[in]	file_name       File to download
- * @param[in]	dev_address     The address to download the file
- * @param[in]	tr_mode         Data transfer mode(slow/fast)
- * @param[in]	sbi_address     SBI reg block address
- * @param[out]	op_status       file download status
- * @param[out]	err_index       file download error index
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_file_download(xvsec_handle_t *handle,
-	bool fixed_address, bool mode_128_bit,
-	char *file_name, uint32_t dev_address,
-	data_transfer_mode_t tr_mode, uint32_t sbi_address,
-	file_operation_status_t  *op_status, size_t *err_index);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_file_upload() - Performs File Upload from specified address
- *
- *
- * @param[in]	handle			Unique handle to access the device
- * @param[in]	fixed_address	Address Type (is it fixed/incr)
- * @param[in]	file_name		File to download
- * @param[in]	dev_address		The address to download the file
- * @param[in]	length			Length of the file to upload
- * @param[out]	op_status		file upload status
- * @param[out]	err_index		file upload error index
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @return	XVSEC_FAILURE				: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_file_upload(xvsec_handle_t *handle,
-	bool fixed_address, char *file_name,
-	uint32_t dev_address, size_t length,
-	file_operation_status_t  *op_status, size_t *err_index);
-
-/*****************************************************************************/
-/**
- * xvsec_mcap_set_axi_cache_attr - To set AXI cache and protection bits
- *
- * @param[in]		handle		Unique handle to access the device
- * @param[in]		user_attr	structure having axi cache and protection value to be set
- *
- * @return	XVSEC_SUCCESS				: Success
- * @return	XVSEC_ERR_INVALID_PARAM			: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @return	XVSEC_ERR_LINUX_SYSTEM_CALL		: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_mcap_set_axi_cache_attr(xvsec_handle_t *handle, axi_cache_attr_t *user_attr);
-
-/*****************************************************************************/
-/**
- * xvsec_lib_get_mcap_revision - To get the MCAP version info from Library
- *
- * @param[in]		handle	Unique handle to access the device
- * @param[in]		mrev	Pointer variable to get the MCAP revision
- *
- * @return	XVSEC_SUCCESS						: Success
- * @return	XVSEC_ERR_INVALID_PARAM				: Failure
- * @return	XVSEC_ERR_OPERATION_NOT_SUPPORTED	: Failure
- * @ingroup xvsec_api_func
- *****************************************************************************/
-int xvsec_lib_get_mcap_revision(xvsec_handle_t *handle, uint8_t *mrev);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __XVSEC_H__ */
diff --git a/XVSEC/linux-kernel/libxvsec/xvsec_int.h b/XVSEC/linux-kernel/libxvsec/xvsec_int.h
deleted file mode 100644
index 8cf6b42..0000000
--- a/XVSEC/linux-kernel/libxvsec/xvsec_int.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * This file is part of the XVSEC userspace library which provides the
- * userspace APIs to enable the XSEC driver functionality
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#ifndef __XVSEC_INT_H__
-#define __XVSEC_INT_H__
-
-#define MAX_MCAP_REG_OFFSET	(0x2C)
-#define MAX_MCAPV2_REG_OFFSET	(0x1C)
-
-/* Internal APIs and structures */
-typedef struct handle_t
-{
-	uint16_t	xvsec_magic_no;	/* XVSEC Magic Number */
-	uint8_t		bus_no;		/* PCI bus number */
-	uint8_t		dev_no;		/* Device Number on PCI bus */
-	uint16_t	index;		/* Array Index of handle info */
-	uint8_t		mrev;		/* mcap rev*/
-	bool		valid;		/* Validity of the handle */
-}handle_t;
-
-typedef struct xvsec_user_context_t
-{
-	xvsec_handle_t	*handle;
-	int		fd;
-	pthread_mutex_t	mutex;
-}xvsec_user_context_t;
-
-
-extern int no_of_devs;
-extern xvsec_user_context_t    *xvsec_user_ctx;
-
-extern int xvsec_validate_handle(xvsec_handle_t *handle);
-
-#endif /* __XVSEC_INT_H__ */
diff --git a/XVSEC/linux-kernel/libxvsec/xvsec_mcap.c b/XVSEC/linux-kernel/libxvsec/xvsec_mcap.c
deleted file mode 100644
index a800ee0..0000000
--- a/XVSEC/linux-kernel/libxvsec/xvsec_mcap.c
+++ /dev/null
@@ -1,887 +0,0 @@
-/*
- * This file is part of the XVSEC userspace library which provides the
- * userspace APIs to enable the XSEC driver functionality
- *
- * Copyright (c) 2018-2022  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#include "xvsec.h"
-#include "xvsec_int.h"
-#include "xvsec_drv.h"	/* kernel character Driver layer API's*/
-#include "xvsec_mcap.h"	/* kernel layer MCAP API's */
-
-#define MCAP_LOOP_COUNT		1000000
-
-#define MCAP_SYNC_DWORD		0xFFFFFFFF
-#define MCAP_SYNC_BYTE0		((MCAP_SYNC_DWORD & 0xFF000000) >> 24)
-#define MCAP_SYNC_BYTE1		((MCAP_SYNC_DWORD & 0x00FF0000) >> 16)
-#define MCAP_SYNC_BYTE2		((MCAP_SYNC_DWORD & 0x0000FF00) >> 8)
-#define MCAP_SYNC_BYTE3		((MCAP_SYNC_DWORD & 0x000000FF) >> 0)
-
-#define MCAP_RBT_FILE		".rbt"
-#define MCAP_BIT_FILE		".bit"
-#define MCAP_BIN_FILE		".bin"
-
-int check_error_code(int errcode, const char* fstr)
-{
-	int ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-
-
-	if(errcode == XVSEC_EPERM)
-	{
-		fprintf(stderr, "[XVSEC] :Operation is not supported\n");
-		ret = XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-	}
-	else
-	{
-		fprintf(stderr, "[XVSEC] : ioctl failed for %s ,"
-			"failed with error %d(%s)\n", fstr, errno,
-			strerror(errno));
-	}
-
-	return ret;
-}
-
-/* MCAP specific APIs */
-int xvsec_lib_get_mcap_revision(xvsec_handle_t *handle, uint8_t *mrev)
-{
-	int status = 0;
-	/* Parameter Validation */
-	if((handle == NULL) || (mrev == NULL))
-	{
-		status = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-	{
-		fprintf(stderr, "[XVSEC] : handle corrupted!");
-		goto CLEANUP;
-	}
-
-	/*return the mcap revision*/
-	if(((handle_t *)handle)->mrev == VSEC_REV_UNKNOWN)
-	{
-		status = xvsec_mcap_get_revision(handle, (uint32_t*)mrev);
-		if(status != XVSEC_SUCCESS)
-		{
-			fprintf(stderr, "[XVSEC] : ioctl for get mcap revision failed. ret: %d", status);
-			status = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-		((handle_t *)handle)->mrev = *mrev;
-		goto CLEANUP;
-	}
-
-	*mrev = ((handle_t *)handle)->mrev;
-
-CLEANUP:
-	return status;
-}
-
-int xvsec_mcap_reset(xvsec_handle_t *handle)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if(handle == NULL)
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd, IOC_MCAP_RESET);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_module_reset(xvsec_handle_t *handle)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if(handle == NULL)
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd, IOC_MCAP_MODULE_RESET);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_full_reset(xvsec_handle_t *handle)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if(handle == NULL)
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd, IOC_MCAP_FULL_RESET);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_get_revision(xvsec_handle_t *handle, uint32_t *rev)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (rev == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_MCAP_GET_REVISION, rev);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-}
-
-int xvsec_mcap_set_axi_cache_attr(xvsec_handle_t *handle, axi_cache_attr_t *user_attr)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (user_attr == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_MCAP_SET_AXI_ATTR, user_attr);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-}
-
-
-int xvsec_mcap_get_data_registers(xvsec_handle_t *handle, uint32_t data[4])
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-
-	/* Parameter Validation */
-	if(handle == NULL)
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(data, 0, sizeof(uint32_t)*4);
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_GET_DATA_REGISTERS, data);
-	if(status != XVSEC_SUCCESS)
-	{
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-}
-
-int xvsec_mcap_get_registers(xvsec_handle_t *handle,
-	xvsec_mcap_regs_t *mcap_regs)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-	union mcap_regs regs;
-	uint8_t mrev;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (mcap_regs == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_lib_get_mcap_revision(handle, &mrev);
-	if((status != XVSEC_SUCCESS) || (mrev >= INVALID_MCAP_REVISION))
-		return XVSEC_FAILURE;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(&regs, 0, sizeof(union mcap_regs));
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_GET_REGISTERS, &regs);
-	if((status != XVSEC_SUCCESS) || ( (mrev != MCAP_VERSAL) & (regs.v1.valid == 0)) || ( (mrev == MCAP_VERSAL) & (regs.v2.valid == 0)))
-	{
-		fprintf(stderr, "[XVSEC] : %s, mrev: %d, v1.valid:%d, v2.valid:%d\n", __func__, mrev, regs.v1.valid, regs.v2.valid);
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-	if( mrev == MCAP_VERSAL )
-	{
-		mcap_regs->v2.ext_cap_header      = regs.v2.ext_cap_header;
-		mcap_regs->v2.vendor_header       = regs.v2.vendor_header;
-		mcap_regs->v2.status_reg          = regs.v2.status_reg;
-		mcap_regs->v2.control_reg         = regs.v2.control_reg;
-		mcap_regs->v2.address_reg         = regs.v2.address_reg;
-		mcap_regs->v2.wr_data_reg         = regs.v2.wr_data_reg;
-		mcap_regs->v2.rd_data_reg         = regs.v2.rd_data_reg;
-	}
-	else
-	{
-		mcap_regs->v1.cap_header			= regs.v1.ext_cap_header;
-		mcap_regs->v1.vendor_header			= regs.v1.vendor_header ;
-		mcap_regs->v1.fpga_jtag_id			= regs.v1.fpga_jtag_id  ;
-		mcap_regs->v1.fpga_bitstream_ver		= regs.v1.fpga_bit_ver  ;
-		mcap_regs->v1.status_reg			= regs.v1.status_reg    ;
-		mcap_regs->v1.control_reg			= regs.v1.control_reg   ;
-		mcap_regs->v1.write_data_reg			= regs.v1.wr_data_reg   ;
-		mcap_regs->v1.read_data_reg[0]			= regs.v1.rd_data_reg[0];
-		mcap_regs->v1.read_data_reg[1]			= regs.v1.rd_data_reg[1];
-		mcap_regs->v1.read_data_reg[2]			= regs.v1.rd_data_reg[2];
-		mcap_regs->v1.read_data_reg[3]			= regs.v1.rd_data_reg[3];
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_get_fpga_registers(xvsec_handle_t *handle,
-	xvsec_fpga_cfg_regs_t *fpga_cfg_regs)
-{
-	int ret = XVSEC_SUCCESS;
-	int status;
-	int device_index;
-	union fpga_cfg_regs  regs;
-	uint8_t mrev;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (fpga_cfg_regs == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_lib_get_mcap_revision(handle, &mrev);
-	if((status != XVSEC_SUCCESS) || (mrev >= INVALID_MCAP_REVISION))
-		return XVSEC_FAILURE;
-
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(&regs, 0, sizeof(union fpga_cfg_regs));
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_GET_FPGA_REGISTERS, &regs);
-
-	if( (status != XVSEC_SUCCESS) || ( (mrev != MCAP_VERSAL) & (regs.v1.valid == 0)))
-	{
-		fprintf(stderr, "[XVSEC] : %s, valid : %d, mrev: %d\n", __func__, mrev, regs.v1.valid);
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-	if( (mrev == MCAP_US) || (mrev == MCAP_USPLUS) )
-	{
-
-		fpga_cfg_regs->v1.crc        =  regs.v1.crc    ;
-		fpga_cfg_regs->v1.far        =  regs.v1.far    ;
-		fpga_cfg_regs->v1.fdri       =  regs.v1.fdri   ;
-		fpga_cfg_regs->v1.fdro       =  regs.v1.fdro   ;
-		fpga_cfg_regs->v1.cmd        =  regs.v1.cmd    ;
-		fpga_cfg_regs->v1.ctl0       =  regs.v1.ctl0   ;
-		fpga_cfg_regs->v1.mask       =  regs.v1.mask   ;
-		fpga_cfg_regs->v1.stat       =  regs.v1.stat   ;
-		fpga_cfg_regs->v1.lout       =  regs.v1.lout   ;
-		fpga_cfg_regs->v1.cor0       =  regs.v1.cor0   ;
-		fpga_cfg_regs->v1.mfwr       =  regs.v1.mfwr   ;
-		fpga_cfg_regs->v1.cbc        =  regs.v1.cbc    ;
-		fpga_cfg_regs->v1.idcode     =  regs.v1.idcode ;
-		fpga_cfg_regs->v1.axss       =  regs.v1.axss   ;
-		fpga_cfg_regs->v1.cor1       =  regs.v1.cor1   ;
-		fpga_cfg_regs->v1.wbstar     =  regs.v1.wbstar ;
-		fpga_cfg_regs->v1.timer      =  regs.v1.timer  ;
-		fpga_cfg_regs->v1.scratchpad =  regs.v1.scratchpad  ;
-		fpga_cfg_regs->v1.bootsts    =  regs.v1.bootsts;
-		fpga_cfg_regs->v1.ctl1       =  regs.v1.ctl1   ;
-		fpga_cfg_regs->v1.bspi       =  regs.v1.bspi   ;
-	}
-	else
-	{
-		fprintf(stderr, "[XVSEC] : mcap version is not valid: %d\n", mrev);
-		regs.v1.valid = 0;
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_access_config_reg(xvsec_handle_t *handle, uint16_t offset,
-	void *data, access_type_t access, bool write)
-{
-	int             ret = XVSEC_SUCCESS;
-	int             status;
-	int             device_index;
-	union cfg_data  cfg_data;
-	cfg_data_t      usr_cfg_data;
-	uint8_t         mrev;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (data == NULL) || (access > ACCESS_WORD))
-		return XVSEC_ERR_INVALID_PARAM;
-
-
-	status = xvsec_lib_get_mcap_revision(handle, &mrev);
-	if((status != XVSEC_SUCCESS) || (mrev >= INVALID_MCAP_REVISION))
-		return XVSEC_FAILURE;
-
-
-	if(( (mrev == MCAP_US) || (mrev == MCAP_USPLUS)) && (offset >= MAX_MCAP_REG_OFFSET))
-	{
-		fprintf(stderr, "[XVSEC] : %s : Invalid Offset Provided for US/US+ device\n", __func__);
-		return XVSEC_ERR_INVALID_OFFSET;
-	}
-	else if((mrev == MCAP_VERSAL) && (offset >= MAX_MCAPV2_REG_OFFSET))
-	{
-		fprintf(stderr, "[XVSEC] : %s : Invalid Offset Provided for Versal device\n", __func__);
-		return XVSEC_ERR_INVALID_OFFSET;
-	}
-
-	if(((access == ACCESS_SHORT) && (offset % 2 != 0)) ||
-		((access == ACCESS_WORD) && (offset % 4 != 0)))
-		return XVSEC_ERR_INVALID_OFFSET_ACCESS_COMBO;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	usr_cfg_data.offset = offset;
-	usr_cfg_data.data = 0x0;
-	if(write == true)
-	{
-		if(access == ACCESS_BYTE)
-		{
-			usr_cfg_data.access = 'b';
-			usr_cfg_data.data = (uint32_t)(*(uint8_t *)data);
-		}
-		else if(access == ACCESS_SHORT)
-		{
-			usr_cfg_data.access = 'h';
-			usr_cfg_data.data = (uint32_t)(*(uint16_t *)data);
-		}
-		else
-		{
-			usr_cfg_data.access = 'w';
-			usr_cfg_data.data = (uint32_t)(*(uint32_t *)data);
-		}
-
-		if( mrev == MCAP_VERSAL ) /* cfg data for Versal devices */
-		{
-			cfg_data.v2.offset = usr_cfg_data.offset;
-			cfg_data.v2.access = usr_cfg_data.access;
-			cfg_data.v2.data   = usr_cfg_data.data;
-		}
-		else			  /* cfg data for US/US+ devices */ 
-		{
-			cfg_data.v1.offset = usr_cfg_data.offset;
-			cfg_data.v1.access = usr_cfg_data.access;
-			cfg_data.v1.data   = usr_cfg_data.data;
-		}
-
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_MCAP_WRITE_DEV_CFG_REG, &cfg_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			ret = check_error_code(status, __func__);
-			goto CLEANUP;
-		}
-
-		fprintf(stdout, "[XVSEC] : %s : write operation completed\n", __func__);
-	}
-	else
-	{
-		if(access == ACCESS_BYTE)
-		{
-			usr_cfg_data.access = 'b';
-		}
-		else if(access == ACCESS_SHORT)
-		{
-			usr_cfg_data.access = 'h';
-		}
-		else
-		{
-			usr_cfg_data.access = 'w';
-		}
-		if( mrev == MCAP_VERSAL )
-		{
-			cfg_data.v2.offset = usr_cfg_data.offset;
-			cfg_data.v2.access = usr_cfg_data.access;
-		}
-		else
-		{
-			cfg_data.v1.offset = usr_cfg_data.offset;
-			cfg_data.v1.access = usr_cfg_data.access;
-		}
-
-
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_MCAP_READ_DEV_CFG_REG, &cfg_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			ret = check_error_code(status, __func__);
-			goto CLEANUP;
-		}
-
-		if(mrev == MCAP_VERSAL)
-			usr_cfg_data.data   = cfg_data.v2.data;
-		else
-			usr_cfg_data.data   = cfg_data.v1.data;
-
-		if(access == ACCESS_BYTE)
-		{
-			*(uint8_t *)data = (uint8_t)usr_cfg_data.data;
-		}
-		else if(access == ACCESS_SHORT)
-		{
-			*(uint16_t *)data = (uint16_t)usr_cfg_data.data;
-		}
-		else
-		{
-			*(uint32_t *)data = (uint32_t)usr_cfg_data.data;
-		}
-
-		fprintf(stdout, "[XVSEC] : %s : read operation "
-			"completed\n", __func__);
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-
-int xvsec_mcap_access_axi_reg(xvsec_handle_t *handle, uint32_t address,
-	void *value, bool write, axi_access_mode_t mode)
-
-{
-	int		ret = XVSEC_SUCCESS;
-	int		status;
-	int		device_index;
-	axi_reg_data_t	axi_data;
-	uint32_t* data = (uint32_t*)value;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (data == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	axi_data.v2.mode = mode;
-	axi_data.v2.address = address;
-	axi_data.v2.data[0] = 0;;
-
-	if(write == true)
-	{
-		axi_data.v2.data[0] = (uint32_t)data[0];
-		axi_data.v2.data[1] = (uint32_t)data[1];
-		axi_data.v2.data[2] = (uint32_t)data[2];
-		axi_data.v2.data[3] = (uint32_t)data[3];
-
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-				IOC_MCAP_WRITE_AXI_REG, &axi_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			ret = check_error_code(status, __func__);
-			goto CLEANUP;
-		}
-
-		fprintf(stdout, "[XVSEC] : %s : write operation "
-				"completed\n", __func__);
-	}
-	else
-	{
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-				IOC_MCAP_READ_AXI_REG, &axi_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			ret = check_error_code(status, __func__);
-			goto CLEANUP;
-		}
-
-		data[0] = (uint32_t)axi_data.v2.data[0];
-
-		fprintf(stdout, "[XVSEC] : %s : read operation "
-				"completed\n", __func__);
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-
-int xvsec_mcap_access_fpga_config_reg(xvsec_handle_t *handle, uint16_t offset,
-		void *data, bool write)
-
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			device_index;
-	union fpga_cfg_reg	cfg_data;
-	uint8_t mrev;
-
-	/* Parameter Validation */
-	if((handle == NULL) || (data == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-
-	status = xvsec_lib_get_mcap_revision(handle, &mrev);
-	if((status != XVSEC_SUCCESS) || (mrev >= INVALID_MCAP_REVISION))
-		return XVSEC_FAILURE;
-
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	cfg_data.v1.offset = offset;
-	cfg_data.v1.data = 0;
-
-	if(write == true)
-	{
-		cfg_data.v1.data = (uint32_t)(*(uint32_t *)data);
-
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-			IOC_MCAP_WRITE_FPGA_CFG_REG, &cfg_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			if(errno == EACCES)
-				ret = XVSEC_ERR_INVALID_FPGA_REG_NUM;
-			else
-				ret = check_error_code(status, __func__);
-
-			goto CLEANUP;
-		}
-
-		fprintf(stdout, "[XVSEC] : %s : write operation "
-			"completed\n", __func__);
-	}
-	else
-	{
-		status = ioctl(xvsec_user_ctx[device_index].fd,
-				IOC_MCAP_READ_FPGA_CFG_REG, &cfg_data);
-
-		if(status != XVSEC_SUCCESS)
-		{
-			if(errno == EACCES)
-				ret = XVSEC_ERR_INVALID_FPGA_REG_NUM;
-			else
-				ret = check_error_code(status, __func__);
-
-			goto CLEANUP;
-		}
-
-		*(uint32_t *)data = (uint32_t)cfg_data.v1.data;
-
-		fprintf(stdout, "[XVSEC] : %s : read operation "
-			"completed\n", __func__);
-	}
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-
-	return ret;
-}
-
-int xvsec_mcap_configure_fpga(xvsec_handle_t *handle,
-	char *partial_cfg_file, char *bitfile)
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			device_index;
-	union bitstream_file	bit_files;
-
-	if((handle == NULL) ||
-		((partial_cfg_file == NULL) && (bitfile == NULL)))
-		return XVSEC_ERR_INVALID_PARAM;
-
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	/* V1 arguementes for US/US+ devices to program bitstreasm */
-	bit_files.v1.partial_clr_file = partial_cfg_file;
-	bit_files.v1.bitstream_file = bitfile;
-	bit_files.v1.status = MCAP_BITSTREAM_PROGRAM_FAILURE;
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_PROGRAM_BITSTREAM, &bit_files);
-	
-	if((status != XVSEC_SUCCESS) ||
-		(bit_files.v1.status != MCAP_BITSTREAM_PROGRAM_SUCCESS))
-	{
-		fprintf(stderr, "[XVSEC] : %s : err status : %d\n", __func__, bit_files.v1.status);
-		ret = check_error_code(status, __func__);
-		goto CLEANUP;
-	}
-
-	fprintf(stdout, "[XVSEC] : %s : Bitstream Program successful\n", __func__);
-
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-
-}
-
-int xvsec_mcap_file_download(xvsec_handle_t *handle,
-	bool fixed_address, bool mode_128_bit,
-	char *file_name, uint32_t dev_address,
-	data_transfer_mode_t tr_mode, uint32_t sbi_address,
-	file_operation_status_t  *op_status, size_t *err_index)
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			device_index;
-	union file_download_upload download_info;
-
-	if ((handle == NULL) || (file_name == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(&download_info, 0, sizeof(union file_download_upload));
-
-	download_info.v2.mode =
-		(mode_128_bit == true) ? MCAP_AXI_MODE_128B : MCAP_AXI_MODE_32B;
-	download_info.v2.addr_type =
-		(fixed_address == true) ? FIXED_ADDRESS : INCREMENT_ADDRESS;
-	download_info.v2.address = dev_address;
-	download_info.v2.file_name = file_name;
-	download_info.v2.op_status = FILE_OP_FAILED;
-	download_info.v2.tr_mode =
-		(tr_mode == XVSEC_MCAP_DATA_TR_MODE_SLOW) ? DATA_TRANSFER_MODE_SLOW : DATA_TRANSFER_MODE_FAST;
-	download_info.v2.sbi_address = sbi_address;
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_FILE_DOWNLOAD, &download_info);
-
-	*op_status = (file_operation_status_t)download_info.v2.op_status;
-	*err_index = download_info.v2.err_index;
-
-	if((status < 0) ||
-		(download_info.v2.op_status != FILE_OP_SUCCESS))
-	{
-		fprintf(stderr, "[XVSEC] : %s : ioctl for "
-			"IOC_MCAP_FILE_DOWNLOAD failed with error %d(%s), "
-			"status : %d, failed at index: %ld\n", __func__,
-			errno, strerror(errno),
-			download_info.v2.op_status,
-			download_info.v2.err_index);
-
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-
-	fprintf(stdout, "[XVSEC] : %s : File Download successful\n", __func__);
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-}
-
-int xvsec_mcap_file_upload(xvsec_handle_t *handle,
-	bool fixed_address, char *file_name,
-	uint32_t dev_address, size_t length,
-	file_operation_status_t  *op_status, size_t *err_index)
-{
-	int			ret = XVSEC_SUCCESS;
-	int			status;
-	int			device_index;
-	union file_download_upload upload_info;
-
-	if ((handle == NULL) || (file_name == NULL))
-		return XVSEC_ERR_INVALID_PARAM;
-
-	status = xvsec_validate_handle(handle);
-	if(status < 0)
-		return status;
-
-	device_index = ((handle_t *)handle)->index;
-
-	pthread_mutex_lock(&xvsec_user_ctx[device_index].mutex);
-
-	memset(&upload_info, 0, sizeof(union file_download_upload));
-
-	upload_info.v2.addr_type =
-		(fixed_address == true) ? FIXED_ADDRESS : INCREMENT_ADDRESS;
-	upload_info.v2.address = dev_address;
-	upload_info.v2.file_name = file_name;
-	upload_info.v2.length = length;
-	upload_info.v2.op_status = FILE_OP_FAILED;
-
-	status = ioctl(xvsec_user_ctx[device_index].fd,
-		IOC_MCAP_FILE_UPLOAD, &upload_info);
-
-	*op_status = (file_operation_status_t)upload_info.v2.op_status;
-	*err_index = upload_info.v2.err_index;
-
-	if((status < 0) ||
-		(upload_info.v2.op_status != FILE_OP_SUCCESS))
-	{
-		fprintf(stderr, "[XVSEC] : %s : ioctl for "
-			"IOC_MCAP_FILE_UPLOAD failed with error %d(%s), "
-			"status : %d, failed at index: %ld\n", __func__,
-			errno, strerror(errno),
-			upload_info.v2.op_status,
-			upload_info.v2.err_index);
-
-		ret = XVSEC_ERR_LINUX_SYSTEM_CALL;
-		goto CLEANUP;
-	}
-
-	if (upload_info.v2.length != length) {
-		fprintf(stderr, "[XVSEC] : %s : Partial file uploaded, "
-				"Requested len : %zu, Uploaded len: %ld\n",
-				__func__, length, upload_info.v2.length);
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	fprintf(stdout, "[XVSEC] : %s : File Upload successful\n", __func__);
-
-CLEANUP:
-	pthread_mutex_unlock(&xvsec_user_ctx[device_index].mutex);
-	return ret;
-
-}
diff --git a/XVSEC/linux-kernel/tools/Makefile b/XVSEC/linux-kernel/tools/Makefile
deleted file mode 100644
index 37d7edb..0000000
--- a/XVSEC/linux-kernel/tools/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-SHELL = /bin/bash
-build_dir = $(PWD)/../build
-CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes
-CFLAGS += -I. -I$(build_dir)/lib/
-CFLAGS += $(EXTRA_FLAGS)
-LDFLAGS += -L$(build_dir)/lib/ -lxvsec -lpthread -rdynamic
-
-XVSECCTL = xvsecctl
-XVSECCTL_OBJS := $(patsubst %.c,%.o,$(wildcard *.c))
-
-all: clean $(XVSECCTL)
-
-$(XVSECCTL): $(XVSECCTL_OBJS)
-	@mkdir -p -m 755 $(build_dir)
-	$(CC) $^ -o $(XVSECCTL) $(LDFLAGS)
-	@mv -f $(XVSECCTL) $(build_dir)
-	@rm -f *.o
-
-clean:
-	@rm -f *.o */*.o $(XVSECCTL) $(build_dir)/$(XVSECCTL)* $(build_dir)/*.sh
diff --git a/XVSEC/linux-kernel/tools/main.c b/XVSEC/linux-kernel/tools/main.c
deleted file mode 100644
index 8847398..0000000
--- a/XVSEC/linux-kernel/tools/main.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2018-2022  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <limits.h>
-#include <signal.h>
-#include <execinfo.h>
-
-#include "version.h"
-#include "xvsec.h"
-#include "main.h"
-#include "mcap_ops.h"
-#include "xvsec_parser.h"
-
-static char version[] =
-	XVSEC_TOOL_MODULE_DESC "\t: v" XVSEC_TOOL_VERSION "\n";
-
-static int execute_xvsec_help_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_xvsec_verbose_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_xvsec_list_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int validate_capability(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-
-/*extern def */
-extern int get_mcap_version(xvsec_handle_t *handle, enum mcap_revision *mrev);
-
-struct xvsec_ops xvsec_ops[] = {
-	{XVSEC_HELP,		execute_xvsec_help_cmd},
-	{XVSEC_VERBOSE,		execute_xvsec_verbose_cmd},
-	{XVSEC_LIST_VSECS,	execute_xvsec_list_cmd},
-	{XVSEC_OP_END,		NULL}
-};
-
-void SignalHandler(int SignalNum)
-{
-	int j, nptrs;
-	void *buffer[100];
-	char **strings;
-
-	fprintf(stderr, "Received Signal : %d\n", SignalNum);
-
-	nptrs = backtrace(buffer, 100);
-	fprintf(stderr, "backtrace() returned %d addresses\n", nptrs);
-
-	/* The call backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO)
-	would produce similar output to the following: */
-
-	strings = backtrace_symbols(buffer, nptrs);
-	if (strings == NULL)
-	{
-		perror("backtrace_symbols");
-		exit(EXIT_FAILURE);
-	}
-
-	for (j = 0; j < nptrs; j++)
-	{
-		printf("%s\n", strings[j]);
-	}
-
-	free(strings);
-
-	exit(-1);
-}
-
-static void xvsec_common_help(FILE *fp)
-{
-	fprintf(fp, "Usage: xvsec -b <Bus No> -F <Device No> "
-			"-c <Capability ID> [Capability Supported Options]\n");
-	fprintf(fp, "     : xvsec -b <Bus No> -F <Device No> -l\n");
-	fprintf(fp, "     : xvsec -h/-H\n");
-	fprintf(fp, "     : xvsec -v\n\n");
-	fprintf(fp, "Options:\n");
-	fprintf(fp,
-			"\t-h/H\t\t\tHelp\n"
-			"\t-b    <bus_no>\tSpecify PCI bus no on which device sits\n"
-			"\t-F    <dev_no>\tSpecify PCI device no on the bus\n"
-			"\t-c    <cap_id>\tSpecify the capability ID\n"
-			"\t-l    \t\tList the supported Xilinx VSECs\n"
-			"\t-v    \t\tVerbose information of Device\n"
-			"\n");
-}
-
-static void ultrascale_help(FILE *fp)
-{
-	fprintf(fp,
-			"US/US+ MCAP options(Ext Cap ID : 0xB, VSEC ID:0x0001, VSEC Rev : 0 or 1):\n"
-			"\t-p    <file>\t Program Bitstream(.bin/.bit/.rbt)\n"
-			"\t-C    <file>\t Partial Reconfig Clear File(.bin/.bit/.rbt)\n"
-			"\t-r\t\t Performs Simple Reset\n"
-			"\t-m\t\t Performs Module Reset\n"
-			"\t-f\t\t Performs Full Reset\n"
-			"\t-D\t\t Read Data Registers\n"
-			"\t-d\t\t Dump all the MCAP Registers\n"
-			"\t-o\t\t Dump FPGA Config Registers\n"
-			"\t-a <byte offset> [type [data]]  Access the MCAP Registers\n"
-			"\t\t      here type[data] - b for byte data [8 bits]\n"
-			"\t\t      here type[data] - h for half word data [16 bits]\n"
-			"\t\t      here type[data] - w for word data [32 bits]\n"
-			"\t-s <register no> [w [data]]  Access FPGA Config Registers\n"
-			"\t\t      here [w [data]] - Write operation with data\n"
-			"\t\t                      - Read Operation if 'w' not given\n"
-			"\t\t     "
-			"\n");
-}
-
-static void versal_help(FILE *fp)
-{
-	fprintf(fp,
-			"VERSAL MCAP options(Ext Cap ID : 0xB, VSEC ID:0x0001, VSEC Rev : 2):\n"
-			"\t-m\t\t Performs Module Reset\n"
-			"\t-d\t\t Print the contents of the MCAP Registers\n"
-			"\t-p  mode <32b/128b> type <fixed/incr> <address> <file> [tr_mode <slow/fast>] [sbi <address>]   Download the specified File (.pdi) at given address\n"
-			"\t    \tmode <32b>   - 32-bit mode should be used\n"
-			"\t    \tmode <128b>  - 128-bit mode should be used\n"
-			"\t    \ttype <fixed> - Address is fixed\n"
-			"\t    \ttype <incr>  - Address should be incremented based on specified mode\n"
-			"\t    \ttr_mode      - optional slow/fast download mode option\n"
-			"\t    \tsbi <address>   - required if download target is SBI and the address must be provided\n"
-			"\t-t  type <fixed/incr> <address> <len> <file>   Read the contents at given address for the given len into given file\n"
-			"\t    \ttype <fixed> - Address is fixed\n"
-			"\t    \ttype <incr>  - Address should be incremented based on specified mode\n"
-			"\t-a  <byte offset> [type [data]]                   Access the MCAP Registers\n"
-			"\t    \there type[data] - b for byte data [8 bits]\n"
-			"\t    \there type[data] - h for half word data [16 bits]\n"
-			"\t    \there type[data] - w for word data [32 bits]\n"
-			"\t-x  [mode <32b/128b>] <address> [w [data]]         Access the AXI Registers\n"
-			"\t    \t[mode <32b/128b>] - here mode is valid only for 32b/128b write\n"
-			"\t    \t                  - Not valid for Read Operation\n"
-			"\t    \there [w [data]]   - Write operation with data\n"
-			"\t    \t                  - Read Operation if 'w' not given\n"
-			"\t-q  [axi_cache <data> axi_prot <data>]	Set the AXI cache and protections bits\n"
-			"\t                        - axi_cache valid range 0 to 15, axi_prot valid range 0 to 7\n"
-			"\t\t     "
-			"\n");
-}
-
-static void usage(FILE *fp)
-{
-	xvsec_common_help(fp);
-	ultrascale_help(fp);
-	versal_help(fp);
-}
-
-static int execute_xvsec_help_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-
-	if(args == NULL)
-		return XVSEC_FAILURE;
-
-	if(args->help.flag == false)
-		return XVSEC_FAILURE;
-
-	usage(stdout);
-
-	return 0;
-}
-
-static int execute_xvsec_verbose_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if((xvsec_handle == NULL) || (args == NULL))
-		return XVSEC_FAILURE;
-
-	if(args->verbose.flag == false)
-		return XVSEC_FAILURE;
-
-
-	fprintf(stdout, "%s", version);
-	ret = xvsec_show_device(xvsec_handle);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_show_device failed "
-			"with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-
-	return 0;
-}
-
-static int execute_xvsec_list_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	uint16_t index;
-
-	if((xvsec_handle == NULL) || (args == NULL))
-		return XVSEC_FAILURE;
-
-	if(args->list_caps.flag == false)
-		return XVSEC_FAILURE;
-
-	memset(&args->list_caps.cap_list, 0, sizeof(xvsec_cap_list_t));
-	ret = xvsec_get_cap_list(xvsec_handle, &args->list_caps.cap_list);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_get_cap_list failed with error %d(%s) "
-			"handle : 0x%lX\n", ret, error_codes[-ret],
-			*xvsec_handle);
-		return 0;
-	}
-
-	fprintf(stdout, "No of Supported Extended capabilities : %d\n",
-			args->list_caps.cap_list.no_of_caps);
-
-
-	fprintf(stdout, "VSEC ID\t\tVSEC Rev\tVSEC Name\tDriver Support\n");
-	fprintf(stdout, "-------\t\t--------\t---------\t--------------\n");
-	for(index = 0; index < args->list_caps.cap_list.no_of_caps; index++)
-	{
-		fprintf(stdout, "0x%04X\t\t0x%04X\t\t%-9s\t%-14s\n",
-			args->list_caps.cap_list.cap_info[index].cap_id,
-			args->list_caps.cap_list.cap_info[index].rev_id,
-			args->list_caps.cap_list.cap_info[index].cap_name,
-			(args->list_caps.cap_list.cap_info[index].is_supported ? "Yes" : "No"));
-	}
-
-	return 0;
-}
-
-static int validate_capability(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	uint16_t index;
-	bool is_capable;
-	xvsec_cap_list_t cap_list;
-
-	if(args->cap_id == 0xFFFF)
-	{
-		fprintf(stderr, "ERROR: Capability ID(-c) "
-			"argument is missing\n");
-		return XVSEC_ERR_CAPABILITY_ID_MISSING;
-	}
-
-	memset(&cap_list, 0, sizeof(xvsec_cap_list_t));
-	ret = xvsec_get_cap_list(xvsec_handle, &cap_list);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_get_cap_list failed with error %d(%s) "
-			"handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-		return ret;
-	}
-
-	is_capable = false;
-	for(index = 0; index < cap_list.no_of_caps; index++)
-	{
-		if(cap_list.cap_info[index].cap_id == args->cap_id)
-		{
-			is_capable = true;
-		}
-	}
-
-	if(is_capable == false)
-	{
-		fprintf(stderr, "ERROR: Capability ID(-c) %d "
-			"is not supported\n", args->cap_id);
-		return XVSEC_ERR_CAPABILITY_NOT_SUPPORTED;
-	}
-
-	return 0;
-}
-
-int main(int argc, char *argv[])
-{
-	int			ret = 0, sts = 0;
-	int                     no_of_devices = 2; /* no_of_devices: Need 2 user_ctx to handle two character dev for each target */
-	xvsec_handle_t		xvsec_handle = -1;
-	xvsec_handle_t		xvsec_handle_mcap = -1;
-	struct args		args;
-	enum xvsec_operation	op;
-	enum mcap_operation	mcap_op;
-
-	if (getuid() != 0)
-	{
-		fprintf(stderr, "%s : Please run in sudo mode\n", argv[0]);
-		return XVSEC_FAILURE;
-	}
-
-	/* Check for arguments validity */
-	if(argc < 2)
-	{
-		usage(stderr);
-		return XVSEC_FAILURE;
-	}
-
-	signal(SIGSEGV, SignalHandler);
-
-	memset(&args, 0, sizeof(struct args));
-	args.bus_no = 0xFFFF;
-	args.dev_no = 0xFFFF;
-	args.cap_id = 0xFFFF;
-	args.rev_id.mrev = XVSEC_INVALID_MCAP_REVISION;
-	/* Parse the arguments */
-	sts = parse_arguments(argc, argv, &args);
-	if(sts < 0) {
-		fprintf(stderr, "parse_arguments failed\n");
-		return XVSEC_FAILURE;
-	}
-
-	if (args.parse_err == true) {
-		fprintf(stderr, "Given Invalid Argument combination\n\n");
-		usage(stderr);
-		return XVSEC_FAILURE;
-	}
-
-	sts = xvsec_ops[XVSEC_HELP].execute(NULL, &args);
-	if(sts == 0)
-	{
-		return 0;
-	}
-
-	/* Check for mandatory options provided in arguments list */
-	if((args.bus_no == 0xFFFF) || (args.dev_no == 0xFFFF))
-	{
-		fprintf(stderr, "ERROR: bus number(-b), device number(-F), "
-			"options are mandatory\n");
-		return XVSEC_FAILURE;
-	}
-
-	sts = xvsec_lib_init(no_of_devices);
-	if(sts < 0)
-	{
-		ret = sts;
-		fprintf(stderr, "xvsec_lib_init failed with error %d(%s)\n",
-			ret, error_codes[-ret]);
-		return ret;
-	}
-
-	/* open system call for XVSEC character driver */
-	memset(&xvsec_handle, 0, sizeof(xvsec_handle));
-	sts = xvsec_open(args.bus_no, args.dev_no, &xvsec_handle, XVSEC_DEV_STR);
-	if(sts < 0)
-	{
-		ret = sts;
-		fprintf(stderr, "xvsec_handle: xvsec_open failed with error %d(%s) "
-			"for bus no : %d, device no : %d\n",
-			ret, error_codes[-ret], args.bus_no, args.dev_no);
-		goto CLEANUP0;
-	}
-
-	/* Execute commonly Supported XVSEC Operations if requested */
-	for(op = XVSEC_VERBOSE; xvsec_ops[op].execute != NULL; op++)
-	{
-		sts = xvsec_ops[op].execute(&xvsec_handle, &args);
-		if(sts == 0)
-		{
-			goto CLEANUP1;
-		}
-	}
-
-	sts = validate_capability(&xvsec_handle, &args);
-	if(sts < 0)
-	{
-		ret = sts;
-		goto CLEANUP1;
-	}
-
-	if(args.cap_id == MCAP_CAP_ID)
-	{
-		/* open system call for MCAP character driver */
-		memset(&xvsec_handle_mcap, 0, sizeof(xvsec_handle_mcap));
-		sts = xvsec_open(args.bus_no, args.dev_no, &xvsec_handle_mcap, XVSEC_MCAP_DEV_STR);
-		if(sts < 0)
-		{
-			ret = sts;
-			fprintf(stderr, "xvsec_handle_mcap: MCAP xvsec_open failed with error %d(%s) "
-					"for bus no : %d, device no : %d\n",
-					ret, error_codes[-ret], args.bus_no, args.dev_no);
-
-			sts = xvsec_close(&xvsec_handle);
-			if(sts < 0)
-			{
-				ret = sts;
-				fprintf(stderr, "xvsec_handle: xvsec_close failed with error %d(%s) "
-					"for bus no : %d, device no : %d\n", ret,
-					error_codes[-ret], args.bus_no, args.dev_no);
-			}
-
-			goto CLEANUP1;
-		}
-
-		sts = xvsec_lib_get_mcap_revision(&xvsec_handle_mcap, (uint8_t *)&args.rev_id.mrev);
-
-		if( sts != XVSEC_SUCCESS )
-		{
-			fprintf(stderr, "Failed to get MCAP version with sts: %d\n", sts);
-			goto CLEANUP1;
-		}
-		else
-		{
-			fprintf(stdout, "MCAP version: %d\n", args.rev_id.mrev);
-		}
-
-		/*parse args dependent on mcap version*/
-		sts = parse_mcap_arguments(argc, argv, &args);
-		if(sts != XVSEC_SUCCESS)
-		{
-			ret = sts;
-			goto CLEANUP1;
-		}
-
-		for(mcap_op = MCAP_RESET;
-			mcap_ops[mcap_op].execute != NULL; mcap_op++)
-		{
-			sts = mcap_ops[mcap_op].execute(&xvsec_handle_mcap, &args);
-			if(sts == 0)
-			{
-				break;
-			}
-		}
-
-		if(mcap_ops[mcap_op].execute == NULL)
-		{
-			fprintf(stderr, "ERR : Invalid Command Given\n");
-			goto CLEANUP1;
-		}
-	}
-
-CLEANUP1:
-	if (xvsec_handle != (xvsec_handle_t)(-1)) {
-		sts = xvsec_close(&xvsec_handle);
-		if(sts < 0)
-		{
-			ret = sts;
-			fprintf(stderr, "xvsec_close failed with error %d(%s) "
-				"for bus no : %d, device no : %d\n", ret,
-				error_codes[-ret], args.bus_no, args.dev_no);
-		}
-	}
-
-	if (xvsec_handle_mcap != (xvsec_handle_t)(-1)) {
-		sts = xvsec_close(&xvsec_handle_mcap);
-		if(sts < 0)
-		{
-			ret = sts;
-			fprintf(stderr, "xvsec_close for mcap failed with "
-				"error %d(%s) for bus no : %d, device no : %d\n",
-				 ret, error_codes[-ret], args.bus_no, args.dev_no);
-		}
-	}
-
-
-CLEANUP0:
-	sts = xvsec_lib_deinit();
-	if(sts < 0)
-	{
-		ret = sts;
-		fprintf(stderr, "xvsec_lib_deinit failed with error %d(%s)\n",
-			ret, error_codes[-ret]);
-	}
-	return ret;
-}
diff --git a/XVSEC/linux-kernel/tools/main.h b/XVSEC/linux-kernel/tools/main.h
deleted file mode 100644
index 2ccb010..0000000
--- a/XVSEC/linux-kernel/tools/main.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2018-2022  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-
-#ifndef __MAIN_H__
-#define __MAIN_H__
-
-#define XVSEC_DEV_STR   "" 		/*string to append for character device str i.e. /dev/xvsec0300 */
-#define XVSEC_MCAP_DEV_STR  "_mcap"     /*string to append for character device str i.e. /dev/xvsec0300_mcap */
-
-struct help_args {
-	bool flag;
-};
-
-struct verbose_args {
-	bool flag;
-};
-
-struct list_caps_args {
-	bool flag;
-	xvsec_cap_list_t cap_list;
-};
-
-struct mcap_reset_args {
-	bool flag;
-};
-
-struct mcap_module_reset_args {
-	bool flag;
-};
-
-struct mcap_full_reset_args {
-	bool flag;
-};
-
-struct mcap_data_dump_args {
-	bool flag;
-	uint32_t mcap_data_reg[4];
-};
-
-struct mcap_reg_dump_args {
-	bool flag;
-	xvsec_mcap_regs_t mcap_regs;
-};
-
-struct fpga_cfg_reg_dump_args {
-	bool flag;
-	xvsec_fpga_cfg_regs_t fpga_cfg_regs;
-};
-
-struct mcap_access_reg {
-	bool flag;
-	bool write;
-	char access_type;
-	uint16_t offset;
-	uint32_t data;
-};
-
-struct fpga_cfg_access_reg {
-	bool flag;
-	bool write;
-	char cmd;
-	uint16_t offset;
-	uint32_t data;
-};
-
-struct mcap_program_bitstream {
-	bool flag;
-	char *abs_clr_file;
-	char *abs_bit_file;
-};
-
-struct mcap_axi_access_reg {
-	bool flag;
-	bool write;
-	axi_access_mode_t mode;
-	uint32_t address;
-	uint32_t data[4];
-};
-
-struct mcap_file_download {
-	bool flag;
-	bool is_fixed_addr;
-	bool is_128b_mode;
-	uint32_t sbi_addr;
-	char *file_name;
-	uint32_t dev_addr;
-	data_transfer_mode_t tr_mode;
-};
-
-struct mcap_file_upload {
-	bool flag;
-	bool is_fixed_addr;
-	char *file_name;
-	uint32_t dev_addr;
-	size_t length;
-};
-
-/* enum MCAP version info */
-enum mcap_revision {
-	XVSEC_MCAP_US = 0,
-	XVSEC_MCAP_USPLUS,
-	XVSEC_MCAP_VERSAL,
-	XVSEC_INVALID_MCAP_REVISION,
-};
-
-struct rev_id_st{
-	bool flag;
-	/* MCAP revision info */
-	enum mcap_revision mrev;
-};
-
-struct mcap_axi_cache_attr{
-	bool flag;
-	/* MCAP cache attributes */
-	axi_cache_attr_t attr;
-};
-
-struct args {
-	uint16_t			bus_no;
-	uint16_t			dev_no;
-	uint16_t			cap_id;
-	bool				parse_err;
-	struct help_args		help;
-	struct verbose_args		verbose;
-	struct list_caps_args		list_caps;
-	struct mcap_reset_args		reset;
-	struct mcap_module_reset_args	module_reset;
-	struct mcap_full_reset_args	full_reset;
-	struct mcap_data_dump_args	data_dump;
-	struct mcap_reg_dump_args	reg_dump;
-	struct fpga_cfg_reg_dump_args	fpga_reg_dump;
-	struct mcap_access_reg		access_reg;
-	struct fpga_cfg_access_reg	fpga_access_reg;
-	struct mcap_program_bitstream	program;
-	struct mcap_file_download	download;
-	struct mcap_file_upload		upload;
-	struct rev_id_st		rev_id;
-	struct mcap_axi_access_reg	access_axi_reg;
-	struct mcap_axi_cache_attr	axi_cache_settings;
-};
-
-enum xvsec_operation {
-	XVSEC_HELP = 0,
-	XVSEC_VERBOSE,
-	XVSEC_LIST_VSECS,
-	XVSEC_OP_END
-};
-
-struct xvsec_ops {
-	enum xvsec_operation op;
-	int (*execute)(xvsec_handle_t *xvsec_handle, struct args *args);
-};
-
-#endif /* __MAIN_H__ */
diff --git a/XVSEC/linux-kernel/tools/mcap_ops.c b/XVSEC/linux-kernel/tools/mcap_ops.c
deleted file mode 100644
index 8426740..0000000
--- a/XVSEC/linux-kernel/tools/mcap_ops.c
+++ /dev/null
@@ -1,753 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2020-2022 Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <stdbool.h>
-#include <unistd.h>
-#include <limits.h>
-#include <signal.h>
-#include <execinfo.h>
-
-#include "version.h"
-#include "xvsec.h"
-#include "main.h"
-#include "mcap_ops.h"
-
-/* US/US+ MCAP registers display strings */
-static const char *MCAP_reg_names[] = {
-	"Ext Capability",
-	"VSEC Header",
-	"FPGA JTAG ID",
-	"FPGA BitStream Ver",
-	"Status",
-	"Control",
-	"FPGA Write Data",
-	"FPGA Read Data[0]",
-	"FPGA Read Data[1]",
-	"FPGA Read Data[2]",
-	"FPGA Read Data[3]",
-};
-
-static const char *MCAP_sts_fields[] = {
-	"MCAP Error",
-	"MCAP EOS",
-	"MCAP Read Complete",
-	"MCAP Read Count",
-	"MCAP FIFO Overflow",
-	"MCAP FIFO Occupancy",
-	"Req for MCAP Release"
-};
-
-static const char *MCAP_ctl_fields[] = {
-	"MCAP Enable",
-	"MCAP Read Enable",
-	"MCAP Reset",
-	"MCAP Module Reset",
-	"Req for MCAP by PCIe",
-	"MCAP Design Switch",
-	"Write Data Reg Enable"
-};
-
-static const char *fpga_cfg_reg_names[] = {
-	"crc", "far", "fdri", "fdro",
-	"cmd", "ctl0", "mask", "stat",
-	"lout", "cor0", "mfwr", "cbc",
-	"idcode", "axss", "cor1", "wbstar",
-	"timer", "scratchpad", "bootsts", "ctl1",
-	"bspi"
-};
-
-static const uint32_t fpga_cfg_reg_num[] = {
-	0x00, 0x01, 0x02, 0x03, 0x04,
-	0x05, 0x06, 0x07, 0x08, 0x09,
-	0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
-	0x10, 0x11, 0x14, 0x16, 0x18,
-	0x1F
-};
-
-/* Versal MCAP registers display strings */
-static const char *MCAPV2_reg_names[] = {
-	"Ext Capability",
-	"VSEC Header",
-	"Status",
-	"Control",
-	"MCAP RW Addr Register",
-	"MCAP Write Data",
-	"MCAP Read Data",
-};
-
-static const char *MCAPV2_sts_fields[] = {
-	"MCAP Read/Write Status",
-	"MCAP Read Complete",
-	"MCAP FIFO Occupancy",
-	"MCAP Write FIFO Full",
-	"Write FIFO Almost Full",
-	"Write FIFO Almost Empty",
-	"MCAP Write FIFO Empty",
-	"Write FIFO Overflow"
-};
-
-static const char *MCAPV2_ctl_fields[] = {
-	"MCAP Read Enable",
-	"MCAP Write Enable",
-	"MCAP 128-bit Mode",
-	"MCAP Reset",
-	"MCAP AXI Cache",
-	"MCAP AXI Protect"
-};
-
-static int execute_mcap_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_module_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_full_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_data_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_get_revision_cmd(xvsec_handle_t *xvsec_handle,
-        struct args *args);
-static int execute_mcap_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_fpga_cfg_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_access_reg_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_fpga_cfg_access_reg_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_program_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_access_axi_reg_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_file_download_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_file_upload_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args);
-static int execute_mcap_set_axi_cache_attr_cmd(xvsec_handle_t *xvsec_handle,
-        struct args *args);
-
-
-static void print_mcap_sts_fields(uint32_t val);
-static void print_mcap_ctl_fields(uint32_t val);
-
-static void print_mcapv2_sts_fields(uint32_t val);
-static void print_mcapv2_ctl_fields(uint32_t val);
-
-struct mcap_ops mcap_ops[] = {
-	{MCAP_RESET,                execute_mcap_reset_cmd                },
-	{MCAP_MODULE_RESET,         execute_mcap_module_reset_cmd         },
-	{MCAP_FULL_RESET,           execute_mcap_full_reset_cmd           },
-	{MCAP_GET_REVISION,         execute_mcap_get_revision_cmd         },
-	{MCAP_GET_DATA_REGS,        execute_mcap_data_regs_cmd            },
-	{MCAP_GET_REGS,             execute_mcap_regs_cmd                 },
-	{MCAP_GET_FPGA_CFG_REGS,    execute_mcap_fpga_cfg_regs_cmd        },
-	{MCAP_ACCESS_REG,           execute_mcap_access_reg_cmd           },
-	{MCAP_ACCESS_FPGA_CFG_REG,  execute_mcap_fpga_cfg_access_reg_cmd  },
-	{MCAP_PROGRAM_BITSTREAM,    execute_mcap_program_cmd              },
-	{MCAP_ACCESS_AXI_REG,       execute_mcap_access_axi_reg_cmd       },
-	{MCAP_FILE_DOWNLOAD,        execute_mcap_file_download_cmd        },
-	{MCAP_FILE_UPLOAD,          execute_mcap_file_upload_cmd          },
-	{MCAP_SET_AXI_CACHE_ATTR,   execute_mcap_set_axi_cache_attr_cmd},
-	{MCAP_OP_END,               NULL                                  }
-};
-
-static int execute_mcap_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if(args->reset.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_reset(xvsec_handle);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_reset failed "
-			"with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		fprintf(stdout, "Configuration Logic Reset Successful\n");
-	}
-
-	return 0;
-}
-
-static int execute_mcap_module_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if(args->module_reset.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_module_reset(xvsec_handle);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_module_reset "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		fprintf(stdout, "MCAP Module Reset Successful\n");
-	}
-
-	return 0;
-}
-
-static int execute_mcap_full_reset_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if(args->full_reset.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_full_reset(xvsec_handle);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_full_reset failed "
-			"with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		fprintf(stdout, "Both Configuration Logic & "
-			"MCAP Module Reset Successful\n");
-	}
-
-	return 0;
-}
-
-
-static int execute_mcap_get_revision_cmd(xvsec_handle_t *xvsec_handle,
-		struct args *args)
-{
-	int ret = 0;
-
-	if(args->rev_id.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_get_revision(xvsec_handle,
-			&args->rev_id.mrev);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_get_revision "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	return ret;
-}
-
-static int execute_mcap_set_axi_cache_attr_cmd(xvsec_handle_t *xvsec_handle,
-		struct args *args)
-{
-	int ret = 0;
-
-	if(args->axi_cache_settings.flag  == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_set_axi_cache_attr(xvsec_handle,
-			&args->axi_cache_settings.attr);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_set_axi_cache_attr "
-				"failed with error %d(%s) handle : 0x%lX\n",
-				ret, error_codes[-ret], *xvsec_handle);
-	}
-	return ret;
-}
-
-
-static int execute_mcap_data_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if(args->data_dump.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_get_data_registers(xvsec_handle,
-		&args->data_dump.mcap_data_reg[0]);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_get_data_registers "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		fprintf(stdout, "BYTE OFFSET\tRegister Name"
-			"\t\tData Value\n");
-		fprintf(stdout, "-----------\t----------------"
-			"\t----------\n");
-		fprintf(stdout, "0x001C\t\tFPGA Read Data[0]\t"
-			"0x%08X\n", args->data_dump.mcap_data_reg[0]);
-		fprintf(stdout, "0x0020\t\tFPGA Read Data[1]\t"
-			"0x%08X\n", args->data_dump.mcap_data_reg[1]);
-		fprintf(stdout, "0x0024\t\tFPGA Read Data[2]\t"
-			"0x%08X\n", args->data_dump.mcap_data_reg[2]);
-		fprintf(stdout, "0x0028\t\tFPGA Read Data[3]\t"
-			"0x%08X\n", args->data_dump.mcap_data_reg[3]);
-	}
-	return 0;
-}
-
-static int execute_mcap_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	uint16_t index;
-	uint16_t reg_count;
-	uint32_t *reg_value;
-
-	if(args->reg_dump.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_get_registers(xvsec_handle, &args->reg_dump.mcap_regs);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_get_registers "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		reg_count = sizeof(args->reg_dump.mcap_regs)/sizeof(uint32_t);
-		if(args->rev_id.mrev == XVSEC_MCAP_VERSAL) {
-			reg_count = sizeof(args->reg_dump.mcap_regs.v2)/sizeof(uint32_t);
-			reg_value = (uint32_t *)&args->reg_dump.mcap_regs.v2 ;
-		}
-		else {
-			reg_count = sizeof(args->reg_dump.mcap_regs.v1)/sizeof(uint32_t);
-			reg_value = (uint32_t *)&args->reg_dump.mcap_regs.v1;
-		}
-
-		fprintf(stdout, "BYTE OFFSET\tRegister Name\t\tData Value\n");
-		fprintf(stdout, "-----------\t----------------\t----------\n");
-
-		if(args->rev_id.mrev == XVSEC_MCAP_VERSAL)
-		{
-			for(index = 0; index < reg_count; index++)
-			{
-				fprintf(stdout, "0x%04X\t\t%-20s\t0x%08X\n",
-					index*4, MCAPV2_reg_names[index], reg_value[index]);
-				if((index*4) == MCAPV2_STS_REG_OFFSET)
-					print_mcapv2_sts_fields(reg_value[index]);
-				if((index*4) == MCAPV2_CTL_REG_OFFSET)
-					print_mcapv2_ctl_fields(reg_value[index]);
-			}
-		}
-		else
-		{
-			for(index = 0; index < reg_count; index++)
-			{
-		 			
-				fprintf(stdout, "0x%04X\t\t%-20s\t0x%08X\n",
-					index*4, MCAP_reg_names[index], reg_value[index]);
-				if((index*4) == MCAP_STS_REG_OFFSET)
-					print_mcap_sts_fields(reg_value[index]);
-				if((index*4) == MCAP_CTL_REG_OFFSET)
-					print_mcap_ctl_fields(reg_value[index]);
-			}	
-		}
-	}
-	return 0;
-}
-
-static int execute_mcap_fpga_cfg_regs_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	uint16_t index;
-	uint16_t reg_count;
-	uint32_t *reg_value;
-
-	if(args->fpga_reg_dump.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_get_fpga_registers(
-		xvsec_handle, &args->fpga_reg_dump.fpga_cfg_regs);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_get_fpga_registers "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-	}
-	else
-	{
-		reg_count = sizeof(fpga_cfg_reg_num)/sizeof(uint32_t);
-		reg_value = (uint32_t *)&args->fpga_reg_dump.fpga_cfg_regs.v1;  /* fpga cfg for US/US+ devices */
-
-		fprintf(stdout, "FPGA CFG Registers Dump "
-			"(see Configuration User Guide for "
-			"more details)\n\n");
-		fprintf(stdout, "Register No\tRegister Name\t\tData Value\n");
-		fprintf(stdout, "-----------\t----------------\t----------\n");
-
-		for(index = 0; index < reg_count; index++)
-		{
-			fprintf(stdout, "0x%04X\t\t%-20s\t0x%08X\n",
-				fpga_cfg_reg_num[index],
-				fpga_cfg_reg_names[index],
-				reg_value[index]);
-		}
-	}
-
-	return 0;
-}
-
-static int execute_mcap_access_reg_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	access_type_t access;
-	char print_buf[200];
-
-	if(args->access_reg.flag == false)
-		return XVSEC_FAILURE;
-
-	if(args->access_reg.access_type == 'b')
-		access = ACCESS_BYTE;
-	else if(args->access_reg.access_type == 'h')
-		access = ACCESS_SHORT;
-	else
-		access = ACCESS_WORD;
-
-	ret = xvsec_mcap_access_config_reg(xvsec_handle,
-		args->access_reg.offset,
-		(void *)&args->access_reg.data,
-		access,
-		args->access_reg.write);
-	if(ret < 0)
-	{
-		if(ret == XVSEC_ERR_INVALID_OFFSET_ACCESS_COMBO)
-		{
-			fprintf(stderr, "Error : The Address "
-				"specified is invalid for "
-				"the access type \'%c\'\n",
-				args->access_reg.access_type);
-		}
-		else if(ret == XVSEC_ERR_INVALID_OFFSET)
-		{
-			fprintf(stderr, "Error : The specified "
-			"VSEC offset of 0x%X is "
-			"not Valid.\nUse the -d option to "
-			"dump supported VSEC "
-			"registers.\n", args->access_reg.offset);
-		}
-		else
-		{
-			fprintf(stderr,
-				"xvsec_mcap_access_config_reg "
-				"failed with error %d(%s) handle : 0x%lX\n",
-				ret, error_codes[-ret], *xvsec_handle);
-		}
-	}
-	else
-	{
-		char* dstr = NULL;
-		if(args->rev_id.mrev == XVSEC_MCAP_VERSAL)
-			dstr = (char*)MCAPV2_reg_names[args->access_reg.offset/4];
-		else
-			dstr = (char*)MCAP_reg_names[args->access_reg.offset/4];
-
-		if(access == ACCESS_WORD)
-		{
-			snprintf(print_buf, 200, "0x%04X\t\t%-20s\t0x%08X\n",
-				args->access_reg.offset,
-				dstr,
-				args->access_reg.data);
-		}
-		else if(access == ACCESS_SHORT)
-		{
-			snprintf(print_buf, 200, "0x%04X\t\t%-20s\t0x%04X\n",
-				args->access_reg.offset,
-				dstr,
-				args->access_reg.data);
-		}
-		else if(access == ACCESS_BYTE)
-		{
-			snprintf(print_buf, 200, "0x%04X\t\t%-20s\t0x%02X\n",
-				args->access_reg.offset,
-				dstr,
-				args->access_reg.data);
-		}
-		fprintf(stdout, "BYTE OFFSET\tRegister Name\t\tData Value\n");
-		fprintf(stdout, "-----------\t----------------\t----------\n");
-		fprintf(stdout, "%s", print_buf);
-	}
-
-	return 0;
-}
-
-static int execute_mcap_fpga_cfg_access_reg_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	uint16_t index;
-	uint16_t reg_count;
-
-	if(args->fpga_access_reg.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_access_fpga_config_reg(
-		xvsec_handle, args->fpga_access_reg.offset,
-		(void *)&args->fpga_access_reg.data,
-		args->fpga_access_reg.write);
-	if(ret < 0)
-	{
-		if(ret == XVSEC_ERR_INVALID_FPGA_REG_NUM)
-		{
-			fprintf(stderr, "Error : The specified "
-				"configuration register offset of 0x%X is "
-				"not Valid.\nUse the -o option to "
-				"dump supported FPGA configuration "
-				"registers.\n", args->fpga_access_reg.offset);
-		}
-		else
-		{
-			fprintf(stderr,
-				"xvsec_mcap_access_fpga_config_reg "
-				"failed with error %d(%s) handle : 0x%lX\n",
-				ret, error_codes[-ret], *xvsec_handle);
-		}
-	}
-	else
-	{
-		reg_count = sizeof(fpga_cfg_reg_num)/sizeof(uint32_t);
-		for(index = 0; index < reg_count; index++)
-		{
-			if(fpga_cfg_reg_num[index] ==
-				args->fpga_access_reg.offset)
-			{
-				break;
-			}
-		}
-		if(index == reg_count)
-		{
-			fprintf(stderr, "Error : The specified "
-				"configuration register offset of 0x%X is "
-				"not Valid.\nUse the -o option to "
-				"dump supported FPGA configuration "
-				"registers.\n", args->fpga_access_reg.offset);
-			ret = XVSEC_ERR_INVALID_FPGA_REG_NUM;
-			goto CLEANUP;
-		}
-
-		fprintf(stdout, "Register No\tRegister Name\t\tData Value\n");
-		fprintf(stdout, "-----------\t----------------\t----------\n");
-
-		fprintf(stdout, "0x%04X\t\t%-20s\t0x%08X\n",
-			fpga_cfg_reg_num[index],
-			fpga_cfg_reg_names[index],
-			args->fpga_access_reg.data);
-	}
-CLEANUP:
-	return ret;
-}
-
-
-static int execute_mcap_access_axi_reg_cmd(xvsec_handle_t *xvsec_handle,
-		struct args *args)
-{
-	int ret = 0;
-
-	if(args->access_axi_reg.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_access_axi_reg(
-			xvsec_handle, args->access_axi_reg.address,
-			(void *)&args->access_axi_reg.data,
-			args->access_axi_reg.write, args->access_axi_reg.mode);
-
-	if(ret < 0)
-	{
-		fprintf(stderr,
-			"xvsec_mcap_access_axi_reg "
-			"failed with error %d(%s) handle : 0x%lX\n",
-			ret, error_codes[-ret], *xvsec_handle);
-
-		goto CLEANUP;
-	}
-
-	fprintf(stdout, "axi address:\tData Value\n");
-	fprintf(stdout, "------------\t----------\n");
-
-	fprintf(stdout, "0x%08X:\t0x%08X\n", args->access_axi_reg.address, args->access_axi_reg.data[0]);
-	if((args->access_axi_reg.write == true) && (args->access_axi_reg.mode == XVSEC_MCAP_AXI_MODE_128B))
-	{
-		fprintf(stdout, "0x%08X:\t0x%08X\n", args->access_axi_reg.address + 0x4, args->access_axi_reg.data[1]);
-		fprintf(stdout, "0x%08X:\t0x%08X\n", args->access_axi_reg.address + 0x8, args->access_axi_reg.data[2]);
-		fprintf(stdout, "0x%08X:\t0x%08X\n", args->access_axi_reg.address + 0xc, args->access_axi_reg.data[3]);
-	}
-
-CLEANUP:
-	return ret;
-}
-
-static int execute_mcap_program_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-
-	if(args->program.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_configure_fpga(xvsec_handle,
-		args->program.abs_clr_file,
-		args->program.abs_bit_file);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_configure_fpga "
-			"failed with error %d(%s) clear_file:%s, "
-			"bit_file:%s, handle : 0x%lX\n", ret, error_codes[-ret],
-			args->program.abs_clr_file,
-			args->program.abs_bit_file, *xvsec_handle);
-	}
-	else
-	{
-		fprintf(stdout, "FPGA configuration successful\n");
-	}
-
-	if(args->program.abs_clr_file != NULL)
-		free(args->program.abs_clr_file);
-	if(args->program.abs_bit_file != NULL)
-		free(args->program.abs_bit_file);
-
-	return 0;
-}
-
-/* US/US+ registers display strings */
-static void print_mcap_sts_fields(uint32_t val)
-{
-	xvsec_mcap_sts_reg_t *reg = (xvsec_mcap_sts_reg_t*)&val;
-
-	fprintf(stdout, "   bit  0\t%-20s\t%10d\n", MCAP_sts_fields[0], reg->v1.err);
-	fprintf(stdout, "   bit  1\t%-20s\t%10d\n", MCAP_sts_fields[1], reg->v1.eos);
-	fprintf(stdout, "   bit  4\t%-20s\t%10d\n", MCAP_sts_fields[2], reg->v1.read_complete);
-	fprintf(stdout, "   bit 5:7\t%-20s\t%10d\n", MCAP_sts_fields[3], reg->v1.read_count);
-	fprintf(stdout, "   bit  8\t%-20s\t%10d\n", MCAP_sts_fields[4], reg->v1.fifo_ovfl);
-	fprintf(stdout, "   bit 12:15\t%-20s\t%10d\n", MCAP_sts_fields[5], reg->v1.fifo_occu);
-	fprintf(stdout, "   bit 24\t%-20s\t%10d\n", MCAP_sts_fields[6], reg->v1.req4mcap_rel);
-}
-
-static void print_mcap_ctl_fields(uint32_t val)
-{
-	xvsec_mcap_ctl_reg_t *reg = (xvsec_mcap_ctl_reg_t *)&val;
-
-	fprintf(stdout, "   bit  0\t%-20s\t%10d\n", MCAP_ctl_fields[0], reg->v1.enable);
-	fprintf(stdout, "   bit  1\t%-20s\t%10d\n", MCAP_ctl_fields[1], reg->v1.rd_enable);
-	fprintf(stdout, "   bit  4\t%-20s\t%10d\n", MCAP_ctl_fields[2], reg->v1.reset);
-	fprintf(stdout, "   bit  5\t%-20s\t%10d\n", MCAP_ctl_fields[3], reg->v1.module_reset);
-	fprintf(stdout, "   bit  8\t%-20s\t%10d\n", MCAP_ctl_fields[4], reg->v1.req4mcap_pcie);
-	fprintf(stdout, "   bit 12\t%-20s\t%10d\n", MCAP_ctl_fields[5], reg->v1.cfg_desgn_sw);
-	fprintf(stdout, "   bit 16\t%-20s\t%10d\n", MCAP_ctl_fields[6], reg->v1.wr_reg_enable);
-}
-
-/* Versal MCAP registers display strings */
-static void print_mcapv2_sts_fields(uint32_t val)
-{
-	xvsec_mcap_sts_reg_t *reg = (xvsec_mcap_sts_reg_t*)&val;
-
-	fprintf(stdout, "   bit 5:4\t%-20s\t%10d\n",	MCAPV2_sts_fields[0], reg->v2.rw_status);
-	fprintf(stdout, "   bit  8\t%-20s\t%10d\n",	MCAPV2_sts_fields[1], reg->v2.rd_complete);
-	fprintf(stdout, "   bit 20:16\t%-20s\t%10d\n",	MCAPV2_sts_fields[2], reg->v2.fifo_occupancy);
-	fprintf(stdout, "   bit 21\t%-20s\t%10d\n",	MCAPV2_sts_fields[3], reg->v2.wr_fifo_full);
-	fprintf(stdout, "   bit 22\t%-20s\t%10d\n",	MCAPV2_sts_fields[4], reg->v2.wr_fifo_almost_full);
-	fprintf(stdout, "   bit 23\t%-20s\t%10d\n",	MCAPV2_sts_fields[5], reg->v2.wr_fifo_almost_empty);
-	fprintf(stdout, "   bit 24\t%-20s\t%10d\n",	MCAPV2_sts_fields[6], reg->v2.wr_fifo_empty);
-	fprintf(stdout, "   bit 25\t%-20s\t%10d\n",	MCAPV2_sts_fields[7], reg->v2.wr_fifo_overflow);
-}
-
-static void print_mcapv2_ctl_fields(uint32_t val)
-{
-	xvsec_mcap_ctl_reg_t *reg = (xvsec_mcap_ctl_reg_t *)&val;
-
-	fprintf(stdout, "   bit  0\t%-20s\t%10d\n",     MCAPV2_ctl_fields[0], reg->v2.rd_enable);
-	fprintf(stdout, "   bit  4\t%-20s\t%10d\n",     MCAPV2_ctl_fields[1], reg->v2.wr_enable);
-	fprintf(stdout, "   bit  5\t%-20s\t%10d\n",     MCAPV2_ctl_fields[2], reg->v2.mode);
-	fprintf(stdout, "   bit  8\t%-20s\t%10d\n",     MCAPV2_ctl_fields[3], reg->v2.reset);
-	fprintf(stdout, "   bit  19:16\t%-20s\t%10d\n", MCAPV2_ctl_fields[4], reg->v2.axi_cache);
-	fprintf(stdout, "   bit  22:20\t%-20s\t%10d\n", MCAPV2_ctl_fields[5], reg->v2.axi_protect);
-}
-
-static int execute_mcap_file_download_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	file_operation_status_t  status = XVSEC_MCAP_FILE_OP_FAILED;
-	size_t err_index = 0;
-
-	if(args->download.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_file_download(xvsec_handle,
-		args->download.is_fixed_addr, args->download.is_128b_mode,
-		args->download.file_name, args->download.dev_addr,
-		args->download.tr_mode, args->download.sbi_addr, &status, &err_index);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_file_download "
-			"failed with error %d(%s)\n", ret, error_codes[-ret]);
-
-		if((args->download.tr_mode == XVSEC_MCAP_DATA_TR_MODE_FAST) &&
-				((status == XVSEC_MCAP_FILE_OP_FAIL_SLVERR) ||
-				 (status == XVSEC_MCAP_FILE_OP_FAIL_DECERR) ||
-				 (status == XVSEC_MCAP_FILE_OP_HW_BUSY) ||
-				 (status == XVSEC_MCAP_FILE_OP_FAILED))) {
-			fprintf(stdout, "Please try PDI transfer using download "
-				        "option <tr_mode slow>, review option <sbi>, "
-        				"and/or check hardware address mapping is correct\n");
-		}
-
-	}
-	else
-	{
-		fprintf(stdout, "File Download successful\n");
-	}
-
-
-	return ret;
-}
-
-static int execute_mcap_file_upload_cmd(xvsec_handle_t *xvsec_handle,
-	struct args *args)
-{
-	int ret = 0;
-	file_operation_status_t  status;
-	size_t err_index;
-
-	if(args->upload.flag == false)
-		return XVSEC_FAILURE;
-
-	ret = xvsec_mcap_file_upload(xvsec_handle,
-			args->upload.is_fixed_addr,args->upload.file_name,
-			args->upload.dev_addr, args->upload.length,
-			&status, &err_index);
-	if(ret < 0)
-	{
-		fprintf(stderr, "xvsec_mcap_file_upload "
-			"failed with error %d(%s)\n", ret, error_codes[-ret]);
-	}
-	else
-	{
-		fprintf(stdout, "File Upload successful\n");
-	}
-
-
-	return ret;
-}
diff --git a/XVSEC/linux-kernel/tools/mcap_ops.h b/XVSEC/linux-kernel/tools/mcap_ops.h
deleted file mode 100644
index 7008801..0000000
--- a/XVSEC/linux-kernel/tools/mcap_ops.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#ifndef __MCAP_OPS_H__
-#define __MCAP_OPS_H__
-
-#define MCAP_CAP_ID		(0x0001)
-#define MCAP_STS_REG_OFFSET	(0x10)
-#define MCAP_CTL_REG_OFFSET	(0x14)
-#define MCAP_VSEC_HEADER_OFFSET	(0x04)
-#define MCAP_VSEC_REV_MASK	(0xF0000)
-#define MCAP_VSEC_REV_SHIFT	(0x10)
-
-#define MCAPV2_STS_REG_OFFSET   (0x08)
-#define MCAPV2_CTL_REG_OFFSET   (0x0C)
-
-enum mcap_operation {
-	MCAP_RESET = 0,
-	MCAP_MODULE_RESET,
-	MCAP_FULL_RESET,
-	MCAP_GET_REVISION,
-	MCAP_GET_DATA_REGS,
-	MCAP_GET_REGS,
-	MCAP_GET_FPGA_CFG_REGS,
-	MCAP_ACCESS_REG,
-	MCAP_ACCESS_FPGA_CFG_REG,
-	MCAP_PROGRAM_BITSTREAM,
-	MCAP_ACCESS_AXI_REG,
-	MCAP_FILE_DOWNLOAD,
-	MCAP_FILE_UPLOAD,
-	MCAP_SET_AXI_CACHE_ATTR,
-	MCAP_OP_END
-};
-
-struct mcap_ops {
-	enum mcap_operation op;
-	int (*execute)(xvsec_handle_t *xvsec_handle, struct args *args);
-};
-
-extern struct mcap_ops mcap_ops[];
-
-#endif /* __MCAP_OPS_H__ */
diff --git a/XVSEC/linux-kernel/tools/version.h b/XVSEC/linux-kernel/tools/version.h
deleted file mode 100644
index cbb9cc9..0000000
--- a/XVSEC/linux-kernel/tools/version.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2018-2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#ifndef __XVSEC_TOOL_VERSION_H__
-#define __XVSEC_TOOL_VERSION_H__
-
-#define __stringify1(x...)	#x
-#define __stringify(x...)	__stringify1(x)
-
-#define XVSEC_TOOL_MODULE_NAME	"xvsec"
-#define XVSEC_TOOL_MODULE_DESC	"Xilinx VSEC Tool"
-
-#define XVSEC_TOOL_VERSION_MAJOR	2020
-#define XVSEC_TOOL_VERSION_MINOR	2
-#define XVSEC_TOOL_VERSION_PATCH	1
-
-#define XVSEC_TOOL_VERSION	\
-	__stringify(XVSEC_TOOL_VERSION_MAJOR) "." \
-	__stringify(XVSEC_TOOL_VERSION_MINOR) "." \
-	__stringify(XVSEC_TOOL_VERSION_PATCH)
-
-#define XVSEC_TOOL_VERSION_NUM  \
-	((XVSEC_TOOL_VERSION_MAJOR)*1000 + \
-	 (XVSEC_TOOL_VERSION_MINOR)*100 + \
-	  XVSEC_TOOL_VERSION_PATCH)
-
-#endif /* ifndef __XVSEC_TOOL_VERSION_H__ */
diff --git a/XVSEC/linux-kernel/tools/xvsec_parser.c b/XVSEC/linux-kernel/tools/xvsec_parser.c
deleted file mode 100644
index 9607463..0000000
--- a/XVSEC/linux-kernel/tools/xvsec_parser.c
+++ /dev/null
@@ -1,965 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2020-2022,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include "xvsec.h"
-#include "main.h"
-#include "mcap_ops.h"
-#include "xvsec_parser.h"
-#include <libgen.h>
-
-static const char options[] =	":b:F:c:lp:C:rmfdvHhDoa:s:t:x:q:";
-
-/*
- * this is common for US/US+ and Versal devices.
- * access-mcap-regs Option
- */
-int parse_opt_a_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-
-	if(argv[optind] == NULL)
-	{
-		fprintf(stderr, "Access option "
-			"must be provided. Valid options are"
-			" \'b/h/w\'\n");
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-	if(argv[optind][1] != '\0')
-	{
-		fprintf(stderr, "Invalid Access option "
-			"provided %s (\'b/h/w\' are valid)\n",
-			argv[optind]);
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-	args->access_reg.offset =
-		(uint16_t) strtoul(optarg, NULL, 0);
-	args->access_reg.access_type =
-		(char)argv[optind][0];
-
-	if((args->access_reg.access_type != 'b') &&
-			(args->access_reg.access_type != 'h') &&
-			(args->access_reg.access_type != 'w'))
-	{
-		fprintf(stderr, "Invalid Access option "
-			"provided %s (\'b/h/w\' are valid)\n",
-			argv[optind]);
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-
-	if(argv[optind + 1] != NULL)
-	{
-		args->access_reg.write = true;
-		args->access_reg.data = (uint32_t)
-			strtoul(argv[optind + 1], NULL, 0);
-	}
-	else
-	{
-		args->access_reg.write = false;
-		args->access_reg.data = 0x0;
-	}
-
-	args->access_reg.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-/* Access FPGA Config*/
-int parse_opt_s_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-
-	if (args->rev_id.mrev == XVSEC_MCAP_VERSAL) {
-		fprintf(stderr, "Access FPGA Config option is not "
-				"supported for Versal devices\n");
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-	args->fpga_access_reg.offset =
-		(uint16_t) strtoul(optarg, NULL, 0);
-
-	if(argv[optind] == NULL)
-	{
-		args->fpga_access_reg.write = false;
-		args->fpga_access_reg.cmd = '\0';
-		args->fpga_access_reg.data = 0x0;
-		args->fpga_access_reg.flag = true;
-		goto CLEANUP;
-	}
-	if(argv[optind + 1] == NULL)
-	{
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-	args->fpga_access_reg.cmd = (char)argv[optind][0];
-	if((args->fpga_access_reg.cmd == 'w') && \
-			(argv[optind][1] == '\0'))
-	{
-		args->fpga_access_reg.write = true;
-		args->fpga_access_reg.data = (uint32_t)
-			strtoul(argv[optind + 1], NULL, 0);
-	}
-	else
-	{
-		fprintf(stderr, "Invalid option "
-			"provided %s (\'w\' is valid "
-			"option for write operation)\n",
-			argv[optind]);
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-	printf("In -s option\n");
-	args->fpga_access_reg.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-/* program option */
-int parse_opt_p_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	if(args->rev_id.mrev == XVSEC_MCAP_VERSAL)
-	{
-		ret = parse_arguments_for_versal(argc, argv, args);
-	}
-	else
-	{
-		ret = parse_arguments_for_us(argc, argv, args);
-	}
-
-	return ret;
-}
-
-int parse_arguments_for_versal(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	uint16_t str_len;
-	char *file = NULL;
-
-	if (argc < MAX_NO_OF_P_ARGS_FOR_VERSAL) {
-		fprintf(stderr, "Invalid number of arguments passed "
-				"for -p option: %d\n"
-				"Please enter valid arguments!\n", argc);
-		return XVSEC_FAILURE;
-	}
-
-	if((optarg == NULL) || (argv[optind] == NULL)) {
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-	args->download.flag = false;
-
-	if (strncmp(optarg, "mode", sizeof("mode")) == 0) {
-		if (strncmp(argv[optind], "32b", sizeof("32b")) == 0) {
-			args->download.is_128b_mode = false;
-		}
-		else if (strncmp(argv[optind], "128b", sizeof("128b")) == 0) {
-			args->download.is_128b_mode = true;
-		}
-		else {
-			fprintf(stderr, "Invalid Mode provided, "
-					"Only 32b and 128b are valid\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-	}
-
-	if((argv[optind + 1] == NULL) || (argv[optind + 2] == NULL)) {
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	if (strncmp(argv[optind + 1], "type", sizeof("type")) == 0) {
-		if (strncmp(argv[optind + 2], "incr", sizeof("incr")) == 0) {
-			args->download.is_fixed_addr = false;
-		}
-		else if (strncmp(argv[optind + 2], "fixed", sizeof("fixed")) == 0) {
-			args->download.is_fixed_addr = true;
-		}
-		else {
-			fprintf(stderr, "Invalid Address type provided, "
-					"Only fixed and incr are valid\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-	}
-
-	if(argv[optind + 3] == NULL) {
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	args->download.dev_addr = (uint32_t) strtoul(argv[optind + 3], NULL, 0);
-
-	str_len = strlen(argv[optind + 4]) + 1;
-	file = malloc(str_len * sizeof(char));
-	if(file == NULL)
-	{
-		fprintf(stderr, "malloc failed while allocating"
-			" for size : %d\n", str_len);
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	snprintf(file, str_len, "%s", argv[optind + 4]);
-
-	args->download.file_name = realpath(file, NULL);
-	if(args->download.file_name == NULL)
-	{
-		fprintf(stderr, "Absolute Path conversion "
-			"Failed for file with error : "
-			"%d(%s)\n", errno, strerror(errno));
-		ret = XVSEC_FAILURE;
-		free(file);
-		goto CLEANUP;
-	}
-
-	/*optional transfer mode and sbi parameters*/
-	if((argv[optind + 5] == NULL)) {
-		args->download.tr_mode = XVSEC_MCAP_DATA_TR_MODE_FAST;
-		args->download.sbi_addr = 0xFFFFFFFF;
-		goto EXIT;
-	}
-
-	if (strncmp(argv[optind + 5], "tr_mode", sizeof("tr_mode")) == 0) {
-
-		if(argv[optind + 6] == NULL) {
-			fprintf(stderr, "Please enter valid transfer mode, "
-					"Only slow and fast are valid\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-
-		if (strncmp(argv[optind + 6], "slow", sizeof("slow")) == 0) {
-			/*slow download mode*/
-			args->download.tr_mode = XVSEC_MCAP_DATA_TR_MODE_SLOW;
-		}
-		else if (strncmp(argv[optind + 6], "fast", sizeof("fast")) == 0) {
-			/*fast download mode*/
-			args->download.tr_mode = XVSEC_MCAP_DATA_TR_MODE_FAST;
-		}
-		else {
-			fprintf(stderr, "Invalid transfer mode provided, "
-					"Only slow and fast are valid\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-		fprintf(stdout, "tr_mode: %d\n", args->download.tr_mode);
-	}
-	else if (strncmp(argv[optind + 5], "sbi", sizeof("sbi")) == 0)
-	{
-		if(argv[optind + 6] == NULL)
-		{
-			fprintf(stderr, "Please enter valid address for sbi reg block\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-		else
-		{
-			args->download.sbi_addr = (uint32_t) strtoul(argv[optind + 6], NULL, 0);
-		}
-	}
-
-	if((argv[optind + 7] == NULL)) {
-		args->download.sbi_addr = 0xFFFFFFFF;
-		goto EXIT;
-	}
-
-	if (strncmp(argv[optind + 7], "sbi", sizeof("sbi")) == 0)
-	{
-		if(argv[optind + 8] == NULL)
-		{
-			fprintf(stderr, "Please enter valid address for sbi reg block\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-		else
-		{
-			args->download.sbi_addr = (uint32_t) strtoul(argv[optind + 8], NULL, 0);
-		}
-	}
-
-EXIT:
-	free(file);
-	args->download.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-/* program option */
-int parse_arguments_for_us(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	uint16_t len;
-	char *bit_file = NULL;
-
-	if (argc > MAX_NO_OF_P_ARGS_FOR_US) {
-		fprintf(stderr, "Invalid number of arguments passed "
-				"for -p option: %d\n"
-				"Please enter valid arguments!\n", argc);
-		return XVSEC_FAILURE;
-	}
-
-	len = strlen(optarg) + 1;
-	bit_file = malloc(len*sizeof(char));
-	if(bit_file == NULL)
-	{
-		fprintf(stderr, "malloc failed while allocating"
-			" for size : %d\n", len);
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-	snprintf(bit_file, len, "%s", optarg);
-
-	args->program.abs_bit_file = realpath(bit_file, NULL);
-	if(args->program.abs_bit_file == NULL)
-	{
-		fprintf(stderr, "Absolute Path conversion "
-			"Failed for bit file with error : "
-			"%d(%s)\n", errno, strerror(errno));
-		ret = XVSEC_FAILURE;
-		free(bit_file);
-		goto CLEANUP;
-	}
-	free(bit_file);
-	args->program.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-/* Partial Reconfig Clear */
-int parse_opt_C_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	uint16_t len;
-	char *clear_file = NULL;
-
-	len = strlen(optarg) + 1;
-	clear_file = malloc(len*sizeof(char));
-	if(clear_file == NULL)
-	{
-		fprintf(stderr, "malloc failed while "
-			"allocating for size : %d\n", len);
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-	snprintf(clear_file, len, "%s", optarg);
-
-	args->program.abs_clr_file = realpath(clear_file, NULL);
-	if(args->program.abs_clr_file == NULL)
-	{
-		fprintf(stderr, "Absolute Path conversion "
-			"Failed for clear file");
-		ret = XVSEC_FAILURE;
-		free(clear_file);
-		goto CLEANUP;
-	}
-	free(clear_file);
-	args->program.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-bool get_realpath(char* path, char *rpath)
-{
-	bool ret = false;
-	struct stat stats;
-	char* dirptr = NULL;
-	char* dirptr_abs_path = NULL;
-	char* fileptr = NULL;
-	char* dir = NULL;
-	char* filename = NULL;
-	int len = 0;
-
-	if((path == NULL) || (rpath == NULL))
-		return false;
-
-	dirptr = strdup(path);
-	fileptr = strdup(path);
-
-	if((dirptr == NULL) || (fileptr == NULL))
-	{
-		if(dirptr != NULL)
-			free(dirptr);
-
-		if(fileptr != NULL)
-			free(fileptr);
-
-		return false;
-	}
-
-	dir = dirname(dirptr);
-	filename = basename(fileptr);
-
-	if((dir == NULL) || (filename == NULL))
-	{
-		if(dir != NULL)
-			free(dir);
-
-		if(filename != NULL)
-			free(filename);
-
-		ret = false;
-		goto CLEANUP;
-	}
-
-	(void)stat(dir, &stats);
-	len = 0;
-
-	dirptr_abs_path = realpath(dirptr, NULL);
-	if ( S_ISDIR(stats.st_mode) & (dirptr_abs_path != NULL))
-	{
-		len = strlen(dirptr_abs_path)+1;
-		if( (len + strlen(filename) + 1) >= MAX_FILE_LENGTH)
-		{
-			fprintf(stderr, "File Name is too long\n");
-			goto CLEANUP_ABS_PATH;
-		}
-
-		snprintf(rpath, len, "%s", dirptr_abs_path);
-		strcat(rpath, "/");
-		strcat(rpath, filename);
-		ret = true;
-	}
-
-CLEANUP_ABS_PATH:
-	free(dirptr_abs_path);
-
-CLEANUP:
-	free(dirptr);
-	free(fileptr);
-	return ret;
-}
-
-
-/*
- * retrieve argument
- *
- */
-int parse_opt_t_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	uint16_t str_len;
-	char *file = NULL;
-	char rpath[MAX_FILE_LENGTH];
-
-	if(args->rev_id.mrev != XVSEC_MCAP_VERSAL)
-	{
-		fprintf(stderr, "AXI --retrieve option is only "
-				"supported for Versal devices\n");
-		return XVSEC_ERR_OPERATION_NOT_SUPPORTED;
-	}
-
-	if((argv[optind] == NULL) || (argv[optind + 1] == NULL)) {
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	if (strncmp(optarg, "type", sizeof("type")) == 0) {
-		if (strncmp(argv[optind], "incr", sizeof("incr")) == 0) {
-			args->upload.is_fixed_addr = false;
-		}
-		else if (strncmp(argv[optind], "fixed", sizeof("fixed")) == 0) {
-			args->upload.is_fixed_addr = true;
-		}
-		else {
-			fprintf(stderr, "Invalid Address type provided, "
-					"Only fixed and incr are valid\n");
-			ret = XVSEC_FAILURE;
-			goto CLEANUP;
-		}
-	}
-
-	if(argv[optind+1] == NULL) {
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	args->upload.dev_addr = (uint32_t) strtoul(argv[optind+1], NULL, 0);
-	args->upload.length = (size_t) strtoul(argv[optind+2], NULL, 0);
-
-	str_len = strlen(argv[optind+3]) + 1;
-	file = malloc(str_len * sizeof(char));
-	if(file == NULL)
-	{
-		fprintf(stderr, "malloc failed while allocating"
-			" for size : %d\n", str_len);
-		ret = XVSEC_FAILURE;
-		goto CLEANUP;
-	}
-
-	snprintf(file, str_len, "%s", argv[optind+3]);
-
-	args->upload.file_name = NULL;
-	memset(rpath, 0, MAX_FILE_LENGTH);
-	if(get_realpath(file, rpath) == true)
-	{
-		args->upload.file_name = rpath;
-	}
-
-	if(args->upload.file_name == NULL)
-	{
-		fprintf(stderr, "Absolute Path conversion Failed"
-			" for file: %s\n", file);
-		ret = XVSEC_FAILURE;
-		free(file);
-		goto CLEANUP;
-	}
-	free(file);
-	args->upload.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-/*
- * Access the AXI Registers
- * -x, --access-axi-regs [mode <32b/128b>] <address> [w [data]]
- *
- */
-int parse_opt_x_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	bool write_mode = false;
-	args->access_axi_reg.flag = false;
-
-	if(args->rev_id.mrev != XVSEC_MCAP_VERSAL)
-	{
-		printf(" --access-axi-regs option is only supported for Versal devices\n");
-		ret = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-
-	args->access_axi_reg.write = false;
-
-	if(optarg != NULL)
-	{
-		if( strncmp(optarg, MODE_STR, sizeof(MODE_STR)) == 0)
-		{
-			if(argv[optind] != NULL)
-			{
-				if(strncmp(argv[optind], MODE_STR_32B, sizeof(MODE_STR_32B)) == 0)
-				{
-					args->access_axi_reg.mode = XVSEC_MCAP_AXI_MODE_32B;
-				}
-				else if(strncmp(argv[optind], MODE_STR_128B, sizeof(MODE_STR_128B)) == 0)
-				{
-					args->access_axi_reg.mode = XVSEC_MCAP_AXI_MODE_128B;
-				}
-				else
-				{
-					printf("Invalid mode parameters.\n");
-					ret = XVSEC_ERR_INVALID_PARAM;
-					goto CLEANUP;
-				}
-				write_mode = true;
-			}
-			else
-			{
-				printf("Insufficient args for --access-axi-regs. Please enter valid mode parameters.\n");
-				ret = XVSEC_ERR_INVALID_PARAM;
-				goto CLEANUP;
-			}
-		}
-		else
-		{
-			/*if mode is not given then it must be read operation*/
-			if(optarg != NULL)
-			{
-				args->access_axi_reg.address = (int)strtol(optarg, NULL, 0);
-				args->access_axi_reg.mode = XVSEC_MCAP_AXI_MODE_32B;
-				goto READ_EXIT;
-			}
-			else
-			{
-				printf("Insufficient args for --access-axi-regs\n");
-				ret = XVSEC_ERR_INVALID_PARAM;
-				goto CLEANUP;
-			}
-
-		}
-	}
-	if(argv[optind + 1] == NULL)
-	{
-		printf("Insufficient args for --access-axi-regs\n");
-		ret = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-
-	if(argv[optind + 1] != NULL)
-	{
-		args->access_axi_reg.address = (int)strtol(argv[optind+1], NULL, 0);
-	}
-	else
-	{
-		printf("Error in address\n");
-		ret = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-
-	/* this is optional */
-	if(argv[optind + 2] != NULL)
-	{
-		if( strcmp(argv[optind + 2], "w") == 0)
-		{
-			if(argv[optind + 3] != NULL)
-			{
-				args->access_axi_reg.data[0] = (int)strtol(argv[optind+3], NULL, 0);
-				if(args->access_axi_reg.mode == XVSEC_MCAP_AXI_MODE_128B) /*expect 3 more args*/
-				{
-					 if((argv[optind + 4] != NULL) && (argv[optind + 5] != NULL) && (argv[optind + 6] != NULL))
-					 {
-						 args->access_axi_reg.data[1] = (int)strtol(argv[optind+4], NULL, 0);
-						 args->access_axi_reg.data[2] = (int)strtol(argv[optind+5], NULL, 0);
-						 args->access_axi_reg.data[3] = (int)strtol(argv[optind+6], NULL, 0);
-					 }
-					 else
-					 {
-						 printf("Insufficient data to write. Please provide valid 128bit data to write\n");
-						 ret = XVSEC_ERR_INVALID_PARAM;
-						 goto CLEANUP;
-					 }
-
-				}
-				args->access_axi_reg.write = true;
-			}
-			else
-			{
-				printf("Insufficient args. Please provide valid data to write\n");
-				ret = XVSEC_ERR_INVALID_PARAM;
-				goto CLEANUP;
-			}
-		}
-	}
-
-	/*error check for mode and write parameters*/
-	if((write_mode == true) && (args->access_axi_reg.write != true))
-	{
-		printf("Insufficient args for write mode\n");
-		ret = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-READ_EXIT:
-	args->access_axi_reg.flag = true;
-
-CLEANUP:
-	return ret;
-}
-
-
-/*
- *Versal MCAP Cache and Protection settings
- *
- **/
-int parse_opt_q_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	int axi_cache = 0;
-	int axi_prot = 0;
-
-	args->axi_cache_settings.flag = false;
-
-	if(args->rev_id.mrev != XVSEC_MCAP_VERSAL)
-	{
-		printf(" --access-axi-regs option is only supported for Versal devices\n");
-		ret = XVSEC_ERR_INVALID_PARAM;
-		goto CLEANUP;
-	}
-
-	if((optarg != NULL) && (argv[optind] != NULL))
-	{
-		if( strncmp(optarg, CACHE_STR, sizeof(CACHE_STR)) == 0)
-		{
-			if(argv[optind] != NULL)
-			{
-				axi_cache = (int)strtol(argv[optind], NULL, 0);
-				printf("axi_cache: 0x%X\n", axi_cache);
-				if( axi_cache > 0xF )
-				{
-					printf("please enter axi_cache in range 0-15\n");
-					ret = XVSEC_ERR_INVALID_PARAM;
-					goto CLEANUP;
-				}
-			}
-		}
-		else
-		{
-			printf("Invalid args for --axi-cache-settings.\n");
-			ret = XVSEC_ERR_INVALID_PARAM;
-			goto CLEANUP;
-		}
-
-		if((argv[optind + 1] == NULL) || (argv[optind + 2] == NULL))
-		{
-			printf("Insufficient args for --axi-cache-settings.\n");
-			ret = XVSEC_ERR_INVALID_PARAM;
-			goto CLEANUP;
-		}
-
-		if( strncmp(argv[optind + 1], PROT_STR, sizeof(PROT_STR)) == 0)
-		{
-			if(argv[optind + 2] != NULL)
-			{
-				axi_prot = (int)strtol(argv[optind + 2], NULL, 0);
-				printf("axi_prot: 0x%X\n", axi_prot);
-				if( axi_prot > 0x7 )
-				{
-					printf("please enter axi_prot in range 0-7\n");
-					ret = XVSEC_ERR_INVALID_PARAM;
-					goto CLEANUP;
-				}
-			}
-		}
-		else
-		{
-			printf("Invalid args for --axi-cache-settings.\n");
-			ret = XVSEC_ERR_INVALID_PARAM;
-			goto CLEANUP;
-		}
-
-		args->axi_cache_settings.attr.v2.axi_cache = axi_cache;
-		args->axi_cache_settings.attr.v2.axi_prot = axi_prot;
-		args->axi_cache_settings.flag = true;
-	}
-
-CLEANUP:
-	return ret;
-}
-
-/*
- *
- * mcap parser function for the arguments
- * dependent on the MCAP version
- *
- */
-
-int parse_mcap_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	int opt;
-
-	optind = 1; /* to reset the getopt*/
-
-	if(args == NULL) {
-		return XVSEC_FAILURE;
-	}
-
-	if(args->cap_id != MCAP_CAP_ID)
-	{
-		args->parse_err = true;
-		goto CLEANUP;
-	}
-
-	while ((opt = getopt(argc, argv, options)) != -1) {
-		if(opt == ':')
-		{
-			fprintf(stderr, "Parameters missing for the "
-				"Specified Option  : %c\n", optopt);
-			args->help.flag = true;
-			break;
-		}
-		else if(opt == '?')
-		{
-			fprintf(stderr, "Invalid Option : %c\n", optopt);
-			args->help.flag = true;
-			break;
-		}
-
-		switch (opt) {
-			case 'a':
-				ret = parse_opt_a_arguments(argc, argv, args);
-				break;
-			case 's':
-				ret = parse_opt_s_arguments(argc, argv, args);
-				break;
-			case 'p':
-				ret = parse_opt_p_arguments(argc, argv, args);
-				break;
-			case 't':
-				ret = parse_opt_t_arguments(argc, argv, args);
-				break;
-			case 'x':
-				ret = parse_opt_x_arguments(argc, argv, args);
-				break;
-			case 'C':
-				ret = parse_opt_C_arguments(argc, argv, args);
-				break;
-			case 'q':
-				ret = parse_opt_q_arguments(argc, argv, args);
-				break;
-			/*
-			 * options already parsed
-			 * in func parse_arguments()
-			 * */
-			case 'b':
-			case 'F':
-			case 'c':
-			case 'h':
-			case 'H':
-			case 'v':
-			case 'l':
-			case 'r':
-			case 'm':
-			case 'f':
-			case 'd':
-			case 'D':
-			case 'o':
-				break;
-			default:
-				fprintf(stderr, "Invalid Option :%c\n", opt);
-				args->help.flag = true;
-				break;
-
-		}
-	}
-
-	if((args->parse_err == true) || (ret != 0))
-	{
-		if(args->program.abs_clr_file != NULL)
-		{
-			free(args->program.abs_clr_file);
-			args->program.abs_clr_file = NULL;
-		}
-		if(args->program.abs_bit_file != NULL)
-		{
-			free(args->program.abs_bit_file);
-			args->program.abs_bit_file = NULL;
-		}
-	}
-
-CLEANUP:
-	return ret;
-}
-
-int parse_arguments(int argc, char *argv[], struct args *args)
-{
-	int ret = 0;
-	int opt;
-
-	if(args == NULL) {
-		return XVSEC_FAILURE;
-	}
-
-	while ((opt = getopt(argc, argv, options)) != -1) {
-		if(opt == ':')
-		{
-			fprintf(stderr, "Parameters missing for the "
-				"Specified Option  : %c\n", optopt);
-			args->help.flag = true;
-			break;
-		}
-		else if(opt == '?')
-		{
-			fprintf(stderr, "Invalid Option : %c\n", optopt);
-			args->help.flag = true;
-			break;
-		}
-
-		switch (opt) {
-			case 'b':
-				args->bus_no = (uint16_t) strtol(optarg, NULL, 16);
-				break;
-			case 'F':
-				args->dev_no = (uint16_t) strtol(optarg, NULL, 16);
-				break;
-			case 'c':
-				args->cap_id = (uint16_t) strtol(optarg, NULL, 16);
-				break;
-			case 'h':
-			case 'H':
-				args->help.flag = true;
-				break;
-			case 'v':
-				args->verbose.flag = true;
-				break;
-			case 'l':
-				args->list_caps.flag = true;
-				break;
-			case 'r':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->reset.flag = true;
-				break;
-			case 'm':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->module_reset.flag = true;
-				break;
-			case 'f':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->full_reset.flag = true;
-				break;
-			case 'D':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->data_dump.flag = true;
-				break;
-			case 'd':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->reg_dump.flag = true;
-				break;
-			case 'o':
-				if(args->cap_id != MCAP_CAP_ID)
-				{
-					args->parse_err = true;
-					break;
-				}
-				args->fpga_reg_dump.flag = true;
-				break;
-				/*MCAP specific args needs version info
-				 * parsed in func parse_mcap_arguments*/
-			case 'a':
-			case 's':
-			case 'p':
-			case 't':
-			case 'x':
-			case 'C':
-			case 'q':
-				break;
-			default:
-				fprintf(stderr, "Invalid Option :%c\n", opt);
-				args->help.flag = true;
-				break;
-		}
-	}
-
-	return ret;
-}
-
diff --git a/XVSEC/linux-kernel/tools/xvsec_parser.h b/XVSEC/linux-kernel/tools/xvsec_parser.h
deleted file mode 100644
index 84675c5..0000000
--- a/XVSEC/linux-kernel/tools/xvsec_parser.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * This file is part of the XVSEC userspace application
- * to enable the user to execute the XVSEC functionality
- *
- * Copyright (c) 2020,  Xilinx, Inc.
- * All rights reserved.
- *
- * This source code is licensed under BSD-style license (found in the
- * LICENSE file in the root directory of this source tree)
- */
-
-#ifndef __XVSEC_PARSER_H__
-#define __XVSEC_PARSER_H__
-
-#define MODE_STR		"mode"
-#define CACHE_STR		"axi_cache"
-#define PROT_STR		"axi_prot"
-
-#define MODE_STR_32B	"32b"
-#define MODE_STR_128B	"128b"
-#define MAX_FILE_LENGTH 300
-
-#define MAX_NO_OF_P_ARGS_FOR_US		9
-#define MAX_NO_OF_P_ARGS_FOR_VERSAL	14
-
-/* main parser function */
-int parse_arguments(int argc, char *argv[], struct args *args);
-
-/* mcap related options parser function */
-int parse_mcap_arguments(int argc, char *argv[], struct args *args);
-
-/* access-mcap-regs Option */
-int parse_opt_a_arguments(int argc, char *argv[], struct args *args);
-
-/* access-fpga-regs */
-int parse_opt_s_arguments(int argc, char *argv[], struct args *args);
-
-/* program option */
-int parse_opt_p_arguments(int argc, char *argv[], struct args *args);
-
-/* Partial Reconfig Clear */
-int parse_opt_C_arguments(int argc, char *argv[], struct args *args);
-
-/* retrieve arguement */
-int parse_opt_t_arguments(int argc, char *argv[], struct args *args);
-
-/* versal axi-regs access */
-int parse_opt_x_arguments(int argc, char *argv[], struct args *args);
-
-/* sub function for program options for versal */
-int parse_arguments_for_versal(int argc, char *argv[], struct args *args);
-
-/* sub function for program options for ultrscale */
-int parse_arguments_for_us(int argc, char *argv[], struct args *args);
-
-#endif /* __XVSEC_PARSER_H__ */
diff --git a/docs/source/includeme.rst b/docs/source/includeme.rst
deleted file mode 100644
index 38ba804..0000000
--- a/docs/source/includeme.rst
+++ /dev/null
@@ -1 +0,0 @@
-.. include:: ../../README.rst
\ No newline at end of file
diff --git a/XDMA/linux-kernel/include/libxdma_api.h b/include/libxdma_api.h
similarity index 100%
rename from XDMA/linux-kernel/include/libxdma_api.h
rename to include/libxdma_api.h
diff --git a/index.html b/index.html
deleted file mode 100644
index 02b9c86..0000000
--- a/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<html>
-  <head>
-    <meta charset="utf-8">
-    <link rel="stylesheet"
-      href="DPDK/html/_static/css/theme.css"
-      type="text/css"/>
-    <title>Xilinx QDMA IP Drivers Documentation</title>
-  </head>
-
-  <body style="background-color: white">
-    <div class="section" style="background-color: white" align="center">
-    <h1>Xilinx QDMA IP Drivers Documentation</h1>
-    <hr/>
-    <p>
-      Xilinx QDMA IP Drivers documentation is organized by release version.
-    </p>
-    <p>Please use the following links to browse Xilinx QDMA IP Drivers documentation for a specific release.
-    </p>
-    <ul style="font-size: large; font-weight: bold; list-style-type: none">
-      <li><a href="2019.1/DPDK/html/index.html">2019.1 DPDK driver</a></li>
-      <li><a href="2019.1/linux-kernel/html/index.html">2019.1 Linux driver</a></li>
-      <li><a href="2019.2/DPDK/html/index.html">2019.2 DPDK driver</a></li>
-      <li><a href="2019.2/linux-kernel/html/index.html">2019.2 Linux driver</a></li>
-      <li><a href="master/DPDK/html/index.html">master DPDK driver</a></li>
-      <li><a href="master/linux-kernel/html/index.html">master Linux driver</a></li>
-      <li><a href="master/windows/html/index.html">master Windows driver</a></li>
-    </ul>
-    </div>
-  </body>
-</html>
\ No newline at end of file
diff --git a/XDMA/linux-kernel/readme.txt b/readme.txt
similarity index 100%
rename from XDMA/linux-kernel/readme.txt
rename to readme.txt
diff --git a/XDMA/linux-kernel/tests/data/datafile0_4K.bin b/tests/data/datafile0_4K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile0_4K.bin
rename to tests/data/datafile0_4K.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile1_4K.bin b/tests/data/datafile1_4K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile1_4K.bin
rename to tests/data/datafile1_4K.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile2_4K.bin b/tests/data/datafile2_4K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile2_4K.bin
rename to tests/data/datafile2_4K.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile3_4K.bin b/tests/data/datafile3_4K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile3_4K.bin
rename to tests/data/datafile3_4K.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile_256K.bin b/tests/data/datafile_256K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile_256K.bin
rename to tests/data/datafile_256K.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile_32M.bin b/tests/data/datafile_32M.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile_32M.bin
rename to tests/data/datafile_32M.bin
diff --git a/XDMA/linux-kernel/tests/data/datafile_8K.bin b/tests/data/datafile_8K.bin
similarity index 100%
rename from XDMA/linux-kernel/tests/data/datafile_8K.bin
rename to tests/data/datafile_8K.bin
diff --git a/XDMA/linux-kernel/tests/dma_memory_mapped_test.sh b/tests/dma_memory_mapped_test.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/dma_memory_mapped_test.sh
rename to tests/dma_memory_mapped_test.sh
diff --git a/XDMA/linux-kernel/tests/dma_streaming_test.sh b/tests/dma_streaming_test.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/dma_streaming_test.sh
rename to tests/dma_streaming_test.sh
diff --git a/XDMA/linux-kernel/tests/load_driver.sh b/tests/load_driver.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/load_driver.sh
rename to tests/load_driver.sh
diff --git a/XDMA/linux-kernel/tests/perform_hwcount.sh b/tests/perform_hwcount.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/perform_hwcount.sh
rename to tests/perform_hwcount.sh
diff --git a/XDMA/linux-kernel/tests/run_test.sh b/tests/run_test.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/run_test.sh
rename to tests/run_test.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/fio_parse_result.sh b/tests/scripts_mm/fio_parse_result.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/fio_parse_result.sh
rename to tests/scripts_mm/fio_parse_result.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/fio_test.sh b/tests/scripts_mm/fio_test.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/fio_test.sh
rename to tests/scripts_mm/fio_test.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/io.sh b/tests/scripts_mm/io.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/io.sh
rename to tests/scripts_mm/io.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/io_sweep.sh b/tests/scripts_mm/io_sweep.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/io_sweep.sh
rename to tests/scripts_mm/io_sweep.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/libtest.sh b/tests/scripts_mm/libtest.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/libtest.sh
rename to tests/scripts_mm/libtest.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/unaligned.sh b/tests/scripts_mm/unaligned.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/unaligned.sh
rename to tests/scripts_mm/unaligned.sh
diff --git a/XDMA/linux-kernel/tests/scripts_mm/xdma_mm.sh b/tests/scripts_mm/xdma_mm.sh
similarity index 100%
rename from XDMA/linux-kernel/tests/scripts_mm/xdma_mm.sh
rename to tests/scripts_mm/xdma_mm.sh
diff --git a/XDMA/linux-kernel/tools/Makefile b/tools/Makefile
similarity index 100%
rename from XDMA/linux-kernel/tools/Makefile
rename to tools/Makefile
diff --git a/XDMA/linux-kernel/tools/dma_from_device.c b/tools/dma_from_device.c
similarity index 100%
rename from XDMA/linux-kernel/tools/dma_from_device.c
rename to tools/dma_from_device.c
diff --git a/XDMA/linux-kernel/tools/dma_to_device.c b/tools/dma_to_device.c
similarity index 100%
rename from XDMA/linux-kernel/tools/dma_to_device.c
rename to tools/dma_to_device.c
diff --git a/XDMA/linux-kernel/tools/dma_utils.c b/tools/dma_utils.c
similarity index 100%
rename from XDMA/linux-kernel/tools/dma_utils.c
rename to tools/dma_utils.c
diff --git a/XDMA/linux-kernel/tools/performance.c b/tools/performance.c
similarity index 100%
rename from XDMA/linux-kernel/tools/performance.c
rename to tools/performance.c
diff --git a/XDMA/linux-kernel/tools/reg_rw.c b/tools/reg_rw.c
similarity index 100%
rename from XDMA/linux-kernel/tools/reg_rw.c
rename to tools/reg_rw.c
diff --git a/XDMA/linux-kernel/tools/test_chrdev.c b/tools/test_chrdev.c
similarity index 100%
rename from XDMA/linux-kernel/tools/test_chrdev.c
rename to tools/test_chrdev.c
diff --git a/XDMA/linux-kernel/xdma/Makefile b/xdma/Makefile
similarity index 100%
rename from XDMA/linux-kernel/xdma/Makefile
rename to xdma/Makefile
diff --git a/XDMA/linux-kernel/xdma/cdev_bypass.c b/xdma/cdev_bypass.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_bypass.c
rename to xdma/cdev_bypass.c
diff --git a/XDMA/linux-kernel/xdma/cdev_ctrl.c b/xdma/cdev_ctrl.c
similarity index 98%
rename from XDMA/linux-kernel/xdma/cdev_ctrl.c
rename to xdma/cdev_ctrl.c
index dbc41ef..8230546 100644
--- a/XDMA/linux-kernel/xdma/cdev_ctrl.c
+++ b/xdma/cdev_ctrl.c
@@ -233,7 +233,11 @@ int bridge_mmap(struct file *file, struct vm_area_struct *vma)
 	 * prevent touching the pages (byte access) for swap-in,
 	 * and prevent the pages from being swapped out
 	 */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
+	vm_flags_set(vma, VMEM_FLAGS);
+#else
 	vma->vm_flags |= VMEM_FLAGS;
+#endif
 	/* make MMIO accessible to user space */
 	rv = io_remap_pfn_range(vma, vma->vm_start, phys >> PAGE_SHIFT,
 			vsize, vma->vm_page_prot);
diff --git a/XDMA/linux-kernel/xdma/cdev_ctrl.h b/xdma/cdev_ctrl.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_ctrl.h
rename to xdma/cdev_ctrl.h
diff --git a/XDMA/linux-kernel/xdma/cdev_events.c b/xdma/cdev_events.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_events.c
rename to xdma/cdev_events.c
diff --git a/XDMA/linux-kernel/xdma/cdev_sgdma.c b/xdma/cdev_sgdma.c
similarity index 98%
rename from XDMA/linux-kernel/xdma/cdev_sgdma.c
rename to xdma/cdev_sgdma.c
index 7923441..d32718f 100644
--- a/XDMA/linux-kernel/xdma/cdev_sgdma.c
+++ b/xdma/cdev_sgdma.c
@@ -109,7 +109,7 @@ static void async_io_handler(unsigned long  cb_hndl, int err)
 #elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)
 		caio->iocb->ki_complete(caio->iocb, res, res2);
 #else
-		aio_complete(caio->iocb, res, res2);
+		aio_complete(caio->iocb, res, caio->res2);
 #endif
 skip_tran:
 		spin_unlock(&caio->lock);
@@ -565,12 +565,20 @@ static ssize_t cdev_aio_read(struct kiocb *iocb, const struct iovec *io,
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
 static ssize_t cdev_write_iter(struct kiocb *iocb, struct iov_iter *io)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 4, 0)
+	return cdev_aio_write(iocb, io->__iov, io->nr_segs, io->iov_offset);
+#else
 	return cdev_aio_write(iocb, io->iov, io->nr_segs, io->iov_offset);
+#endif
 }
 
 static ssize_t cdev_read_iter(struct kiocb *iocb, struct iov_iter *io)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 4, 0)
+	return cdev_aio_read(iocb, io->__iov, io->nr_segs, io->iov_offset);
+#else
 	return cdev_aio_read(iocb, io->iov, io->nr_segs, io->iov_offset);
+#endif
 }
 #endif
 
diff --git a/XDMA/linux-kernel/xdma/cdev_sgdma.h b/xdma/cdev_sgdma.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_sgdma.h
rename to xdma/cdev_sgdma.h
diff --git a/XDMA/linux-kernel/xdma/cdev_xvc.c b/xdma/cdev_xvc.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_xvc.c
rename to xdma/cdev_xvc.c
diff --git a/XDMA/linux-kernel/xdma/cdev_xvc.h b/xdma/cdev_xvc.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/cdev_xvc.h
rename to xdma/cdev_xvc.h
diff --git a/XDMA/linux-kernel/xdma/libxdma.c b/xdma/libxdma.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/libxdma.c
rename to xdma/libxdma.c
diff --git a/XDMA/linux-kernel/xdma/libxdma.h b/xdma/libxdma.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/libxdma.h
rename to xdma/libxdma.h
diff --git a/XDMA/linux-kernel/xdma/version.h b/xdma/version.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/version.h
rename to xdma/version.h
diff --git a/XDMA/linux-kernel/xdma/xdma_cdev.c b/xdma/xdma_cdev.c
similarity index 99%
rename from XDMA/linux-kernel/xdma/xdma_cdev.c
rename to xdma/xdma_cdev.c
index 363ffb4..749bf97 100644
--- a/XDMA/linux-kernel/xdma/xdma_cdev.c
+++ b/xdma/xdma_cdev.c
@@ -603,7 +603,11 @@ fail:
 
 int xdma_cdev_init(void)
 {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 4, 0)
 	g_xdma_class = class_create(THIS_MODULE, XDMA_NODE_NAME);
+#else
+	g_xdma_class = class_create(XDMA_NODE_NAME);
+#endif
 	if (IS_ERR(g_xdma_class)) {
 		dbg_init(XDMA_NODE_NAME ": failed to create class");
 		return -EINVAL;
diff --git a/XDMA/linux-kernel/xdma/xdma_cdev.h b/xdma/xdma_cdev.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/xdma_cdev.h
rename to xdma/xdma_cdev.h
diff --git a/XDMA/linux-kernel/xdma/xdma_mod.c b/xdma/xdma_mod.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/xdma_mod.c
rename to xdma/xdma_mod.c
diff --git a/XDMA/linux-kernel/xdma/xdma_mod.h b/xdma/xdma_mod.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/xdma_mod.h
rename to xdma/xdma_mod.h
diff --git a/XDMA/linux-kernel/xdma/xdma_thread.c b/xdma/xdma_thread.c
similarity index 100%
rename from XDMA/linux-kernel/xdma/xdma_thread.c
rename to xdma/xdma_thread.c
diff --git a/XDMA/linux-kernel/xdma/xdma_thread.h b/xdma/xdma_thread.h
similarity index 100%
rename from XDMA/linux-kernel/xdma/xdma_thread.h
rename to xdma/xdma_thread.h
-- 
GitLab